comparison libpurple/protocols/msn/slpcall.c @ 32827:4a34689eeb33 default tip

merged from im.pidgin.pidgin
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Sat, 19 Nov 2011 14:42:54 +0900
parents 867104ed576a
children
comparison
equal deleted inserted replaced
32692:0f94ec89f0bc 32827:4a34689eeb33
510 PurpleAccount *account; 510 PurpleAccount *account;
511 PurpleXfer *xfer; 511 PurpleXfer *xfer;
512 MsnFileContext *file_context; 512 MsnFileContext *file_context;
513 char *buf; 513 char *buf;
514 gsize bin_len; 514 gsize bin_len;
515 guint32 file_size;
516 char *file_name; 515 char *file_name;
517 516
518 account = slpcall->slplink->session->account; 517 account = slpcall->slplink->session->account;
519 518
520 slpcall->end_cb = msn_xfer_end_cb; 519 slpcall->end_cb = msn_xfer_end_cb;
527 526
528 buf = (char *)purple_base64_decode(context, &bin_len); 527 buf = (char *)purple_base64_decode(context, &bin_len);
529 file_context = msn_file_context_from_wire(buf, bin_len); 528 file_context = msn_file_context_from_wire(buf, bin_len);
530 529
531 if (file_context != NULL) { 530 if (file_context != NULL) {
532 file_size = file_context->file_size;
533
534 file_name = g_convert((const gchar *)&file_context->file_name, 531 file_name = g_convert((const gchar *)&file_context->file_name,
535 MAX_FILE_NAME_LEN * 2, 532 MAX_FILE_NAME_LEN * 2,
536 "UTF-8", "UTF-16LE", 533 "UTF-8", "UTF-16LE",
537 NULL, NULL, NULL); 534 NULL, NULL, NULL);
538 535
539 purple_xfer_set_filename(xfer, file_name ? file_name : ""); 536 purple_xfer_set_filename(xfer, file_name ? file_name : "");
540 g_free(file_name); 537 g_free(file_name);
541 purple_xfer_set_size(xfer, file_size); 538 purple_xfer_set_size(xfer, file_context->file_size);
542 purple_xfer_set_init_fnc(xfer, msn_xfer_init); 539 purple_xfer_set_init_fnc(xfer, msn_xfer_init);
543 purple_xfer_set_request_denied_fnc(xfer, msn_xfer_cancel); 540 purple_xfer_set_request_denied_fnc(xfer, msn_xfer_cancel);
544 purple_xfer_set_cancel_recv_fnc(xfer, msn_xfer_cancel); 541 purple_xfer_set_cancel_recv_fnc(xfer, msn_xfer_cancel);
545 purple_xfer_set_read_fnc(xfer, msn_xfer_read); 542 purple_xfer_set_read_fnc(xfer, msn_xfer_read);
546 purple_xfer_set_write_fnc(xfer, msn_xfer_write); 543 purple_xfer_set_write_fnc(xfer, msn_xfer_write);
1143 slpcall->timer = 0; 1140 slpcall->timer = 0;
1144 } 1141 }
1145 1142
1146 if (slpcall->cb) 1143 if (slpcall->cb)
1147 slpcall->cb(slpcall, body, body_len); 1144 slpcall->cb(slpcall, body, body_len);
1148
1149 slpcall->wasted = TRUE;
1150 } 1145 }
1151 } 1146 }
1152 else if (msn_p2p_info_is_ack(slpmsg->p2p_info)) 1147 else if (msn_p2p_info_is_ack(slpmsg->p2p_info))
1153 { 1148 {
1154 /* Acknowledgement of previous message. Don't do anything currently. */ 1149 /* Acknowledgement of previous message. Don't do anything currently. */