aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix
diff options
context:
space:
mode:
authorVladimir Homutov <vl@nginx.com>2020-06-08 11:40:34 +0300
committerVladimir Homutov <vl@nginx.com>2020-06-08 11:40:34 +0300
commit58d1412f0df08a90cc4df9bb3e5fb8a550daf63e (patch)
tree964e150f245910c0b07b32b35b78d80abe89cb45 /src/os/unix
parent2d4f04bba0613292d8b51bf0de959e88afc72c54 (diff)
downloadnginx-58d1412f0df08a90cc4df9bb3e5fb8a550daf63e.tar.gz
nginx-58d1412f0df08a90cc4df9bb3e5fb8a550daf63e.zip
Stream: fixed processing of zero length UDP packets (ticket #1982).
Diffstat (limited to 'src/os/unix')
-rw-r--r--src/os/unix/ngx_udp_sendmsg_chain.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/os/unix/ngx_udp_sendmsg_chain.c b/src/os/unix/ngx_udp_sendmsg_chain.c
index 5399c7916..3d1d6dde4 100644
--- a/src/os/unix/ngx_udp_sendmsg_chain.c
+++ b/src/os/unix/ngx_udp_sendmsg_chain.c
@@ -189,6 +189,13 @@ ngx_udp_output_chain_to_iovec(ngx_iovec_t *vec, ngx_chain_t *in, ngx_log_t *log)
return cl;
}
+ /* zero-sized datagram; pretend to have at least 1 iov */
+ if (n == 0) {
+ iov = &vec->iovs[n++];
+ iov->iov_base = NULL;
+ iov->iov_len = 0;
+ }
+
vec->count = n;
vec->size = total;