From f2c73bd845c2f07c4194f438ef4ce8bbe249bf40 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Date: Tue, 10 Oct 2017 13:04:08 +0200 Subject: Fix bug #525: PANIC! No port specified for multimedia connections Commit 5f1eb0dc3eb89e84a3b146975e147b995fb7673f introduced a regression that made the use of the multimedia port mandatory. Fixes ArcticaProject/nx-libs#525 --- nxcomp/src/ChannelEndPoint.cpp | 5 +++++ nxcomp/src/ChannelEndPoint.h | 1 + nxcomp/src/Loop.cpp | 24 +++++++++++++----------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/nxcomp/src/ChannelEndPoint.cpp b/nxcomp/src/ChannelEndPoint.cpp index 78902399c..4fdf0fad4 100644 --- a/nxcomp/src/ChannelEndPoint.cpp +++ b/nxcomp/src/ChannelEndPoint.cpp @@ -311,6 +311,11 @@ ChannelEndPoint::enabled() const { return (isUnixSocket() || isTCPSocket()); } +bool +ChannelEndPoint::configured() const { + return ( spec_ && ( strcmp(spec_, "0") != 0) ); +} + bool ChannelEndPoint::validateSpec() { isTCP_ = getTCPHostAndPort(); diff --git a/nxcomp/src/ChannelEndPoint.h b/nxcomp/src/ChannelEndPoint.h index 4c0c728f3..652492485 100644 --- a/nxcomp/src/ChannelEndPoint.h +++ b/nxcomp/src/ChannelEndPoint.h @@ -46,6 +46,7 @@ class ChannelEndPoint ~ChannelEndPoint(); ChannelEndPoint &operator=(const ChannelEndPoint &other); + bool configured() const; bool enabled() const; bool disabled() { return !enabled(); } void disable(); diff --git a/nxcomp/src/Loop.cpp b/nxcomp/src/Loop.cpp index f76c22dea..4292e7b9a 100644 --- a/nxcomp/src/Loop.cpp +++ b/nxcomp/src/Loop.cpp @@ -11746,20 +11746,22 @@ int SetPorts() << logofs_flush; #endif - if (control -> ProxyMode == proxy_client) { - mediaPort.setDefaultTCPPort(DEFAULT_NX_MEDIA_PORT_OFFSET + proxyPort); - useMediaSocket = mediaPort.enabled(); - } else { + if ( mediaPort.configured() ) { + if (control -> ProxyMode == proxy_client) { + mediaPort.setDefaultTCPPort(DEFAULT_NX_MEDIA_PORT_OFFSET + proxyPort); + useMediaSocket = mediaPort.enabled(); + } else { - if ( !mediaPort.enabled() ) { - #ifdef PANIC - *logofs << "Loop: PANIC! No port specified for multimedia connections.\n" - << logofs_flush; - #endif + if ( mediaPort.getTCPPort() < 0 ) { + #ifdef PANIC + *logofs << "Loop: PANIC! No port specified for multimedia connections.\n" + << logofs_flush; + #endif - cerr << "Error" << ": No port specified for multimedia connections.\n"; + cerr << "Error" << ": No port specified for multimedia connections.\n"; - HandleCleanup(); + HandleCleanup(); + } } } -- cgit v1.2.3