comparison libpurple/protocols/silc/ft.c @ 32672:3828a61c44da

A boring and large patch so I can merge heads.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Fri, 23 Dec 2011 08:21:58 +0000
parents f1437342cc0e
children
comparison
equal deleted inserted replaced
32671:0e69949b3e61 32672:3828a61c44da
74 PurpleConnection *gc = xfer->sg->gc; 74 PurpleConnection *gc = xfer->sg->gc;
75 char tmp[256]; 75 char tmp[256];
76 76
77 if (status == SILC_CLIENT_FILE_MONITOR_CLOSED) { 77 if (status == SILC_CLIENT_FILE_MONITOR_CLOSED) {
78 /* All started sessions terminate here */ 78 /* All started sessions terminate here */
79 xfer->xfer->data = NULL; 79 purple_xfer_set_protocol_data(xfer->xfer, NULL);
80 purple_xfer_unref(xfer->xfer); 80 purple_xfer_unref(xfer->xfer);
81 silc_free(xfer); 81 silc_free(xfer);
82 return; 82 return;
83 } 83 }
84 84
85 if (status == SILC_CLIENT_FILE_MONITOR_DISCONNECT) { 85 if (status == SILC_CLIENT_FILE_MONITOR_DISCONNECT) {
86 purple_notify_error(gc, _("Secure File Transfer"), 86 purple_notify_error(gc, _("Secure File Transfer"),
87 _("Error during file transfer"), 87 _("Error during file transfer"),
88 _("Remote disconnected")); 88 _("Remote disconnected"));
89 xfer->xfer->status = PURPLE_XFER_STATUS_CANCEL_REMOTE; 89 purple_xfer_set_status(xfer->xfer, PURPLE_XFER_STATUS_CANCEL_REMOTE);
90 purple_xfer_update_progress(xfer->xfer); 90 purple_xfer_update_progress(xfer->xfer);
91 silc_client_file_close(client, conn, session_id); 91 silc_client_file_close(client, conn, session_id);
92 return; 92 return;
93 } 93 }
94 94
120 } else if (error == SILC_CLIENT_FILE_UNKNOWN_SESSION) { 120 } else if (error == SILC_CLIENT_FILE_UNKNOWN_SESSION) {
121 purple_notify_error(gc, _("Secure File Transfer"), 121 purple_notify_error(gc, _("Secure File Transfer"),
122 _("Error during file transfer"), 122 _("Error during file transfer"),
123 _("File transfer session does not exist")); 123 _("File transfer session does not exist"));
124 } 124 }
125 xfer->xfer->status = PURPLE_XFER_STATUS_CANCEL_REMOTE; 125 purple_xfer_set_status(xfer->xfer, PURPLE_XFER_STATUS_CANCEL_REMOTE);
126 purple_xfer_update_progress(xfer->xfer); 126 purple_xfer_update_progress(xfer->xfer);
127 silc_client_file_close(client, conn, session_id); 127 silc_client_file_close(client, conn, session_id);
128 return; 128 return;
129 } 129 }
130 130
131 /* Update file transfer UI */ 131 /* Update file transfer UI */
132 if (!offset && filesize) 132 if (!offset && filesize)
133 purple_xfer_set_size(xfer->xfer, filesize); 133 purple_xfer_set_size(xfer->xfer, filesize);
134 if (offset && filesize) { 134 if (offset && filesize) {
135 xfer->xfer->bytes_sent = offset; 135 purple_xfer_set_bytes_sent(xfer->xfer, offset);
136 xfer->xfer->bytes_remaining = filesize - offset;
137 } 136 }
138 purple_xfer_update_progress(xfer->xfer); 137 purple_xfer_update_progress(xfer->xfer);
139 138
140 if (status == SILC_CLIENT_FILE_MONITOR_SEND || 139 if (status == SILC_CLIENT_FILE_MONITOR_SEND ||
141 status == SILC_CLIENT_FILE_MONITOR_RECEIVE) { 140 status == SILC_CLIENT_FILE_MONITOR_RECEIVE) {
148 } 147 }
149 148
150 static void 149 static void
151 silcpurple_ftp_cancel(PurpleXfer *x) 150 silcpurple_ftp_cancel(PurpleXfer *x)
152 { 151 {
153 SilcPurpleXfer xfer = x->data; 152 SilcPurpleXfer xfer = purple_xfer_get_protocol_data(x);
154 153
155 if (!xfer) 154 if (!xfer)
156 return; 155 return;
157 156
158 xfer->xfer->status = PURPLE_XFER_STATUS_CANCEL_LOCAL; 157 purple_xfer_set_status(xfer->xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL);
159 purple_xfer_update_progress(xfer->xfer); 158 purple_xfer_update_progress(xfer->xfer);
160 silc_client_file_close(xfer->sg->client, xfer->sg->conn, xfer->session_id); 159 silc_client_file_close(xfer->sg->client, xfer->sg->conn, xfer->session_id);
161 } 160 }
162 161
163 static void 162 static void
164 silcpurple_ftp_ask_name_cancel(PurpleXfer *x) 163 silcpurple_ftp_ask_name_cancel(PurpleXfer *x)
165 { 164 {
166 SilcPurpleXfer xfer = x->data; 165 SilcPurpleXfer xfer = purple_xfer_get_protocol_data(x);
167 166
168 if (!xfer) 167 if (!xfer)
169 return; 168 return;
170 169
171 /* Cancel the transmission */ 170 /* Cancel the transmission */
174 } 173 }
175 174
176 static void 175 static void
177 silcpurple_ftp_ask_name_ok(PurpleXfer *x) 176 silcpurple_ftp_ask_name_ok(PurpleXfer *x)
178 { 177 {
179 SilcPurpleXfer xfer = x->data; 178 SilcPurpleXfer xfer = purple_xfer_get_protocol_data(x);
180 const char *name; 179 const char *name;
181 180
182 if (!xfer) 181 if (!xfer)
183 return; 182 return;
184 183
210 } 209 }
211 210
212 static void 211 static void
213 silcpurple_ftp_request_result(PurpleXfer *x) 212 silcpurple_ftp_request_result(PurpleXfer *x)
214 { 213 {
215 SilcPurpleXfer xfer = x->data; 214 SilcPurpleXfer xfer = purple_xfer_get_protocol_data(x);
216 SilcClientFileError status; 215 SilcClientFileError status;
217 PurpleConnection *gc = xfer->sg->gc; 216 PurpleConnection *gc = xfer->sg->gc;
218 SilcClientConnectionParams params; 217 SilcClientConnectionParams params;
219 gboolean local = xfer->hostname ? FALSE : TRUE; 218 gboolean local = xfer->hostname ? FALSE : TRUE;
220 char *local_ip = NULL, *remote_ip = NULL; 219 char *local_ip = NULL, *remote_ip = NULL;
308 void silcpurple_ftp_request(SilcClient client, SilcClientConnection conn, 307 void silcpurple_ftp_request(SilcClient client, SilcClientConnection conn,
309 SilcClientEntry client_entry, SilcUInt32 session_id, 308 SilcClientEntry client_entry, SilcUInt32 session_id,
310 const char *hostname, SilcUInt16 port) 309 const char *hostname, SilcUInt16 port)
311 { 310 {
312 PurpleConnection *gc = client->application; 311 PurpleConnection *gc = client->application;
313 SilcPurple sg = gc->proto_data; 312 SilcPurple sg = purple_connection_get_protocol_data(gc);
314 SilcPurpleXfer xfer; 313 SilcPurpleXfer xfer;
315 314
316 xfer = silc_calloc(1, sizeof(*xfer)); 315 xfer = silc_calloc(1, sizeof(*xfer));
317 if (!xfer) { 316 if (!xfer) {
318 silc_client_file_close(sg->client, sg->conn, session_id); 317 silc_client_file_close(sg->client, sg->conn, session_id);
335 purple_xfer_set_init_fnc(xfer->xfer, silcpurple_ftp_request_result); 334 purple_xfer_set_init_fnc(xfer->xfer, silcpurple_ftp_request_result);
336 purple_xfer_set_request_denied_fnc(xfer->xfer, silcpurple_ftp_request_denied); 335 purple_xfer_set_request_denied_fnc(xfer->xfer, silcpurple_ftp_request_denied);
337 purple_xfer_set_cancel_recv_fnc(xfer->xfer, silcpurple_ftp_cancel); 336 purple_xfer_set_cancel_recv_fnc(xfer->xfer, silcpurple_ftp_cancel);
338 xfer->xfer->remote_ip = g_strdup(hostname); 337 xfer->xfer->remote_ip = g_strdup(hostname);
339 xfer->xfer->remote_port = port; 338 xfer->xfer->remote_port = port;
340 xfer->xfer->data = xfer; 339 purple_xfer_set_protocol_data(xfer->xfer, xfer);
341 340
342 /* File transfer request */ 341 /* File transfer request */
343 purple_xfer_request(xfer->xfer); 342 purple_xfer_request(xfer->xfer);
344 } 343 }
345 344
346 static void 345 static void
347 silcpurple_ftp_send_cancel(PurpleXfer *x) 346 silcpurple_ftp_send_cancel(PurpleXfer *x)
348 { 347 {
349 SilcPurpleXfer xfer = x->data; 348 SilcPurpleXfer xfer = purple_xfer_get_protocol_data(x);
350 349
351 if (!xfer) 350 if (!xfer)
352 return; 351 return;
353 352
354 /* This call will free all resources */ 353 /* This call will free all resources */
356 } 355 }
357 356
358 static void 357 static void
359 silcpurple_ftp_send(PurpleXfer *x) 358 silcpurple_ftp_send(PurpleXfer *x)
360 { 359 {
361 SilcPurpleXfer xfer = x->data; 360 SilcPurpleXfer xfer = purple_xfer_get_protocol_data(x);
362 const char *name; 361 const char *name;
363 char *local_ip = NULL, *remote_ip = NULL; 362 char *local_ip = NULL, *remote_ip = NULL;
364 gboolean local = TRUE; 363 gboolean local = TRUE;
365 SilcClientConnectionParams params; 364 SilcClientConnectionParams params;
366 SilcSocket sock; 365 SilcSocket sock;
433 g_free(context); 432 g_free(context);
434 } 433 }
435 434
436 PurpleXfer *silcpurple_ftp_new_xfer(PurpleConnection *gc, const char *name) 435 PurpleXfer *silcpurple_ftp_new_xfer(PurpleConnection *gc, const char *name)
437 { 436 {
438 SilcPurple sg = gc->proto_data; 437 SilcPurple sg = purple_connection_get_protocol_data(gc);
439 SilcClient client = sg->client; 438 SilcClient client = sg->client;
440 SilcClientConnection conn = sg->conn; 439 SilcClientConnection conn = sg->conn;
441 SilcDList clients; 440 SilcDList clients;
442 SilcPurpleXfer xfer; 441 SilcPurpleXfer xfer;
443 442
465 return NULL; 464 return NULL;
466 } 465 }
467 purple_xfer_set_init_fnc(xfer->xfer, silcpurple_ftp_send); 466 purple_xfer_set_init_fnc(xfer->xfer, silcpurple_ftp_send);
468 purple_xfer_set_request_denied_fnc(xfer->xfer, silcpurple_ftp_request_denied); 467 purple_xfer_set_request_denied_fnc(xfer->xfer, silcpurple_ftp_request_denied);
469 purple_xfer_set_cancel_send_fnc(xfer->xfer, silcpurple_ftp_send_cancel); 468 purple_xfer_set_cancel_send_fnc(xfer->xfer, silcpurple_ftp_send_cancel);
470 xfer->xfer->data = xfer; 469 purple_xfer_set_protocol_data(xfer->xfer, xfer);
471 470
472 silc_free(clients); 471 silc_free(clients);
473 472
474 return xfer->xfer; 473 return xfer->xfer;
475 } 474 }