summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2022-10-13 10:17:25 +0200
committerJule Anger <janger@samba.org>2022-10-31 14:30:09 +0000
commitf7a84cffe9d9c61df7a7c5dd94e9caf3d18d9b3c (patch)
treec0638e04bb0f43681610105de702b37e071358fb /source4
parentbc16a8abe3f1446a0da7e672cdba469fcc8ef96a (diff)
downloadsamba-f7a84cffe9d9c61df7a7c5dd94e9caf3d18d9b3c.tar.gz
s4:ldap_server: let ldapsrv_call_writev_start use conn_idle_time to limit the time
If the client is not able to receive the results within connections idle time, then we should treat it as dead. It's value is 15 minutes (900 s) by default. In order to limit that further an admin can use 'socket options' and set TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL and/or TCP_USER_TIMEOUT to useful values. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15202 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org> Autobuild-User(master): Stefan Metzmacher <metze@samba.org> Autobuild-Date(master): Wed Oct 19 17:13:39 UTC 2022 on sn-devel-184 (cherry picked from commit eb2f3526032803f34c88ef1619a832a741f71910)
Diffstat (limited to 'source4')
-rw-r--r--source4/ldap_server/ldap_server.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/source4/ldap_server/ldap_server.c b/source4/ldap_server/ldap_server.c
index fbea5859756..4198caa451a 100644
--- a/source4/ldap_server/ldap_server.c
+++ b/source4/ldap_server/ldap_server.c
@@ -697,6 +697,7 @@ static void ldapsrv_call_writev_start(struct ldapsrv_call *call)
struct ldapsrv_connection *conn = call->conn;
struct ldapsrv_reply *reply = NULL;
struct tevent_req *subreq = NULL;
+ struct timeval endtime;
size_t length = 0;
size_t i;
@@ -781,6 +782,10 @@ static void ldapsrv_call_writev_start(struct ldapsrv_call *call)
ldapsrv_terminate_connection(conn, "stream_writev_queue_send failed");
return;
}
+ endtime = timeval_current_ofs(conn->limits.conn_idle_time, 0);
+ tevent_req_set_endtime(subreq,
+ conn->connection->event.ctx,
+ endtime);
tevent_req_set_callback(subreq, ldapsrv_call_writev_done, call);
}