aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/dcc/marshal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/dcc/marshal.cpp')
-rw-r--r--src/modules/dcc/marshal.cpp51
1 files changed, 49 insertions, 2 deletions
diff --git a/src/modules/dcc/marshal.cpp b/src/modules/dcc/marshal.cpp
index 55ad6ecfa..2a47b5b43 100644
--- a/src/modules/dcc/marshal.cpp
+++ b/src/modules/dcc/marshal.cpp
@@ -43,6 +43,7 @@ KviDccMarshal::KviDccMarshal(KviDccMarshalOutputContext * ctx)
setObjectName("dcc_marshal");
m_pSn = 0;
m_fd = KVI_INVALID_SOCKET;
+ m_pTimeoutTimer = 0;
m_bIPv6 = false;
m_pOutputContext = ctx;
#ifdef COMPILE_SSL_SUPPORT
@@ -96,6 +97,11 @@ void KviDccMarshal::reset()
m_pSSL = 0;
}
#endif
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
m_bIPv6 = false;
}
@@ -109,6 +115,12 @@ int KviDccMarshal::dccListen(const QString &ip,const QString &port,bool bUseTime
m_bOutgoing = false;
m_bUseTimeout = bUseTimeout;
+
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
#ifdef COMPILE_SSL_SUPPORT
m_bUseSSL = bUseSSL;
@@ -268,8 +280,20 @@ void KviDccMarshal::doListen()
if(KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) < 5)
KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) = 5;
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
+
if(m_bUseTimeout)
- QTimer::singleShot(KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) * 1000, this, SLOT(connectionTimedOut()));
+ {
+ m_pTimeoutTimer = new QTimer();
+ connect(m_pTimeoutTimer,SIGNAL(timeout()),this,SLOT(connectionTimedOut()));
+ m_pTimeoutTimer->setSingleShot(true);
+ m_pTimeoutTimer->setInterval((KviOption_uintDccSocketTimeout) * 1000);
+ m_pTimeoutTimer->start();
+ }
// and wait for connect
emit inProgress();
@@ -296,6 +320,11 @@ int KviDccMarshal::dccConnect(const char * ip,const char * port,bool bUseTimeout
void KviDccMarshal::doConnect()
{
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
// Check the address type
if(!KviNetUtils::isValidStringIp(m_szIp))
{
@@ -392,8 +421,20 @@ void KviDccMarshal::doConnect()
if(KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) < 5)
KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) = 5;
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
+
if(m_bUseTimeout)
- QTimer::singleShot(KVI_OPTION_UINT(KviOption_uintDccSocketTimeout) * 1000, this, SLOT(connectionTimedOut()));
+ {
+ m_pTimeoutTimer = new QTimer();
+ connect(m_pTimeoutTimer,SIGNAL(timeout()),this,SLOT(connectionTimedOut()));
+ m_pTimeoutTimer->setSingleShot(true);
+ m_pTimeoutTimer->setInterval((KviOption_uintDccSocketTimeout) * 1000);
+ m_pTimeoutTimer->start();
+ }
// and wait for connect
emit inProgress();
@@ -402,6 +443,11 @@ void KviDccMarshal::doConnect()
void KviDccMarshal::snActivated(int)
{
+ if(m_pTimeoutTimer)
+ {
+ delete m_pTimeoutTimer;
+ m_pTimeoutTimer = 0;
+ }
#ifdef COMPILE_IPV6_SUPPORT
struct sockaddr_in6 hostSockAddr6;
#endif
@@ -600,6 +646,7 @@ void KviDccMarshal::connectionTimedOut()
{
reset();
emit error(KviError_connectionTimedOut);
+ debug("MARSHAL");
}