diff options
author | Stefan Metzmacher <metze@samba.org> | 2008-06-10 08:33:24 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2008-06-10 08:43:02 +0200 |
commit | 47b106c0ae8b91c9cccfc21bf8e4e416b1abfd5d (patch) | |
tree | 659061de1eec1d4f20638cd5cf5bf90527825777 /source4 | |
parent | 7721ea8f9c75d304111935048167dd27525cc91a (diff) | |
download | samba-47b106c0ae8b91c9cccfc21bf8e4e416b1abfd5d.tar.gz samba-47b106c0ae8b91c9cccfc21bf8e4e416b1abfd5d.tar.bz2 samba-47b106c0ae8b91c9cccfc21bf8e4e416b1abfd5d.zip |
socket_wrapper: truncate packets to a 1500 byte payload
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)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/lib/socket_wrapper/socket_wrapper.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source4/lib/socket_wrapper/socket_wrapper.c b/source4/lib/socket_wrapper/socket_wrapper.c index 86d9f7a312..981df523cd 100644 --- a/source4/lib/socket_wrapper/socket_wrapper.c +++ b/source4/lib/socket_wrapper/socket_wrapper.c @@ -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) { |