/***************************************************************************
- * Copyright (C) 2005-2013 by the Quassel Project *
+ * Copyright (C) 2005-2014 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
qDebug() << qPrintable(tr("Starting encryption for Client:")) << _peer->description();
connect(sslSocket, SIGNAL(sslErrors(const QList<QSslError> &)), SLOT(onSslErrors()));
+ sslSocket->flush(); // ensure that the write cache is flushed before we switch to ssl (bug 682)
sslSocket->startServerEncryption();
#endif
}
// TODO: only in compat mode
bool useSsl = false;
#ifdef HAVE_SSL
+ if (Quassel::isOptionSet("require-ssl") && !msg.sslSupported) {
+ _peer->dispatch(ClientDenied(tr("<b>SSL is required!</b><br>You need to use SSL in order to connect to this core.")));
+ _peer->close();
+ return;
+ }
if (Core::sslSupported() && msg.sslSupported)
useSsl = true;
#endif
disconnect(_peer, 0, this, 0);
_peer->setParent(0); // Core needs to take care of this one now!
+ socket()->flush(); // Make sure all data is sent before handing over the peer (and socket) to the session thread (bug 682)
emit handshakeComplete(_peer, uid);
}