]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-sock/result.c
Merge remote branch 'origin/mdb.master'
[openldap] / servers / slapd / back-sock / result.c
index 537d5bc78e34506256205b448015042db79c50b7..07df15cced4226cefec456cf5cf69cb20f3cd5bf 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2007-2008 The OpenLDAP Foundation.
+ * Copyright 2007-2011 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -91,6 +91,13 @@ sock_read_and_send_results(
                        if ( strncasecmp( buf, "RESULT", 6 ) == 0 ) {
                                break;
                        }
+                       if ( strncasecmp( buf, "CONTINUE", 8 ) == 0 ) {
+                               struct sockinfo *si = (struct sockinfo *) op->o_bd->be_private;
+                               /* Only valid when operating as an overlay! */
+                               assert( si->si_ops != 0 );
+                               rs->sr_err = SLAP_CB_CONTINUE;
+                               goto skip;
+                       }
 
                        if ( (rs->sr_entry = str2entry( buf )) == NULL ) {
                                Debug( LDAP_DEBUG_ANY, "str2entry(%s) failed\n",
@@ -100,6 +107,7 @@ sock_read_and_send_results(
                                rs->sr_flags = REP_ENTRY_MODIFIABLE;
                                send_search_entry( op, rs );
                                entry_free( rs->sr_entry );
+                               rs->sr_attrs = NULL;
                        }
 
                        bp = buf;
@@ -112,7 +120,8 @@ sock_read_and_send_results(
                send_ldap_result( op, rs );
        }
 
-       free( buf );
+skip:
+       ch_free( buf );
 
        return( rs->sr_err );
 }
@@ -150,4 +159,7 @@ sock_print_conn(
        if( si->si_extensions & SOCK_EXT_SSF ) {
                fprintf( fp, "ssf: %d\n", conn->c_ssf );
        }
+       if( si->si_extensions & SOCK_EXT_CONNID ) {
+               fprintf( fp, "connid: %lu\n", conn->c_connid );
+       }
 }