]> git.sur5r.net Git - openldap/blobdiff - servers/ldapd/request.c
Fix idl_firstid to return NOID when !(nids > 1) instead of when (nids == 1)
[openldap] / servers / ldapd / request.c
index 51b1d13fa1cd0eea104912e874f16068df081ab8..28dae68661e5e94060ce14ab2bf2e6ef5c85de14 100644 (file)
  * is provided ``as is'' without express or implied warranty.
  */
 
+#include "portable.h"
+
 #include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <sys/wait.h>
-#include <signal.h>
+
+#include <ac/signal.h>
+#include <ac/socket.h>
+#include <ac/string.h>
+#include <ac/syslog.h>
+#include <ac/time.h>
+#include <ac/wait.h>
+
 #include <quipu/commonarg.h>
 #include <quipu/ds_error.h>
 #include <quipu/dap2.h>
 #include <quipu/dua.h>
-#ifdef __hpux
-#include <syslog.h>
-#else
-#include <sys/syslog.h>
-#endif
+
 #include "lber.h"
+#include "../../libraries/liblber/lber-int.h"  /* get struct berelement */
 #include "ldap.h"
 #include "common.h"
 
-extern int     dosyslog;
-
 #ifdef PEPSY_DUMP
 #ifndef DEBUG
 #define DEBUG
