From: <dat...@us...> - 2006-05-26 03:26:19
|
Revision: 16198 Author: datallah Date: 2006-05-25 20:26:03 -0700 (Thu, 25 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16198&view=rev Log Message: ----------- Fix some places where a closed socket isn't being dealt with correctly. This may be the cause of the high CPU usage that some people have noticed. Most of these were reported by Eduardo P?\195?\169rez. Modified Paths: -------------- trunk/src/ft.c trunk/src/protocols/irc/dcc_send.c trunk/src/protocols/jabber/si.c trunk/src/proxy.c Modified: trunk/src/ft.c =================================================================== --- trunk/src/ft.c 2006-05-24 17:38:42 UTC (rev 16197) +++ trunk/src/ft.c 2006-05-26 03:26:03 UTC (rev 16198) @@ -794,6 +794,8 @@ 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; @@ -835,7 +837,7 @@ r = gaim_xfer_read(xfer, &buffer); if (r > 0) { fwrite(buffer, 1, r, xfer->dest_fp); - } else if(r < 0) { + } else if(r <= 0) { gaim_xfer_cancel_remote(xfer); return; } Modified: trunk/src/protocols/irc/dcc_send.c =================================================================== --- trunk/src/protocols/irc/dcc_send.c 2006-05-24 17:38:42 UTC (rev 16197) +++ trunk/src/protocols/irc/dcc_send.c 2006-05-26 03:26:03 UTC (rev 16198) @@ -178,7 +178,7 @@ if (len < 0 && errno == EAGAIN) return; - else if (len < 0) { + else if (len <= 0) { /* XXX: Shouldn't this be canceling the transfer? */ gaim_input_remove(xd->inpa); xd->inpa = 0; Modified: trunk/src/protocols/jabber/si.c =================================================================== --- trunk/src/protocols/jabber/si.c 2006-05-24 17:38:42 UTC (rev 16197) +++ trunk/src/protocols/jabber/si.c 2006-05-26 03:26:03 UTC (rev 16198) @@ -273,7 +273,7 @@ len = read(source, buffer, 5 - jsx->rxlen); if(len < 0 && errno == EAGAIN) return; - else if(len < 0) { + else if(len <= 0) { gaim_input_remove(xfer->watcher); xfer->watcher = 0; close(source); @@ -297,7 +297,7 @@ len = read(source, buffer, jsx->rxqueue[4] + 5 + 2 - jsx->rxlen); if(len < 0 && errno == EAGAIN) return; - else if(len < 0) { + else if(len <= 0) { gaim_input_remove(xfer->watcher); xfer->watcher = 0; close(source); @@ -415,7 +415,7 @@ len = read(source, buffer, 2 - jsx->rxlen); if(len < 0 && errno == EAGAIN) return; - else if(len < 0) { + else if(len <= 0) { gaim_input_remove(xfer->watcher); xfer->watcher = 0; close(source); @@ -431,7 +431,7 @@ len = read(source, buffer, jsx->rxqueue[1] + 2 - jsx->rxlen); if(len < 0 && errno == EAGAIN) return; - else if(len < 0) { + else if(len <= 0) { gaim_input_remove(xfer->watcher); xfer->watcher = 0; close(source); Modified: trunk/src/proxy.c =================================================================== --- trunk/src/proxy.c 2006-05-24 17:38:42 UTC (rev 16197) +++ trunk/src/proxy.c 2006-05-26 03:26:03 UTC (rev 16198) @@ -1119,7 +1119,7 @@ len = read(source, p, max_read); if(len < 0 && errno == EAGAIN) return; - else if(len < 0) { + else if(len <= 0) { close(source); source = -1; g_free(phb->read_buffer); @@ -1508,7 +1508,7 @@ len = read(source, buf, max_read); - if ((len < 0 && errno == EAGAIN) || len + phb->read_len < 4) + if ((len < 0 && errno == EAGAIN) || (len > 0 && len + phb->read_len < 4)) return; else if (len + phb->read_len >= 4) { if (phb->read_buffer[1] == 90) { @@ -1663,7 +1663,7 @@ len = read(source, dest, (phb->read_buf_len - phb->read_len)); if(len < 0 && errno == EAGAIN) return; - else if(len < 0) { + else if(len <= 0) { gaim_debug_warning("socks5 proxy", "or not...\n"); close(source); gaim_input_remove(phb->inpa); @@ -1775,7 +1775,7 @@ phb->read_buf_len - phb->read_len); if(len < 0 && errno == EAGAIN) return; - else if(len < 0) { + else if(len <= 0) { close(source); gaim_input_remove(phb->inpa); g_free(phb->read_buffer); @@ -1867,7 +1867,7 @@ if(len < 0 && errno == EAGAIN) return; - else if(len < 0) { + else if(len <= 0) { close(source); gaim_input_remove(phb->inpa); g_free(phb->read_buffer); @@ -1994,7 +1994,7 @@ phb->read_buf_len - phb->read_len); if(len < 0 && errno == EAGAIN) return; - else if(len < 0) { + else if(len <= 0) { close(source); gaim_input_remove(phb->inpa); g_free(phb->read_buffer); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |