Mercurial > pidgin.yaz
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) |