]> rtime.felk.cvut.cz Git - frescor/fwp.git/commitdiff
Make FWP not to eat EINTR error
authorMichal Sojka <sojkam1@fel.cvut.cz>
Thu, 13 Aug 2009 08:57:06 +0000 (10:57 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Thu, 13 Aug 2009 08:57:06 +0000 (10:57 +0200)
Without returning EINTR, it is not possible to correctly terminate FRSH
applications such as wclient.

fwp/lib/fwp/fwp_utils.h

index 3a12946913185320331ed1e1d80ebc33d60c3e56..7098c5b9deceb15ba0e0e1661c3b4b8536a4925c 100644 (file)
@@ -90,9 +90,7 @@ _fwp_sendto(int s, const void *buf, size_t len, int flags,
            const fwp_sockaddr_t *sockaddr)
 {
        ssize_t ret;
-       while ((ret = sendto(s, buf, len, flags, (struct sockaddr*)&sockaddr->addr, sockaddr->addrlen)) < 0) {
-               if (errno != EINTR) break;
-       }
+       ret = sendto(s, buf, len, flags, (struct sockaddr*)&sockaddr->addr, sockaddr->addrlen);
        return ret;
 }
 
@@ -101,10 +99,8 @@ _fwp_recvfrom(int s, void *buf, size_t len, int flags,
              fwp_sockaddr_t *sockaddr)
 {
        ssize_t ret;
-       while ((ret = recvfrom(s, buf, len, flags, (struct sockaddr*)&sockaddr->addr, 
-               &sockaddr->addrlen)) < 0) {     
-                       if (errno != EINTR) break;
-       }
+       ret = recvfrom(s, buf, len, flags, (struct sockaddr*)&sockaddr->addr, 
+                      &sockaddr->addrlen);
        return ret;
 }
 
@@ -112,9 +108,7 @@ static inline ssize_t
 _fwp_send(int s, const void *buf, size_t len, int flags)
 {
        ssize_t ret;
-       while ((ret = send(s, buf, len, flags)) < 0) {
-               if (errno != EINTR) break;
-       }
+       ret = send(s, buf, len, flags);
        return ret;
 }
 
@@ -122,9 +116,7 @@ static inline ssize_t
 _fwp_recv(int s, void *buf, size_t len, int flags)
 {
        ssize_t ret;
-       while ((ret = recv(s, buf, len, flags)) < 0) {  
-               if (errno != EINTR) break;
-       }
+       ret = recv(s, buf, len, flags);
        return ret;
 }