# HG changeset patch # User Daniel Atallah # Date 1137990304 0 # Node ID 5e14039d0415e699f2bec7dd9717722b82329c78 # Parent e348ed834acc7674a1c6db67bb1e2b2dae57d389 [gaim-migrate @ 15364] prepare for non-blocking I/O committer: Tailor Script diff -r e348ed834acc -r 5e14039d0415 src/ft.c --- a/src/ft.c Mon Jan 23 04:18:34 2006 +0000 +++ b/src/ft.c Mon Jan 23 04:25:04 2006 +0000 @@ -770,11 +770,13 @@ *buffer = g_malloc0(s); r = read(xfer->fd, *buffer, s); - if ((gaim_xfer_get_size(xfer) > 0) && + if (r < 0 && errno == EAGAIN) + r = 0; + else if (r < 0) + r = -1; + else if ((gaim_xfer_get_size(xfer) > 0) && ((gaim_xfer_get_bytes_sent(xfer)+r) >= gaim_xfer_get_size(xfer))) gaim_xfer_set_completed(xfer, TRUE); - else if(r <= 0) - r = -1; } return r; @@ -795,6 +797,8 @@ r = (xfer->ops.write)(buffer, s, xfer); } else { r = write(xfer->fd, buffer, s); + if (r < 0 && errno == EAGAIN) + r = 0; if ((gaim_xfer_get_bytes_sent(xfer)+r) >= gaim_xfer_get_size(xfer)) gaim_xfer_set_completed(xfer, TRUE); } @@ -817,7 +821,8 @@ } else if(r < 0) { gaim_xfer_cancel_remote(xfer); return; - } + } else if(r == 0) + return; } if (condition & GAIM_INPUT_WRITE) {