src/protocols/msn/switchboard.c

changeset 10284
257978b5df5b
parent 10280
2c31f0fa743b
child 10306
c2ad3e682684
equal deleted inserted replaced
10283:261443b20679 10284:257978b5df5b
278 msg = msn_message_new_from_cmd(cmdproc->session, cmd); 278 msg = msn_message_new_from_cmd(cmdproc->session, cmd);
279 279
280 msn_message_parse_payload(msg, payload, len); 280 msn_message_parse_payload(msg, payload, len);
281 /* msn_message_show_readable(msg, "SB RECV", FALSE); */ 281 /* msn_message_show_readable(msg, "SB RECV", FALSE); */
282 282
283 if (msg->remote_user != NULL)
284 g_free (msg->remote_user);
285
283 msg->remote_user = g_strdup(cmd->params[0]); 286 msg->remote_user = g_strdup(cmd->params[0]);
284 msn_cmdproc_process_msg(cmdproc, msg); 287 msn_cmdproc_process_msg(cmdproc, msg);
285 288
286 msn_message_destroy(msg); 289 msn_message_destroy(msg);
287 } 290 }
524 { 527 {
525 MsnMessage *msg; 528 MsnMessage *msg;
526 529
527 msg = cmd->trans->data; 530 msg = cmd->trans->data;
528 531
529 msg->ack_cb (msg->ack_data); 532 msg->ack_cb(msg->ack_data);
533
534 msn_message_unref(msg);
530 } 535 }
531 536
532 void 537 void
533 msn_switchboard_send_msg(MsnSwitchBoard *swboard, MsnMessage *msg) 538 msn_switchboard_send_msg(MsnSwitchBoard *swboard, MsnMessage *msg)
534 { 539 {
549 trans = msn_transaction_new(cmdproc, "MSG", "%c %d", 554 trans = msn_transaction_new(cmdproc, "MSG", "%c %d",
550 msn_message_get_flag(msg), payload_len); 555 msn_message_get_flag(msg), payload_len);
551 556
552 /* Data for callbacks */ 557 /* Data for callbacks */
553 msn_transaction_set_data(trans, msg); 558 msn_transaction_set_data(trans, msg);
559 msn_message_ref(msg);
554 560
555 if (msg->ack_cb != NULL) 561 if (msg->ack_cb != NULL)
556 { 562 {
557 msn_transaction_add_cb(trans, "ACK", msg_ack); 563 msn_transaction_add_cb(trans, "ACK", msg_ack);
558 msn_transaction_set_timeout_cb(trans, msg_timeout); 564 msn_transaction_set_timeout_cb(trans, msg_timeout);

mercurial