From 7eb971a561ec030f1684649b8e30674d20e25a13 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 3 Aug 2001 12:06:29 +0000 Subject: [PATCH] * net.cc (cygwin_accept): Allow NULL peer and len parameters. * include/cygwin/socket.h: Define socklen_t as int. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/include/cygwin/socket.h | 4 ++++ winsup/cygwin/net.cc | 11 +++++++++++ 3 files changed, 20 insertions(+) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 12dd10c03..a1ac7f334 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +Fri Aug 3 14:02:00 2001 Corinna Vinschen + + * net.cc (cygwin_accept): Allow NULL peer and len parameters. + * include/cygwin/socket.h: Define socklen_t as int. + Fri Aug 3 13:04:00 2001 Corinna Vinschen * path.cc (fchdir): Set the fhandler's path to absolute value to diff --git a/winsup/cygwin/include/cygwin/socket.h b/winsup/cygwin/include/cygwin/socket.h index c7191ffb3..da747fd3d 100644 --- a/winsup/cygwin/include/cygwin/socket.h +++ b/winsup/cygwin/include/cygwin/socket.h @@ -40,6 +40,10 @@ struct msghdr int msg_accrightslen; /* Length of rights list */ }; +#ifndef socklen_t +#define socklen_t int +#endif + /* Socket types. */ #define SOCK_STREAM 1 /* stream (connection) socket */ #define SOCK_DGRAM 2 /* datagram (conn.less) socket */ diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index c3b1e355a..4e93a9e11 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -900,6 +900,17 @@ cygwin_accept (int fd, struct sockaddr *peer, int *len) fhandler_socket *sock = get (fd); if (sock) { + /* Allows NULL peer and len parameters. */ + struct sockaddr_in peer_dummy; + int len_dummy; + if (!peer) + peer = (struct sockaddr *) &peer_dummy; + if (!len) + { + len_dummy = sizeof (struct sockaddr_in); + len = &len_dummy; + } + /* accept on NT fails if len < sizeof (sockaddr_in) * some programs set len to * sizeof (name.sun_family) + strlen (name.sun_path) for UNIX domain