Browse Source

fix sendmmsg emulation return value for zero-length vector

this case is not even documented, but the kernel returns 0 here and it
makes sense to be consistent.
Rich Felker 10 years ago
parent
commit
2e5d256984
1 changed files with 1 additions and 0 deletions
  1. 1 0
      src/network/sendmmsg.c

+ 1 - 0
src/network/sendmmsg.c

@@ -12,6 +12,7 @@ int sendmmsg(int fd, struct mmsghdr *msgvec, unsigned int vlen, unsigned int fla
 	 * and the cmsg blocks cannot be modified in-place. */
 	int i;
 	if (vlen > IOV_MAX) vlen = IOV_MAX; /* This matches the kernel. */
+	if (!vlen) return 0;
 	for (i=0; i<vlen; i++) {
 		/* As an unfortunate inconsistency, the sendmmsg API uses
 		 * unsigned int for the resulting msg_len, despite sendmsg