comparison libpurple/protocols/msn/switchboard.c @ 24435:3f80f211417e

Mark added a workaround for not having enough parameters in this command. However, according to msnpiki and his backtraces, the index was just wrong.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sun, 23 Nov 2008 04:12:43 +0000
parents 9b253ce969d0
children 3d942f1b72aa a64685485775
comparison
equal deleted inserted replaced
24434:f18f67d0548a 24435:3f80f211417e
575 { 575 {
576 MsnCmdProc *cmdproc; 576 MsnCmdProc *cmdproc;
577 MsnTransaction *trans; 577 MsnTransaction *trans;
578 char *payload; 578 char *payload;
579 gsize payload_len; 579 gsize payload_len;
580 char flag;
580 581
581 g_return_if_fail(swboard != NULL); 582 g_return_if_fail(swboard != NULL);
582 g_return_if_fail(msg != NULL); 583 g_return_if_fail(msg != NULL);
583 584
584 cmdproc = swboard->cmdproc; 585 cmdproc = swboard->cmdproc;
588 #ifdef MSN_DEBUG_SB 589 #ifdef MSN_DEBUG_SB
589 purple_debug_info("msn", "SB length:{%" G_GSIZE_FORMAT "}", payload_len); 590 purple_debug_info("msn", "SB length:{%" G_GSIZE_FORMAT "}", payload_len);
590 msn_message_show_readable(msg, "SB SEND", FALSE); 591 msn_message_show_readable(msg, "SB SEND", FALSE);
591 #endif 592 #endif
592 593
594 flag = msn_message_get_flag(msg);
593 trans = msn_transaction_new(cmdproc, "MSG", "%c %" G_GSIZE_FORMAT, 595 trans = msn_transaction_new(cmdproc, "MSG", "%c %" G_GSIZE_FORMAT,
594 msn_message_get_flag(msg), payload_len); 596 flag, payload_len);
595 597
596 /* Data for callbacks */ 598 /* Data for callbacks */
597 msn_transaction_set_data(trans, msg); 599 msn_transaction_set_data(trans, msg);
598 600
599 if (msg->type == MSN_MSG_TEXT) 601 if (flag != 'U') {
600 { 602 if (msg->type == MSN_MSG_TEXT)
601 msg->ack_ref = TRUE; 603 {
602 msn_message_ref(msg); 604 msg->ack_ref = TRUE;
603 swboard->ack_list = g_list_append(swboard->ack_list, msg); 605 msn_message_ref(msg);
604 msn_transaction_set_timeout_cb(trans, msg_timeout); 606 swboard->ack_list = g_list_append(swboard->ack_list, msg);
605 } 607 msn_transaction_set_timeout_cb(trans, msg_timeout);
606 else if (msg->type == MSN_MSG_SLP) 608 }
607 { 609 else if (msg->type == MSN_MSG_SLP)
608 msg->ack_ref = TRUE; 610 {
609 msn_message_ref(msg); 611 msg->ack_ref = TRUE;
610 swboard->ack_list = g_list_append(swboard->ack_list, msg); 612 msn_message_ref(msg);
611 msn_transaction_set_timeout_cb(trans, msg_timeout); 613 swboard->ack_list = g_list_append(swboard->ack_list, msg);
614 msn_transaction_set_timeout_cb(trans, msg_timeout);
612 #if 0 615 #if 0
613 if (msg->ack_cb != NULL) 616 if (msg->ack_cb != NULL)
614 { 617 {
615 msn_transaction_add_cb(trans, "ACK", msg_ack); 618 msn_transaction_add_cb(trans, "ACK", msg_ack);
616 msn_transaction_add_cb(trans, "NAK", msg_nak); 619 msn_transaction_add_cb(trans, "NAK", msg_nak);
620 }
621 #endif
617 } 622 }
618 #endif
619 } 623 }
620 624
621 trans->payload = payload; 625 trans->payload = payload;
622 trans->payload_len = payload_len; 626 trans->payload_len = payload_len;
623 627
804 808
805 static void 809 static void
806 ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) 810 ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
807 { 811 {
808 purple_debug_misc("msn", "get UBM...\n"); 812 purple_debug_misc("msn", "get UBM...\n");
809 cmd->payload_len = atoi(cmd->params[4]); 813 cmd->payload_len = atoi(cmd->params[3]);
810 cmdproc->last_cmd->payload_cb = msg_cmd_post; 814 cmdproc->last_cmd->payload_cb = msg_cmd_post;
811 } 815 }
812 816
813 static void 817 static void
814 nak_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) 818 nak_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)