Mercurial > pidgin
changeset 25015:f1de4ccc433e
Proper error handling for p2p connections
author | Sulabh Mahajan <sulabh@soc.pidgin.im> |
---|---|
date | Sat, 14 Jun 2008 08:53:43 +0000 |
parents | 11e2d8a878b0 |
children | d11d1ac96a0d |
files | libpurple/protocols/yahoo/yahoo.c |
diffstat | 1 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/yahoo/yahoo.c Fri Jun 13 11:04:13 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Sat Jun 14 08:53:43 2008 +0000 @@ -2299,16 +2299,23 @@ if(!(user_data = data)) return ; - if((len = read(source, buf, sizeof(buf))) <= 0 ) { - purple_debug_warning("yahoo","p2p: Error in connection to p2p host or host disconnected\n"); + len = read(source, buf, sizeof(buf)); + + if ((len < 0) && ((errno == EAGAIN) || (errno == EWOULDBLOCK))) + return ; /* No Worries*/ + + else if (len <= 0) + { + purple_debug_warning("yahoo","p2p: Error in connection, or host disconnected\n"); purple_input_remove(user_data->input_event); close(source); /*free user data*/ g_free(user_data->host_ip); g_free(user_data->host_username); g_free(user_data); + return; } - + if(len < YAHOO_PACKET_HDRLEN) return;