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) {
