server: Remove support for msg_accrights FD passing.
This commit is contained in:
parent
af2c686628
commit
befd7abe10
4 changed files with 18 additions and 46 deletions
13
configure
vendored
13
configure
vendored
|
@ -21014,19 +21014,6 @@ printf "%s\n" "#define HAVE_LINUX_GETHOSTBYNAME_R_6 1" >>confdefs.h
|
|||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_member "$LINENO" "struct msghdr" "msg_accrights" "ac_cv_member_struct_msghdr_msg_accrights" "#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#ifdef HAVE_SYS_UN_H
|
||||
# include <sys/un.h>
|
||||
#endif
|
||||
"
|
||||
if test "x$ac_cv_member_struct_msghdr_msg_accrights" = xyes
|
||||
then :
|
||||
|
||||
printf "%s\n" "#define HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS 1" >>confdefs.h
|
||||
|
||||
|
||||
fi
|
||||
ac_fn_c_check_member "$LINENO" "struct sockaddr_un" "sun_len" "ac_cv_member_struct_sockaddr_un_sun_len" "#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#ifdef HAVE_SYS_UN_H
|
||||
|
|
|
@ -2163,7 +2163,7 @@ AC_CACHE_CHECK([whether we can use re-entrant gethostbyname_r Linux style],
|
|||
fi
|
||||
|
||||
dnl Check for socket structure members
|
||||
AC_CHECK_MEMBERS([struct msghdr.msg_accrights, struct sockaddr_un.sun_len],,,
|
||||
AC_CHECK_MEMBERS([struct sockaddr_un.sun_len],,,
|
||||
[#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#ifdef HAVE_SYS_UN_H
|
||||
|
|
|
@ -414,9 +414,6 @@
|
|||
/* Define to 1 if `ips_total' is a member of `struct ip_stats'. */
|
||||
#undef HAVE_STRUCT_IP_STATS_IPS_TOTAL
|
||||
|
||||
/* Define to 1 if `msg_accrights' is a member of `struct msghdr'. */
|
||||
#undef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS
|
||||
|
||||
/* Define to 1 if `mt_blkno' is a member of `struct mtget'. */
|
||||
#undef HAVE_STRUCT_MTGET_MT_BLKNO
|
||||
|
||||
|
|
|
@ -379,28 +379,22 @@ int receive_fd( struct process *process )
|
|||
struct iovec vec;
|
||||
struct send_fd data;
|
||||
struct msghdr msghdr;
|
||||
int fd = -1, ret;
|
||||
|
||||
#ifdef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS
|
||||
msghdr.msg_accrightslen = sizeof(int);
|
||||
msghdr.msg_accrights = (void *)&fd;
|
||||
#else /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */
|
||||
char cmsg_buffer[256];
|
||||
msghdr.msg_control = cmsg_buffer;
|
||||
msghdr.msg_controllen = sizeof(cmsg_buffer);
|
||||
msghdr.msg_flags = 0;
|
||||
#endif /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */
|
||||
int fd = -1, ret;
|
||||
|
||||
msghdr.msg_name = NULL;
|
||||
msghdr.msg_namelen = 0;
|
||||
msghdr.msg_iov = &vec;
|
||||
msghdr.msg_iovlen = 1;
|
||||
msghdr.msg_control = cmsg_buffer;
|
||||
msghdr.msg_controllen = sizeof(cmsg_buffer);
|
||||
msghdr.msg_flags = 0;
|
||||
|
||||
vec.iov_base = (void *)&data;
|
||||
vec.iov_len = sizeof(data);
|
||||
|
||||
ret = recvmsg( get_unix_fd( process->msg_fd ), &msghdr, 0 );
|
||||
|
||||
#ifndef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS
|
||||
if (ret > 0)
|
||||
{
|
||||
struct cmsghdr *cmsg;
|
||||
|
@ -410,7 +404,6 @@ int receive_fd( struct process *process )
|
|||
if (cmsg->cmsg_type == SCM_RIGHTS) fd = *(int *)CMSG_DATA(cmsg);
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */
|
||||
|
||||
if (ret == sizeof(data))
|
||||
{
|
||||
|
@ -465,32 +458,27 @@ int send_client_fd( struct process *process, int fd, obj_handle_t handle )
|
|||
{
|
||||
struct iovec vec;
|
||||
struct msghdr msghdr;
|
||||
int ret;
|
||||
|
||||
#ifdef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS
|
||||
msghdr.msg_accrightslen = sizeof(fd);
|
||||
msghdr.msg_accrights = (void *)&fd;
|
||||
#else /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */
|
||||
char cmsg_buffer[256];
|
||||
struct cmsghdr *cmsg;
|
||||
msghdr.msg_control = cmsg_buffer;
|
||||
int ret;
|
||||
|
||||
msghdr.msg_name = NULL;
|
||||
msghdr.msg_namelen = 0;
|
||||
msghdr.msg_iov = &vec;
|
||||
msghdr.msg_iovlen = 1;
|
||||
msghdr.msg_control = cmsg_buffer;
|
||||
msghdr.msg_controllen = sizeof(cmsg_buffer);
|
||||
msghdr.msg_flags = 0;
|
||||
msghdr.msg_flags = 0;
|
||||
|
||||
vec.iov_base = (void *)&handle;
|
||||
vec.iov_len = sizeof(handle);
|
||||
|
||||
cmsg = CMSG_FIRSTHDR( &msghdr );
|
||||
cmsg->cmsg_len = CMSG_LEN( sizeof(fd) );
|
||||
cmsg->cmsg_level = SOL_SOCKET;
|
||||
cmsg->cmsg_type = SCM_RIGHTS;
|
||||
*(int *)CMSG_DATA(cmsg) = fd;
|
||||
msghdr.msg_controllen = cmsg->cmsg_len;
|
||||
#endif /* HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */
|
||||
|
||||
msghdr.msg_name = NULL;
|
||||
msghdr.msg_namelen = 0;
|
||||
msghdr.msg_iov = &vec;
|
||||
msghdr.msg_iovlen = 1;
|
||||
|
||||
vec.iov_base = (void *)&handle;
|
||||
vec.iov_len = sizeof(handle);
|
||||
|
||||
if (debug_level)
|
||||
fprintf( stderr, "%04x: *fd* %04x -> %d\n", current ? current->id : process->id, handle, fd );
|
||||
|
|
Loading…
Add table
Reference in a new issue