]> rtime.felk.cvut.cz Git - frescor/fwp.git/commitdiff
Fix: function fwp_recv returns address of sender in from prarameter
authorMartin <molnam1@fel.cvut.cz>
Wed, 19 Nov 2008 17:15:17 +0000 (18:15 +0100)
committerMartin <molnam1@fel.cvut.cz>
Wed, 19 Nov 2008 17:15:17 +0000 (18:15 +0100)
fwp/lib/fwp/fwp_endpoint.c

index 34b61de2b9d394f2c68c8f0cd6051171b26cc7b4..ecd6fe7a0754718edcfaf29638a2f6b2eaaf15ae 100644 (file)
@@ -467,7 +467,7 @@ static int fwp_receive_endpoint_accept(fwp_endpoint_t *fwp_epoint)
  *
  */
 int fwp_recv_conn(fwp_endpoint_d_t epointd, void *buffer, 
-                               size_t buffer_size)
+                       size_t buffer_size)
 {
        fwp_endpoint_t *fwp_epoint = epointd;
        fwp_sockaddr_t *peer = &fwp_epoint->peer;
@@ -522,6 +522,7 @@ ssize_t fwp_recv(fwp_endpoint_d_t epointd,
 {
        fwp_endpoint_t *fwp_epoint = epointd;
        fwp_sockaddr_t *peer = &fwp_epoint->peer;
+       struct sockaddr_in *addr = (struct sockaddr_in*) fwp_epoint->peer.addr;
        ssize_t len;
        fd_set fdset;
        
@@ -533,6 +534,8 @@ ssize_t fwp_recv(fwp_endpoint_d_t epointd,
        if (fwp_epoint->attr.reliability == FWP_EPOINT_BESTEFFORT) {    
                len = _fwp_recvfrom(fwp_epoint->sockd, buffer, 
                                        buffer_size, 0, peer);
+               
+               *from = addr->sin_addr.s_addr;
                return len;
        }
        
@@ -554,8 +557,10 @@ ssize_t fwp_recv(fwp_endpoint_d_t epointd,
 
                /* Check client TCP sockets */
                len = fwp_recv_conn(fwp_epoint, buffer, buffer_size);
-               if (len)
+               if (len) {
+                       *from = addr->sin_addr.s_addr;
                        return len;
+               }
        }
 }