along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "libcli/ldap/ldap.h"
+#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;
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 timed_event *ite;
- struct timed_event *te;
+ struct timeval endtime;
+ const char *reason;
} limits;
+
+ struct tevent_req *active_call;
};
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 tevent_queue *call_queue;
};
#include "ldap_server/proto.h"