summaryrefslogtreecommitdiffstats
path: root/kopete/protocols/yahoo/libkyahoo/ymsgprotocol.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-07-05 08:45:53 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-07-05 08:45:53 +0000
commit5527e01e0675fbb06b632ccdae423756fbff622b (patch)
treec2dd1a478a7789d3b01e77fdf31f9011a96a81c5 /kopete/protocols/yahoo/libkyahoo/ymsgprotocol.cpp
parent1fc8db48741fae272e2d29078b266a3d0f2e2dd1 (diff)
downloadtdenetwork-5527e01e0675fbb06b632ccdae423756fbff622b.tar.gz
tdenetwork-5527e01e0675fbb06b632ccdae423756fbff622b.zip
Many fixes to the Yahoo protocol, courtesy of Serghei Amelian
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdenetwork@1146108 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kopete/protocols/yahoo/libkyahoo/ymsgprotocol.cpp')
-rw-r--r--kopete/protocols/yahoo/libkyahoo/ymsgprotocol.cpp237
1 files changed, 147 insertions, 90 deletions
diff --git a/kopete/protocols/yahoo/libkyahoo/ymsgprotocol.cpp b/kopete/protocols/yahoo/libkyahoo/ymsgprotocol.cpp
index 79687073..ce2c65eb 100644
--- a/kopete/protocols/yahoo/libkyahoo/ymsgprotocol.cpp
+++ b/kopete/protocols/yahoo/libkyahoo/ymsgprotocol.cpp
@@ -3,7 +3,7 @@
Copyright (c) 2004 Duncan Mac-Vicar Prett <duncan@kde.org>
- Copyright (c) 2005 André Duffeck <andre.duffeck@kdemail.net>
+ Copyright (c) 2005 André Duffeck <duffeck@kde.org>
Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
*************************************************************************
@@ -16,14 +16,18 @@
*************************************************************************
*/
-#include <stdlib.h>
+//#include <QDataStream>
+//#include <QMap>
+//#include <QObject>
+//#include <QStringList>
-#include <qcstring.h>
+//#include <qcstring.h>
#include <qdatastream.h>
#include <qmap.h>
#include <qobject.h>
#include <qstringlist.h>
+
#include <kdebug.h>
#include "ymsgprotocol.h"
@@ -55,188 +59,252 @@ Transfer* YMSGProtocol::parse( const QByteArray & packet, uint& bytes )
/ 0 - 65535* |
+-------------------------------------------------+
*/
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << packet << endl;
-
+ kdDebug(YAHOO_RAW_DEBUG) << packet << endl;
+
int pos = 0;
int len = 0;
-
+
Yahoo::Status status = Yahoo::StatusAvailable;
Yahoo::Service service = Yahoo::ServiceAuth;
int statusnum = 0;
int sessionid = 0;
int servicenum;
int version1, version2;
-
+
QMap<QString, QString> params;
-
+
// Skip the YMSG header
pos += 4;
-
+
// Skip the version
version1 = yahoo_get16(packet.data() + pos);
pos += 2;
version2 = yahoo_get16(packet.data() + pos);
pos += 2;
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " - parsed packet version " << version1 << " " << version2 << endl;
-
+ kdDebug(YAHOO_RAW_DEBUG) << " - parsed packet version " << version1 << " " << version2 << endl;
+
len = yahoo_get16(packet.data() + pos);
pos += 2;
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " - parsed packet len " << len << endl;
-
+ kdDebug(YAHOO_RAW_DEBUG) << " - parsed packet len " << len << endl;
+
servicenum = yahoo_get16(packet.data() + pos);
pos += 2;
-
+
switch (servicenum)
{
// TODO add remamining services
case (Yahoo::ServiceAuth) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceAuth " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceAuth " << servicenum << endl;
service = Yahoo::ServiceAuth;
break;
case (Yahoo::ServiceAuthResp) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceAuthResp " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceAuthResp " << servicenum << endl;
service = Yahoo::ServiceAuthResp;
break;
case (Yahoo::ServiceVerify) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceVerify " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceVerify " << servicenum << endl;
service = Yahoo::ServiceVerify;
break;
case (Yahoo::ServiceList) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceList " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceList " << servicenum << endl;
service = Yahoo::ServiceList;
break;
case (Yahoo::ServiceLogon) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceLogon " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceLogon " << servicenum << endl;
service = Yahoo::ServiceLogon;
break;
case (Yahoo::ServicePing) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServicePing " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServicePing " << servicenum << endl;
service = Yahoo::ServicePing;
break;
case (Yahoo::ServiceNewMail) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceNewMail " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceNewMail " << servicenum << endl;
service = Yahoo::ServiceNewMail;
break;
case (Yahoo::ServiceLogoff) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceLogoff " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceLogoff " << servicenum << endl;
service = Yahoo::ServiceLogoff;
break;
case (Yahoo::ServiceIsAway) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceIsAway " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceIsAway " << servicenum << endl;
service = Yahoo::ServiceIsAway;
break;
case (Yahoo::ServiceIsBack) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceIsBack " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceIsBack " << servicenum << endl;
service = Yahoo::ServiceIsBack;
break;
case (Yahoo::ServiceGameLogon) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceGameLogon " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceGameLogon " << servicenum << endl;
service = Yahoo::ServiceGameLogon;
break;
case (Yahoo::ServiceGameLogoff) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceGameLogoff " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceGameLogoff " << servicenum << endl;
service = Yahoo::ServiceGameLogoff;
break;
case (Yahoo::ServiceIdAct) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceIdAct " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceIdAct " << servicenum << endl;
service = Yahoo::ServiceIdAct;
break;
case (Yahoo::ServiceIddeAct) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceIddeAct " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceIddeAct " << servicenum << endl;
service = Yahoo::ServiceIddeAct;
break;
case (Yahoo::ServiceStatus) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceStatus " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceStatus " << servicenum << endl;
service = Yahoo::ServiceStatus;
break;
case (Yahoo::ServiceMessage) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceMessage " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceMessage " << servicenum << endl;
service = Yahoo::ServiceMessage;
break;
case (Yahoo::ServiceNotify) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceNotify " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceNotify " << servicenum << endl;
service = Yahoo::ServiceNotify;
break;
- case (Yahoo::ServiceAddBuddy) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceAddBuddy " << servicenum << endl;
- service = Yahoo::ServiceAddBuddy;
- break;
+ case (Yahoo::ServiceBuddyAdd) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceBuddyAdd " << servicenum << endl;
+ service = Yahoo::ServiceBuddyAdd;
+ break;
+ case (Yahoo::ServiceBuddyRemove) :
+ kdDebug(YAHOO_RAW_DEBUG) << "Parsed packet service - This means ServiceBuddyRemove " << servicenum << endl;
+ service = Yahoo::ServiceBuddyRemove;
+ break;
+ case (Yahoo::ServiceBuddyChangeGroup) :
+ kdDebug(YAHOO_RAW_DEBUG) << "Parsed packet service - This means ServiceBuddyChangeGroup " << servicenum << endl;
+ service = Yahoo::ServiceBuddyChangeGroup;
+ break;
case (Yahoo::ServicePictureChecksum) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServicePictureChecksum " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServicePictureChecksum " << servicenum << endl;
service = Yahoo::ServicePictureChecksum;
break;
case (Yahoo::ServicePictureStatus) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServicePictureStatus " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServicePictureStatus " << servicenum << endl;
service = Yahoo::ServicePictureStatus;
break;
case (Yahoo::ServicePicture) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServicePicture " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServicePicture " << servicenum << endl;
service = Yahoo::ServicePicture;
break;
case (Yahoo::ServiceStealthOnline) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceStealthOnline " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceStealthOnline " << servicenum << endl;
service = Yahoo::ServiceStealthOnline;
break;
case (Yahoo::ServiceStealthOffline) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceStealthOffline " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceStealthOffline " << servicenum << endl;
service = Yahoo::ServiceStealthOffline;
break;
case (Yahoo::ServicePictureUpload) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServicePictureUpload " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServicePictureUpload " << servicenum << endl;
service = Yahoo::ServicePictureUpload;
break;
case (Yahoo::ServiceWebcam) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceWebcam " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceWebcam " << servicenum << endl;
service = Yahoo::ServiceWebcam;
break;
case (Yahoo::ServiceConfInvite) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceConfInvite " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceConfInvite " << servicenum << endl;
service = Yahoo::ServiceConfInvite;
break;
case (Yahoo::ServiceConfLogon) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceConfLogon " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceConfLogon " << servicenum << endl;
service = Yahoo::ServiceConfLogon;
break;
case (Yahoo::ServiceConfDecline) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceConfDecline " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceConfDecline " << servicenum << endl;
service = Yahoo::ServiceConfDecline;
break;
case (Yahoo::ServiceConfLogoff) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceConfLogoff " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceConfLogoff " << servicenum << endl;
service = Yahoo::ServiceConfLogoff;
break;
case (Yahoo::ServiceConfAddInvite) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceConfAddInvite " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceConfAddInvite " << servicenum << endl;
service = Yahoo::ServiceConfAddInvite;
break;
case (Yahoo::ServiceConfMsg) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceConfMsg " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceConfMsg " << servicenum << endl;
service = Yahoo::ServiceConfMsg;
break;
case (Yahoo::ServiceAuthorization) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceAuthorization " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceAuthorization " << servicenum << endl;
service = Yahoo::ServiceAuthorization;
break;
case (Yahoo::ServiceContactDetails) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceContactDetails " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceContactDetails " << servicenum << endl;
service = Yahoo::ServiceContactDetails;
break;
case (Yahoo::ServiceFileTransfer) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceFileTransfer " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceFileTransfer " << servicenum << endl;
service = Yahoo::ServiceFileTransfer;
break;
case (Yahoo::ServiceFileTransfer7) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceFileTransfer7 " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceFileTransfer7 " << servicenum << endl;
service = Yahoo::ServiceFileTransfer7;
break;
case (Yahoo::ServiceFileTransfer7Info) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServiceFileTransfer7Info " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceFileTransfer7Info " << servicenum << endl;
service = Yahoo::ServiceFileTransfer7Info;
break;
+ case (Yahoo::ServiceFileTransfer7Accept) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceFileTransfer7Accept " << servicenum << endl;
+ service = Yahoo::ServiceFileTransfer7Accept;
+ break;
case (Yahoo::ServicePeerToPeer) :
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means ServicePeerToPeer " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServicePeerToPeer " << servicenum << endl;
service = Yahoo::ServicePeerToPeer;
break;
+ case (Yahoo::ServiceChatOnline) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceChatOnline " << servicenum << endl;
+ service = Yahoo::ServiceChatOnline;
+ break;
+ case (Yahoo::ServiceChatGoto) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceChatGoto " << servicenum << endl;
+ service = Yahoo::ServiceChatGoto;
+ break;
+ case (Yahoo::ServiceChatJoin) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceChatJoin " << servicenum << endl;
+ service = Yahoo::ServiceChatJoin;
+ break;
+ case (Yahoo::ServiceChatleave) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceChatleave " << servicenum << endl;
+ service = Yahoo::ServiceChatleave;
+ break;
+ case (Yahoo::ServiceChatExit) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceChatExit " << servicenum << endl;
+ service = Yahoo::ServiceChatExit;
+ break;
+ case (Yahoo::ServiceChatLogout) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceChatLogout " << servicenum << endl;
+ service = Yahoo::ServiceChatLogout;
+ break;
+ case (Yahoo::ServiceChatPing) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServicePeerToPeer " << servicenum << endl;
+ service = Yahoo::ServiceChatPing;
+ break;
+ case (Yahoo::ServiceChatLogon) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceChatLogon " << servicenum << endl;
+ service = Yahoo::ServiceChatLogon;
+ break;
+ case (Yahoo::ServiceChatLogoff) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceChatLogoff " << servicenum << endl;
+ service = Yahoo::ServiceChatLogoff;
+ break;
+ case (Yahoo::ServiceChatMsg) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceChatMsg " << servicenum << endl;
+ service = Yahoo::ServiceChatMsg;
+ break;
+ case (Yahoo::ServiceComment) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceComment " << servicenum << endl;
+ service = Yahoo::ServiceComment;
+ break;
+ case (Yahoo::ServiceBuddyStatus) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceBuddyStatus " << servicenum << endl;
+ service = Yahoo::ServiceBuddyStatus;
+ break;
+ case (Yahoo::ServiceBuddyList) :
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means ServiceBuddyList " << servicenum << endl;
+ service = Yahoo::ServiceBuddyList;
+ break;
/*
ServiceIdle, // 5 (placemarker)
ServiceMailStat,
@@ -250,9 +318,6 @@ Transfer* YMSGProtocol::parse( const QByteArray & packet, uint& bytes )
ServiceGotGroupRename, // < 1, 36(old), 37(new)
ServiceSysMessage = 0x14,
ServicePassThrough2 = 0x16,
- ServiceChatLogon,
- ServiceChatLogoff,
- ServiceChatMsg = 0x20,
ServiceGameMsg = 0x2a,
ServiceFileTransfer = 0x46,
ServiceVoiceChat = 0x4A,
@@ -261,28 +326,20 @@ Transfer* YMSGProtocol::parse( const QByteArray & packet, uint& bytes )
ServiceRemBuddy,
ServiceIgnoreContact, // > 1, 7, 13 < 1, 66, 13, 0
ServiceRejectContact,
- ServiceGroupRename = 0x89, // > 1, 65(new), 66(0), 67(old)
- ServiceChatOnline = 0x96, // > 109(id), 1, 6(abcde) < 0,1
- ServiceChatGoto,
- ServiceChatJoin, // > 1 104-room 129-1600326591 62-2
- ServiceChatleave,
- ServiceChatExit = 0x9b,
- ServiceChatLogout = 0xa0,
- ServiceChatPing,
- ServiceComment = 0xa8
+ ServiceGroupRename = 0x89, // > 1, 65(new), 66(0), 67(old)
ServicePictureUpdate = 0xc1,
- ServiceVisibility = 0xc5, // YMSG13, key 13: 2 = invisible, 1 = visible
- ServiceStatus = 0xc6, // YMSG13
+ ServiceVisibility = 0xc5, // YMSG13, key 13: 2 = invisible, 1 = visible
+ ServiceStatus = 0xc6, // YMSG13
*/
default:
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed packet service - This means an unknown service " << servicenum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed packet service - This means an unknown service " << servicenum << endl;
break;
}
-
+
statusnum = yahoo_get32(packet.data() + pos);
pos += 4;
-
+
switch (statusnum)
{
// TODO add remaining status
@@ -309,37 +366,37 @@ Transfer* YMSGProtocol::parse( const QByteArray & packet, uint& bytes )
StatusOffline
StatusNotify*/
default:
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " - unknown status " << statusnum << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " - unknown status " << statusnum << endl;
break;
}
-
+
sessionid = yahoo_get32(packet.data() + pos);
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Parsed session id: " << (void *)sessionid << endl;
+ kdDebug(YAHOO_RAW_DEBUG) << " Parsed session id: " << (void *)sessionid << endl;
pos += 4;
-
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Setting incoming transfer basic information." << endl;
+
+ kdDebug(YAHOO_RAW_DEBUG) << " Setting incoming transfer basic information." << endl;
YMSGTransfer *t = new YMSGTransfer();
t->setService(service);
t->setId(sessionid);
t->setStatus(status);
+ t->setPacketLength(len);
- QString d = QString::fromAscii( packet.data() + pos, packet.size() - pos );
- QStringList list;
- list = QStringList::split( "\xc0\x80", d );
- for( uint i = 0; i+1 < list.size() && pos+1 < len+20; i += 2 ) {
- QString key = list[i];
- QString value = QString::fromUtf8( list[i+1].ascii() );
- pos += key.utf8().length() + value.utf8().length() + 4;
- t->setParam( QString(key).toInt(), value.utf8() );
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << "Key: " << key << " Value: " << value << endl;
- }
+ QString d = QString::fromAscii( packet.data() + pos, packet.size() - pos );
+ QStringList list = QStringList::split( "\xc0\x80", d );
+ for( int i = 0; i+1 < list.size() && pos+1 < len+20; i += 2 ) {
+ QString key = list[i];
+ QString value = QString::fromUtf8( list[i+1].ascii() );
+ pos += key.utf8().length() + value.utf8().length() + 4;
+ t->setParam( QString(key).toInt(), value.utf8() );
+ kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << "Key: " << key << " Value: " << value << endl;
+ }
- while( (uint)pos < packet.size() && packet.data()[pos] == '\x00' )
- pos++;
+ while( pos < packet.size() && packet.data()[pos] == '\x00' )
+ pos++;
- kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << " Returning transfer" << endl;
+// kdDebug(YAHOO_RAW_DEBUG) << " Returning transfer";
// tell them we have parsed offset bytes
-
+
bytes = pos;
return t;
}