summaryrefslogtreecommitdiff
path: root/source3/lib
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2008-06-10 08:33:24 +0200
committerStefan Metzmacher <metze@samba.org>2008-06-10 11:38:11 +0200
commit5380fd800d90f0463f99dbd9efb78feb177b1790 (patch)
tree8881206229b2afc6d195f7570e9a7ec8431267e2 /source3/lib
parentd57b8280d6ded808ab82767789f45629abe95dde (diff)
downloadsamba-5380fd800d90f0463f99dbd9efb78feb177b1790.tar.gz
samba-5380fd800d90f0463f99dbd9efb78feb177b1790.tar.bz2
samba-5380fd800d90f0463f99dbd9efb78feb177b1790.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 (cherry picked from commit 5b01206f1bb2e62c08bda34b45904ec4f83ac5de) (This used to be commit eb8c37a1ca97b41de00ec937a90bfdbe9cd21531)
Diffstat (limited to 'source3/lib')
-rw-r--r--source3/lib/socket_wrapper/socket_wrapper.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/source3/lib/socket_wrapper/socket_wrapper.c b/source3/lib/socket_wrapper/socket_wrapper.c
index 5ac9965bd6..336179d837 100644
--- a/source3/lib/socket_wrapper/socket_wrapper.c
+++ b/source3/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) {