Update of /cvsroot/playerstage/code/player/client_libs/libplayerc
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5480
Modified Files:
client.c
Log Message:
made reads robust to EINTR
Index: client.c
===================================================================
RCS file: /cvsroot/playerstage/code/player/client_libs/libplayerc/client.c,v
retrieving revision 1.73
retrieving revision 1.74
diff -C2 -d -r1.73 -r1.74
*** client.c 16 Nov 2006 00:29:19 -0000 1.73
--- client.c 19 Dec 2006 17:41:27 -0000 1.74
***************
*** 118,123 ****
if (ret <= 0)
{
! PLAYERC_ERR2("poll call failed with error [%d:%s]", errno,
strerror(errno));
! return ret;
}
--- 118,128 ----
if (ret <= 0)
{
! if(errno == EINTR)
! return(0);
! else
! {
! PLAYERC_ERR2("poll call failed with error [%d:%s]", errno,
strerror(errno));
! return ret;
! }
}
***************
*** 518,524 ****
if (count < 0)
{
! PLAYERC_ERR1("poll returned error [%s]", strerror(errno));
! //playerc_client_disconnect(client);
! return(playerc_client_disconnect_retry(client));
}
if (count > 0 && (fd.revents & POLLHUP))
--- 523,534 ----
if (count < 0)
{
! if(errno == EINTR)
! return(0);
! else
! {
! PLAYERC_ERR1("poll returned error [%s]", strerror(errno));
! //playerc_client_disconnect(client);
! return(playerc_client_disconnect_retry(client));
! }
}
if (count > 0 && (fd.revents & POLLHUP))
***************
*** 913,922 ****
if (nbytes <= 0)
{
! PLAYERC_ERR1("recv failed with error [%s]", strerror(errno));
! //playerc_client_disconnect(client);
! if(playerc_client_disconnect_retry(client) < 0)
! return(-1);
! else
continue;
}
client->read_xdrdata_len += nbytes;
--- 923,937 ----
if (nbytes <= 0)
{
! if(errno == EINTR)
continue;
+ else
+ {
+ PLAYERC_ERR1("recv failed with error [%s]", strerror(errno));
+ //playerc_client_disconnect(client);
+ if(playerc_client_disconnect_retry(client) < 0)
+ return(-1);
+ else
+ continue;
+ }
}
client->read_xdrdata_len += nbytes;
***************
*** 951,963 ****
if (nbytes <= 0)
{
! PLAYERC_ERR1("recv failed with error [%s]", strerror(errno));
! //playerc_client_disconnect(client);
! if(playerc_client_disconnect_retry(client) < 0)
! return(-1);
! else
{
! /* Need to start over; the easiest way is to recursively call
! * myself. Might be problematic... */
! return(playerc_client_readpacket(client,header,data));
}
}
--- 966,982 ----
if (nbytes <= 0)
{
! if(errno == EINTR)
! continue;
{
! PLAYERC_ERR1("recv failed with error [%s]", strerror(errno));
! //playerc_client_disconnect(client);
! if(playerc_client_disconnect_retry(client) < 0)
! return(-1);
! else
! {
! /* Need to start over; the easiest way is to recursively call
! * myself. Might be problematic... */
! return(playerc_client_readpacket(client,header,data));
! }
}
}
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit