X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Fliblutil%2Fsockpair.c;h=e831408c4aef65c4ceac1fa642dfea2c9de04963;hb=3121074ad72bf6a4ef2a29c9440a4e740e2e1947;hp=6caa3b0aadcf8d7fc25b4bfd0703cbf2420c117f;hpb=0307dd3b38aa329c94b05097baa7e2c0760b2d54;p=openldap diff --git a/libraries/liblutil/sockpair.c b/libraries/liblutil/sockpair.c index 6caa3b0aad..e831408c4a 100644 --- a/libraries/liblutil/sockpair.c +++ b/libraries/liblutil/sockpair.c @@ -1,10 +1,12 @@ +/* $OpenLDAP$ */ /* - * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ #include "portable.h" #include +#include #include @@ -18,20 +20,21 @@ * this function is best implemented using a single pipe() call. */ -int lutil_pair( LBER_SOCKET_T sds[2] ) +int lutil_pair( ber_socket_t sds[2] ) { #ifdef USE_PIPE return pipe( sds ); #else struct sockaddr_in si; int rc, len = sizeof(si); - LBER_SOCKET_T sd; + ber_socket_t sd; sd = socket( AF_INET, SOCK_DGRAM, 0 ); - if ( sd == AC_SOCKET_INVALID ) + if ( sd == AC_SOCKET_INVALID ) { return sd; + } - (void) memset( (void*) &si, 0, len ); + (void) memset( (void*) &si, '\0', len ); si.sin_family = AF_INET; si.sin_port = 0; si.sin_addr.s_addr = htonl( INADDR_LOOPBACK ); @@ -54,7 +57,12 @@ int lutil_pair( LBER_SOCKET_T sds[2] ) return rc; } - sds[0] = sds[1] = sd; + sds[0] = sd; +#if !HAVE_WINSOCK + sds[1] = dup( sds[0] ); +#else + sds[1] = sds[0]; +#endif return 0; #endif }