pidgin: f9c34a9b: Steps toward hiding PurpleXfer.
datallah at pidgin.im
datallah at pidgin.im
Mon Aug 29 19:26:00 EDT 2011
----------------------------------------------------------------------
Revision: f9c34a9beb5e6cc1122e349b98a5495368ec816d
Parent: c5d786d8c541fd18babd7f07aff64e5e022659ce
Author: datallah at pidgin.im
Date: 08/29/11 18:55:51
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/f9c34a9beb5e6cc1122e349b98a5495368ec816d
Changelog:
Steps toward hiding PurpleXfer.
To convert prpls as they are now, lot of new accessors are needed (for stuff
that maybe shouldn't be exposed directly).
To convert prpls so that they don't keep re-implementing the same type of
stuff, a lot of error-prone changes are needed.
Changes against parent c5d786d8c541fd18babd7f07aff64e5e022659ce
patched libpurple/protocols/bonjour/bonjour_ft.c
patched libpurple/protocols/irc/dcc_send.c
patched libpurple/protocols/jabber/oob.c
patched libpurple/protocols/jabber/si.c
patched libpurple/protocols/oscar/oft.c
patched libpurple/protocols/sametime/sametime.c
patched libpurple/protocols/silc/ft.c
patched libpurple/protocols/yahoo/yahoo_filexfer.c
-------------- next part --------------
============================================================
--- libpurple/protocols/jabber/oob.c 8bee69b4c0478cc9561ba0b5b8b4eb233ddeaa8b
+++ libpurple/protocols/jabber/oob.c 889b556a8d6638be3c76e9901611c2bf24eabaaf
@@ -76,7 +76,7 @@ static void jabber_oob_xfer_end(PurpleXf
JabberIq *iq;
iq = jabber_iq_new(jox->js, JABBER_IQ_RESULT);
- xmlnode_set_attrib(iq->node, "to", xfer->who);
+ xmlnode_set_attrib(iq->node, "to", purple_xfer_get_remote_user(xfer));
jabber_iq_set_id(iq, jox->iq_id);
jabber_iq_send(iq);
@@ -89,7 +89,7 @@ static void jabber_oob_xfer_request_send
JabberOOBXfer *jox = purple_xfer_get_protocol_data(xfer);
int len, total_len = strlen(jox->write_buffer);
- len = write(xfer->fd, jox->write_buffer + jox->written_len,
+ len = purple_xfer_write(xfer, (guchar*) jox->write_buffer + jox->written_len,
total_len - jox->written_len);
if(len < 0 && errno == EAGAIN)
@@ -163,7 +163,7 @@ static void jabber_oob_xfer_recv_error(P
xmlnode *y, *z;
iq = jabber_iq_new(jox->js, JABBER_IQ_ERROR);
- xmlnode_set_attrib(iq->node, "to", xfer->who);
+ xmlnode_set_attrib(iq->node, "to", purple_xfer_get_remote_user(xfer));
jabber_iq_set_id(iq, jox->iq_id);
y = xmlnode_new_child(iq->node, "error");
xmlnode_set_attrib(y, "code", code);
============================================================
--- libpurple/protocols/jabber/si.c d5354598668135f0c78d9335a6e6f4f6c76a33a6
+++ libpurple/protocols/jabber/si.c b3d04501f5dd2fc6e237f90bb86b846b154e61cf
@@ -88,8 +88,8 @@ jabber_si_xfer_find(JabberStream *js, co
for(xfers = js->file_transfers; xfers; xfers = xfers->next) {
PurpleXfer *xfer = xfers->data;
JabberSIXfer *jsx = purple_xfer_get_protocol_data(xfer);
- if(jsx->stream_id && xfer->who &&
- !strcmp(jsx->stream_id, sid) && !strcmp(xfer->who, from))
+ if(jsx->stream_id && purple_xfer_get_remote_user(xfer) &&
+ !strcmp(jsx->stream_id, sid) && !strcmp(purple_xfer_get_remote_user(xfer), from))
return xfer;
}
@@ -143,7 +143,7 @@ jabber_si_bytestreams_connect_cb(gpointe
}
/* unknown file transfer type is assumed to be RECEIVE */
- if(xfer->type == PURPLE_XFER_SEND)
+ if(purple_xfer_get_type(xfer) == PURPLE_XFER_SEND)
{
xmlnode *activate;
iq = jabber_iq_new_query(jsx->js, JABBER_IQ_SET, NS_BYTESTREAMS);
@@ -151,14 +151,14 @@ jabber_si_bytestreams_connect_cb(gpointe
query = xmlnode_get_child(iq->node, "query");
xmlnode_set_attrib(query, "sid", jsx->stream_id);
activate = xmlnode_new_child(query, "activate");
- xmlnode_insert_data(activate, xfer->who, -1);
+ xmlnode_insert_data(activate, purple_xfer_get_remote_user(xfer), -1);
/* TODO: We need to wait for an activation result before starting */
}
else
{
iq = jabber_iq_new_query(jsx->js, JABBER_IQ_RESULT, NS_BYTESTREAMS);
- xmlnode_set_attrib(iq->node, "to", xfer->who);
+ xmlnode_set_attrib(iq->node, "to", purple_xfer_get_remote_user(xfer));
jabber_iq_set_id(iq, jsx->iq_id);
query = xmlnode_get_child(iq->node, "query");
su = xmlnode_new_child(query, "streamhost-used");
@@ -229,7 +229,7 @@ static void jabber_si_bytestreams_attemp
if(jsx->iq_id)
jabber_iq_set_id(iq, jsx->iq_id);
- xmlnode_set_attrib(iq->node, "to", xfer->who);
+ xmlnode_set_attrib(iq->node, "to", purple_xfer_get_remote_user(xfer));
error = xmlnode_new_child(iq->node, "error");
xmlnode_set_attrib(error, "code", "404");
xmlnode_set_attrib(error, "type", "cancel");
@@ -271,7 +271,7 @@ static void jabber_si_bytestreams_attemp
purple_proxy_info_destroy(jsx->gpi);
jsx->gpi = NULL;
- dstjid = jabber_id_new(xfer->who);
+ dstjid = jabber_id_new(purple_xfer_get_remote_user(xfer));
/* TODO: Deal with zeroconf */
@@ -284,7 +284,7 @@ static void jabber_si_bytestreams_attemp
purple_proxy_info_set_port(jsx->gpi, streamhost->port);
/* unknown file transfer type is assumed to be RECEIVE */
- if(xfer->type == PURPLE_XFER_SEND)
+ if(purple_xfer_get_type(xfer) == PURPLE_XFER_SEND)
dstaddr = g_strdup_printf("%s%s@%s/%s%s@%s/%s", jsx->stream_id, jsx->js->user->node, jsx->js->user->domain,
jsx->js->user->resource, dstjid->node, dstjid->domain, dstjid->resource);
else
@@ -302,7 +302,7 @@ static void jabber_si_bytestreams_attemp
g_free(dstaddr);
/* When selecting a streamhost, timeout after STREAMHOST_CONNECT_TIMEOUT seconds, otherwise it takes forever */
- if (xfer->type != PURPLE_XFER_SEND && jsx->connect_data != NULL)
+ if (purple_xfer_get_type(xfer) != PURPLE_XFER_SEND && jsx->connect_data != NULL)
jsx->connect_timeout = purple_timeout_add_seconds(
STREAMHOST_CONNECT_TIMEOUT, connect_timeout_cb, xfer);
@@ -382,8 +382,6 @@ jabber_si_xfer_bytestreams_send_read_aga
if (len < 0 && errno == EAGAIN)
return;
else if (len < 0) {
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
g_free(jsx->rxqueue);
jsx->rxqueue = NULL;
close(source);
@@ -426,8 +424,6 @@ jabber_si_xfer_bytestreams_send_read_aga
if(len < 0 && errno == EAGAIN)
return;
else if(len <= 0) {
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
close(source);
purple_xfer_cancel_remote(xfer);
return;
@@ -441,8 +437,6 @@ jabber_si_xfer_bytestreams_send_read_aga
purple_debug_info("jabber", "Invalid socks5 conn req. header[0x%x,0x%x,0x%x,0x%x,0x%x]\n",
jsx->rxqueue[0], jsx->rxqueue[1], jsx->rxqueue[2],
jsx->rxqueue[3], jsx->rxqueue[4]);
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
close(source);
purple_xfer_cancel_remote(xfer);
return;
@@ -455,8 +449,6 @@ jabber_si_xfer_bytestreams_send_read_aga
if(len < 0 && errno == EAGAIN)
return;
else if(len <= 0) {
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
close(source);
purple_xfer_cancel_remote(xfer);
return;
@@ -475,7 +467,7 @@ jabber_si_xfer_bytestreams_send_read_aga
dstaddr = g_strdup_printf("%s%s@%s/%s%s", jsx->stream_id,
jsx->js->user->node, jsx->js->user->domain,
- jsx->js->user->resource, xfer->who);
+ jsx->js->user->resource, purple_xfer_get_remote_user(xfer));
/* Per XEP-0065, the 'host' must be SHA1(SID + from JID + to JID) */
hash = jabber_calculate_data_hash(dstaddr, strlen(dstaddr), "sha1");
@@ -534,8 +526,6 @@ jabber_si_xfer_bytestreams_send_read_res
if (len < 0 && errno == EAGAIN)
return;
else if (len < 0) {
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
g_free(jsx->rxqueue);
jsx->rxqueue = NULL;
close(source);
@@ -547,11 +537,9 @@ jabber_si_xfer_bytestreams_send_read_res
if (jsx->rxlen < jsx->rxmaxlen)
return;
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
-
/* If we sent a "Success", wait for a response, otherwise give up and cancel */
if (jsx->rxqueue[1] == 0x00) {
+ purple_input_remove(xfer->watcher);
xfer->watcher = purple_input_add(source, PURPLE_INPUT_READ,
jabber_si_xfer_bytestreams_send_read_again_cb, xfer);
g_free(jsx->rxqueue);
@@ -584,9 +572,6 @@ jabber_si_xfer_bytestreams_send_read_cb(
if(len < 0 && errno == EAGAIN)
return;
else if(len <= 0) {
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
- close(source);
purple_xfer_cancel_remote(xfer);
return;
}
@@ -603,9 +588,6 @@ jabber_si_xfer_bytestreams_send_read_cb(
if(len < 0 && errno == EAGAIN)
return;
else if(len <= 0) {
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
- close(source);
purple_xfer_cancel_remote(xfer);
return;
}
@@ -618,13 +600,9 @@ jabber_si_xfer_bytestreams_send_read_cb(
if(jsx->rxlen -2 < jsx->rxqueue[1])
return;
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
-
purple_debug_info("jabber", "checking to make sure we're socks FIVE\n");
if(jsx->rxqueue[0] != 0x05) {
- close(source);
purple_xfer_cancel_remote(xfer);
return;
}
@@ -641,6 +619,7 @@ jabber_si_xfer_bytestreams_send_read_cb(
jsx->rxqueue = g_malloc(jsx->rxmaxlen);
jsx->rxqueue[0] = 0x05;
jsx->rxqueue[1] = 0x00;
+ purple_input_remove(xfer->watcher);
xfer->watcher = purple_input_add(source, PURPLE_INPUT_WRITE,
jabber_si_xfer_bytestreams_send_read_response_cb,
xfer);
@@ -658,6 +637,7 @@ jabber_si_xfer_bytestreams_send_read_cb(
jsx->rxqueue = g_malloc(jsx->rxmaxlen);
jsx->rxqueue[0] = 0x05;
jsx->rxqueue[1] = 0xFF;
+ purple_input_remove(xfer->watcher);
xfer->watcher = purple_input_add(source, PURPLE_INPUT_WRITE,
jabber_si_xfer_bytestreams_send_read_response_cb, xfer);
jabber_si_xfer_bytestreams_send_read_response_cb(xfer,
@@ -848,7 +828,7 @@ jabber_si_xfer_bytestreams_listen_cb(int
purple_xfer_unref(xfer);
iq = jabber_iq_new_query(jsx->js, JABBER_IQ_SET, NS_BYTESTREAMS);
- xmlnode_set_attrib(iq->node, "to", xfer->who);
+ xmlnode_set_attrib(iq->node, "to", purple_xfer_get_remote_user(xfer));
query = xmlnode_get_child(iq->node, "query");
xmlnode_set_attrib(query, "sid", jsx->stream_id);
@@ -866,7 +846,7 @@ jabber_si_xfer_bytestreams_listen_cb(int
jid = g_strdup_printf("%s@%s/%s", jsx->js->user->node,
jsx->js->user->domain, jsx->js->user->resource);
xfer->local_port = purple_network_get_port_from_fd(sock);
- g_snprintf(port, sizeof(port), "%hu", xfer->local_port);
+ g_snprintf(port, sizeof(port), "%hu", purple_xfer_get_local_port(xfer));
public_ip = purple_network_get_my_ip(jsx->js->fd);
@@ -1247,10 +1227,10 @@ static void jabber_si_xfer_send_request(
purple_xfer_prepare_thumbnail(xfer, "jpeg,png");
#endif
- xfer->filename = g_path_get_basename(xfer->local_filename);
+ purple_xfer_set_filename(xfer, g_path_get_basename(purple_xfer_get_local_filename(xfer)));
iq = jabber_iq_new(jsx->js, JABBER_IQ_SET);
- xmlnode_set_attrib(iq->node, "to", xfer->who);
+ xmlnode_set_attrib(iq->node, "to", purple_xfer_get_remote_user(xfer));
si = xmlnode_new_child(iq->node, "si");
xmlnode_set_namespace(si, "http://jabber.org/protocol/si");
jsx->stream_id = jabber_get_next_id(jsx->js);
@@ -1259,8 +1239,8 @@ static void jabber_si_xfer_send_request(
file = xmlnode_new_child(si, "file");
xmlnode_set_namespace(file, NS_SI_FILE_TRANSFER);
- xmlnode_set_attrib(file, "name", xfer->filename);
- g_snprintf(buf, sizeof(buf), "%" G_GSIZE_FORMAT, xfer->size);
+ xmlnode_set_attrib(file, "name", purple_xfer_get_filename(xfer));
+ g_snprintf(buf, sizeof(buf), "%" G_GSIZE_FORMAT, purple_xfer_get_size(xfer));
xmlnode_set_attrib(file, "size", buf);
/* maybe later we'll do hash and date attribs */
@@ -1324,8 +1304,7 @@ static void jabber_si_xfer_free(PurpleXf
jabber_iq_remove_callback_by_id(js, jsx->iq_id);
if (jsx->local_streamhost_fd >= 0)
close(jsx->local_streamhost_fd);
- if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND &&
- xfer->fd >= 0) {
+ if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND && xfer->fd >= 0) {
purple_debug_info("jabber", "remove port mapping\n");
purple_network_remove_port_mapping(xfer->fd);
}
@@ -1391,7 +1370,7 @@ static void jabber_si_xfer_request_denie
JabberIq *iq;
xmlnode *error, *child;
iq = jabber_iq_new(js, JABBER_IQ_ERROR);
- xmlnode_set_attrib(iq->node, "to", xfer->who);
+ xmlnode_set_attrib(iq->node, "to", purple_xfer_get_remote_user(xfer));
jabber_iq_set_id(iq, jsx->iq_id);
error = xmlnode_new_child(iq->node, "error");
@@ -1459,7 +1438,7 @@ static void do_transfer_send(PurpleXfer
static void do_transfer_send(PurpleXfer *xfer, const char *resource)
{
JabberSIXfer *jsx = purple_xfer_get_protocol_data(xfer);
- char **who_v = g_strsplit(xfer->who, "/", 2);
+ char **who_v = g_strsplit(purple_xfer_get_remote_user(xfer), "/", 2);
char *who;
JabberBuddy *jb;
JabberBuddyResource *jbr = NULL;
@@ -1516,7 +1495,7 @@ static void jabber_si_xfer_init(PurpleXf
char *resource;
GList *resources = NULL;
- if(NULL != (resource = jabber_get_resource(xfer->who))) {
+ if(NULL != (resource = jabber_get_resource(purple_xfer_get_remote_user(xfer)))) {
/* they've specified a resource, no need to ask or
* default or anything, just do it */
@@ -1525,7 +1504,7 @@ static void jabber_si_xfer_init(PurpleXf
return;
}
- jb = jabber_buddy_find(jsx->js, xfer->who, TRUE);
+ jb = jabber_buddy_find(jsx->js, purple_xfer_get_remote_user(xfer), TRUE);
if (jb) {
GList *l;
@@ -1549,11 +1528,11 @@ static void jabber_si_xfer_init(PurpleXf
char *msg;
if(!jb) {
- msg = g_strdup_printf(_("Unable to send file to %s, invalid JID"), xfer->who);
+ msg = g_strdup_printf(_("Unable to send file to %s, invalid JID"), purple_xfer_get_remote_user(xfer));
} else if(jb->subscription & JABBER_SUB_TO) {
- msg = g_strdup_printf(_("Unable to send file to %s, user is not online"), xfer->who);
+ msg = g_strdup_printf(_("Unable to send file to %s, user is not online"), purple_xfer_get_remote_user(xfer));
} else {
- msg = g_strdup_printf(_("Unable to send file to %s, not subscribed to user presence"), xfer->who);
+ msg = g_strdup_printf(_("Unable to send file to %s, not subscribed to user presence"), purple_xfer_get_remote_user(xfer));
}
purple_notify_error(jsx->js->gc, _("File Send Failed"), _("File Send Failed"), msg);
@@ -1566,7 +1545,7 @@ static void jabber_si_xfer_init(PurpleXf
} else {
/* we've got multiple resources, we need to pick one to send to */
GList *l;
- char *msg = g_strdup_printf(_("Please select the resource of %s to which you would like to send a file"), xfer->who);
+ char *msg = g_strdup_printf(_("Please select the resource of %s to which you would like to send a file"), purple_xfer_get_remote_user(xfer));
PurpleRequestFields *fields = purple_request_fields_new();
PurpleRequestField *field = purple_request_field_choice_new("resource", _("Resource"), 0);
PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL);
@@ -1582,7 +1561,7 @@ static void jabber_si_xfer_init(PurpleXf
purple_request_fields(jsx->js->gc, _("Select a Resource"), msg, NULL, fields,
_("Send File"), G_CALLBACK(resource_select_ok_cb), _("Cancel"), G_CALLBACK(resource_select_cancel_cb),
- jsx->js->gc->account, xfer->who, NULL, xfer);
+ jsx->js->gc->account, purple_xfer_get_remote_user(xfer), NULL, xfer);
g_free(msg);
}
@@ -1592,7 +1571,7 @@ static void jabber_si_xfer_init(PurpleXf
xmlnode *si, *feature, *x, *field, *value;
iq = jabber_iq_new(jsx->js, JABBER_IQ_RESULT);
- xmlnode_set_attrib(iq->node, "to", xfer->who);
+ xmlnode_set_attrib(iq->node, "to", purple_xfer_get_remote_user(xfer));
if(jsx->iq_id)
jabber_iq_set_id(iq, jsx->iq_id);
else
============================================================
--- libpurple/protocols/yahoo/yahoo_filexfer.c d4bf29f42d14d692126c4c9a4b76edc8c23dbd19
+++ libpurple/protocols/yahoo/yahoo_filexfer.c 93706dbe2ba51824260589958f2e1919d4cac0d3
@@ -43,7 +43,7 @@ struct yahoo_xfer_data {
PurpleConnection *gc;
long expires;
gboolean started;
- gchar *txbuf;
+ guchar *txbuf;
gsize txbuflen;
gsize txbuf_written;
guint tx_handler;
@@ -120,13 +120,13 @@ static void yahoo_receivefile_send_cb(gp
{
PurpleXfer *xfer;
struct yahoo_xfer_data *xd;
- int remaining, written;
+ gssize remaining, written;
xfer = data;
xd = purple_xfer_get_protocol_data(xfer);
remaining = xd->txbuflen - xd->txbuf_written;
- written = write(xfer->fd, xd->txbuf + xd->txbuf_written, remaining);
+ written = purple_xfer_write(xfer, xd->txbuf + xd->txbuf_written, remaining);
if (written < 0 && errno == EAGAIN)
written = 0;
@@ -164,7 +164,7 @@ static void yahoo_receivefile_connected(
return;
if ((source < 0) || (xd->path == NULL) || (xd->host == NULL)) {
purple_xfer_error(PURPLE_XFER_RECEIVE, purple_xfer_get_account(xfer),
- xfer->who, _("Unable to connect."));
+ purple_xfer_get_remote_user(xfer), _("Unable to connect."));
purple_xfer_cancel_remote(xfer);
return;
}
@@ -173,9 +173,10 @@ static void yahoo_receivefile_connected(
/* The first time we get here, assemble the tx buffer */
if (xd->txbuflen == 0) {
- xd->txbuf = g_strdup_printf("GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n",
+ gchar *header = g_strdup_printf("GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n",
xd->path, xd->host);
- xd->txbuflen = strlen(xd->txbuf);
+ xd->txbuf = (guchar*) header;
+ xd->txbuflen = strlen(header);
xd->txbuf_written = 0;
}
@@ -191,13 +192,13 @@ static void yahoo_sendfile_send_cb(gpoin
{
PurpleXfer *xfer;
struct yahoo_xfer_data *xd;
- int written, remaining;
+ gssize written, remaining;
xfer = data;
xd = purple_xfer_get_protocol_data(xfer);
remaining = xd->txbuflen - xd->txbuf_written;
- written = write(xfer->fd, xd->txbuf + xd->txbuf_written, remaining);
+ written = purple_xfer_write(xfer, xd->txbuf + xd->txbuf_written, remaining);
if (written < 0 && errno == EAGAIN)
written = 0;
@@ -244,7 +245,7 @@ static void yahoo_sendfile_connected(gpo
if (source < 0) {
purple_xfer_error(PURPLE_XFER_RECEIVE, purple_xfer_get_account(xfer),
- xfer->who, _("Unable to connect."));
+ purple_xfer_get_remote_user(xfer), _("Unable to connect."));
purple_xfer_cancel_remote(xfer);
return;
}
@@ -264,7 +265,7 @@ static void yahoo_sendfile_connected(gpo
encoded_filename = yahoo_string_encode(gc, filename, NULL);
yahoo_packet_hash(pkt, "sssss", 0, purple_connection_get_display_name(gc),
- 5, xfer->who, 14, "", 27, encoded_filename, 28, size);
+ 5, purple_xfer_get_remote_user(xfer), 14, "", 27, encoded_filename, 28, size);
g_free(size);
g_free(encoded_filename);
g_free(filename);
@@ -370,14 +371,14 @@ static void yahoo_xfer_init_15(PurpleXfe
yd->session_id);
yahoo_packet_hash(pkt, "sssiiiisiii",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xfer_data->xfer_peer_idstring,
222, 1,
266, 1,
302, 268,
300, 268,
27, filename,
- 28, xfer->size,
+ 28, purple_xfer_get_size(xfer),
301, 268,
303, 268);
g_free(filename);
@@ -388,7 +389,7 @@ static void yahoo_xfer_init_15(PurpleXfe
yahoo_packet_hash(pkt, "sssi",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xfer_data->xfer_peer_idstring,
222, 3);
} else {
@@ -397,7 +398,7 @@ static void yahoo_xfer_init_15(PurpleXfe
yahoo_packet_hash(pkt, "sssi",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xfer_data->xfer_peer_idstring,
271, 1);
}
@@ -535,7 +536,7 @@ static void yahoo_xfer_cancel_send(Purpl
yd->session_id);
yahoo_packet_hash(pkt, "sssi",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xfer_data->xfer_peer_idstring,
66, -1);
}
@@ -546,7 +547,7 @@ static void yahoo_xfer_cancel_send(Purpl
yd->session_id);
yahoo_packet_hash(pkt, "sssi",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xfer_data->xfer_peer_idstring,
222, 2);
}
@@ -583,7 +584,7 @@ static void yahoo_xfer_cancel_recv(Purpl
yd->session_id);
yahoo_packet_hash(pkt, "sssi",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xfer_data->xfer_peer_idstring,
222, 4);
}
@@ -594,7 +595,7 @@ static void yahoo_xfer_cancel_recv(Purpl
yd->session_id);
yahoo_packet_hash(pkt, "sssi",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xfer_data->xfer_peer_idstring,
66, -1);
}
@@ -612,7 +613,7 @@ static void yahoo_p2p_ft_server_send_OK(
char *tx = NULL;
int written;
- tx = g_strdup_printf("HTTP/1.1 200 OK\r\nContent-Length: 0\r\nContent-Type: application/octet-stream\r\nConnection: close\r\n\r\n");
+ tx = "HTTP/1.1 200 OK\r\nContent-Length: 0\r\nContent-Type: application/octet-stream\r\nConnection: close\r\n\r\n";
written = write(xfer->fd, tx, strlen(tx));
if (written < 0 && errno == EAGAIN)
@@ -623,7 +624,6 @@ static void yahoo_p2p_ft_server_send_OK(
/* close connection */
close(xfer->fd);
xfer->fd = -1;
- g_free(tx);
}
static void yahoo_xfer_end(PurpleXfer *xfer_old)
@@ -692,7 +692,7 @@ static void yahoo_xfer_end(PurpleXfer *x
purple_xfer_set_protocol_data(xfer_old, NULL);
/* Build the file transfer handle. */
- xfer = purple_xfer_new(gc->account, PURPLE_XFER_RECEIVE, xfer_old->who);
+ xfer = purple_xfer_new(gc->account, PURPLE_XFER_RECEIVE, purple_xfer_get_remote_user(xfer_old));
if (xfer) {
@@ -1056,7 +1056,7 @@ static void yahoo_xfer_dns_connected_15(
yahoo_packet_hash(pkt, "ssssis",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xd->xfer_peer_idstring,
27, filename,
249, 3,
@@ -1107,8 +1107,7 @@ static void yahoo_xfer_recv_cb_15(gpoint
PurpleXfer *xfer;
struct yahoo_xfer_data *xd;
int did;
- gchar* buf;
- gchar* t;
+ guchar buf[1000];
PurpleAccount *account;
PurpleConnection *gc;
@@ -1117,16 +1116,13 @@ static void yahoo_xfer_recv_cb_15(gpoint
account = purple_connection_get_account(xd->gc);
gc = xd->gc;
- buf=g_strnfill(1000, 0);
- while((did = read(source, buf, 998)) > 0)
+ while((did = read(source, buf, sizeof(buf))) > 0)
{
+ /* TODO: Convert to circ buffer, this all is pretty horrible */
+ xd->txbuf = g_realloc(xd->txbuf, xd->txbuflen + did);
+ g_memmove(xd->txbuf + xd->txbuflen, buf, did);
xd->txbuflen += did;
- buf[did] = '\0';
- t = xd->txbuf;
- xd->txbuf = g_strconcat(t,buf,NULL);
- g_free(t);
}
- g_free(buf);
if (did < 0 && errno == EAGAIN)
return;
@@ -1244,7 +1240,7 @@ static void yahoo_xfer_connected_15(gpoi
account = purple_connection_get_account(gc);
if ((source < 0) || (xd->path == NULL) || (xd->host == NULL)) {
purple_xfer_error(PURPLE_XFER_RECEIVE, purple_xfer_get_account(xfer),
- xfer->who, _("Unable to connect."));
+ purple_xfer_get_remote_user(xfer), _("Unable to connect."));
purple_xfer_cancel_remote(xfer);
return;
}
@@ -1252,6 +1248,7 @@ static void yahoo_xfer_connected_15(gpoi
if (xd->txbuflen == 0)
{
gchar* cookies;
+ gchar* initial_buffer;
YahooData *yd = gc->proto_data;
/* cookies = yahoo_get_cookies(gc);
@@ -1265,30 +1262,30 @@ static void yahoo_xfer_connected_15(gpoi
if(xd->info_val_249 == 2)
{
/* sending file via p2p, we are connected as client */
- xd->txbuf = g_strdup_printf("POST /%s HTTP/1.1\r\n"
+ initial_buffer = g_strdup_printf("POST /%s HTTP/1.1\r\n"
"User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
"Host: %s\r\n"
- "Content-Length: %ld\r\n"
+ "Content-Length: %" G_GSIZE_FORMAT "\r\n"
"Cache-Control: no-cache\r\n\r\n",
xd->path,
xd->host,
- (long int)xfer->size); /* to do, add Referer */
+ purple_xfer_get_size(xfer)); /* to do, add Referer */
}
else
{
/* sending file via relaying */
- xd->txbuf = g_strdup_printf("POST /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\n"
+ initial_buffer = g_strdup_printf("POST /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\n"
"Cookie:%s\r\n"
"User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
"Host: %s\r\n"
- "Content-Length: %ld\r\n"
+ "Content-Length: %" G_GSIZE_FORMAT "\r\n"
"Cache-Control: no-cache\r\n\r\n",
purple_url_encode(xd->xfer_idstring_for_relay),
purple_normalize(account, purple_account_get_username(account)),
- xfer->who,
+ purple_xfer_get_remote_user(xfer),
cookies,
xd->host,
- (long int)xfer->size);
+ purple_xfer_get_size(xfer)); /* to do, add Referer */
}
}
else if(purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE && xd->status_15 == STARTED)
@@ -1296,7 +1293,7 @@ static void yahoo_xfer_connected_15(gpoi
if(xd->info_val_249 == 1)
{
/* receiving file via p2p, connected as client */
- xd->txbuf = g_strdup_printf("HEAD /%s HTTP/1.1\r\n"
+ initial_buffer = g_strdup_printf("HEAD /%s HTTP/1.1\r\n"
"Accept: */*\r\n"
"User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
"Host: %s\r\n"
@@ -1307,7 +1304,7 @@ static void yahoo_xfer_connected_15(gpoi
else
{
/* receiving file via relaying */
- xd->txbuf = g_strdup_printf("HEAD /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\n"
+ initial_buffer = g_strdup_printf("HEAD /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\n"
"Accept: */*\r\n"
"Cookie: %s\r\n"
"User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
@@ -1316,7 +1313,7 @@ static void yahoo_xfer_connected_15(gpoi
"Cache-Control: no-cache\r\n\r\n",
purple_url_encode(xd->xfer_idstring_for_relay),
purple_normalize(account, purple_account_get_username(account)),
- xfer->who,
+ purple_xfer_get_remote_user(xfer),
cookies,
xd->host);
}
@@ -1326,7 +1323,7 @@ static void yahoo_xfer_connected_15(gpoi
if(xd->info_val_249 == 1)
{
/* receiving file via p2p, connected as client */
- xd->txbuf = g_strdup_printf("GET /%s HTTP/1.1\r\n"
+ initial_buffer = g_strdup_printf("GET /%s HTTP/1.1\r\n"
"User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
"Host: %s\r\n"
"Connection: Keep-Alive\r\n\r\n",
@@ -1335,14 +1332,14 @@ static void yahoo_xfer_connected_15(gpoi
else
{
/* receiving file via relaying */
- xd->txbuf = g_strdup_printf("GET /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\n"
+ initial_buffer = g_strdup_printf("GET /relay?token=%s&sender=%s&recver=%s HTTP/1.1\r\n"
"Cookie: %s\r\n"
"User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n"
"Host: %s\r\n"
"Connection: Keep-Alive\r\n\r\n",
purple_url_encode(xd->xfer_idstring_for_relay),
purple_normalize(account, purple_account_get_username(account)),
- xfer->who,
+ purple_xfer_get_remote_user(xfer),
cookies,
xd->host);
}
@@ -1353,7 +1350,8 @@ static void yahoo_xfer_connected_15(gpoi
g_free(cookies);
return;
}
- xd->txbuflen = strlen(xd->txbuf);
+ xd->txbuf = (guchar*) initial_buffer;
+ xd->txbuflen = strlen(initial_buffer);
xd->txbuf_written = 0;
g_free(cookies);
}
@@ -1430,14 +1428,15 @@ static void yahoo_p2p_ft_HEAD_GET_cb(gpo
time_str[strlen(time_str) - 1] = '\0';
if (xd->txbuflen == 0) {
- xd->txbuf = g_strdup_printf("HTTP/1.0 200 OK\r\n"
+ gchar *initial_buffer = g_strdup_printf("HTTP/1.0 200 OK\r\n"
"Date: %s GMT\r\n"
"Server: Y!/1.0\r\n"
"MIME-version: 1.0\r\n"
"Last-modified: %s GMT\r\n"
"Content-length: %" G_GSIZE_FORMAT "\r\n\r\n",
- time_str, time_str, xfer->size);
- xd->txbuflen = strlen(xd->txbuf);
+ time_str, time_str, purple_xfer_get_size(xfer));
+ xd->txbuf = (guchar *)initial_buffer;
+ xd->txbuflen = strlen(initial_buffer);
xd->txbuf_written = 0;
}
@@ -1480,7 +1479,7 @@ static void yahoo_p2p_ft_server_send_con
/* Add an Input Read event to the file descriptor */
xfer->fd = acceptfd;
- if(xfer->type == PURPLE_XFER_RECEIVE)
+ if(purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE)
xd->input_event = purple_input_add(acceptfd, PURPLE_INPUT_READ, yahoo_p2p_ft_POST_cb, data);
else
xd->input_event = purple_input_add(acceptfd, PURPLE_INPUT_READ, yahoo_p2p_ft_HEAD_GET_cb, data);
@@ -1505,7 +1504,7 @@ static void yahoo_p2p_ft_server_listen_c
return;
}
- if( (xfer->type == PURPLE_XFER_RECEIVE) || (xd->status_15 != P2P_HEAD_REPLIED) ) {
+ if( (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE) || (xd->status_15 != P2P_HEAD_REPLIED) ) {
yd = xd->gc->proto_data;
account = purple_connection_get_account(xd->gc);
local_ip = purple_network_get_my_ip(listenfd);
@@ -1514,18 +1513,18 @@ static void yahoo_p2p_ft_server_listen_c
filename = g_path_get_basename(purple_xfer_get_local_filename(xfer));
filename_without_spaces = g_strdup(filename);
purple_util_chrreplace(filename_without_spaces, ' ', '+');
- xd->xfer_url = g_strdup_printf("/Messenger.%s.%d000%s?AppID=Messenger&UserID=%s&K=lc9lu2u89gz1llmplwksajkjx", xfer->who, (int)time(NULL), filename_without_spaces, xfer->who);
+ xd->xfer_url = g_strdup_printf("/Messenger.%s.%d000%s?AppID=Messenger&UserID=%s&K=lc9lu2u89gz1llmplwksajkjx", purple_xfer_get_remote_user(xfer), (int)time(NULL), filename_without_spaces, purple_xfer_get_remote_user(xfer));
url_to_send = g_strdup_printf("http://%s:%d%s", local_ip, xd->yahoo_local_p2p_ft_server_port, xd->xfer_url);
- if(xfer->type == PURPLE_XFER_RECEIVE) {
+ if(purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE) {
xd->info_val_249 = 2; /* 249=2: we are p2p server, and receiving file */
pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_ACC_15,
YAHOO_STATUS_AVAILABLE, yd->session_id);
yahoo_packet_hash(pkt, "ssssis",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xd->xfer_peer_idstring,
- 27, xfer->filename,
+ 27, purple_xfer_get_filename(xfer),
249, 2,
250, url_to_send);
}
@@ -1534,7 +1533,7 @@ static void yahoo_p2p_ft_server_listen_c
pkt = yahoo_packet_new(YAHOO_SERVICE_FILETRANS_INFO_15, YAHOO_STATUS_AVAILABLE, yd->session_id);
yahoo_packet_hash(pkt, "ssssis",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xd->xfer_peer_idstring,
27, filename,
249, 1,
@@ -1569,7 +1568,7 @@ static void yahoo_p2p_client_send_ft_inf
account = purple_connection_get_account(gc);
yd = gc->proto_data;
- p2p_data = g_hash_table_lookup(yd->peers, xfer->who);
+ p2p_data = g_hash_table_lookup(yd->peers, purple_xfer_get_remote_user(xfer));
if( p2p_data->connection_type == YAHOO_P2P_WE_ARE_SERVER )
if(purple_network_listen_range(0, 0, SOCK_STREAM, yahoo_p2p_ft_server_listen_cb, xfer))
return;
@@ -1579,7 +1578,7 @@ static void yahoo_p2p_client_send_ft_inf
yahoo_packet_hash(pkt, "ssssi",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xd->xfer_peer_idstring,
27, filename,
249, 2); /* 249=2: we are p2p client */
@@ -1738,8 +1737,6 @@ void yahoo_process_filetrans_15(PurpleCo
g_return_if_reached();
}
- xfer->message = NULL;
-
/* Set the info about the incoming file. */
utf8_filename = yahoo_string_decode(gc, filename, TRUE);
purple_xfer_set_filename(xfer, utf8_filename);
@@ -1764,7 +1761,7 @@ void yahoo_process_filetrans_15(PurpleCo
if(nooffiles > 1) {
gchar* message;
- message = g_strdup_printf(_("%s is trying to send you a group of %d files.\n"), xfer->who, nooffiles);
+ message = g_strdup_printf(_("%s is trying to send you a group of %d files.\n"), purple_xfer_get_remote_user(xfer), nooffiles);
purple_xfer_conversation_write(xfer, message, FALSE);
g_free(message);
}
@@ -1853,9 +1850,9 @@ void yahoo_process_filetrans_info_15(Pur
YAHOO_STATUS_AVAILABLE, yd->session_id);
yahoo_packet_hash(pkt_to_send, "ssssis",
1, purple_normalize(account, purple_account_get_username(account)),
- 5, xfer->who,
+ 5, purple_xfer_get_remote_user(xfer),
265, xfer_data->xfer_peer_idstring,
- 27, xfer->filename,
+ 27, purple_xfer_get_filename(xfer),
249, xfer_data->info_val_249,
251, xfer_data->xfer_idstring_for_relay);
@@ -1869,7 +1866,7 @@ void yahoo_process_filetrans_info_15(Pur
}
}
else if(val_249 == 2) {
- p2p_data = g_hash_table_lookup(yd->peers, xfer->who);
+ p2p_data = g_hash_table_lookup(yd->peers, purple_xfer_get_remote_user(xfer));
if( !( p2p_data && (p2p_data->connection_type == YAHOO_P2P_WE_ARE_SERVER) ) ) {
purple_xfer_cancel_remote(xfer);
return;
============================================================
--- libpurple/protocols/irc/dcc_send.c ab1f8a8e6789b2fa58137942b7d13b106f2e7d61
+++ libpurple/protocols/irc/dcc_send.c 215a98c25398c35a0b5b19083f81b449ad2da89f
@@ -34,6 +34,7 @@ struct irc_xfer_rx_data {
struct irc_xfer_rx_data {
gchar *ip;
+ unsigned int remote_port;
};
static void irc_dccsend_recv_destroy(PurpleXfer *xfer)
@@ -51,10 +52,10 @@ static void irc_dccsend_recv_ack(PurpleX
*/
static void irc_dccsend_recv_ack(PurpleXfer *xfer, const guchar *data, size_t size) {
guint32 l;
- size_t result;
+ gssize result;
- l = htonl(xfer->bytes_sent);
- result = write(xfer->fd, &l, sizeof(l));
+ l = htonl(purple_xfer_get_bytes_sent(xfer));
+ result = purple_xfer_write(xfer, (guchar *)&l, sizeof(l));
if (result != sizeof(l)) {
purple_debug_error("irc", "unable to send acknowledgement: %s\n", g_strerror(errno));
/* TODO: We should probably close the connection here or something. */
@@ -64,7 +65,7 @@ static void irc_dccsend_recv_init(Purple
static void irc_dccsend_recv_init(PurpleXfer *xfer) {
struct irc_xfer_rx_data *xd = purple_xfer_get_protocol_data(xfer);
- purple_xfer_start(xfer, -1, xd->ip, xfer->remote_port);
+ purple_xfer_start(xfer, -1, xd->ip, xd->remote_port);
g_free(xd->ip);
xd->ip = NULL;
}
@@ -117,7 +118,7 @@ void irc_dccsend_recv(struct irc_conn *i
purple_xfer_set_protocol_data(xfer, xd);
purple_xfer_set_filename(xfer, filename->str);
- xfer->remote_port = atoi(token[i+1]);
+ xd->remote_port = atoi(token[i+1]);
nip = strtoul(token[i], NULL, 10);
if (nip) {
@@ -228,13 +229,13 @@ static gssize irc_dccsend_send_write(con
static gssize irc_dccsend_send_write(const guchar *buffer, size_t size, PurpleXfer *xfer)
{
gssize s;
- int ret;
+ gssize ret;
s = MIN(purple_xfer_get_bytes_remaining(xfer), size);
if (!s)
return 0;
- ret = write(xfer->fd, buffer, s);
+ ret = purple_xfer_write(xfer, buffer, s);
if (ret < 0 && errno == EAGAIN)
ret = 0;
@@ -316,11 +317,11 @@ irc_dccsend_network_listen_cb(int sock,
irc_dccsend_send_connected, xfer);
/* Send the intended recipient the DCC request */
- arg[0] = xfer->who;
+ arg[0] = purple_xfer_get_remote_user(xfer);
inet_aton(purple_network_get_my_ip(irc->fd), &addr);
arg[1] = tmp = g_strdup_printf("\001DCC SEND \"%s\" %u %hu %" G_GSIZE_FORMAT "\001",
- xfer->filename, ntohl(addr.s_addr),
- port, xfer->size);
+ purple_xfer_get_filename(xfer), ntohl(addr.s_addr),
+ port, purple_xfer_get_size(xfer));
irc_cmd_privmsg(gc->proto_data, "msg", NULL, arg);
g_free(tmp);
@@ -333,7 +334,7 @@ static void irc_dccsend_send_init(Purple
PurpleConnection *gc = purple_account_get_connection(purple_xfer_get_account(xfer));
struct irc_xfer_send_data *xd = purple_xfer_get_protocol_data(xfer);
- xfer->filename = g_path_get_basename(xfer->local_filename);
+ purple_xfer_set_filename(xfer, g_path_get_basename(purple_xfer_get_local_filename(xfer)));
purple_xfer_ref(xfer);
============================================================
--- libpurple/protocols/silc/ft.c 14a1b0816bf84d9ede37b65e7bf08945f015c515
+++ libpurple/protocols/silc/ft.c baa1ff73e14fbdb27a152b98dea15175c8401b41
@@ -132,8 +132,7 @@ silcpurple_ftp_monitor(SilcClient client
if (!offset && filesize)
purple_xfer_set_size(xfer->xfer, filesize);
if (offset && filesize) {
- xfer->xfer->bytes_sent = offset;
- xfer->xfer->bytes_remaining = filesize - offset;
+ purple_xfer_set_bytes_sent(xfer->xfer, offset);
}
purple_xfer_update_progress(xfer->xfer);
============================================================
--- libpurple/protocols/sametime/sametime.c 16c3617b764bce516fca9473a83ba58ca5940cc6
+++ libpurple/protocols/sametime/sametime.c 2f82595a6ed909f8de356b28e2528dfc4cc17f86
@@ -2157,7 +2157,7 @@ static void ft_incoming_init(PurpleXfer
ft = purple_xfer_get_protocol_data(xfer);
- fp = g_fopen(xfer->local_filename, "wb");
+ fp = g_fopen(purple_xfer_get_local_filename(xfer), "wb");
if(! fp) {
mwFileTransfer_cancel(ft);
return;
@@ -2231,8 +2231,7 @@ static void ft_send(struct mwFileTransfe
if(fread(buf, (size_t) o.len, 1, fp)) {
/* calculate progress and display it */
- xfer->bytes_sent += o.len;
- xfer->bytes_remaining -= o.len;
+ purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + o.len);
purple_xfer_update_progress(xfer);
mwFileTransfer_send(ft, &o);
@@ -2264,7 +2263,7 @@ static void mw_ft_opened(struct mwFileTr
}
if(purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) {
- xfer->dest_fp = g_fopen(xfer->local_filename, "rb");
+ xfer->dest_fp = g_fopen(purple_xfer_get_local_filename(xfer), "rb");
ft_send(ft, xfer->dest_fp);
}
}
@@ -2334,8 +2333,7 @@ static void mw_ft_recv(struct mwFileTran
}
/* update the progress */
- xfer->bytes_sent += data->len;
- xfer->bytes_remaining -= data->len;
+ purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + data->len);
purple_xfer_update_progress(xfer);
/* let the other side know we got it, and to send some more */
@@ -5082,7 +5080,7 @@ static void ft_outgoing_init(PurpleXfer
filename = purple_xfer_get_local_filename(xfer);
filesize = purple_xfer_get_size(xfer);
- idb.user = xfer->who;
+ idb.user = purple_xfer_get_remote_user(xfer);
purple_xfer_update_progress(xfer);
@@ -5091,7 +5089,7 @@ static void ft_outgoing_init(PurpleXfer
if(! fp) {
char *msg = g_strdup_printf(_("Error reading file %s: \n%s\n"),
filename, g_strerror(errno));
- purple_xfer_error(purple_xfer_get_type(xfer), acct, xfer->who, msg);
+ purple_xfer_error(purple_xfer_get_type(xfer), acct, purple_xfer_get_remote_user(xfer), msg);
g_free(msg);
return;
}
============================================================
--- libpurple/protocols/oscar/oft.c dcfd2cd17d30ec0634022f2eb04e3c836e63ca54
+++ libpurple/protocols/oscar/oft.c fed0b297a4f3e4ded2b70aee76aa4cc3ae782329
@@ -362,10 +362,10 @@ start_transfer_when_done_sending_data(gp
if (purple_circ_buffer_get_max_read(conn->buffer_outgoing) == 0)
{
+ int fd = conn->fd;
conn->sending_data_timer = 0;
- conn->xfer->fd = conn->fd;
conn->fd = -1;
- purple_xfer_start(conn->xfer, conn->xfer->fd, NULL, 0);
+ purple_xfer_start(conn->xfer, fd, NULL, 0);
return FALSE;
}
@@ -665,9 +665,9 @@ peer_oft_sendcb_init(PurpleXfer *xfer)
size2 = purple_str_size_to_units(G_MAXUINT32);
tmp = g_strdup_printf(_("File %s is %s, which is larger than "
"the maximum size of %s."),
- xfer->local_filename, size1, size2);
+ purple_xfer_get_local_filename(xfer), size1, size2);
purple_xfer_error(purple_xfer_get_type(xfer),
- purple_xfer_get_account(xfer), xfer->who, tmp);
+ purple_xfer_get_account(xfer), purple_xfer_get_remote_user(xfer), tmp);
g_free(size1);
g_free(size2);
g_free(tmp);
@@ -689,9 +689,9 @@ peer_oft_sendcb_init(PurpleXfer *xfer)
strncpy((gchar *)conn->xferdata.idstring, "Cool FileXfer", 31);
conn->xferdata.modtime = 0;
conn->xferdata.cretime = 0;
- xfer->filename = g_path_get_basename(xfer->local_filename);
- conn->xferdata.name_length = MAX(64, strlen(xfer->filename) + 1);
- conn->xferdata.name = (guchar *)g_strndup(xfer->filename, conn->xferdata.name_length - 1);
+ purple_xfer_set_filename(xfer, g_path_get_basename(purple_xfer_get_local_filename(xfer)));
+ conn->xferdata.name_length = MAX(64, strlen(purple_xfer_get_filename(xfer)) + 1);
+ conn->xferdata.name = (guchar *)g_strndup(purple_xfer_get_filename(xfer), conn->xferdata.name_length - 1);
peer_oft_checksum_file(conn, xfer,
peer_oft_checksum_calculated_cb, G_MAXUINT32);
============================================================
--- libpurple/protocols/bonjour/bonjour_ft.c 3c6ad0c0e0b7f86d9c6d41f5885ce90049b1db33
+++ libpurple/protocols/bonjour/bonjour_ft.c 81ed1d31b5cc473250c46109d76d8670216e1d77
@@ -95,7 +95,7 @@ static void bonjour_xfer_request_denied(
purple_debug_info("bonjour", "Bonjour-xfer-request-denied.\n");
if(xf)
- xep_ft_si_reject(xf->data, xf->sid, xfer->who, "403", "cancel");
+ xep_ft_si_reject(xf->data, xf->sid, purple_xfer_get_remote_user(xfer), "403", "cancel");
bonjour_free_xfer(xfer);
}
@@ -165,8 +165,8 @@ bonjour_si_xfer_find(BonjourData *bd, co
xf = purple_xfer_get_protocol_data(xfer);
if(xf == NULL)
break;
- if(xf->sid && xfer->who && !strcmp(xf->sid, sid) &&
- !strcmp(xfer->who, from))
+ if(xf->sid && purple_xfer_get_remote_user(xfer) && !strcmp(xf->sid, sid) &&
+ !strcmp(purple_xfer_get_remote_user(xfer), from))
return xfer;
}
@@ -210,8 +210,8 @@ xep_ft_si_offer(PurpleXfer *xfer, const
file = xmlnode_new_child(si_node, "file");
xmlnode_set_namespace(file, "http://jabber.org/protocol/si/profile/file-transfer");
- xmlnode_set_attrib(file, "name", xfer->filename);
- g_snprintf(buf, sizeof(buf), "%" G_GSIZE_FORMAT, xfer->size);
+ xmlnode_set_attrib(file, "name", purple_xfer_get_filename(xfer));
+ g_snprintf(buf, sizeof(buf), "%" G_GSIZE_FORMAT, purple_xfer_get_size(xfer));
xmlnode_set_attrib(file, "size", buf);
feature = xmlnode_new_child(si_node, "feature");
@@ -240,7 +240,7 @@ static void
}
static void
-xep_ft_si_result(PurpleXfer *xfer, char *to)
+xep_ft_si_result(PurpleXfer *xfer, const char *to)
{
xmlnode *si_node, *feature, *field, *value, *x;
XepIq *iq;
@@ -290,14 +290,14 @@ bonjour_free_xfer(PurpleXfer *xfer)
return;
}
- purple_debug_info("bonjour", "bonjour-free-xfer-%p.\n", xfer);
+ purple_debug_misc("bonjour", "bonjour-free-xfer-%p.\n", xfer);
xf = purple_xfer_get_protocol_data(xfer);
if(xf != NULL) {
BonjourData *bd = (BonjourData*)xf->data;
if(bd != NULL) {
bd->xfer_lists = g_slist_remove(bd->xfer_lists, xfer);
- purple_debug_info("bonjour", "B free xfer from lists(%p).\n", bd->xfer_lists);
+ purple_debug_misc("bonjour", "B free xfer from lists(%p).\n", bd->xfer_lists);
}
if (xf->proxy_connection != NULL)
purple_proxy_connect_cancel(xf->proxy_connection);
@@ -314,7 +314,7 @@ bonjour_free_xfer(PurpleXfer *xfer)
purple_xfer_set_protocol_data(xfer, NULL);
}
- purple_debug_info("bonjour", "Need close socket=%d.\n", xfer->fd);
+ purple_debug_misc("bonjour", "Need close socket.\n");
}
PurpleXfer *
@@ -386,7 +386,7 @@ bonjour_xfer_init(PurpleXfer *xfer)
purple_debug_info("bonjour", "Bonjour-xfer-init.\n");
- buddy = purple_find_buddy(xfer->account, xfer->who);
+ buddy = purple_find_buddy(purple_xfer_get_account(xfer), purple_xfer_get_remote_user(xfer));
/* this buddy is offline. */
if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL)
return;
@@ -397,10 +397,10 @@ bonjour_xfer_init(PurpleXfer *xfer)
if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) {
/* initiate file transfer, send SI offer. */
purple_debug_info("bonjour", "Bonjour xfer type is PURPLE_XFER_SEND.\n");
- xep_ft_si_offer(xfer, xfer->who);
+ xep_ft_si_offer(xfer, purple_xfer_get_remote_user(xfer));
} else {
/* accept file transfer request, send SI result. */
- xep_ft_si_result(xfer, xfer->who);
+ xep_ft_si_result(xfer, purple_xfer_get_remote_user(xfer));
purple_debug_info("bonjour", "Bonjour xfer type is PURPLE_XFER_RECEIVE.\n");
}
}
@@ -565,7 +565,7 @@ xep_bytestreams_parse(PurpleConnection *
purple_debug_error("bonjour", "Didn't find an acceptable streamhost.\n");
if (iq_id && xfer != NULL)
- xep_ft_si_reject(bd, iq_id, xfer->who, "404", "cancel");
+ xep_ft_si_reject(bd, iq_id, purple_xfer_get_remote_user(xfer), "404", "cancel");
}
} else {
@@ -634,8 +634,6 @@ bonjour_sock5_request_cb(gpointer data,
/* This should cancel the ft */
purple_debug_error("bonjour", "Error accepting incoming SOCKS5 connection. (%d)\n", errno);
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
close(source);
purple_xfer_cancel_remote(xfer);
return;
@@ -664,9 +662,6 @@ bonjour_sock5_request_cb(gpointer data,
if(len < 0 && errno == EAGAIN)
return;
else if(len <= 0){
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
- close(source);
purple_xfer_cancel_remote(xfer);
return;
} else {
@@ -685,8 +680,6 @@ bonjour_sock5_request_cb(gpointer data,
if (len < 0 && errno == EAGAIN)
return;
else if (len < 0) {
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
close(source);
purple_xfer_cancel_remote(xfer);
return;
@@ -723,8 +716,6 @@ bonjour_sock5_request_cb(gpointer data,
if (len < 0 && errno == EAGAIN) {
return;
} else if (len < 0) {
- purple_input_remove(xfer->watcher);
- xfer->watcher = 0;
close(source);
purple_xfer_cancel_remote(xfer);
return;
@@ -766,7 +757,7 @@ bonjour_bytestreams_listen(int sock, gpo
bd = xf->data;
- iq = xep_iq_new(bd, XEP_IQ_SET, xfer->who, bonjour_get_jid(bd->jabber_data->account), xf->sid);
+ iq = xep_iq_new(bd, XEP_IQ_SET, purple_xfer_get_remote_user(xfer), bonjour_get_jid(bd->jabber_data->account), xf->sid);
query = xmlnode_new_child(iq->node, "query");
xmlnode_set_namespace(query, "http://jabber.org/protocol/bytestreams");
@@ -777,7 +768,7 @@ bonjour_bytestreams_listen(int sock, gpo
local_ips = bonjour_jabber_get_local_ips(sock);
- port = g_strdup_printf("%hu", xfer->local_port);
+ port = g_strdup_printf("%hu", purple_xfer_get_local_port(xfer));
while(local_ips) {
streamhost = xmlnode_new_child(query, "streamhost");
xmlnode_set_attrib(streamhost, "jid", xf->sid);
@@ -825,7 +816,7 @@ bonjour_bytestreams_connect_cb(gpointer
if(source < 0) {
purple_debug_error("bonjour", "Error connecting via SOCKS5 - %s\n",
error_message ? error_message : "(null)");
- xep_ft_si_reject(xf->data, xf->iq_id, xfer->who, "404", "cancel");
+ xep_ft_si_reject(xf->data, xf->iq_id, purple_xfer_get_remote_user(xfer), "404", "cancel");
/* Cancel the connection */
purple_xfer_cancel_local(xfer);
return;
@@ -838,7 +829,7 @@ bonjour_bytestreams_connect_cb(gpointer
/* Here, start the file transfer.*/
/* Notify Initiator of Connection */
- iq = xep_iq_new(bd, XEP_IQ_RESULT, xfer->who, bonjour_get_jid(bd->jabber_data->account), xf->iq_id);
+ iq = xep_iq_new(bd, XEP_IQ_RESULT, purple_xfer_get_remote_user(xfer), bonjour_get_jid(bd->jabber_data->account), xf->iq_id);
q_node = xmlnode_new_child(iq->node, "query");
xmlnode_set_namespace(q_node, "http://jabber.org/protocol/bytestreams");
tmp_node = xmlnode_new_child(q_node, "streamhost-used");
@@ -893,7 +884,7 @@ bonjour_bytestreams_connect(PurpleXfer *
bonjour_bytestreams_connect_cb, xfer);
if(xf->proxy_connection == NULL) {
- xep_ft_si_reject(xf->data, xf->iq_id, xfer->who, "404", "cancel");
+ xep_ft_si_reject(xf->data, xf->iq_id, purple_xfer_get_remote_user(xfer), "404", "cancel");
/* Cancel the connection */
purple_xfer_cancel_local(xfer);
}
More information about the Commits
mailing list