diff --git a/Jupiter/IRC_Client.cpp b/Jupiter/IRC_Client.cpp index 4821ada..22ab0bc 100644 --- a/Jupiter/IRC_Client.cpp +++ b/Jupiter/IRC_Client.cpp @@ -1252,7 +1252,7 @@ bool Jupiter::IRC::Client::connect() return false; Jupiter::IRC::Client::data_->sock->setBlocking(false); - if (Jupiter::IRC::Client::data_->ssl == false) + if (Jupiter::IRC::Client::data_->ssl == false && Jupiter::IRC::Client::readConfigBool(STRING_LITERAL_AS_REFERENCE("STARTTLS"), true)) { Jupiter::IRC::Client::data_->sock->send("STARTTLS" ENDL); Jupiter::IRC::Client::data_->connectionStatus = 1; @@ -1269,6 +1269,19 @@ void Jupiter::IRC::Client::disconnect(bool stayDead) Jupiter::IRC::Client::data_->reconnectTime = time(0) + Jupiter::IRC::Client::data_->reconnectDelay; Jupiter::IRC::Client::data_->dead = stayDead; this->OnDisconnect(); + bool ssl = Jupiter::IRC::Client::readConfigBool(STRING_LITERAL_AS_REFERENCE("SSL")); + if (ssl != Jupiter::IRC::Client::data_->ssl) + { + delete Jupiter::IRC::Client::data_->sock; + if (Jupiter::IRC::Client::data_->ssl = ssl) + { + Jupiter::SecureTCPSocket *t = new Jupiter::SecureTCPSocket(); + if (Jupiter::IRC::Client::data_->SSLCertificate.size() != 0) + t->setCertificate(Jupiter::IRC::Client::data_->SSLCertificate, Jupiter::IRC::Client::data_->SSLKey); + Jupiter::IRC::Client::data_->sock = t; + } + else Jupiter::IRC::Client::data_->sock = new Jupiter::TCPSocket(); + } for (int i = Jupiter::plugins->size() - 1; i >= 0; i--) Jupiter::plugins->get(i)->OnDisconnect(this); } diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 6744876..3860012 100644 Binary files a/Release/Jupiter.lib and b/Release/Jupiter.lib differ