Mercurial > dovecot > core-2.2
changeset 870:971947c0034f HEAD
Fixed to work with 64bit BSD systems.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 28 Dec 2002 21:20:37 +0200 |
parents | 2873d04a566e |
children | 28212c00d147 |
files | src/lib/fdpass.c |
diffstat | 1 files changed, 7 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/fdpass.c Sat Dec 28 11:54:56 2002 +0200 +++ b/src/lib/fdpass.c Sat Dec 28 21:20:37 2002 +0200 @@ -48,27 +48,27 @@ struct cmsghdr *cmsg; char buf[CMSG_SPACE(sizeof(int))]; - i_assert(size < SSIZE_T_MAX); + i_assert(size > 0 && size < SSIZE_T_MAX); memset(&msg, 0, sizeof (struct msghdr)); iov.iov_base = (void *) data; iov.iov_len = size; - if (send_fd != -1) { - msg.msg_control = buf; - msg.msg_controllen = sizeof(buf); - } - msg.msg_iov = &iov; msg.msg_iovlen = 1; if (send_fd != -1) { + msg.msg_control = buf; + msg.msg_controllen = sizeof(buf); + cmsg = CMSG_FIRSTHDR(&msg); cmsg->cmsg_level = SOL_SOCKET; cmsg->cmsg_type = SCM_RIGHTS; cmsg->cmsg_len = CMSG_LEN(sizeof(int)); *((int *) CMSG_DATA(cmsg)) = send_fd; + + msg.msg_controllen = cmsg->cmsg_len; } return sendmsg(handle, &msg, 0); @@ -82,7 +82,7 @@ ssize_t ret; char buf[CMSG_SPACE(sizeof(int))]; - i_assert(size < SSIZE_T_MAX); + i_assert(size > 0 && size < SSIZE_T_MAX); memset(&msg, 0, sizeof (struct msghdr));