@@ -72,11 +68,6 @@ client_request(
        BerElement      ber, *copyofber;
        struct msg      *m;
        static int      bound;
-       extern char     *bound_dn, *bound_pw;
-       struct PSAPaddr *psap_cpy();
-#ifdef COMPAT
-       extern int      ldap_compat;
-#endif
 
        Debug( LDAP_DEBUG_TRACE, "client_request%s\n",
            udp ? " udp" : "", 0, 0 );
@@ -86,13 +77,13 @@ client_request(
         * and then the actual request choice.
         */
 
-       ber_init( &ber, 0 );
+       ber_init_w_nullc( &ber, 0 );
        if ( (tag = ber_get_next( clientsb, &len, &ber )) == LBER_DEFAULT ) {
                Debug( LDAP_DEBUG_ANY, "ber_get_next failed\n", 0, 0, 0 );
                log_and_exit( 1 );
        }
 
-#ifdef CLDAP
+#ifdef LDAP_CONNECTIONLESS
        if ( udp && dosyslog ) {
                syslog( LOG_INFO, "UDP request from unknown (%s)",
                    inet_ntoa( ((struct sockaddr_in *)
@@ -105,7 +96,7 @@ client_request(
                trace_ber( tag, len, ber.ber_buf, stderr, 1, 1 );
 #endif
 
-#ifdef COMPAT
+#ifdef LDAP_COMPAT
        /*
         * This tag should be a normal SEQUENCE tag.  In release 2.0 this
         * tag is 0x10.  In the new stuff this is 0x30.  To distinguish
@@ -137,8 +128,8 @@ client_request(
                        ttag = ber_skip_tag( &tber, &tlen );
                        ttag = ber_peek_tag( &tber, &tlen );
 
-                       Debug( LDAP_DEBUG_ANY, "checking for 3.0 tag 0x%x\n",
-                           ttag, 0, 0 );
+                       Debug( LDAP_DEBUG_ANY, "checking for 3.0 tag 0x%lx\n",
+                              ttag, 0, 0 );
                        if ( ttag == LBER_SEQUENCE ) {
                                Debug( LDAP_DEBUG_ANY, "version 3.0 detected\n",
                                    0, 0, 0 );
@@ -159,7 +150,7 @@ client_request(
                return;
        }
 
-#ifdef CLDAP
+#ifdef LDAP_CONNECTIONLESS
        if ( udp ) {
                char    *logdn = NULL;
 
@@ -172,16 +163,16 @@ client_request(
                    free( logdn );
                }
        }
-#endif /* CLDAP */
+#endif /* LDAP_CONNECTIONLESS */
 
-#ifdef COMPAT30
+#ifdef LDAP_COMPAT30
        if ( ldap_compat == 30 )
                tag = ber_skip_tag( &ber, &len );
        else
 #endif
                tag = ber_peek_tag( &ber, &len );
        if ( !udp && bound == 0 && tag != LDAP_REQ_BIND
-#ifdef COMPAT20
+#ifdef LDAP_COMPAT20
            && tag != OLD_LDAP_REQ_BIND
 #endif
            ) {
@@ -191,7 +182,7 @@ client_request(
                return;
        }
 
-#ifdef CLDAP
+#ifdef LDAP_CONNECTIONLESS
        if (udp && tag != LDAP_REQ_SEARCH && tag != LDAP_REQ_ABANDON ) {
                send_ldap_result( clientsb, tag, msgid, LDAP_OPERATIONS_ERROR,
                    NULL, "Only search is supported over UDP/CLDAP" );
@@ -205,7 +196,7 @@ client_request(
                 * duplicate request: toss this one
                 */
                Debug( LDAP_DEBUG_TRACE,
-                   "client_request tossing dup request id %d from %s\n",
+                   "client_request tossing dup request id %ld from %s\n",
                    msgid, inet_ntoa( ((struct sockaddr_in *)
                    clientsb->sb_fromaddr)->sin_addr ), 0 );
                free( ber.ber_buf );
@@ -216,7 +207,7 @@ client_request(
        copyofber = ber_dup( &ber );
 
        m = add_msg( msgid, tag, copyofber, dsaconn, udp,
-#ifdef CLDAP
+#ifdef LDAP_CONNECTIONLESS
                (struct sockaddr *)clientsb->sb_fromaddr );
 #else
                NULL );
@@ -257,17 +248,17 @@ do_request(
        Debug( LDAP_DEBUG_TRACE, "do_request\n", 0, 0, 0 );
 
        switch ( m->m_msgtype ) {
-#ifdef COMPAT20
+#ifdef LDAP_COMPAT20
        case OLD_LDAP_REQ_BIND:
 #endif
        case LDAP_REQ_BIND:
                resp_required = do_bind( clientsb, m, ber, bound );
                break;
 
-#ifdef COMPAT20
+#ifdef LDAP_COMPAT20
        case OLD_LDAP_REQ_UNBIND:
 #endif
-#ifdef COMPAT30
+#ifdef LDAP_COMPAT30
        case LDAP_REQ_UNBIND_30:
 #endif
        case LDAP_REQ_UNBIND:
@@ -275,55 +266,55 @@ do_request(
                log_and_exit( 0 );
                break;
 
-#ifdef COMPAT20
+#ifdef LDAP_COMPAT20
        case OLD_LDAP_REQ_ADD:
 #endif
        case LDAP_REQ_ADD:
                resp_required = do_add( clientsb, m, ber );
                break;
 
-#ifdef COMPAT20
+#ifdef LDAP_COMPAT20
        case OLD_LDAP_REQ_DELETE:
 #endif
-#ifdef COMPAT30
+#ifdef LDAP_COMPAT30
        case LDAP_REQ_DELETE_30:
 #endif
        case LDAP_REQ_DELETE:
                resp_required = do_delete( clientsb, m, ber );
                break;
 
-#ifdef COMPAT20
+#ifdef LDAP_COMPAT20
        case OLD_LDAP_REQ_MODRDN:
 #endif
        case LDAP_REQ_MODRDN:
                resp_required = do_modrdn( clientsb, m, ber );
                break;
 
-#ifdef COMPAT20
+#ifdef LDAP_COMPAT20
        case OLD_LDAP_REQ_MODIFY:
 #endif
        case LDAP_REQ_MODIFY:
                resp_required = do_modify( clientsb, m, ber );
                break;
 
-#ifdef COMPAT20
+#ifdef LDAP_COMPAT20
        case OLD_LDAP_REQ_COMPARE:
 #endif
        case LDAP_REQ_COMPARE:
                resp_required = do_compare( clientsb, m, ber );
                break;
 
-#ifdef COMPAT20
+#ifdef LDAP_COMPAT20
        case OLD_LDAP_REQ_SEARCH:
 #endif
        case LDAP_REQ_SEARCH:
                resp_required = do_search( clientsb, m, ber );
                break;
 
-#ifdef COMPAT20
+#ifdef LDAP_COMPAT20
        case OLD_LDAP_REQ_ABANDON:
 #endif
-#ifdef COMPAT30
+#ifdef LDAP_COMPAT30
        case LDAP_REQ_ABANDON_30:
 #endif
        case LDAP_REQ_ABANDON: