Mercurial > pidgin
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 } |