[prev in list] [next in list] [prev in thread] [next in thread]
List: kopete-devel
Subject: [kopete-devel] Proof of concept: Oscar,
From: Thiago Macieira <thiago.macieira () kdemail ! net>
Date: 2004-06-26 16:01:08
Message-ID: 200406261301.09291.thiago.macieira () kdemail ! net
[Download RAW message or body]
[Attachment #2 (multipart/signed)]
[Attachment #4 (multipart/mixed)]
Hello everyone,
this is just to let you know that I've ported three protocols to the new
socket API. My Kopete is working with them right now. However, I
haven't been able to test any filetransfers (and DCC Chat is disabled
in the IRC plugin).
Also, when doing so, it has also helped me fix some bugs in my own code.
The name-resolution is truly asynchronous as expected and so is
buffering.
Many thanks to mETz for porting most of Oscar to the new API already.
You'll see that the remaining fix is quite, quite trivial.
--
Thiago Macieira - Registered Linux user #65028
thiago (AT) macieira (DOT) info
ICQ UIN: 1967141 PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
["kopete-irc.diff" (text/x-diff)]
? irc/pixmaps/Makefile.in
Index: irc/libkirc/kirc.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kirc.cpp,v
retrieving revision 1.122
diff -u -3 -p -r1.122 kirc.cpp
--- irc/libkirc/kirc.cpp 2 Jun 2004 02:32:09 -0000 1.122
+++ irc/libkirc/kirc.cpp 26 Jun 2004 15:56:49 -0000
@@ -32,13 +32,16 @@
#include <kconfig.h>
#include <klocale.h>
#include <kstandarddirs.h>
-#include <kextsock.h>
+#include <kbufferedsocket.h>
+#include <kresolver.h> // for KResolver::InternetFamily
#include "kircfunctors.h"
#include "ksslsocket.h"
#include "kirc.h"
+using namespace KNetwork;
+
/* Please note that the regular expression "[\\r\\n]*$" is used in a \
QString::replace statement many times.
* This gets rid of trailing \r\n, \r, \n, and \n\r characters.
*/
@@ -105,21 +108,21 @@ void KIRC::setUseSSL( bool useSSL )
m_useSSL = useSSL;
+ m_sock = new KBufferedSocket;
+ m_sock->setFamily(KResolver::InternetFamily);
if( m_useSSL )
{
- m_sock = new KSSLSocket;
- m_sock->setSocketFlags( KExtendedSocket::inetSocket );
- }
- else
- {
- m_sock = new KExtendedSocket;
- m_sock->setSocketFlags( KExtendedSocket::inputBufferedSocket | \
KExtendedSocket::inetSocket ); +#if 0
+ m_sock->setSocketDevice(new KSSLSocketDevice());
+#else
+ kdWarning() << "SSL not operational yet" << endl;
+#endif
}
- QObject::connect(m_sock, SIGNAL(closed(int)), this, SLOT(slotConnectionClosed()));
+ QObject::connect(m_sock, SIGNAL(closed()), this, SLOT(slotConnectionClosed()));
QObject::connect(m_sock, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
- QObject::connect(m_sock, SIGNAL(connectionSuccess()), this, \
SLOT(slotConnected()));
- QObject::connect(m_sock, SIGNAL(connectionFailed(int)), this, SLOT(error(int)));
+ QObject::connect(m_sock, SIGNAL(connected(const KResolverEntry&)), this, \
SLOT(slotConnected())); + QObject::connect(m_sock, SIGNAL(gotError(int)), this, \
SLOT(error(int))); }
}
@@ -144,17 +147,11 @@ void KIRC::connectToServer(const QString
m_Port = port;
kdDebug(14120) << "Trying to connect to server " << m_Host << ":" << m_Port << \
endl;
- kdDebug(14120) << "Sock status: " << m_sock->socketStatus() << endl;
-
- if( !m_sock->setAddress(m_Host, m_Port) )
- kdDebug(14120) << k_funcinfo << "setAddress failed. Status: " << \
m_sock->socketStatus() << endl;
-
- if( m_sock->lookup() ) // necessary to avoid QDns
- kdDebug(14120) << k_funcinfo << "lookup() failed. Status: " << \
m_sock->socketStatus() << endl; + kdDebug(14120) << "Sock status: " << \
m_sock->state() << endl;
- if( m_sock->startAsyncConnect() == 0 )
+ if( m_sock->connect(m_Host, QString::number(m_Port) ) )
{
- kdDebug(14120) << k_funcinfo << "Success!. Status: " << m_sock->socketStatus() << \
endl; + kdDebug(14120) << k_funcinfo << "Success!. Status: " << m_sock->state() << \
endl; setStatus(Connecting);
//If we don't get a reply within 15 seconds, give up
@@ -162,7 +159,7 @@ void KIRC::connectToServer(const QString
}
else
{
- kdDebug(14120) << k_funcinfo << "Failed. Status: " << m_sock->socketStatus() << \
endl; + kdDebug(14120) << k_funcinfo << "Failed. Status: " << m_sock->state() << \
endl; setStatus(Disconnected);
}
}
@@ -174,7 +171,6 @@ void KIRC::slotAuthFailed()
{
setStatus(Disconnected);
m_sock->close();
- m_sock->reset();
emit connectionTimeout();
}
}
@@ -198,24 +194,24 @@ void KIRC::slotConnected()
void KIRC::slotConnectionClosed()
{
- kdDebug(14120) << k_funcinfo << "Connection Closed - local status: " << m_status << \
" sock status: " << m_sock->socketStatus() << endl; + kdDebug(14120) << k_funcinfo << \
"Connection Closed - local status: " << m_status << " sock status: " << \
m_sock->state() << endl; if(m_status == Closing)
emit successfulQuit();
if(m_status!=Disconnected)
setStatus(Disconnected);
- m_sock->reset();
}
void KIRC::error(int errCode)
{
+ if (errCode == KSocketBase::WouldBlock)
+ // ignore non-fatal error
+ return;
+
kdDebug(14120) << k_funcinfo << "Socket error: " << errCode << endl;
- if (m_sock->socketStatus () != KExtendedSocket::connecting)
- {
- // Connection in progress.. This is a signal fired wrong
- setStatus(Disconnected);
- m_sock->reset();
- }
+
+ setStatus(Disconnected);
+ m_sock->close();
}
void KIRC::setVersionString(const QString &newString)
@@ -316,7 +312,7 @@ void KIRC::slotReadyRead()
// close the socket unexpectedly
bool parseSuccess;
- if( m_sock->socketStatus() == KExtendedSocket::connected && m_sock->canReadLine())
+ if( m_sock->state() == KBufferedSocket::Connected && m_sock->canReadLine())
{
KIRCMessage msg = KIRCMessage::parse(this, defaultCodec, &parseSuccess);
if(parseSuccess)
@@ -374,7 +370,7 @@ void KIRC::slotReadyRead()
QTimer::singleShot( 0, this, SLOT( slotReadyRead() ) );
}
- if(m_sock->socketStatus()!=KExtendedSocket::connected)
+ if(m_sock->state() != KBufferedSocket::Connected)
error();
}
@@ -396,7 +392,7 @@ void KIRC::showInfoDialog()
{
if( m_useSSL )
{
- static_cast<KSSLSocket*>( m_sock )->showInfoDialog();
+ //static_cast<KSSLSocket*>( m_sock )->showInfoDialog();
}
}
Index: irc/libkirc/kirc.h
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kirc.h,v
retrieving revision 1.77
diff -u -3 -p -r1.77 kirc.h
--- irc/libkirc/kirc.h 5 Jun 2004 17:12:50 -0000 1.77
+++ irc/libkirc/kirc.h 26 Jun 2004 15:56:49 -0000
@@ -115,7 +115,7 @@ public:
void setSourceString(const QString &sourceString);
void connectToServer(const QString &host, Q_UINT16 port, const QString &nickname, \
bool useSSL = false);
- KExtendedSocket *socket()
+ KNetwork::KBufferedSocket *socket()
{ return m_sock; };
EngineStatus status() const
@@ -445,7 +445,7 @@ private:
QTextCodec *defaultCodec;
QTimer *m_connectTimer;
- KExtendedSocket *m_sock;
+ KNetwork::KBufferedSocket *m_sock;
};
#endif // KIRC_H
Index: irc/libkirc/kirc_commands.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kirc_commands.cpp,v
retrieving revision 1.3
diff -u -3 -p -r1.3 kirc_commands.cpp
--- irc/libkirc/kirc_commands.cpp 14 May 2004 00:37:27 -0000 1.3
+++ irc/libkirc/kirc_commands.cpp 26 Jun 2004 15:56:49 -0000
@@ -19,12 +19,14 @@
#include <qtimer.h>
-#include <kextsock.h>
+#include <kbufferedsocket.h>
#include "kircfunctors.h"
#include "kopetemessage.h"
#include "kirc.h"
+using namespace KNetwork;
+
void KIRC::registerCommands()
{
// The following order is based on the RFC2812.
@@ -122,7 +124,6 @@ void KIRC::quitIRC(const QString &reason
{
setStatus(Disconnected);
m_sock->close();
- m_sock->reset();
}
else
{
@@ -134,13 +135,11 @@ void KIRC::quitIRC(const QString &reason
void KIRC::quitTimeout()
{
- if( m_sock->socketStatus() > KExtendedSocket::nothing &&
- m_sock->socketStatus() < KExtendedSocket::done &&
+ if( m_sock->state() != KBufferedSocket::Idle &&
m_status == Closing)
{
setStatus(Disconnected);
m_sock->close();
- m_sock->reset();
}
}
Index: irc/libkirc/kirc_ctcp.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kirc_ctcp.cpp,v
retrieving revision 1.10
diff -u -3 -p -r1.10 kirc_ctcp.cpp
--- irc/libkirc/kirc_ctcp.cpp 15 Jun 2004 08:03:06 -0000 1.10
+++ irc/libkirc/kirc_ctcp.cpp 26 Jun 2004 15:56:49 -0000
@@ -17,14 +17,22 @@
*************************************************************************
*/
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h> // for ntohl
+#include <sys/time.h> // for gettimeofday
+
#include "kirctransferhandler.h"
#include "kirc.h"
-#include <kextsock.h>
+#include <kbufferedsocket.h>
+#include <ksocketaddress.h>
#include <qfileinfo.h>
#include <qregexp.h>
+using namespace KNetwork;
+
void KIRC::registerCtcp()
{
// CTCP Queries
@@ -113,8 +121,7 @@ bool KIRC::CtcpQuery_clientInfo(const KI
void KIRC::CtcpRequest_dcc(const QString &nickname, const QString &fileName, uint \
port, KIRCTransfer::Type type) {
if( m_status != Connected ||
- m_sock->localAddress() == 0 ||
- m_sock->localAddress()->nodeName() == QString::null)
+ m_sock->localAddress().nodeName() == QString::null)
return;
switch( type )
@@ -123,7 +130,7 @@ void KIRC::CtcpRequest_dcc(const QString
writeCtcpQueryMessage(nickname, QString::null,
QString::fromLatin1("DCC"),
KIRC::join( QString::fromLatin1("CHAT"), QString::fromLatin1("chat"),
- m_sock->localAddress()->nodeName(), QString::number(port)
+ m_sock->localAddress().nodeName(), QString::number(port)
)
);
break;
@@ -135,19 +142,15 @@ void KIRC::CtcpRequest_dcc(const QString
KIRCTransferServer *server = KIRCTransferHandler::self()->createServer(this, \
nickname, type, fileName, file.size());
- QString ip = m_sock->localAddress()->nodeName();
- QRegExp reg("^(\\d{1,3}).(\\d{1,3}).(\\d{1,3}).(\\d{1,3})$");
- if (!reg.exactMatch(ip))
+ KInetSocketAddress addr = m_sock->localAddress().asInet();
+ if (!addr.ipVersion() != 4)
{
- kdDebug(14120) << "Not an ipv4:" << ip << endl;
+ kdDebug(14120) << "Not an ipv4:" << addr.toString() << endl;
return;
}
- // FIXME: This is very an ugly way to do it
- QString ipNumber = QString::number( (Q_UINT32)reg.cap(1).toUShort()*(256*256*256)+
- reg.cap(2).toUShort()*(256*256)+
- reg.cap(3).toUShort()*256+
- reg.cap(4).toUShort());
+ QString ipNumber = QString::number(ntohl(addr.ipAddress().IPv4Addr()));
+
kdDebug(14120) << "Starting DCC file outgoing transfer." << endl;
writeCtcpQueryMessage(nickname, QString::null,
@@ -177,14 +180,15 @@ bool KIRC::CtcpQuery_dcc(const KIRCMessa
*/
bool okayHost, okayPort;
// should ctctMsg.arg(1) be tested?
- QHostAddress address(ctcpMsg.arg(2).toUInt(&okayHost));
+ KIpAddress ip(htonl(ctcpMsg.arg(2).toUInt(&okayHost)));
unsigned int port = ctcpMsg.arg(3).toUInt(&okayPort);
if (okayHost && okayPort)
{
kdDebug(14120) << "Starting DCC chat window." << endl;
+ KInetSocketAddress address(ip, port);
KIRCTransferHandler::self()->createClient(
this, msg.nickFromPrefix(),
- address, port,
+ address,
KIRCTransfer::Chat );
return true;
}
@@ -202,15 +206,16 @@ bool KIRC::CtcpQuery_dcc(const KIRCMessa
*/
bool okayHost, okayPort, okaySize;
// QFileInfo realfile(msg.arg(1));
- QHostAddress address(ctcpMsg.arg(2).toUInt(&okayHost));
+ KIpAddress ip(htonl(ctcpMsg.arg(2).toUInt(&okayHost)));
unsigned int port = ctcpMsg.arg(3).toUInt(&okayPort);
unsigned int size = ctcpMsg.arg(4).toUInt(&okaySize);
if (okayHost && okayPort && okaySize)
{
kdDebug(14120) << "Starting DCC send file transfert." << endl;
+ KInetSocketAddress address(ip, port);
KIRCTransferHandler::self()->createClient(
this, msg.nickFromPrefix(),
- address, port,
+ address,
KIRCTransfer::FileIncoming,
msg.arg(1), size );
return true;
Index: irc/libkirc/kircmessage.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kircmessage.cpp,v
retrieving revision 1.20
diff -u -3 -p -r1.20 kircmessage.cpp
--- irc/libkirc/kircmessage.cpp 14 May 2004 02:45:14 -0000 1.20
+++ irc/libkirc/kircmessage.cpp 26 Jun 2004 15:56:49 -0000
@@ -18,7 +18,7 @@
#include <kdebug.h>
#include <klocale.h>
#include <kmessagebox.h>
-#include <kextsock.h>
+#include <kbufferedsocket.h>
#include "kopetemessage.h"
@@ -195,12 +195,11 @@ KIRCMessage KIRCMessage::parse(KIRC *eng
if( engine->socket()->canReadLine() )
{
- QCString raw( engine->socket()->bytesAvailable()+1 );
- Q_LONG length = engine->socket()->readLine(raw.data(), raw.count());
+ QCString raw = engine->socket()->readLine();
+ Q_LONG length = raw.length();
- if( length > -1 )
+ if( length > 0 )
{
- raw.resize( length );
raw.replace("\r\n",""); //remove the trailling \r\n if any(there must be in fact)
kdDebug(14121) << "<< " << raw << endl;
Index: irc/libkirc/kirctransfer.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kirctransfer.cpp,v
retrieving revision 1.10
diff -u -3 -p -r1.10 kirctransfer.cpp
--- irc/libkirc/kirctransfer.cpp 15 Jun 2004 19:00:20 -0000 1.10
+++ irc/libkirc/kirctransfer.cpp 26 Jun 2004 15:56:49 -0000
@@ -16,14 +16,17 @@
*/
#include <kdebug.h>
-#include <kextsock.h>
#include <klocale.h>
+#include <kbufferedsocket.h>
+#include <ksocketaddress.h>
#include <qfile.h>
#include <qtimer.h>
#include "kirctransfer.h"
+using namespace KNetwork;
+
KIRCTransfer::KIRCTransfer( KIRC *engine, QString nick,// QString nick_peer_adress
Type type,
QObject *parent, const char *name )
@@ -50,7 +53,7 @@ KIRCTransfer::KIRCTransfer( KIRC *engine
}
KIRCTransfer::KIRCTransfer( KIRC *engine, QString nick,// QString nick_peer_adress
- QHostAddress hostAdress, Q_UINT16 port, // put this in a QVariant ?
+ const KSocketAddress& peer,
KIRCTransfer::Type type,
QString fileName, Q_UINT32 fileSize, // put this in a QVariant ?
QObject *parent, const char *name )
@@ -61,7 +64,7 @@ KIRCTransfer::KIRCTransfer( KIRC *engine
m_file(0), m_fileName(fileName), m_fileSize(fileSize), m_fileSizeCur(0), \
m_fileSizeAck(0), m_receivedBytes(0), m_receivedBytesLimit(0), m_sentBytes(0), \
m_sentBytesLimit(0) {
- setSocket(new KExtendedSocket(hostAdress.toString(), port));
+ setSocket(new KBufferedSocket(peer.nodeName(), peer.serviceName()));
}
/*
KIRCTransfer::KIRCTransfer( KIRC *engine, QString nick,// QString nick_peer_adress
@@ -104,12 +107,13 @@ KIRCTransfer::Status KIRCTransfer::statu
void KIRCTransfer::slotError( int error )
{
- // Connection in progress.. This is a signal fired wrong
- if (m_socket->socketStatus () != KExtendedSocket::connecting)
- {
- abort(KExtendedSocket::strError(m_socket->status(), m_socket->systemError()));
-// closeSocket();
- }
+ if (error == KSocketBase::WouldBlock)
+ // ignore non-fatal error
+ return;
+
+ // FIXME with string messages!
+ abort(i18n("Connection to IRC server closed"));
+// closeSocket();
}
bool KIRCTransfer::initiate()
@@ -141,7 +145,7 @@ bool KIRCTransfer::initiate()
// this, SLOT(slotConnectionClosed()));
// connect(m_socket, SIGNAL(delayedCloseFinished()),
// this, SLOT(slotConnectionClosed()));
- connect(m_socket, SIGNAL(error(int)), // FIXME: connection failed: No such signal \
KExtendedSocket::error(int) + connect(m_socket, SIGNAL(gotError(int)),
this, SLOT(slotError(int)));
switch( m_type )
@@ -175,8 +179,7 @@ bool KIRCTransfer::initiate()
break;
}
-// if(status()==Idle)
- if(m_socket->status()==KExtendedSocket::nothing)
+ if(m_socket->state() == KBufferedSocket::Idle)
m_socket->connect();
m_socket->enableRead(true);
@@ -195,7 +198,7 @@ bool KIRCTransfer::initiate()
return true;
}
-bool KIRCTransfer::setSocket( KExtendedSocket *socket )
+bool KIRCTransfer::setSocket( KBufferedSocket *socket )
{
if (!m_socket)
{
Index: irc/libkirc/kirctransfer.h
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kirctransfer.h,v
retrieving revision 1.9
diff -u -3 -p -r1.9 kirctransfer.h
--- irc/libkirc/kirctransfer.h 14 Jun 2004 17:59:47 -0000 1.9
+++ irc/libkirc/kirctransfer.h 26 Jun 2004 15:56:49 -0000
@@ -26,7 +26,10 @@
class KIRC;
-class KExtendedSocket;
+namespace KNetwork {
+ class KBufferedSocket;
+ class KSocketAddress;
+}
class QFile;
class QTextCodec;
@@ -59,7 +62,7 @@ public:
QObject *parent = 0L, const char *name = 0L );
KIRCTransfer( KIRC *engine, QString nick,// QString nick_peer_adress,
- QHostAddress peer_address, Q_UINT16 peer_port,
+ const KNetwork::KSocketAddress& peer,
KIRCTransfer::Type type,
QObject *parent = 0L, const char *name = 0L );
@@ -69,7 +72,7 @@ public:
QObject *parent = 0L, const char *name = 0L );
KIRCTransfer( KIRC *engine, QString nick,// QString nick_peer_adress,
- QHostAddress peer_address, Q_UINT16 peer_port,
+ const KNetwork::KSocketAddress& peer,
KIRCTransfer::Type type,
QString fileName, Q_UINT32 fileSize,
QObject *parent = 0L, const char *name = 0L );
@@ -115,7 +118,7 @@ public:
unsigned long fileSize() const
{ return m_fileSize; }
public slots:
- bool setSocket( KExtendedSocket *socket );
+ bool setSocket( KNetwork::KBufferedSocket *socket );
void closeSocket();
void setCodec( QTextCodec *codec );
@@ -159,7 +162,7 @@ protected:
QString m_nick;
Type m_type;
- KExtendedSocket *m_socket;
+ KNetwork::KBufferedSocket *m_socket;
bool m_initiated;
// Text member data
Index: irc/libkirc/kirctransferhandler.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kirctransferhandler.cpp,v
retrieving revision 1.7
diff -u -3 -p -r1.7 kirctransferhandler.cpp
--- irc/libkirc/kirctransferhandler.cpp 15 Jun 2004 19:00:20 -0000 1.7
+++ irc/libkirc/kirctransferhandler.cpp 26 Jun 2004 15:56:49 -0000
@@ -17,7 +17,9 @@
#include <kglobal.h>
#include <klocale.h>
-#include <kextsock.h>
+#include <kbufferedsocket.h>
+#include <kserversocket.h>
+#include <ksocketaddress.h>
#include <qfile.h>
#include <qregexp.h>
@@ -27,6 +29,7 @@
#include "kirctransferhandler.h"
+using namespace KNetwork;
KIRCTransferHandler *KIRCTransferHandler::self()
{
@@ -64,13 +67,13 @@ KIRCTransferServer *KIRCTransferHandler:
KIRCTransfer *KIRCTransferHandler::createClient(
KIRC *engine, QString nick,// QString nick_peer_adress,
- QHostAddress peer_address, Q_UINT16 peer_port,
+ const KSocketAddress& peer,
KIRCTransfer::Type type,
QString fileName, Q_UINT32 fileSize )
{
KIRCTransfer *client = new KIRCTransfer(
engine, nick,// QString nick_peer_adress,
- peer_address, peer_port,
+ peer,
type,
fileName, fileSize,
this );
Index: irc/libkirc/kirctransferhandler.h
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kirctransferhandler.h,v
retrieving revision 1.6
diff -u -3 -p -r1.6 kirctransferhandler.h
--- irc/libkirc/kirctransferhandler.h 15 Jun 2004 19:00:21 -0000 1.6
+++ irc/libkirc/kirctransferhandler.h 26 Jun 2004 15:56:49 -0000
@@ -18,15 +18,16 @@
#ifndef KIRCTRANSFERHANDLER_H
#define KIRCTRANSFERHANDLER_H
-#include <qhostaddress.h>
-
#include "kirctransfer.h"
#include "kirctransferserver.h"
class QFile;
class QTextCodec;
-class KExtendedSocket;
+namespace KNetwork {
+ class KServerSocket;
+ class KSocketAddress;
+}
class KIRCTransferHandler
: public QObject
@@ -45,7 +46,7 @@ public:
KIRCTransfer *createClient(
KIRC *engine, QString nick,// QString nick_peer_adress,
- QHostAddress peer_address, Q_UINT16 peer_port,
+ const KNetwork::KSocketAddress& peer,
KIRCTransfer::Type type,
QString file = QString::null, Q_UINT32 fileSize = 0 );
Index: irc/libkirc/kirctransferserver.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kirctransferserver.cpp,v
retrieving revision 1.4
diff -u -3 -p -r1.4 kirctransferserver.cpp
--- irc/libkirc/kirctransferserver.cpp 15 Jun 2004 20:16:16 -0000 1.4
+++ irc/libkirc/kirctransferserver.cpp 26 Jun 2004 15:56:49 -0000
@@ -16,11 +16,16 @@
*/
#include <kdebug.h>
-#include <kextsock.h>
+#include <kserversocket.h>
+#include <kbufferedsocket.h>
+#include <kresolver.h> // for KResolver::InternetFamily
#include "kirctransferhandler.h"
#include "kirctransferserver.h"
+
+using namespace KNetwork;
+
/*
KIRCTransferServer::KIRCTransferServer( QObject *parent, const char *name )
: QObject( parent, name ),
@@ -68,37 +73,27 @@ bool KIRCTransferServer::initServer()
QObject::connect(this, SIGNAL(incomingNewTransfer(KIRCTransfer *)),
KIRCTransferHandler::self(), SIGNAL(transferCreated(KIRCTransfer *)));
- m_socket = new KExtendedSocket();
-
-// m_socket->setHost(m_socket->localAddress()->nodeName());
- if (!m_socket->setPort(m_port))
- kdDebug(14120) << k_funcinfo << "Failed to set port to" << m_port << endl;
- m_socket->setSocketFlags(KExtendedSocket::noResolve
- |KExtendedSocket::passiveSocket
- |KExtendedSocket::inetSocket );
-
- if (!m_socket->setTimeout(2*60)) // FIXME: allow configuration of this.
- kdDebug(14120) << k_funcinfo << "Failed to set timeout." << endl;
+ m_socket = new KServerSocket(QString::number(m_port));
+ m_socket->setResolutionEnabled(false);
+ m_socket->setFamily(KResolver::InternetFamily);
+ m_socket->setTimeout(2*60*1000); // FIXME: allow configuration of this.
+
QObject::connect(m_socket, SIGNAL(readyAccept()),
this, SLOT(readyAccept()));
- QObject::connect(m_socket, SIGNAL(connectionFailed(int)),
- this, SLOT(connectionFailed(int)));
-
- m_socket->listen(m_backlog);
- m_socket->setBlockingMode(true);
- const KInetSocketAddress *localAddress = static_cast<const KInetSocketAddress \
*>(m_socket->localAddress());
- if (!localAddress)
+ if (!m_socket->listen(m_backlog))
{
- kdDebug(14120) << k_funcinfo << "Not a KInetSocketAddress." << endl;
- deleteLater();
+ delete m_socket;
+ m_socket = 0L;
return false;
}
+ m_socket->setBlocking(true);
- m_port = localAddress->port();
+ KInetSocketAddress localAddress = m_socket->localAddress().asInet();
+ m_port = localAddress.port();
}
- return (m_socket->socketStatus() != KExtendedSocket::error);
+ return true;
}
bool KIRCTransferServer::initServer( Q_UINT16 port, int backlog )
@@ -113,22 +108,16 @@ bool KIRCTransferServer::initServer( Q_U
void KIRCTransferServer::readyAccept()
{
- KExtendedSocket *socket;
- m_socket->accept( socket );
+ KBufferedSocket *socket = static_cast<KBufferedSocket*>(m_socket->accept());
+ if (socket == 0L)
+ return;
+
KIRCTransfer *transfer = new KIRCTransfer(m_engine, m_nick, m_type, m_fileName, \
m_fileSize); transfer->setSocket(socket);
transfer->initiate();
emit incomingNewTransfer(transfer);
}
-void KIRCTransferServer::connectionFailed(int error)
-{
- if (error!=0)
- {
- kdDebug(14120) << k_funcinfo << "Connection failed with " << m_nick << endl;
- deleteLater();
- }
-}
/*
void KIRCTransfer::initClient()
{
Index: irc/libkirc/kirctransferserver.h
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/irc/libkirc/kirctransferserver.h,v
retrieving revision 1.4
diff -u -3 -p -r1.4 kirctransferserver.h
--- irc/libkirc/kirctransferserver.h 15 Jun 2004 20:16:16 -0000 1.4
+++ irc/libkirc/kirctransferserver.h 26 Jun 2004 15:56:49 -0000
@@ -22,7 +22,9 @@
#include <qobject.h>
-class KExtendedSocket;
+namespace KNetwork {
+ class KServerSocket;
+}
class QFile;
class QTextCodec;
@@ -54,10 +56,9 @@ signals:
protected slots:
void readyAccept();
- void connectionFailed(int error);
private:
- KExtendedSocket * m_socket;
+ KNetwork::KServerSocket *m_socket;
Q_UINT16 m_port;
int m_backlog;
["kopete-msn.diff" (text/x-diff)]
? msn/pixmaps/Makefile.in
Index: msn/msnaccount.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/msn/msnaccount.cpp,v
retrieving revision 1.81
diff -u -3 -p -r1.81 msnaccount.cpp
--- msn/msnaccount.cpp 14 Jun 2004 11:42:57 -0000 1.81
+++ msn/msnaccount.cpp 26 Jun 2004 15:55:38 -0000
@@ -202,8 +202,8 @@ void MSNAccount::createNotificationServe
SLOT( slotCreateChat( const QString&, const QString&, const QString&, const \
QString&, const QString& ) ) ); QObject::connect( m_notifySocket, SIGNAL( startChat( \
const QString&, const QString& ) ), SLOT( slotCreateChat( const QString&, const \
QString& ) ) );
- QObject::connect( m_notifySocket, SIGNAL( socketClosed( int ) ),
- SLOT( slotNotifySocketClosed( int ) ) );
+ QObject::connect( m_notifySocket, SIGNAL( socketClosed() ),
+ SLOT( slotNotifySocketClosed() ) );
QObject::connect( m_notifySocket, SIGNAL( newContactList() ),
SLOT( slotNewContactList() ) );
QObject::connect( m_notifySocket, SIGNAL( receivedNotificationServer(const \
QString&, uint ) ), @@ -493,7 +493,7 @@ void MSNAccount::slotNotifySocketStatusC
// static_cast<MSNProtocol *>( protocol() )->slotNotifySocketStatusChanged( status \
); }
-void MSNAccount::slotNotifySocketClosed( int state )
+void MSNAccount::slotNotifySocketClosed()
{
kdDebug( 14140 ) << k_funcinfo << endl;
@@ -503,12 +503,15 @@ void MSNAccount::slotNotifySocketClosed(
myself()->setOnlineStatus( MSNProtocol::protocol()->FLN );
if ( m_badpassword )
connect();
+
+#if 0
else if ( state == 0x10 ) // connection died unexpectedly
{
KMessageBox::queuedMessageBox( Kopete::UI::Global::mainWidget(), \
KMessageBox::Error , i18n( "The connection with the MSN server was lost \
unexpectedly.\n" "If you cannot reconnect now, the server might be down. In that \
case, please try again later." ), i18n( "Connection Lost - MSN Plugin" ), \
KMessageBox::Notify ); }
+#endif
// kdDebug( 14140 ) << "MSNAccount::slotNotifySocketClosed - done" << endl;
}
Index: msn/msnaccount.h
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/msn/msnaccount.h,v
retrieving revision 1.26
diff -u -3 -p -r1.26 msnaccount.h
--- msn/msnaccount.h 14 Jun 2004 11:42:57 -0000 1.26
+++ msn/msnaccount.h 26 Jun 2004 15:55:38 -0000
@@ -131,7 +131,7 @@ private slots:
// notifySocket related
void slotStatusChanged( const KopeteOnlineStatus &status );
- void slotNotifySocketClosed( int state );
+ void slotNotifySocketClosed();
void slotNotifySocketStatusChanged( MSNSocket::OnlineStatus status );
void slotPublicNameChanged(const QString& publicName);
void slotContactRemoved(const QString& handle, const QString& list, uint group );
Index: msn/msnfiletransfersocket.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/msn/msnfiletransfersocket.cpp,v
retrieving revision 1.28
diff -u -3 -p -r1.28 msnfiletransfersocket.cpp
--- msn/msnfiletransfersocket.cpp 28 Mar 2004 04:29:00 -0000 1.28
+++ msn/msnfiletransfersocket.cpp 26 Jun 2004 15:55:38 -0000
@@ -24,7 +24,8 @@
// kde
#include <kdebug.h>
-#include <kextendedsocket.h>
+#include <kserversocket.h>
+#include <kbufferedsocket.h>
#include <kfiledialog.h>
#include <klocale.h>
@@ -33,6 +34,8 @@
#include "msnmessagemanager.h"
#include "msnswitchboardsocket.h"
+using namespace KNetwork;
+
MSNFileTransferSocket::MSNFileTransferSocket(const QString &handle, KopeteContact \
*c,bool incoming, QObject* parent) : MSNSocket(parent) , MSNInvitation(incoming, \
MSNFileTransferSocket::applicationID() , i18n("File Transfer - MSN Plugin")) {
@@ -43,7 +46,7 @@ MSNFileTransferSocket::MSNFileTransferSo
m_contact=c;
ready=true;
- QObject::connect( this, SIGNAL( socketClosed( int ) ), this, SLOT( \
slotSocketClosed( ) ) ); + QObject::connect( this, SIGNAL( socketClosed() ), this, \
SLOT( slotSocketClosed() ) ); QObject::connect( this, SIGNAL( blockRead( const \
QByteArray & ) ), this, SLOT(slotReadBlock( const QByteArray & ) ) ); }
@@ -176,17 +179,15 @@ void MSNFileTransferSocket::setKopeteTra
void MSNFileTransferSocket::listen(int port)
{
- m_server = new KExtendedSocket();
+ m_server = new KServerSocket();
QObject::connect( m_server, SIGNAL(readyAccept()), this, \
SLOT(slotAcceptConnection()));
- m_server->setPort(port);
- m_server->setSocketFlags( KExtendedSocket::noResolve
- | KExtendedSocket::passiveSocket
- | KExtendedSocket::anySocket);
- int listenResult = m_server->listen(1);
+ m_server->setAddress(QString::number(port));
+ kdDebug(14140) << "MSNFileTransferSocket::listen: about to listen"<<endl;
+ bool listenResult = m_server->listen(1);
kdDebug(14140) << "MSNFileTransferSocket::listen: result: "<< listenResult <<endl;
- m_server->setBlockingMode(true);
+ m_server->setBlocking(true);
QTimer::singleShot( 60000, this, SLOT(slotTimer()) );
kdDebug(14140) << "MSNFileTransferSocket::listen done" <<endl;
}
Index: msn/msnfiletransfersocket.h
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/msn/msnfiletransfersocket.h,v
retrieving revision 1.13
diff -u -3 -p -r1.13 msnfiletransfersocket.h
--- msn/msnfiletransfersocket.h 28 Jul 2003 10:51:07 -0000 1.13
+++ msn/msnfiletransfersocket.h 26 Jun 2004 15:55:38 -0000
@@ -25,7 +25,9 @@
class QFile;
-class KExtendedSocket;
+namespace KNetwork {
+ class KServerSocket;
+}
class KopeteTransfer;
class KopeteFileTransferInfo;
@@ -105,7 +107,7 @@ private:
QString m_fileName;
KopeteTransfer* m_kopeteTransfer;
QFile *m_file ;
- KExtendedSocket *m_server;
+ KNetwork::KServerSocket *m_server;
bool ready;
Index: msn/msnnotifysocket.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/msn/msnnotifysocket.cpp,v
retrieving revision 1.143
diff -u -3 -p -r1.143 msnnotifysocket.cpp
--- msn/msnnotifysocket.cpp 24 Jun 2004 20:34:06 -0000 1.143
+++ msn/msnnotifysocket.cpp 26 Jun 2004 15:55:39 -0000
@@ -86,7 +86,7 @@ void MSNNotifySocket::disconnect()
// the socket is not connected yet, so I should force the signals
if ( onlineStatus() == Disconnected || onlineStatus() == Connecting )
- emit socketClosed(-1);
+ emit socketClosed();
else
MSNSocket::disconnect();
}
Index: msn/msnsocket.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/msn/msnsocket.cpp,v
retrieving revision 1.88
diff -u -3 -p -r1.88 msnsocket.cpp
--- msn/msnsocket.cpp 14 Jun 2004 11:42:57 -0000 1.88
+++ msn/msnsocket.cpp 26 Jun 2004 15:55:39 -0000
@@ -26,13 +26,17 @@
#include <qtimer.h>
#include <kdebug.h>
-#include <kextsock.h>
+#include <kbufferedsocket.h>
+#include <kserversocket.h>
+#include <kresolver.h>
#include <klocale.h>
#include <kmessagebox.h>
#include <kurl.h>
#include "kopeteuiglobal.h"
+using namespace KNetwork;
+
MSNSocket::MSNSocket(QObject* parent) : QObject (parent)
{
m_onlineStatus = Disconnected;
@@ -71,15 +75,12 @@ void MSNSocket::connect( const QString &
m_waitBlockSize = 0;
m_buffer = Buffer( 0 );
- m_lookupStatus = Processing;
-
//m_sendQueue.clear();
m_server = server;
m_port = port;
- m_socket = new KExtendedSocket( server, port, KExtendedSocket::bufferedSocket );
+ m_socket = new KBufferedSocket( server, QString::number(port) );
//can this prevent the kopete frezee? \
(http://lists.kde.org/?l=kopete-devel&m=107117795131722&w=2)
- m_socket->setBlockingMode( false );
m_socket->enableRead( true );
@@ -89,28 +90,15 @@ void MSNSocket::connect( const QString &
QObject::connect( m_socket, SIGNAL( readyRead() ), this, SLOT( \
slotDataReceived() ) ); QObject::connect( m_socket, SIGNAL( readyWrite() ), \
this, SLOT( slotReadyWrite() ) );
- QObject::connect( m_socket, SIGNAL( lookupFinished( int ) ), this, SLOT( \
slotLookupFinished( int ) ) );
- QObject::connect( m_socket, SIGNAL( connectionSuccess() ), this, SLOT( \
slotConnectionSuccess() ) );
- QObject::connect( m_socket, SIGNAL( connectionFailed( int ) ), this, SLOT( \
slotSocketError( int ) ) );
- QObject::connect( m_socket, SIGNAL( closed( int ) ), this, SLOT( \
slotSocketClosed( int ) ) ); + QObject::connect( m_socket, SIGNAL( hostFound() ), \
this, SLOT( slotHostFound() ) ); + QObject::connect( m_socket, SIGNAL( connected( \
const KResolverEntry&) ), this, SLOT( slotConnectionSuccess() ) ); \
+ QObject::connect( m_socket, SIGNAL( gotError( int ) ), this, SLOT( \
slotSocketError( int ) ) ); + QObject::connect( m_socket, SIGNAL( closed( ) ), \
this, SLOT( slotSocketClosed( ) ) );
aboutToConnect();
- // FIXME KDE4?
- // Ideally we want to the full connection to MSN to be handled async,
- // but due to some design issues in QDns this fails if people with
- // dialup connections start Kopete before their internet connection.
- // The workaround from TrollTech is to not use QDns, but use the
- // libc gethostbyname call instead. The sync calls in KExtendedSocket
- // use this, only the async lookup uses DNS.
- // This is slightly annoying as it blocks the GUI for the duration
- // of the DNS lookup, but properly configured systems will hardly
- // notice that. Besides, there's nothing we can do about it...
- // For Qt 4/KDE 4 we can hopefully leave the lookup to the socket
- // again and remove the manual lookup call. This cannot be fixed
- // in Qt 3 unfortunately.
- m_socket->lookup();
- m_socket->startAsyncConnect();
+ // start the asynchronous connection
+ m_socket->connect();
}
void MSNSocket::disconnect()
@@ -118,7 +106,7 @@ void MSNSocket::disconnect()
if ( m_socket )
m_socket->closeNow();
else
- slotSocketClosed( -1 );
+ slotSocketClosed();
}
void MSNSocket::aboutToConnect()
@@ -149,13 +137,12 @@ void MSNSocket::slotSocketError( int err
{
kdDebug( 14140 ) << k_funcinfo << "Error: " << error << endl;
- m_socket->cancelAsyncConnect();
-
QString errormsg = i18n( "There was an error while connecting to the MSN \
server.\nError message:\n" );
- if ( m_lookupStatus == Failed )
- errormsg += i18n( "Unable to lookup %1" ).arg( m_socket->host() );
+ if ( error == KSocketBase::LookupFailure )
+ errormsg += i18n( "Unable to lookup %1" ).arg( m_socket->peerResolver().nodeName() \
); else
- errormsg += KExtendedSocket::strError( error, m_socket->systemError() );
+ // FIXME when there is a method to show up error strings!
+ errormsg += i18n( "Error %1" ).arg( m_socket->error() );
//delete m_socket;
m_socket->deleteLater();
@@ -164,7 +151,7 @@ void MSNSocket::slotSocketError( int err
setOnlineStatus( Disconnected );
emit connectionFailed();
//like if the socket is closed
- emit socketClosed( -1 );
+ emit socketClosed();
KMessageBox::queuedMessageBox( Kopete::UI::Global::mainWidget(), \
KMessageBox::Error, errormsg, i18n( "MSN Plugin" ) ); }
@@ -541,22 +528,18 @@ QString MSNSocket::unescape( const QStri
void MSNSocket::slotConnectionSuccess()
{
- m_socket->setBlockingMode( false );
//kdDebug( 14140 ) << k_funcinfo << endl;
doneConnect();
}
-void MSNSocket::slotLookupFinished( int count )
+void MSNSocket::slotHostFound()
{
- if ( count == 0 )
- m_lookupStatus = Failed;
- else
- m_lookupStatus = Success;
+ // nothing to do
}
-void MSNSocket::slotSocketClosed( int state )
+void MSNSocket::slotSocketClosed()
{
- kdDebug( 14140 ) << k_funcinfo << "Socket closed. State: 0x" << QString::number( \
state, 16 ) << endl; + kdDebug( 14140 ) << k_funcinfo << "Socket closed. " << \
endl;
if ( !m_socket || m_onlineStatus == Disconnected )
{
@@ -571,7 +554,7 @@ void MSNSocket::slotSocketClosed( int st
m_socket->deleteLater();
m_socket = 0L;
- emit socketClosed( state );
+ emit socketClosed();
}
// Used in MSNFileTransferSocket
@@ -592,7 +575,7 @@ void MSNSocket::sendBytes( const QByteAr
m_socket->enableWrite( true );
}
-bool MSNSocket::accept( KExtendedSocket *server )
+bool MSNSocket::accept( KServerSocket *server )
{
if ( m_socket )
{
@@ -600,11 +583,8 @@ bool MSNSocket::accept( KExtendedSocket
return false;
}
- int acceptResult = server->accept( m_socket );
- kdDebug( 14140 ) << k_funcinfo << "Result: " << acceptResult << ", m_socket: " << \
m_socket << endl;
-
- if ( acceptResult )
- return false;
+ m_socket = static_cast<KBufferedSocket*>(server->accept());
+ kdDebug( 14140 ) << k_funcinfo << "Result: " << (m_socket != 0L) << ", m_socket: " \
<< m_socket << endl;
if ( !m_socket )
return false;
@@ -614,19 +594,15 @@ bool MSNSocket::accept( KExtendedSocket
m_id = 0;
//m_lastId = 0;
m_waitBlockSize = 0;
- m_lookupStatus = Processing;
- m_socket->setBlockingMode( false );
+ m_socket->setBlocking( false );
m_socket->enableRead( true );
m_socket->enableWrite( true );
- m_socket->setBufferSize( -1, -1 );
QObject::connect( m_socket, SIGNAL( readyRead() ), this, SLOT( \
slotDataReceived() ) ); QObject::connect( m_socket, SIGNAL( readyWrite() ), \
this, SLOT( slotReadyWrite() ) );
- QObject::connect( m_socket, SIGNAL( closed( int ) ), this, SLOT( \
slotSocketClosed( int ) ) );
- QObject::connect( m_socket, SIGNAL( connectionFailed( int ) ), this, SLOT( \
slotSocketError( int ) ) );
-
- m_socket->setSocketFlags( KExtendedSocket::anySocket | \
KExtendedSocket::inputBufferedSocket | KExtendedSocket::outputBufferedSocket ); \
+ QObject::connect( m_socket, SIGNAL( closed() ), this, SLOT( \
slotSocketClosed() ) ); + QObject::connect( m_socket, SIGNAL( gotError( int ) ), \
this, SLOT( slotSocketError( int ) ) );
doneConnect();
return true;
@@ -637,17 +613,17 @@ QString MSNSocket::getLocalIP()
if ( !m_socket )
return QString::null;
- const KSocketAddress *address = m_socket->localAddress();
- if ( !address )
- {
- kdWarning( 14140 ) << k_funcinfo << "IP not found!" << endl;
- return QString::null;
- }
+ const KSocketAddress address = m_socket->localAddress();
+
+ QString ip = address.nodeName();
- QString ip = address->pretty();
+#if 0
+ // FIXME. Addresses can never have -
+ // Why is this here?
ip = ip.replace( "-", " " );
if ( ip.contains( " " ) )
ip = ip.left( ip.find( " " ) );
+#endif
kdDebug( 14140 ) << k_funcinfo << "IP: " << ip <<endl;
//delete address;
Index: msn/msnsocket.h
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/msn/msnsocket.h,v
retrieving revision 1.27
diff -u -3 -p -r1.27 msnsocket.h
--- msn/msnsocket.h 14 Jun 2004 11:42:57 -0000 1.27
+++ msn/msnsocket.h 26 Jun 2004 15:55:39 -0000
@@ -24,7 +24,10 @@
#include <qobject.h>
#include <qvaluelist.h>
-class KExtendedSocket;
+namespace KNetwork {
+ class KBufferedSocket;
+ class KServerSocket;
+}
/**
* @author Martijn Klingens <klingens@kde.org>
@@ -117,7 +120,7 @@ signals:
/**
* The connection was closed
*/
- void socketClosed( int );
+ void socketClosed();
/**
* The socket just sent a command from the queue. This signal is used in
@@ -182,7 +185,7 @@ protected:
* Used in MSNFileTransferSocket
*/
virtual void bytesReceived( const QByteArray & );
- bool accept( KExtendedSocket * );
+ bool accept( KNetwork::KServerSocket * );
void sendBytes( const QByteArray &data );
const QString &server() { return m_server; }
@@ -209,14 +212,14 @@ private slots:
/**
* Sets m_lookupProgress to 'Finished' if count > 0 or 'Failed' if count = 0.
*/
- void slotLookupFinished( int count );
+ void slotHostFound( );
/**
* Check if new lines of data are available and process the first line
*/
void slotReadLine();
- void slotSocketClosed( int state );
+ void slotSocketClosed();
protected slots:
virtual void slotReadyWrite();
@@ -249,18 +252,13 @@ private:
*/
void parseLine( const QString &str );
- KExtendedSocket *m_socket;
+ KNetwork::KBufferedSocket *m_socket;
OnlineStatus m_onlineStatus;
QString m_server;
uint m_port;
/**
- * Contains the status of the Lookup process.
- */
- LookupStatus m_lookupStatus;
-
- /**
* The size of the requested block for block-based reads
*/
uint m_waitBlockSize;
Index: msn/msnswitchboardsocket.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/msn/msnswitchboardsocket.cpp,v
retrieving revision 1.100
diff -u -3 -p -r1.100 msnswitchboardsocket.cpp
--- msn/msnswitchboardsocket.cpp 10 Jun 2004 10:13:53 -0000 1.100
+++ msn/msnswitchboardsocket.cpp 26 Jun 2004 15:55:39 -0000
@@ -84,7 +84,7 @@ void MSNSwitchBoardSocket::connectToSwit
QObject::connect( this, SIGNAL( onlineStatusChanged( MSNSocket::OnlineStatus ) ),
this, SLOT( slotOnlineStatusChanged( MSNSocket::OnlineStatus ) ) );
- QObject::connect( this, SIGNAL( socketClosed( int ) ),
+ QObject::connect( this, SIGNAL( socketClosed( ) ),
this, SLOT( slotSocketClosed( ) ) );
connect( server, port );
["kopete-oscar.diff" (text/x-diff)]
Index: oscarsocket/oscarconnection.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kopete/protocols/oscar/oscarsocket/oscarconnection.cpp,v
retrieving revision 1.29
diff -u -3 -p -r1.29 oscarconnection.cpp
--- oscarsocket/oscarconnection.cpp 15 Jun 2004 18:46:47 -0000 1.29
+++ oscarsocket/oscarconnection.cpp 26 Jun 2004 15:55:08 -0000
@@ -214,6 +214,11 @@ void OscarConnection::slotSocketClosed()
void OscarConnection::slotSocketError(int errornum)
{
+#ifndef USE_KEXTSOCK
+ if (errornum == KNetwork::KSocketBase::WouldBlock)
+ return;
+#endif
+
kdDebug(14150) << k_funcinfo << "SOCKET ERROR: " << errornum << endl;
mSocket->closeNow();
emit socketError(connectionName(), errornum);
[Attachment #10 (application/pgp-signature)]
_______________________________________________
kopete-devel mailing list
kopete-devel@kde.org
https://mail.kde.org/mailman/listinfo/kopete-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic