summaryrefslogtreecommitdiffstats
path: root/kopete/protocols/oscar/liboscar/clientreadytask.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kopete/protocols/oscar/liboscar/clientreadytask.cpp')
-rw-r--r--kopete/protocols/oscar/liboscar/clientreadytask.cpp35
1 files changed, 26 insertions, 9 deletions
diff --git a/kopete/protocols/oscar/liboscar/clientreadytask.cpp b/kopete/protocols/oscar/liboscar/clientreadytask.cpp
index 6d1b07a7..3025a0d8 100644
--- a/kopete/protocols/oscar/liboscar/clientreadytask.cpp
+++ b/kopete/protocols/oscar/liboscar/clientreadytask.cpp
@@ -64,21 +64,38 @@ void ClientReadyTask::onGo()
buffer->addWord( 0x0003 );
break;
case 0x0013:
- buffer->addWord( 0x0002 );
+ buffer->addWord( client()->isIcq() ? 0x0002 : 0x0003 );
break;
default:
buffer->addWord( 0x0001 );
};
-
- if ( i == 0x0002 ) {
- buffer->addWord( 0x0101 );
+
+ if ( client()->isIcq() )
+ {
+ if ( i == 0x0002 )
+ buffer->addWord( 0x0101 );
+ else
+ buffer->addWord( 0x0110 );
+
+ //always add 0x047B
+ buffer->addWord( 0x047B );
}
- else {
- buffer->addWord( 0x0110 );
+ else //we're AIM so AOL has us do something completely different! *sigh*
+ {
+ switch( i )
+ {
+ case 0x0008:
+ case 0x000B:
+ case 0x000C:
+ buffer->addWord( 0x0104 );
+ buffer->addWord( 0x0001 );
+ break;
+ default:
+ buffer->addWord( 0x0110 );
+ buffer->addWord( 0x059B );
+ break;
+ };
}
-
- //always add 0x047B
- buffer->addWord( 0x047B );
}
//send the damn thing so we can finally be finished