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

Reply via email to