svn commit: samba r12917 - in branches/SAMBA_4_0/source: ldap_server libcli/ldap

idra at samba.org idra at samba.org
Fri Jan 13 22:48:09 GMT 2006


Author: idra
Date: 2006-01-13 22:48:08 +0000 (Fri, 13 Jan 2006)
New Revision: 12917

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

Log:

fix decoding of ldap controls
some more work on timeouts


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


Changeset:
Modified: branches/SAMBA_4_0/source/ldap_server/ldap_server.c
===================================================================
--- branches/SAMBA_4_0/source/ldap_server/ldap_server.c	2006-01-13 21:22:25 UTC (rev 12916)
+++ branches/SAMBA_4_0/source/ldap_server/ldap_server.c	2006-01-13 22:48:08 UTC (rev 12917)
@@ -224,6 +224,19 @@
 }
 
 /*
+ Idle timeout handler
+*/
+static void ldapsrv_conn_idle_timeout(struct event_context *ev,
+				      struct timed_event *te,
+				      struct timeval t,
+				      void *private)
+{
+	struct ldapsrv_connection *conn = talloc_get_type(private, struct ldapsrv_connection);
+
+	ldapsrv_terminate_connection(conn, "Timeout. No requests after bind");
+}
+
+/*
   called when a LDAP socket becomes readable
 */
 static void ldapsrv_recv(struct stream_connection *c, uint16_t flags)
@@ -231,12 +244,22 @@
 	struct ldapsrv_connection *conn = 
 		talloc_get_type(c->private, struct ldapsrv_connection);
 
-	if (conn->limits.ite) {
+	if (conn->limits.ite) { /* clean initial timeout if any */
 		talloc_free(conn->limits.ite);
 		conn->limits.ite = NULL;
 	}
 
+	if (conn->limits.te) { /* clean idle timeout if any */
+		talloc_free(conn->limits.te);
+		conn->limits.te = NULL;
+	}
+
 	packet_recv(conn->packet);
+
+	/* set idle timeout */
+	conn->limits.te = event_add_timed(c->event.ctx, conn, 
+					   timeval_current_ofs(conn->limits.conn_idle_time, 0),
+					   ldapsrv_conn_idle_timeout, conn);
 }
 
 /*

Modified: branches/SAMBA_4_0/source/ldap_server/ldap_server.h
===================================================================
--- branches/SAMBA_4_0/source/ldap_server/ldap_server.h	2006-01-13 21:22:25 UTC (rev 12916)
+++ branches/SAMBA_4_0/source/ldap_server/ldap_server.h	2006-01-13 22:48:08 UTC (rev 12917)
@@ -42,6 +42,7 @@
 		int search_timeout;
 		
 		struct timed_event *ite;
+		struct timed_event *te;
 	} limits;
 };
 

Modified: branches/SAMBA_4_0/source/libcli/ldap/ldap.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/ldap/ldap.c	2006-01-13 21:22:25 UTC (rev 12916)
+++ branches/SAMBA_4_0/source/libcli/ldap/ldap.c	2006-01-13 22:48:08 UTC (rev 12917)
@@ -1264,7 +1264,7 @@
 		asn1_start_tag(data, ASN1_CONTEXT(0));
 
 		for (i=0; asn1_peek_tag(data, ASN1_SEQUENCE(0)); i++) {
-			asn1_start_tag(data, ASN1_SEQUENCE(0));
+			/* asn1_start_tag(data, ASN1_SEQUENCE(0)); */
 
 			ctrl = talloc_realloc(msg, ctrl, struct ldap_Control *, i+2);
 			if (!ctrl) {



More information about the samba-cvs mailing list