Mercurial > pidgin
diff libgaim/protocols/jabber/si.c @ 14267:645598a4ec04
[gaim-migrate @ 16949]
Change gaim_network_listen() and gaim_network_listen_range()
to be cancelable. This doesn't actually help anything yet,
since the gaim_upnp_functions() are not yet cancelable. But
the framework is there, and the PRPLs shouldn't need any
additional changes.
Still to go:
gaim_upnp_everything()
gaim_url_fetch()
gaim_srv_resolve()
Let me know if there are others
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 21 Aug 2006 07:47:03 +0000 |
parents | baff095b146c |
children | 8a6154a52b84 |
line wrap: on
line diff
--- a/libgaim/protocols/jabber/si.c Mon Aug 21 07:44:31 2006 +0000 +++ b/libgaim/protocols/jabber/si.c Mon Aug 21 07:47:03 2006 +0000 @@ -47,6 +47,7 @@ JabberStream *js; GaimProxyConnectData *connect_data; + GaimNetworkListenData *listen_data; gboolean accepted; @@ -539,13 +540,14 @@ xmlnode *query, *streamhost; char *jid, *port; + jsx = xfer->data; + jsx->listen_data = NULL; + if (gaim_xfer_get_status(xfer) == GAIM_XFER_STATUS_CANCEL_LOCAL) { gaim_xfer_unref(xfer); return; } - jsx = xfer->data; - gaim_xfer_unref(xfer); if (sock < 0) { @@ -588,10 +590,14 @@ static void jabber_si_xfer_bytestreams_send_init(GaimXfer *xfer) { + JabberSIXfer *jsx; + gaim_xfer_ref(xfer); - if(!gaim_network_listen_range(0, 0, SOCK_STREAM, - jabber_si_xfer_bytestreams_listen_cb, xfer)) { + jsx = xfer->data; + jsx->listen_data = gaim_network_listen_range(0, 0, SOCK_STREAM, + jabber_si_xfer_bytestreams_listen_cb, xfer); + if (jsx->listen_data == NULL) { gaim_xfer_unref(xfer); /* XXX: couldn't open a port, we're fscked */ gaim_xfer_cancel_local(xfer); @@ -698,6 +704,8 @@ if (jsx->connect_data != NULL) gaim_proxy_connect_cancel(jsx->connect_data); + if (jsx->listen_data != NULL) + gaim_network_listen_cancel(jsx->listen_data); g_free(jsx->stream_id); g_free(jsx->iq_id);