From 2ed7a96245e9341b12582617000a8db8c675c2a3 Mon Sep 17 00:00:00 2001 From: joss17 Date: Fri, 18 Dec 2009 17:50:11 +0000 Subject: [PATCH] Revert "Revert "add a quiet shutdown when SSL_ERROR_SYSCALL is raised"" This reverts commit 5f9020b2b69a1920f5886a3ec25a2591902d17ae. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1900 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/pqi/pqissl.cc | 17 ++++++++++++----- libretroshare/src/pqi/pqissl.h | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/libretroshare/src/pqi/pqissl.cc b/libretroshare/src/pqi/pqissl.cc index 4ef60fcac..9190cd465 100644 --- a/libretroshare/src/pqi/pqissl.cc +++ b/libretroshare/src/pqi/pqissl.cc @@ -96,7 +96,7 @@ pqissl::pqissl(pqissllistener *l, PQInterface *parent, p3AuthMgr *am, p3ConnectM net_attempt(0), net_failure(0), net_unreachable(0), sameLAN(false), n_read_zero(0), mConnectDelay(0), mConnectTS(0), - mConnectTimeout(0), mTimeoutTS(0), + mConnectTimeout(0), mTimeoutTS(0), quietShutdown(false), /**************** PQI_USE_XPGP ******************/ #if defined(PQI_USE_XPGP) @@ -213,14 +213,19 @@ int pqissl::reset() out << "\tssl_con: " << ssl_connection << std::endl; out << std::endl; - bool neededReset = false; + bool neededReset = false; - if (ssl_connection != NULL) + if (ssl_connection != NULL && sockfd > 0) { out << "pqissl::reset() Shutting down SSL Connection"; out << std::endl; - SSL_shutdown(ssl_connection); + if (quietShutdown) { + ssl_connection->quiet_shutdown; + } else { + SSL_shutdown(ssl_connection); + } + quietShutdown = false; neededReset = true; } @@ -1374,6 +1379,7 @@ int pqissl::senddata(void *data, int len) out << std::endl; std::cerr << out.str() ; rslog(RSL_ALERT, pqisslzone, out.str()); + quietShutdown = true; reset(); return -1; } @@ -1493,7 +1499,8 @@ int pqissl::readdata(void *data, int len) out << "Socket Closed Abruptly.... Resetting PQIssl"; out << std::endl; rslog(RSL_ALERT, pqisslzone, out.str()); - reset(); + quietShutdown = true; + reset(); std::cerr << out.str() << std::endl ; return -1; } diff --git a/libretroshare/src/pqi/pqissl.h b/libretroshare/src/pqi/pqissl.h index 6269432ce..20100a9d2 100644 --- a/libretroshare/src/pqi/pqissl.h +++ b/libretroshare/src/pqi/pqissl.h @@ -203,6 +203,7 @@ virtual int net_internal_fcntl_nonblock(int fd) { return unix_fcntl_nonblock(fd) time_t mConnectTS; uint32_t mConnectTimeout; time_t mTimeoutTS; + bool quietShutdown; /* Need Certificate specific functions here! */ /**************** PQI_USE_XPGP ******************/