X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fbind.c;h=baaea59b6062496db7ec269786483f11cb35e362;hb=4f6a7ef5f2097b501ddeac9db94d02306e4546d0;hp=1e2cb2d7e493db2c08375a4f7ca98bc9d26b8090;hpb=3030c5b5e0a5199e16b05927da72c43c42f211c3;p=gnulib.git diff --git a/lib/bind.c b/lib/bind.c index 1e2cb2d7e..baaea59b6 100644 --- a/lib/bind.c +++ b/lib/bind.c @@ -1,6 +1,6 @@ /* bind.c --- wrappers for Windows bind function - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,12 +29,21 @@ #undef bind int -rpl_bind (int fd, struct sockaddr *sockaddr, int len) +rpl_bind (int fd, const struct sockaddr *sockaddr, socklen_t len) { SOCKET sock = FD_TO_SOCKET (fd); - int r = bind (sock, sockaddr, len); - if (r < 0) - set_winsock_errno (); - return r; + if (sock == INVALID_SOCKET) + { + errno = EBADF; + return -1; + } + else + { + int r = bind (sock, sockaddr, len); + if (r < 0) + set_winsock_errno (); + + return r; + } }