diff options
author | Xin LI <delphij@FreeBSD.org> | 2015-04-08 17:52:54 +0000 |
---|---|---|
committer | Xin LI <delphij@FreeBSD.org> | 2015-04-08 17:52:54 +0000 |
commit | 7ba7a5de74780dee4ec54bace1ec36427be1d8b8 (patch) | |
tree | a5a1890b0b884a1d303e90c4130c3b731772abd5 /lib/isc/unix/socket.c | |
parent | a2bc50f814b6966b412ba90221460066a8b31951 (diff) |
Notes
Diffstat (limited to 'lib/isc/unix/socket.c')
-rw-r--r-- | lib/isc/unix/socket.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 2a004234d429..110eafe50fd1 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -1763,7 +1763,7 @@ doio_recv(isc__socket_t *sock, isc_socketevent_t *dev) { } /* * Simulate a firewall blocking UDP responses bigger than - * 512 bytes. + * 'maxudp' bytes. */ if (sock->manager->maxudp != 0 && cc > sock->manager->maxudp) return (DOIO_SOFT); @@ -1857,7 +1857,12 @@ doio_send(isc__socket_t *sock, isc_socketevent_t *dev) { build_msghdr_send(sock, dev, &msghdr, iov, &write_count); resend: - cc = sendmsg(sock->fd, &msghdr, 0); + if (sock->type == isc_sockettype_udp && + sock->manager->maxudp != 0 && + write_count > (size_t)sock->manager->maxudp) + cc = write_count; + else + cc = sendmsg(sock->fd, &msghdr, 0); send_errno = errno; /* |