diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2001-08-03 12:06:29 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2001-08-03 12:06:29 +0000 |
commit | 7eb971a561ec030f1684649b8e30674d20e25a13 (patch) | |
tree | a4ce08de521ca7eec1b17761f5f49485c11940ff | |
parent | dce6f5639766db7bafd72308ebd1c848d257e2ef (diff) | |
download | cygnal-7eb971a561ec030f1684649b8e30674d20e25a13.tar.gz cygnal-7eb971a561ec030f1684649b8e30674d20e25a13.tar.bz2 cygnal-7eb971a561ec030f1684649b8e30674d20e25a13.zip |
* net.cc (cygwin_accept): Allow NULL peer and len parameters.
* include/cygwin/socket.h: Define socklen_t as int.
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/include/cygwin/socket.h | 4 | ||||
-rw-r--r-- | winsup/cygwin/net.cc | 11 |
3 files changed, 20 insertions, 0 deletions
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 <corinna@vinschen.de> + + * 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 <corinna@vinschen.de> * 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 |