33 #include <KLocalizedString>
34 #include <ksocketfactory.h>
36 using namespace MailTransport;
38 namespace MailTransport {
43 SocketPrivate(
Socket *s );
53 void slotStateChanged( QAbstractSocket::SocketState state );
54 void slotModeChanged( QSslSocket::SslMode state );
55 void slotSocketRead();
56 void slotSslErrors(
const QList<QSslError> &errors );
64 SocketPrivate::SocketPrivate(
Socket *s ) : q( s )
68 void SocketPrivate::slotConnected()
73 kDebug() <<
"normal connect";
76 kDebug() <<
"encrypted connect";
77 socket->startClientEncryption();
81 void SocketPrivate::slotStateChanged( QAbstractSocket::SocketState state )
84 kDebug() <<
"State is now:" << ( int ) state;
86 if ( state == QAbstractSocket::UnconnectedState ) {
91 void SocketPrivate::slotModeChanged( QSslSocket::SslMode state )
94 kDebug() <<
"Mode is now:" << state;
96 if ( state == QSslSocket::SslClientMode ) {
101 void SocketPrivate::slotSocketRead()
109 m_msg += QLatin1String( socket->readAll() );
111 if ( !m_msg.endsWith( QLatin1Char(
'\n' ) ) ) {
116 kDebug() << socket->isEncrypted() << m_msg.trimmed();
119 emit q->data( m_msg );
123 void SocketPrivate::slotSslErrors(
const QList<QSslError> & )
128 socket->ignoreSslErrors();
135 : QObject( parent ), d( new SocketPrivate( this ) )
151 kDebug() <<
"Connecting to:" << d->server <<
":" << d->port;
162 static_cast<QSslSocket *
>( KSocketFactory::connectToHost( d->protocol, d->server,
165 d->socket->setProtocol( QSsl::AnyProtocol );
167 connect( d->socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)),
168 SLOT(slotStateChanged(QAbstractSocket::SocketState)) );
169 connect( d->socket, SIGNAL(modeChanged(QSslSocket::SslMode)),
170 SLOT(slotModeChanged(QSslSocket::SslMode)) );
171 connect( d->socket, SIGNAL(
connected()), SLOT(slotConnected()) );
172 connect( d->socket, SIGNAL(readyRead()), SLOT(slotSocketRead()) );
173 connect( d->socket, SIGNAL(encrypted()), SIGNAL(
connected()) );
174 connect( d->socket, SIGNAL(sslErrors(QList<QSslError>)),
175 SLOT(slotSslErrors(QList<QSslError>)) );
187 QByteArray cs = ( text + QLatin1String(
"\r\n" ) ).toLatin1();
190 kDebug() <<
"C :" << cs;
193 d->socket->write( cs.data(), cs.size() );
199 bool ok = d->socket && d->socket->state() == QAbstractSocket::ConnectedState;
205 kDebug() << objectName();
206 d->socket->setProtocol( QSsl::TlsV1 );
207 d->socket->startClientEncryption();
230 #include "moc_socket.cpp"