Skip to content
Snippets Groups Projects
Commit 9826f704 authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

Back out to simple sock_errno sock_errstr macros and use WSAGetErrorString

instead of WSAGetLastErrorString to preserve errno like semantics.
parent 5333a580
No related branches found
No related tags found
No related merge requests found
/* Generic socket.h */ /* Generic socket.h */
/* $Id$ */ /* $Id: socket.h,v 1.28 1999/08/29 18:35:22 kdz Exp $ */
/* /*
* Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA * Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA
* All rights reserved. * All rights reserved.
...@@ -66,8 +66,10 @@ ...@@ -66,8 +66,10 @@
#define MAXHOSTNAMELEN 64 #define MAXHOSTNAMELEN 64
#endif #endif
#define SOCK_ERR(num, str) \ #undef sock_errno
num = errno; str = STRERROR(errno) #undef sock_errstr
#define sock_errno() errno
#define sock_errstr(e) STRERROR(e)
#ifdef HAVE_WINSOCK #ifdef HAVE_WINSOCK
# define tcp_close( s ) closesocket( s ) # define tcp_close( s ) closesocket( s )
...@@ -81,9 +83,10 @@ ...@@ -81,9 +83,10 @@
#define EINPROGRESS WSAEINPROGRESS #define EINPROGRESS WSAEINPROGRESS
#define ETIMEDOUT WSAETIMEDOUT #define ETIMEDOUT WSAETIMEDOUT
#undef SOCK_ERR #undef sock_errno
#define SOCK_ERR(num, str) \ #undef sock_errstr
num = WSAGetLastError(); str = WSAGetLastErrorString() #define sock_errno() WSAGetLastError()
#define sock_errstr(e) WSAGetErrorString(e)
#elif MACOS #elif MACOS
# define tcp_close( s ) tcpclose( s ) # define tcp_close( s ) tcpclose( s )
......
...@@ -208,12 +208,10 @@ open_listener( ...@@ -208,12 +208,10 @@ open_listener(
int port, int port,
int tls_port ) int tls_port )
{ {
int tmp, rc;
Listener l; Listener l;
Listener *li; Listener *li;
LDAPURLDesc *lud; LDAPURLDesc *lud;
int tmp, rc;
int err;
char *errstr;
char *s; char *s;
rc = ldap_url_parse( url, &lud ); rc = ldap_url_parse( url, &lud );
...@@ -278,10 +276,10 @@ open_listener( ...@@ -278,10 +276,10 @@ open_listener(
if ( (l.sl_sd = socket( AF_INET, SOCK_STREAM, 0 )) == AC_SOCKET_INVALID ) { if ( (l.sl_sd = socket( AF_INET, SOCK_STREAM, 0 )) == AC_SOCKET_INVALID ) {
SOCK_ERR(err, errstr); int err = sock_errno();
Debug( LDAP_DEBUG_ANY, Debug( LDAP_DEBUG_ANY,
"daemon: socket() failed errno=%d (%s)\n", err, "daemon: socket() failed errno=%d (%s)\n", err,
errstr, 0 ); sock_errstr(err), 0 );
return NULL; return NULL;
} }
...@@ -301,10 +299,10 @@ open_listener( ...@@ -301,10 +299,10 @@ open_listener(
if ( setsockopt( l.sl_sd, SOL_SOCKET, SO_REUSEADDR, if ( setsockopt( l.sl_sd, SOL_SOCKET, SO_REUSEADDR,
(char *) &tmp, sizeof(tmp) ) == -1 ) (char *) &tmp, sizeof(tmp) ) == -1 )
{ {
SOCK_ERR(err, errstr); int err = sock_errno();
Debug( LDAP_DEBUG_ANY, Debug( LDAP_DEBUG_ANY,
"slapd(%ld): setsockopt(SO_REUSEADDR) failed errno=%d (%s)\n", "slapd(%ld): setsockopt(SO_REUSEADDR) failed errno=%d (%s)\n",
(long) l.sl_sd, err, errstr ); (long) l.sl_sd, err, sock_errstr(err) );
} }
#endif #endif
#ifdef SO_KEEPALIVE #ifdef SO_KEEPALIVE
...@@ -313,10 +311,10 @@ open_listener( ...@@ -313,10 +311,10 @@ open_listener(
if ( setsockopt( l.sl_sd, SOL_SOCKET, SO_KEEPALIVE, if ( setsockopt( l.sl_sd, SOL_SOCKET, SO_KEEPALIVE,
(char *) &tmp, sizeof(tmp) ) == -1 ) (char *) &tmp, sizeof(tmp) ) == -1 )
{ {
SOCK_ERR(err, errstr); int err = sock_errno();
Debug( LDAP_DEBUG_ANY, Debug( LDAP_DEBUG_ANY,
"slapd(%ld): setsockopt(SO_KEEPALIVE) failed errno=%d (%s)\n", "slapd(%ld): setsockopt(SO_KEEPALIVE) failed errno=%d (%s)\n",
(long) l.sl_sd, err, errstr ); (long) l.sl_sd, err, sock_errstr(err) );
} }
#endif #endif
#ifdef TCP_NODELAY #ifdef TCP_NODELAY
...@@ -325,17 +323,17 @@ open_listener( ...@@ -325,17 +323,17 @@ open_listener(
if ( setsockopt( l.sl_sd, IPPROTO_TCP, TCP_NODELAY, if ( setsockopt( l.sl_sd, IPPROTO_TCP, TCP_NODELAY,
(char *)&tmp, sizeof(tmp) ) ) (char *)&tmp, sizeof(tmp) ) )
{ {
SOCK_ERR(err, errstr); int err = sock_errno();
Debug( LDAP_DEBUG_ANY, Debug( LDAP_DEBUG_ANY,
"slapd(%ld): setsockopt(TCP_NODELAY) failed errno=%d (%s)\n", "slapd(%ld): setsockopt(TCP_NODELAY) failed errno=%d (%s)\n",
(long) l.sl_sd, err, errstr ); (long) l.sl_sd, err, sock_errstr(err) );
} }
#endif #endif
if ( bind( l.sl_sd, (struct sockaddr *) &l.sl_addr, sizeof(l.sl_addr) ) == -1 ) { if ( bind( l.sl_sd, (struct sockaddr *) &l.sl_addr, sizeof(l.sl_addr) ) == -1 ) {
SOCK_ERR(err, errstr); int err = sock_errno();
Debug( LDAP_DEBUG_ANY, "daemon: bind(%ld) failed errno=%d (%s)\n", Debug( LDAP_DEBUG_ANY, "daemon: bind(%ld) failed errno=%d (%s)\n",
(long) l.sl_sd, err, errstr ); (long) l.sl_sd, err, sock_errstr(err) );
tcp_close( l.sl_sd ); tcp_close( l.sl_sd );
return NULL; return NULL;
} }
...@@ -362,8 +360,6 @@ static int sockdestroy(void); ...@@ -362,8 +360,6 @@ static int sockdestroy(void);
int slapd_daemon_init(char *urls, int port, int tls_port ) int slapd_daemon_init(char *urls, int port, int tls_port )
{ {
int i, rc; int i, rc;
int err;
char *errstr;
char **u; char **u;
#ifndef HAVE_TLS #ifndef HAVE_TLS
...@@ -398,14 +394,15 @@ int slapd_daemon_init(char *urls, int port, int tls_port ) ...@@ -398,14 +394,15 @@ int slapd_daemon_init(char *urls, int port, int tls_port )
*/ */
if( (sel_exit_fd = socket( AF_INET, SOCK_DGRAM, 0 )) < 0 ) if( (sel_exit_fd = socket( AF_INET, SOCK_DGRAM, 0 )) < 0 )
{ {
SOCK_ERR(err, errstr); int err = sock_errno();
Debug( LDAP_DEBUG_ANY, Debug( LDAP_DEBUG_ANY,
"daemon: socket() failed errno=%d (%s)\n", err, "daemon: socket() failed errno=%d (%s)\n", err,
errstr, 0 ); sock_errstr(err), 0 );
return sel_exit_fd; return sel_exit_fd;
} else { } else {
struct sockaddr_in si; struct sockaddr_in si;
int len = sizeof(si); int len = sizeof(si);
int err;
(void) memset( (void*) &si, 0, len ); (void) memset( (void*) &si, 0, len );
...@@ -415,25 +412,25 @@ int slapd_daemon_init(char *urls, int port, int tls_port ) ...@@ -415,25 +412,25 @@ int slapd_daemon_init(char *urls, int port, int tls_port )
if( rc = bind( sel_exit_fd, (struct sockaddr *)&si, len ) ) if( rc = bind( sel_exit_fd, (struct sockaddr *)&si, len ) )
{ {
SOCK_ERR(err, errstr); err = sock_errno();
Debug( LDAP_DEBUG_ANY, "daemon: bind(%ld) failed errno=%d (%s)\n", Debug( LDAP_DEBUG_ANY, "daemon: bind(%ld) failed errno=%d (%s)\n",
(long) sel_exit_fd, err, errstr ); (long) sel_exit_fd, err, sock_errstr(err) );
tcp_close( sel_exit_fd ); tcp_close( sel_exit_fd );
return rc; return rc;
} }
if( rc = getsockname( sel_exit_fd, (struct sockaddr *)&si, &len)) if( rc = getsockname( sel_exit_fd, (struct sockaddr *)&si, &len))
{ {
SOCK_ERR(err, errstr); err = sock_errno();
Debug( LDAP_DEBUG_ANY, "daemon: getsockname(%ld) failed errno=%d (%s)\n", Debug( LDAP_DEBUG_ANY, "daemon: getsockname(%ld) failed errno=%d (%s)\n",
(long) sel_exit_fd, err, errstr ); (long) sel_exit_fd, err, sock_errstr(err) );
tcp_close( sel_exit_fd ); tcp_close( sel_exit_fd );
return rc; return rc;
} }
if( rc = connect( sel_exit_fd, (struct sockaddr *)&si, len)) if( rc = connect( sel_exit_fd, (struct sockaddr *)&si, len))
{ {
SOCK_ERR(err, errstr); err = sock_errno();
Debug( LDAP_DEBUG_ANY, "daemon: connect(%ld) failed errno=%d (%s)\n", Debug( LDAP_DEBUG_ANY, "daemon: connect(%ld) failed errno=%d (%s)\n",
(long) sel_exit_fd, err, errstr ); (long) sel_exit_fd, err, sock_errstr(err) );
tcp_close( sel_exit_fd ); tcp_close( sel_exit_fd );
return rc; return rc;
} }
...@@ -506,8 +503,6 @@ slapd_daemon_task( ...@@ -506,8 +503,6 @@ slapd_daemon_task(
) )
{ {
int l; int l;
int err;
char *errstr;
time( &starttime ); time( &starttime );
...@@ -516,11 +511,11 @@ slapd_daemon_task( ...@@ -516,11 +511,11 @@ slapd_daemon_task(
continue; continue;
if ( listen( slap_listeners[l]->sl_sd, 5 ) == -1 ) { if ( listen( slap_listeners[l]->sl_sd, 5 ) == -1 ) {
SOCK_ERR(err, errstr); int err = sock_errno();
Debug( LDAP_DEBUG_ANY, Debug( LDAP_DEBUG_ANY,
"daemon: listen(%s, 5) failed errno=%d (%s)\n", "daemon: listen(%s, 5) failed errno=%d (%s)\n",
(long) slap_listeners[l]->sl_url, err, (long) slap_listeners[l]->sl_url, err,
errstr ); sock_errstr(err) );
return( (void*)-1 ); return( (void*)-1 );
} }
...@@ -631,7 +626,8 @@ slapd_daemon_task( ...@@ -631,7 +626,8 @@ slapd_daemon_task(
NULL, tvp )) NULL, tvp ))
{ {
case -1: { /* failure - try again */ case -1: { /* failure - try again */
SOCK_ERR(err, errstr); int err = sock_errno();
if( err == EBADF && ++ebadf < SLAPD_EBADF_LIMIT) { if( err == EBADF && ++ebadf < SLAPD_EBADF_LIMIT) {
continue; continue;
} }
...@@ -639,7 +635,7 @@ slapd_daemon_task( ...@@ -639,7 +635,7 @@ slapd_daemon_task(
if( err != EINTR ) { if( err != EINTR ) {
Debug( LDAP_DEBUG_CONNS, Debug( LDAP_DEBUG_CONNS,
"daemon: select failed (%d): %s\n", "daemon: select failed (%d): %s\n",
err, errstr, 0 ); err, sock_errstr(err), 0 );
slapd_shutdown = -1; slapd_shutdown = -1;
} }
...@@ -685,11 +681,11 @@ slapd_daemon_task( ...@@ -685,11 +681,11 @@ slapd_daemon_task(
if ( (s = accept( slap_listeners[l]->sl_sd, if ( (s = accept( slap_listeners[l]->sl_sd,
(struct sockaddr *) &from, &len )) == AC_SOCKET_INVALID ) (struct sockaddr *) &from, &len )) == AC_SOCKET_INVALID )
{ {
SOCK_ERR(err, errstr); int err = sock_errno();
Debug( LDAP_DEBUG_ANY, Debug( LDAP_DEBUG_ANY,
"daemon: accept(%ld) failed errno=%d (%s)\n", "daemon: accept(%ld) failed errno=%d (%s)\n",
(long) slap_listeners[l]->sl_sd, err, (long) slap_listeners[l]->sl_sd, err,
errstr ); sock_errstr(err) );
continue; continue;
} }
...@@ -722,10 +718,10 @@ slapd_daemon_task( ...@@ -722,10 +718,10 @@ slapd_daemon_task(
len = sizeof(from); len = sizeof(from);
if ( getpeername( s, (struct sockaddr *) &from, &len ) != 0 ) { if ( getpeername( s, (struct sockaddr *) &from, &len ) != 0 ) {
SOCK_ERR(err, errstr); int err = sock_errno();
Debug( LDAP_DEBUG_ANY, Debug( LDAP_DEBUG_ANY,
"daemon: getpeername( %ld ) failed: errno=%d (%s)\n", "daemon: getpeername( %ld ) failed: errno=%d (%s)\n",
(long) s, err, errstr ); (long) s, err, sock_errstr(err) );
slapd_close(s); slapd_close(s);
continue; continue;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment