comparison libpurple/protocols/jabber/si.c @ 25769:5456120de480

disapproval of revision '3de5eea959151773885ba601f681aec2431dd47d'
author Marcus Lundblad <ml@update.uu.se>
date Wed, 14 Jan 2009 18:53:28 +0000
parents dbba20fb7c39
children a34d6975c239
comparison
equal deleted inserted replaced
25768:dbba20fb7c39 25769:5456120de480
1027 PurpleXfer *xfer = jabber_si_xfer_find(js, sid, who); 1027 PurpleXfer *xfer = jabber_si_xfer_find(js, sid, who);
1028 if (xfer) { 1028 if (xfer) {
1029 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; 1029 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
1030 JabberIBBSession *sess = 1030 JabberIBBSession *sess =
1031 jabber_ibb_session_create_from_xmlnode(js, packet, xfer); 1031 jabber_ibb_session_create_from_xmlnode(js, packet, xfer);
1032 const char *filename;
1032 1033
1033 jabber_si_bytestreams_ibb_timeout_remove(jsx); 1034 jabber_si_bytestreams_ibb_timeout_remove(jsx);
1034 1035
1035 if (sess) { 1036 if (sess) {
1036 jsx->fp = xfer->dest_fp; 1037 /* open the file to write to */
1037 xfer->dest_fp = NULL; 1038 filename = purple_xfer_get_local_filename(xfer);
1038 /* the FD we get from xfer should never be NULL (see ft.c) */ 1039 jsx->fp = g_fopen(filename, "wb");
1039 1040 if (jsx->fp == NULL) {
1041 purple_debug_error("jabber", "failed to open file %s for writing: %s\n",
1042 filename, g_strerror(errno));
1043 purple_xfer_cancel_remote(xfer);
1044 return FALSE;
1045 }
1046
1040 /* setup callbacks here...*/ 1047 /* setup callbacks here...*/
1041 jabber_ibb_session_set_data_received_callback(sess, 1048 jabber_ibb_session_set_data_received_callback(sess,
1042 jabber_si_xfer_ibb_recv_data_cb); 1049 jabber_si_xfer_ibb_recv_data_cb);
1043 jabber_ibb_session_set_closed_callback(sess, 1050 jabber_ibb_session_set_closed_callback(sess,
1044 jabber_si_xfer_ibb_closed_cb); 1051 jabber_si_xfer_ibb_closed_cb);
1116 JabberStream *js = jabber_ibb_session_get_js(sess); 1123 JabberStream *js = jabber_ibb_session_get_js(sess);
1117 PurpleConnection *gc = js->gc; 1124 PurpleConnection *gc = js->gc;
1118 PurpleAccount *account = purple_connection_get_account(gc); 1125 PurpleAccount *account = purple_connection_get_account(gc);
1119 1126
1120 if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) { 1127 if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) {
1121 jsx->fp = xfer->dest_fp; 1128 const char *filename = purple_xfer_get_local_filename(xfer);
1122 xfer->dest_fp = NULL; /* disable double fclose */ 1129 jsx->fp = g_fopen(filename, "rb");
1123 /* the FD we get from xfer should never be NULL (see ft.c) */ 1130 if (jsx->fp == NULL) {
1124 1131 purple_debug_error("jabber", "Failed to open file %s for reading: %s\n",
1132 filename, g_strerror(errno));
1133 purple_xfer_error(purple_xfer_get_type(xfer), account,
1134 jabber_ibb_session_get_who(sess),
1135 _("Failed to open the file"));
1136 purple_xfer_cancel_local(xfer);
1137 return;
1138 }
1139
1125 purple_xfer_start(xfer, 0, NULL, 0); 1140 purple_xfer_start(xfer, 0, NULL, 0);
1126 purple_xfer_set_bytes_sent(xfer, 0); 1141 purple_xfer_set_bytes_sent(xfer, 0);
1127 purple_xfer_update_progress(xfer); 1142 purple_xfer_update_progress(xfer);
1128 jabber_si_xfer_ibb_send_data(sess); 1143 jabber_si_xfer_ibb_send_data(sess);
1129 } else { 1144 } else {