]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - fwp/lib/core/fwp_endpoint.c
Applied Michal's fixes
[frescor/fwp.git] / fwp / lib / core / fwp_endpoint.c
index f61f3d06a047ad51e21357ab521305168bc10ae9..15d9ef013950c93e7ee983013e756a6a9b8230ab 100644 (file)
@@ -420,7 +420,8 @@ ssize_t fwp_recv(fwp_endpoint_d_t epointd, void *buffer, size_t buffer_size,
                        peer->addr, &peer->addrlen);
                return len;
        }
-next_recv:
+       
+       while (1) {
        /* FIXME: What about using a loop here and continue instead of goto???? */
        /* FWP_EPOINT_RELIABLE */
        fdset = epoint->fdset;
@@ -435,7 +436,7 @@ next_recv:
        
        if (FD_ISSET(epoint->sockd, &fdset)) { /* is it listen socket? */ 
                if (epoint->nr_connections == epoint->attr.max_connections)
-                       goto next_recv;
+                       continue;
 
                csockd = accept(epoint->sockd, (struct sockaddr*)peer->addr,
                                 &peer->addrlen);
@@ -451,8 +452,7 @@ next_recv:
                epoint->nr_connections++;
                
                FD_SET(csockd, &epoint->fdset);
-
-               goto next_recv;
+               continue;
        }
 
        /* Check client TCP sockets */
@@ -470,11 +470,11 @@ next_recv:
                        memcpy(epoint->c_sockd+i, epoint->c_sockd+i+1, 
                                sizeof(int)*(epoint->nr_connections -i-1));
                        epoint->nr_connections--;
-                       goto next_recv;
+                       continue;
                }
        }
-
-       return -EPERM;
+       
+       }
 }
 
 /**