Author: tridge
Date: 2005-06-21 06:08:40 +0000 (Tue, 21 Jun 2005)
New Revision: 7801

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=7801

Log:
the ldap server needs this logic too

Modified:
   branches/SAMBA_4_0/source/ldap_server/ldap_server.c
   branches/SAMBA_4_0/source/ldap_server/ldap_server.h


Changeset:
Modified: branches/SAMBA_4_0/source/ldap_server/ldap_server.c
===================================================================
--- branches/SAMBA_4_0/source/ldap_server/ldap_server.c 2005-06-21 06:03:11 UTC 
(rev 7800)
+++ branches/SAMBA_4_0/source/ldap_server/ldap_server.c 2005-06-21 06:08:40 UTC 
(rev 7801)
@@ -245,6 +245,11 @@
        NTSTATUS status;
        size_t npending, nread;
 
+       if (conn->processing) {
+               EVENT_FD_NOT_READABLE(c->event.fde);
+               return;
+       }
+
        /* work out how much data is pending */
        status = tls_socket_pending(conn->tls, &npending);
        if (!NT_STATUS_IS_OK(status)) {
@@ -279,12 +284,16 @@
        }
        conn->partial.length += nread;
 
+       conn->processing = True;
        /* see if we can decode what we have */
        if (conn->enable_wrap) {
                ldapsrv_try_decode_wrapped(conn);
        } else {
                ldapsrv_try_decode_plain(conn);
        }
+       conn->processing = False;
+
+       EVENT_FD_READABLE(c->event.fde);
 }
        
 /*
@@ -338,6 +347,7 @@
        conn->send_queue  = NULL;
        conn->connection  = c;
        conn->service     = talloc_get_type(c->private, struct ldapsrv_service);
+       conn->processing  = False;
        c->private        = conn;
 
        port = socket_get_my_port(c->socket);

Modified: branches/SAMBA_4_0/source/ldap_server/ldap_server.h
===================================================================
--- branches/SAMBA_4_0/source/ldap_server/ldap_server.h 2005-06-21 06:03:11 UTC 
(rev 7800)
+++ branches/SAMBA_4_0/source/ldap_server/ldap_server.h 2005-06-21 06:08:40 UTC 
(rev 7801)
@@ -39,6 +39,8 @@
                struct ldapsrv_send *next, *prev;
                DATA_BLOB data;
        } *send_queue;
+
+       BOOL processing;
 };
 
 struct ldapsrv_call {

Reply via email to