]> git.sur5r.net Git - openldap/commitdiff
ITS#4606 fix from HEAD - use sock_err* macros instead of errno
authorHoward Chu <hyc@openldap.org>
Tue, 7 Nov 2006 05:06:21 +0000 (05:06 +0000)
committerHoward Chu <hyc@openldap.org>
Tue, 7 Nov 2006 05:06:21 +0000 (05:06 +0000)
include/ac/socket.h
libraries/liblber/io.c
libraries/liblber/sockbuf.c
libraries/libldap/cyrus.c
libraries/libldap/os-ip.c
libraries/libldap/request.c
libraries/libldap/result.c
libraries/libldap/tls.c

index 5aac4fe44831c784b12669c1bdcc1f53c65cf6a6..8522f76f9063e1e0ff80c1a087f26298c7b34f0c 100644 (file)
@@ -80,6 +80,7 @@
 #undef sock_errstr
 #define sock_errno()   errno
 #define sock_errstr(e) STRERROR(e)
+#define sock_errset(e) errno = (e)
 
 #ifdef HAVE_WINSOCK
 #      define tcp_read( s, buf, len )  recv( s, buf, len, 0 )
 
 #undef sock_errno
 #undef sock_errstr
+#undef sock_errset
 #define        sock_errno()    WSAGetLastError()
 #define        sock_errstr(e)  ber_pvt_wsa_err2string(e)
+#define        sock_errset(e)  WSASetLastError(e)
 
 LBER_F( char * ) ber_pvt_wsa_err2string LDAP_P((int));
 
