socket_wrapper: truncate packets to a 1500 byte payload
authorStefan Metzmacher <metze@samba.org>
Tue, 10 Jun 2008 06:33:24 +0000 (08:33 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 10 Jun 2008 06:43:02 +0000 (08:43 +0200)
Truncate sendto(), recvfrom(), send() and recv() to 1500 bytes
so that're getting a correctly formatted pcap file and the result
look more like real network traffic.

metze
(This used to be commit 5b01206f1bb2e62c08bda34b45904ec4f83ac5de)

source4/lib/socket_wrapper/socket_wrapper.c

index 86d9f7a312d57c56f42c0570e057772492c602fe..981df523cddcd62ed9ffa2e1fd86abcebe909a6e 100644 (file)
@@ -1643,6 +1643,8 @@ _PUBLIC_ ssize_t swrap_recvfrom(int s, void *buf, size_t len, int flags, struct
                return real_recvfrom(s, buf, len, flags, from, fromlen);
        }
 
+       len = MIN(len, 1500);
+
        /* irix 6.4 forgets to null terminate the sun_path string :-( */
        memset(&un_addr, 0, sizeof(un_addr));
        ret = real_recvfrom(s, buf, len, flags, (struct sockaddr *)&un_addr, &un_addrlen);
@@ -1671,6 +1673,8 @@ _PUBLIC_ ssize_t swrap_sendto(int s, const void *buf, size_t len, int flags, con
                return real_sendto(s, buf, len, flags, to, tolen);
        }
 
+       len = MIN(len, 1500);
+
        switch (si->type) {
        case SOCK_STREAM:
                ret = real_send(s, buf, len, flags);
@@ -1764,6 +1768,8 @@ _PUBLIC_ ssize_t swrap_recv(int s, void *buf, size_t len, int flags)
                return real_recv(s, buf, len, flags);
        }
 
+       len = MIN(len, 1500);
+
        ret = real_recv(s, buf, len, flags);
        if (ret == -1 && errno != EAGAIN && errno != ENOBUFS) {
                swrap_dump_packet(si, NULL, SWRAP_RECV_RST, NULL, 0);
@@ -1786,6 +1792,8 @@ _PUBLIC_ ssize_t swrap_send(int s, const void *buf, size_t len, int flags)
                return real_send(s, buf, len, flags);
        }
 
+       len = MIN(len, 1500);
+
        ret = real_send(s, buf, len, flags);
 
        if (ret == -1) {