# HG changeset patch # User Daniel Atallah # Date 1218579408 0 # Node ID e21c79681c96cf1a0cbe37ea1f47eaf08ab5d167 # Parent 18cdf05dd0396d5e8f2a07fbc4818e0c6a54333f Use non-blocking io for direct xmpp file transfers diff -r 18cdf05dd039 -r e21c79681c96 libpurple/protocols/jabber/si.c --- a/libpurple/protocols/jabber/si.c Tue Aug 12 15:24:06 2008 +0000 +++ b/libpurple/protocols/jabber/si.c Tue Aug 12 22:16:48 2008 +0000 @@ -614,7 +614,7 @@ { PurpleXfer *xfer = data; JabberSIXfer *jsx = xfer->data; - int acceptfd; + int acceptfd, flags; purple_debug_info("jabber", "in jabber_si_xfer_bytestreams_send_connected_cb\n"); @@ -631,6 +631,12 @@ close(source); jsx->local_streamhost_fd = -1; + flags = fcntl(acceptfd, F_GETFL); + fcntl(acceptfd, F_SETFL, flags | O_NONBLOCK); +#ifndef _WIN32 + fcntl(acceptfd, F_SETFD, FD_CLOEXEC); +#endif + xfer->watcher = purple_input_add(acceptfd, PURPLE_INPUT_READ, jabber_si_xfer_bytestreams_send_read_cb, xfer); } @@ -967,7 +973,7 @@ g_free(jsx->rxqueue); g_free(jsx); xfer->data = NULL; - + purple_debug_info("jabber", "jabber_si_xfer_free(): freeing jsx %p", jsx); }