summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2001-08-03 12:06:29 +0000
committerCorinna Vinschen <corinna@vinschen.de>2001-08-03 12:06:29 +0000
commit7eb971a561ec030f1684649b8e30674d20e25a13 (patch)
treea4ce08de521ca7eec1b17761f5f49485c11940ff
parentdce6f5639766db7bafd72308ebd1c848d257e2ef (diff)
downloadcygnal-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/ChangeLog5
-rw-r--r--winsup/cygwin/include/cygwin/socket.h4
-rw-r--r--winsup/cygwin/net.cc11
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