comparison libpurple/protocols/msn/switchboard.c @ 24451:82452077f0db

Don't request an acknowledgement on an auto-response message and don't set a timeout to say that it was never received. Fixes #6604.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sun, 23 Nov 2008 22:40:18 +0000
parents dc7942955a7a
children 15db3067a5ac 770f2f8a2c91 558baf33197e
comparison
equal deleted inserted replaced
24450:dc7942955a7a 24451:82452077f0db
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