summaryrefslogtreecommitdiff
path: root/source4/rpc_server/dcerpc_server.h
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2013-07-09 16:38:59 +0200
committerStefan Metzmacher <metze@samba.org>2013-07-10 08:47:38 +0200
commite6a58d370403e818bc2cfb8389751b78adcc14fd (patch)
tree817900f69e04108d627ff43966411d99883b48b9 /source4/rpc_server/dcerpc_server.h
parent2505d48e4fbcd8a805a88ad0b05fb1a16a588197 (diff)
downloadsamba-e6a58d370403e818bc2cfb8389751b78adcc14fd.tar.gz
samba-e6a58d370403e818bc2cfb8389751b78adcc14fd.tar.bz2
samba-e6a58d370403e818bc2cfb8389751b78adcc14fd.zip
s4:rpc_server: make sure we don't terminate a connection with pending requests (bug #9820)
Sadly we may have nested event loops, which won't work correctly with broken connections, that's why we have to do this... Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Autobuild-User(master): Stefan Metzmacher <metze@samba.org> Autobuild-Date(master): Wed Jul 10 08:47:38 CEST 2013 on sn-devel-104
Diffstat (limited to 'source4/rpc_server/dcerpc_server.h')
-rw-r--r--source4/rpc_server/dcerpc_server.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/source4/rpc_server/dcerpc_server.h b/source4/rpc_server/dcerpc_server.h
index 4fcb5c50a1..66fe51e17f 100644
--- a/source4/rpc_server/dcerpc_server.h
+++ b/source4/rpc_server/dcerpc_server.h
@@ -170,6 +170,9 @@ struct dcesrv_connection_context {
/* the state associated with a dcerpc server connection */
struct dcesrv_connection {
+ /* for the broken_connections DLIST */
+ struct dcesrv_connection *prev, *next;
+
/* the top level context for this server */
struct dcesrv_context *dce_ctx;
@@ -208,7 +211,8 @@ struct dcesrv_connection {
/* the transport level session key */
DATA_BLOB transport_session_key;
- bool processing;
+ /* is this connection pending termination? If so, why? */
+ const char *terminate;
const char *packet_log_dir;
@@ -288,6 +292,8 @@ struct dcesrv_context {
struct loadparm_context *lp_ctx;
struct idr_context *assoc_groups_idr;
+
+ struct dcesrv_connection *broken_connections;
};
/* this structure is used by modules to determine the size of some critical types */