diff --git a/src/svxlink/ChangeLog b/src/svxlink/ChangeLog index 3ef38c72..f3bdb95b 100644 --- a/src/svxlink/ChangeLog +++ b/src/svxlink/ChangeLog @@ -26,6 +26,10 @@ * ModuleEchoLink bugfix: The LINK_IDLE_TIMEOUT did not work if the remote_timeout TCL function was changed to not play any sound. +* ModuleEchoLink bugfix: The LINK_IDLE_TIMEOUT did not work with short timeout + values where the timeout was shorter than the length of a locally received + transmission. + 1.7.0 -- 01 Sep 2019 diff --git a/src/svxlink/modules/echolink/QsoImpl.cpp b/src/svxlink/modules/echolink/QsoImpl.cpp index ca58cf6d..89dd88bf 100644 --- a/src/svxlink/modules/echolink/QsoImpl.cpp +++ b/src/svxlink/modules/echolink/QsoImpl.cpp @@ -136,7 +136,8 @@ QsoImpl::QsoImpl(const StationData &station, ModuleEchoLink *module) : m_qso(station.ip()), module(module), event_handler(0), msg_handler(0), output_sel(0), init_ok(false), reject_qso(false), last_message(""), last_info_msg(""), idle_timer(0), disc_when_done(false), idle_timer_cnt(0), - idle_timeout(0), destroy_timer(0), station(station), sink_handler(0) + idle_timeout(0), destroy_timer(0), station(station), sink_handler(0), + logic_is_idle(true) { assert(module != 0); @@ -302,11 +303,8 @@ void QsoImpl::logicIdleStateChanged(bool is_idle) printf("QsoImpl::logicIdleStateChanged: is_idle=%s\n", is_idle ? "TRUE" : "FALSE"); */ - - if (!is_idle) - { - idle_timer_cnt = 0; - } + + logic_is_idle = is_idle; } /* QsoImpl::logicIdleStateChanged */ @@ -548,7 +546,7 @@ void QsoImpl::onStateChange(Qso::State state) void QsoImpl::idleTimeoutCheck(Timer *t) { - if (receivingAudio()) + if (receivingAudio() || !logic_is_idle) { idle_timer_cnt = 0; return; diff --git a/src/svxlink/modules/echolink/QsoImpl.h b/src/svxlink/modules/echolink/QsoImpl.h index ab6a5fa0..8b8a9e7a 100644 --- a/src/svxlink/modules/echolink/QsoImpl.h +++ b/src/svxlink/modules/echolink/QsoImpl.h @@ -334,6 +334,7 @@ class QsoImpl EchoLink::StationData station; Async::AudioPassthrough *sink_handler; std::string sysop_name; + bool logic_is_idle; void allRemoteMsgsWritten(void); void onInfoMsgReceived(const std::string& msg); diff --git a/src/versions b/src/versions index d90f54e4..11572150 100644 --- a/src/versions +++ b/src/versions @@ -14,7 +14,7 @@ LIBASYNC=1.6.0.99.3 SVXLINK=1.7.99.20 MODULE_HELP=1.0.0 MODULE_PARROT=1.1.1 -MODULE_ECHO_LINK=1.5.0.99.0 +MODULE_ECHO_LINK=1.5.0.99.1 MODULE_TCL=1.0.1 MODULE_PROPAGATION_MONITOR=1.0.1 MODULE_TCL_VOICE_MAIL=1.0.2