diff options
author | Stefan Metzmacher <metze@samba.org> | 2013-07-09 16:38:59 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2013-07-10 08:47:38 +0200 |
commit | e6a58d370403e818bc2cfb8389751b78adcc14fd (patch) | |
tree | 817900f69e04108d627ff43966411d99883b48b9 /source4/rpc_server/dcerpc_server.h | |
parent | 2505d48e4fbcd8a805a88ad0b05fb1a16a588197 (diff) | |
download | samba-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.h | 8 |
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 */ |