diff options
Diffstat (limited to 'kopete/protocols/oscar/liboscar/clientreadytask.cpp')
-rw-r--r-- | kopete/protocols/oscar/liboscar/clientreadytask.cpp | 35 |
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 |