From 61c7b67df9ba484c0e810c07c8da852edf1ef2fc Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 22 Sep 2010 14:24:03 +0200 Subject: s4:ldap_server: rewrite to socket layer to use tstream This should make our sasl and tls handling much more robust against partial sent pdus. metze Autobuild-User: Stefan Metzmacher Autobuild-Date: Fri Oct 8 11:55:26 UTC 2010 on sn-devel-104 --- source4/ldap_server/ldap_server.h | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) (limited to 'source4/ldap_server/ldap_server.h') diff --git a/source4/ldap_server/ldap_server.h b/source4/ldap_server/ldap_server.h index 980c02dc9e..4d5cae49fc 100644 --- a/source4/ldap_server/ldap_server.h +++ b/source4/ldap_server/ldap_server.h @@ -21,6 +21,7 @@ #include "libcli/ldap/libcli_ldap.h" #include "lib/socket/socket.h" #include "lib/stream/packet.h" +#include "system/network.h" struct ldapsrv_connection { struct loadparm_context *lp_ctx; @@ -32,26 +33,25 @@ struct ldapsrv_connection { struct ldb_context *ldb; struct { - struct socket_context *raw; - struct socket_context *tls; - struct socket_context *sasl; + struct tevent_queue *send_queue; + struct tstream_context *raw; + struct tstream_context *tls; + struct tstream_context *sasl; + struct tstream_context *active; } sockets; bool global_catalog; - struct packet_context *packet; - struct { int initial_timeout; int conn_idle_time; int max_page_size; int search_timeout; - - struct tevent_timer *ite; - struct tevent_timer *te; + struct timeval endtime; + const char *reason; } limits; - struct ldapsrv_packet_interfaces *packet_interface; + struct tevent_req *active_call; }; struct ldapsrv_call { @@ -61,18 +61,19 @@ struct ldapsrv_call { struct ldapsrv_reply *prev, *next; struct ldap_message *msg; } *replies; - packet_send_callback_fn_t send_callback; - void *send_private; + struct iovec out_iov; + + struct tevent_req *(*postprocess_send)(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + void *private_data); + NTSTATUS (*postprocess_recv)(struct tevent_req *req); + void *postprocess_private; }; struct ldapsrv_service { - struct tls_params *tls_params; + struct tstream_tls_params *tls_params; struct task_server *task; - struct ldapsrv_packet_interfaces { - struct ldapsrv_packet_interfaces *next, *prev; - struct packet_context *packet; - struct ldapsrv_service *service; - } *packet_interfaces; + struct tevent_queue *call_queue; }; #include "ldap_server/proto.h" -- cgit