index 934d488b7de3aa362f985e22a4c1f59eed8a1f34..8bbbeb2090ba56e721e6c2f78be17994e7f3c8d0 100644 (file)
@@ -500,7 +500,7 @@ ber_get_next(
                char buf[sizeof(ber->ber_len)-1];
                ber_len_t tlen = 0;
 
-               errno = 0;
+               sock_errset(0);
                sblen=ber_int_sb_read( sb, ber->ber_rwptr,
                        ((char *)&ber->ber_len + LENSIZE*2 - 1)-ber->ber_rwptr);
                if (sblen<=0) return LBER_DEFAULT;
@@ -520,16 +520,16 @@ ber_get_next(
                                                break;
                                        /* Is the tag too big? */
                                        if (i == sizeof(ber_tag_t)-1) {
-                                               errno = ERANGE;
+                                               sock_errset(ERANGE);
                                                return LBER_DEFAULT;
                                        }
                                }
                                /* Did we run out of bytes? */
                                if ((char *)p == ber->ber_rwptr) {
 #if defined( EWOULDBLOCK )
-                                       errno = EWOULDBLOCK;
+                                       sock_errset(EWOULDBLOCK);
 #elif defined( EAGAIN )
-                                       errno = EAGAIN;
+                                       sock_errset(EAGAIN);
 #endif                 
                                        return LBER_DEFAULT;
                                }
@@ -540,9 +540,9 @@ ber_get_next(
 
                if ( ber->ber_ptr == ber->ber_rwptr ) {
 #if defined( EWOULDBLOCK )
-                       errno = EWOULDBLOCK;
+                       sock_errset(EWOULDBLOCK);
 #elif defined( EAGAIN )
-                       errno = EAGAIN;
+                       sock_errset(EAGAIN);
 #endif                 
                        return LBER_DEFAULT;
                }
@@ -553,15 +553,15 @@ ber_get_next(
                        unsigned char *p = (unsigned char *)ber->ber_ptr;
                        int llen = *p++ & 0x7f;
                        if (llen > (int)sizeof(ber_len_t)) {
-                               errno = ERANGE;
+                               sock_errset(ERANGE);
                                return LBER_DEFAULT;
                        }
                        /* Not enough bytes? */
                        if (ber->ber_rwptr - (char *)p < llen) {
 #if defined( EWOULDBLOCK )
-                               errno = EWOULDBLOCK;
+                               sock_errset(EWOULDBLOCK);
 #elif defined( EAGAIN )
-                               errno = EAGAIN;
+                               sock_errset(EAGAIN);
 #endif                 
                                return LBER_DEFAULT;
                        }
@@ -592,7 +592,7 @@ ber_get_next(
 
                /* make sure length is reasonable */
                if ( ber->ber_len == 0 ) {
-                       errno = ERANGE;
+                       sock_errset(ERANGE);
                        return LBER_DEFAULT;
                }
 
@@ -600,7 +600,7 @@ ber_get_next(
                        ber_log_printf( LDAP_DEBUG_CONNS, ber->ber_debug,
                                "ber_get_next: sockbuf_max_incoming exceeded "
                                "(%ld > %ld)\n", ber->ber_len, sb->sb_max_incoming );
-                       errno = ERANGE;
+                       sock_errset(ERANGE);
                        return LBER_DEFAULT;
                }
 
@@ -611,7 +611,7 @@ ber_get_next(
                         * already read.
                         */
                        if ( ber->ber_len < sblen + l ) {
-                               errno = ERANGE;
+                               sock_errset(ERANGE);
                                return LBER_DEFAULT;
                        }
                        ber->ber_buf = (char *) ber_memalloc_x( ber->ber_len + 1, ber->ber_memctx );
@@ -643,16 +643,16 @@ ber_get_next(
                to_go = ber->ber_end - ber->ber_rwptr;
                assert( to_go > 0 );
                
-               errno = 0;
+               sock_errset(0);
                res = ber_int_sb_read( sb, ber->ber_rwptr, to_go );
                if (res<=0) return LBER_DEFAULT;
                ber->ber_rwptr+=res;
                
                if (res<to_go) {
 #if defined( EWOULDBLOCK )
-                       errno = EWOULDBLOCK;
+                       sock_errset(EWOULDBLOCK);
 #elif defined( EAGAIN )
-                       errno = EAGAIN;
+                       sock_errset(EAGAIN);
 #endif                 
                        return LBER_DEFAULT;
                }
index 956de5971fd6e59556bba4f2f59cba01b383d960..27ed84e46653db056e80cc0e8dc2ecaa86bc1fb6 100644 (file)
@@ -467,22 +467,7 @@ sb_stream_read( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len )
 /*
  * 32-bit Windows Socket API (under Windows NT or Windows 95)
  */
-       {
-               int rc;
-
-               rc = recv( sbiod->sbiod_sb->sb_fd, buf, len, 0 );
-
-#ifdef HAVE_WINSOCK
-               if ( rc < 0 ) {
-                       int err;
-
-                       err = WSAGetLastError();
-                       errno = err;
-               }
-#endif
-
-               return rc;
-       }
+       return recv( sbiod->sbiod_sb->sb_fd, buf, len, 0 );
 
 #elif defined( HAVE_NCSA )
 /*
@@ -520,18 +505,7 @@ sb_stream_write( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len )
 /*
  * 32-bit Windows Socket API (under Windows NT or Windows 95)
  */
-       {
-               int rc = send( sbiod->sbiod_sb->sb_fd, buf, len, 0 );
-
-#ifdef HAVE_WINSOCK
-               if ( rc < 0 ) {
-                       int err;
-                       err = WSAGetLastError();
-                       errno = err;
-               }
-#endif
-               return rc;
-       }
+       return send( sbiod->sbiod_sb->sb_fd, buf, len, 0 );
 
 #elif defined(HAVE_NCSA)
        return netwrite( sbiod->sbiod_sb->sb_fd, buf, len );
@@ -820,11 +794,11 @@ sb_debug_read( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len )
 
        ret = LBER_SBIOD_READ_NEXT( sbiod, buf, len );
        if (sbiod->sbiod_sb->sb_debug & LDAP_DEBUG_PACKETS) {
-               int err = errno;
+               int err = sock_errno();
                if ( ret < 0 ) {
                        ber_log_printf( LDAP_DEBUG_PACKETS, sbiod->sbiod_sb->sb_debug,
                                "%sread: want=%ld error=%s\n", (char *)sbiod->sbiod_pvt,
-                               (long)len, AC_STRERROR_R( errno, ebuf, sizeof ebuf ) );
+                               (long)len, AC_STRERROR_R( err, ebuf, sizeof ebuf ) );
                } else {
                        ber_log_printf( LDAP_DEBUG_PACKETS, sbiod->sbiod_sb->sb_debug,
                                "%sread: want=%ld, got=%ld\n", (char *)sbiod->sbiod_pvt,
@@ -832,7 +806,7 @@ sb_debug_read( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len )
                        ber_log_bprint( LDAP_DEBUG_PACKETS, sbiod->sbiod_sb->sb_debug,
                                (const char *)buf, ret );
                }
-               errno = err;
+               sock_errset(err);
        }
        return ret;
 }
@@ -845,12 +819,12 @@ sb_debug_write( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len )
 
        ret = LBER_SBIOD_WRITE_NEXT( sbiod, buf, len );
        if (sbiod->sbiod_sb->sb_debug & LDAP_DEBUG_PACKETS) {
-               int err = errno;
+               int err = sock_errno();
                if ( ret < 0 ) {
                        ber_log_printf( LDAP_DEBUG_PACKETS, sbiod->sbiod_sb->sb_debug,
                                "%swrite: want=%ld error=%s\n",
                                (char *)sbiod->sbiod_pvt, (long)len,
-                               AC_STRERROR_R( errno, ebuf, sizeof ebuf ) );
+                               AC_STRERROR_R( err, ebuf, sizeof ebuf ) );
                } else {
                        ber_log_printf( LDAP_DEBUG_PACKETS, sbiod->sbiod_sb->sb_debug,
                                "%swrite: want=%ld, written=%ld\n",
@@ -858,7 +832,7 @@ sb_debug_write( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len )
                        ber_log_bprint( LDAP_DEBUG_PACKETS, sbiod->sbiod_sb->sb_debug,
                                (const char *)buf, ret );
                }
-               errno = err;
+               sock_errset(err);
        }
 
        return ret;
index 38d98c60b8b172196a684fcb7ae83e7d4f0035f4..5905a4c93bc2b00c7cf4d56dc58cc9f887d07d72 100644 (file)
@@ -161,7 +161,7 @@ sb_sasl_setup( Sockbuf_IO_Desc *sbiod, void *arg )
        ber_pvt_sb_buf_init( &p->buf_out );
        if ( ber_pvt_sb_grow_buffer( &p->sec_buf_in, SASL_MIN_BUFF_SIZE ) < 0 ) {
                LBER_FREE( p );
-               errno = ENOMEM;
+               sock_errset(ENOMEM);
                return -1;
        }
        sasl_getprop( p->sasl_context, SASL_MAXOUTBUF,
@@ -288,7 +288,7 @@ sb_sasl_read( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
        if ( ( p->sec_buf_in.buf_size < (ber_len_t) ret ) && 
                ber_pvt_sb_grow_buffer( &p->sec_buf_in, ret ) < 0 )
        {
-               errno = ENOMEM;
+               sock_errset(ENOMEM);
                return -1;
        }
        p->sec_buf_in.buf_end = ret;
@@ -327,7 +327,7 @@ sb_sasl_read( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
                ber_log_printf( LDAP_DEBUG_ANY, sbiod->sbiod_sb->sb_debug,
                        "sb_sasl_read: failed to decode packet: %s\n",
                        sasl_errstring( ret, NULL, NULL ) );
-               errno = EIO;
+               sock_errset(EIO);
                return -1;
        }
        
@@ -356,7 +356,7 @@ sb_sasl_write( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
 
                /* Still have something left?? */
                if ( p->buf_out.buf_ptr != p->buf_out.buf_end ) {
-                       errno = EAGAIN;
+                       sock_errset(EAGAIN);
                        return -1;
                }
        }
@@ -383,7 +383,7 @@ sb_sasl_write( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
                ber_log_printf( LDAP_DEBUG_ANY, sbiod->sbiod_sb->sb_debug,
                        "sb_sasl_write: failed to encode packet: %s\n",
                        sasl_errstring( ret, NULL, NULL ) );
-               errno = EIO;
+               sock_errset(EIO);
                return -1;
        }
        p->buf_out.buf_end = p->buf_out.buf_size;
index fdcea293f868e9f0e4de9f5db87186331661a7ea..002300722e077b2094763dd20a6d305983acf436 100644 (file)
@@ -63,7 +63,7 @@ do { \
 static void
 ldap_pvt_set_errno(int err)
 {
-       errno = err;
+       sock_errset(err);
 }
 
 int
@@ -219,7 +219,7 @@ ldap_pvt_connect(LDAP *ld, ber_socket_t s,
        struct sockaddr *sin, socklen_t addrlen,
        int async)
 {
-       int rc;
+       int rc, err;
        struct timeval  tv = { 0 },
                        *opt_tv = NULL;
 
@@ -252,11 +252,8 @@ ldap_pvt_connect(LDAP *ld, ber_socket_t s,
                return ( 0 );
        }
 
-#ifdef HAVE_WINSOCK
-       ldap_pvt_set_errno( WSAGetLastError() );
-#endif
-
-       if ( errno != EINPROGRESS && errno != EWOULDBLOCK ) {
+       err = sock_errno();
+       if ( err != EINPROGRESS && err != EWOULDBLOCK ) {
                return ( -1 );
        }
        
index 55f43b80287e923bb4281e4c52100b7b7b87f196..cd69a8d51fd62b206b309d327335aaefdb991811 100644 (file)
@@ -149,7 +149,7 @@ ldap_int_flush_request(
        LDAPConn *lc = lr->lr_conn;
 
        if ( ber_flush( lc->lconn_sb, lr->lr_ber, 0 ) != 0 ) {
-               if ( errno == EAGAIN ) {
+               if ( sock_errno() == EAGAIN ) {
                        /* need to continue write later */
                        lr->lr_status = LDAP_REQST_WRITING;
                        ldap_mark_select_write( ld, lc->lconn_sb );
index 2c0ede80c4c41a353ea15fea750a58cd342940d3..4db51b83e3e0eb543cef679ff7c6208ce3677d64 100644 (file)
@@ -301,13 +301,13 @@ wait4msg(
                                if ( rc == -1 ) {
                                        Debug( LDAP_DEBUG_TRACE,
                                                "ldap_int_select returned -1: errno %d\n",
-                                               errno, 0, 0 );
+                                               sock_errno(), 0, 0 );
                                }
 #endif
 
                                if ( rc == 0 || ( rc == -1 && (
                                        !LDAP_BOOL_GET(&ld->ld_options, LDAP_BOOL_RESTART)
-                                               || errno != EINTR )))
+                                               || sock_errno() != EINTR )))
                                {
                                        ld->ld_errno = (rc == -1 ? LDAP_SERVER_DOWN :
                                                LDAP_TIMEOUT);
@@ -445,7 +445,7 @@ retry:
        assert( LBER_VALID (ber) );
 
        /* get the next message */
-       errno = 0;
+       sock_errset(0);
 #ifdef LDAP_CONNECTIONLESS
        if ( LDAP_IS_UDP(ld) ) {
                struct sockaddr from;
@@ -469,10 +469,10 @@ nextresp3:
                                "ber_get_next failed.\n", 0, 0, 0 );
 #endif            
 #ifdef EWOULDBLOCK                     
-                       if (errno==EWOULDBLOCK) return LDAP_MSG_X_KEEP_LOOKING;
+                       if ( sock_errno() == EWOULDBLOCK ) return LDAP_MSG_X_KEEP_LOOKING;
 #endif
 #ifdef EAGAIN
-                       if (errno == EAGAIN) return LDAP_MSG_X_KEEP_LOOKING;
+                       if ( sock_errno() == EAGAIN ) return LDAP_MSG_X_KEEP_LOOKING;
 #endif
                        ld->ld_errno = LDAP_SERVER_DOWN;
                        return -1;
index 2d26d7b18d1f85ce3e29b35b742c5039e0087451..f0e3a8555f17aed8c6d322df0436586adeccb784 100644 (file)
@@ -590,7 +590,7 @@ sb_tls_read( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
        err = SSL_get_error( p->ssl, ret );
        if (err == SSL_ERROR_WANT_READ ) {
                sbiod->sbiod_sb->sb_trans_needs_read = 1;
-               errno = EWOULDBLOCK;
+               sock_errset(EWOULDBLOCK);
        }
        else
                sbiod->sbiod_sb->sb_trans_needs_read = 0;
@@ -616,7 +616,7 @@ sb_tls_write( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
        err = SSL_get_error( p->ssl, ret );
        if (err == SSL_ERROR_WANT_WRITE ) {
                sbiod->sbiod_sb->sb_trans_needs_write = 1;
-               errno = EWOULDBLOCK;
+               sock_errset(EWOULDBLOCK);
 
        } else {
                sbiod->sbiod_sb->sb_trans_needs_write = 0;
@@ -672,7 +672,7 @@ sb_tls_bio_read( BIO *b, char *buf, int len )
 
        BIO_clear_retry_flags( b );
        if ( ret < 0 ) {
-               int err = errno;
+               int err = sock_errno();
                if ( err == EAGAIN || err == EWOULDBLOCK ) {
                        BIO_set_retry_read( b );
                }
@@ -699,7 +699,7 @@ sb_tls_bio_write( BIO *b, const char *buf, int len )
 
        BIO_clear_retry_flags( b );
        if ( ret < 0 ) {
-               int err = errno;
+               int err = sock_errno();
                if ( err == EAGAIN || err == EWOULDBLOCK ) {
                        BIO_set_retry_write( b );
                }