diff options
author | marha <marha@users.sourceforge.net> | 2013-11-22 08:50:11 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-11-22 08:50:11 +0100 |
commit | 697f071e3dcd3b01dba050d6c5316f2a23ee82f8 (patch) | |
tree | 78ab3ffa70b85d25940220d8768c304889c24a85 /X11/xtrans/Xtranssock.c | |
parent | bb953a87489963f63e65c797a1f2837382ff7808 (diff) | |
download | vcxsrv-697f071e3dcd3b01dba050d6c5316f2a23ee82f8.tar.gz vcxsrv-697f071e3dcd3b01dba050d6c5316f2a23ee82f8.tar.bz2 vcxsrv-697f071e3dcd3b01dba050d6c5316f2a23ee82f8.zip |
libxtrans mesa git update 22 nov 2013
libxtrans commit 8b2c8aabe27bcaa4de6432b53c4a1296010ea823
mesa commit bb354c6c279031dafc08029a62cd3e76a6c1ca71
Diffstat (limited to 'X11/xtrans/Xtranssock.c')
-rw-r--r-- | X11/xtrans/Xtranssock.c | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/X11/xtrans/Xtranssock.c b/X11/xtrans/Xtranssock.c index c9d103352..fdf1dd774 100644 --- a/X11/xtrans/Xtranssock.c +++ b/X11/xtrans/Xtranssock.c @@ -2197,27 +2197,11 @@ TRANS(SocketSendFdInvalid)(XtransConnInfo ciptr, int fd, int do_close) #define MAX_FDS 128 -struct fd_pass { +union fd_pass { struct cmsghdr cmsghdr; - int fd[MAX_FDS]; + char buf[CMSG_SPACE(MAX_FDS * sizeof(int))]; }; -static inline void init_msg_recv(struct msghdr *msg, struct iovec *iov, int niov, struct fd_pass *pass, int nfd) { - msg->msg_name = NULL; - msg->msg_namelen = 0; - msg->msg_iov = iov; - msg->msg_iovlen = niov; - msg->msg_control = pass; - msg->msg_controllen = sizeof (struct cmsghdr) + nfd * sizeof (int); -} - -static inline void init_msg_send(struct msghdr *msg, struct iovec *iov, int niov, struct fd_pass *pass, int nfd) { - init_msg_recv(msg, iov, niov, pass, nfd); - pass->cmsghdr.cmsg_len = msg->msg_controllen; - pass->cmsghdr.cmsg_level = SOL_SOCKET; - pass->cmsghdr.cmsg_type = SCM_RIGHTS; -} - #endif /* XTRANS_SEND_FDS */ static int @@ -2241,13 +2225,13 @@ TRANS(SocketRead) (XtransConnInfo ciptr, char *buf, int size) .iov_base = buf, .iov_len = size }; - char cmsgbuf[CMSG_SPACE(sizeof(int) * MAX_FDS)]; + union fd_pass cmsgbuf; struct msghdr msg = { .msg_name = NULL, .msg_namelen = 0, .msg_iov = &iov, .msg_iovlen = 1, - .msg_control = cmsgbuf, + .msg_control = cmsgbuf.buf, .msg_controllen = CMSG_LEN(MAX_FDS * sizeof(int)) }; @@ -2282,13 +2266,13 @@ TRANS(SocketReadv) (XtransConnInfo ciptr, struct iovec *buf, int size) #if XTRANS_SEND_FDS { - char cmsgbuf[CMSG_SPACE(sizeof(int) * MAX_FDS)]; + union fd_pass cmsgbuf; struct msghdr msg = { .msg_name = NULL, .msg_namelen = 0, .msg_iov = buf, .msg_iovlen = size, - .msg_control = cmsgbuf, + .msg_control = cmsgbuf.buf, .msg_controllen = CMSG_LEN(MAX_FDS * sizeof(int)) }; @@ -2324,7 +2308,7 @@ TRANS(SocketWritev) (XtransConnInfo ciptr, struct iovec *buf, int size) #if XTRANS_SEND_FDS if (ciptr->send_fds) { - char cmsgbuf[CMSG_SPACE(sizeof(int) * MAX_FDS)]; + union fd_pass cmsgbuf; int nfd = nFd(&ciptr->send_fds); struct _XtransConnFd *cf = ciptr->send_fds; struct msghdr msg = { @@ -2332,7 +2316,7 @@ TRANS(SocketWritev) (XtransConnInfo ciptr, struct iovec *buf, int size) .msg_namelen = 0, .msg_iov = buf, .msg_iovlen = size, - .msg_control = cmsgbuf, + .msg_control = cmsgbuf.buf, .msg_controllen = CMSG_LEN(nfd * sizeof(int)) }; struct cmsghdr *hdr = CMSG_FIRSTHDR(&msg); |