diff -r 71781823f776 -r 06b8e2af4411 qthighway/xqservice/src/xqaiwrequest.cpp --- a/qthighway/xqservice/src/xqaiwrequest.cpp Thu May 27 13:42:11 2010 +0300 +++ b/qthighway/xqservice/src/xqaiwrequest.cpp Fri Jun 11 14:26:25 2010 +0300 @@ -33,7 +33,8 @@ currentRequest(NULL), errorMsg(), errorCode(0), - asyncErrorSet(false) + completeSignalConnected(false), + errorSignalConnected(false) { XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest: %s %s,%d,%x", @@ -57,7 +58,8 @@ currentRequest(NULL), errorMsg(), errorCode(0), - asyncErrorSet(false) + completeSignalConnected(false), + errorSignalConnected(false) { XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest (uri): %s %s,%x", qPrintable(descriptor.interfaceName()), @@ -85,7 +87,8 @@ currentRequest(NULL), errorMsg(), errorCode(0), - asyncErrorSet(false) + completeSignalConnected(false), + errorSignalConnected(false) { XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest (file): %s %x", @@ -116,7 +119,8 @@ currentRequest(NULL), errorMsg(), errorCode(0), - asyncErrorSet(false) + completeSignalConnected(false), + errorSignalConnected(false) { XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest (file handle): %x", @@ -139,10 +143,13 @@ { XQSERVICE_DEBUG_PRINT("~XQAiwRequest::XQAiwRequest"); - // Disconnect error - if (asyncErrorSet) + // Disconnect signals + if (completeSignalConnected) { disconnect(currentRequest, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleAsyncResponse(const QVariant&))); + } + if (errorSignalConnected) + { disconnect(currentRequest, SIGNAL(requestError(int,const QString&)), this, SLOT(handleAsyncError(int))); } @@ -387,13 +394,18 @@ QStringList list; bool res = true; - if (!isSynchronous() && !asyncErrorSet) + if (!isSynchronous() && !completeSignalConnected) { // Set async request signals once XQSERVICE_DEBUG_PRINT("request::async send"); connect(currentRequest, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleAsyncResponse(const QVariant&))); + completeSignalConnected = true; + } + if (!errorSignalConnected) + { + // Connect always error signal once connect(currentRequest, SIGNAL(requestError(int,const QString&)), this, SLOT(handleAsyncError(int))); - asyncErrorSet = true; + errorSignalConnected = true; } XQSERVICE_DEBUG_PRINT("request::send>>>");