summaryrefslogtreecommitdiff
path: root/source4/rpc_server/dcerpc_server.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2008-12-16 11:25:29 +1100
committerAndrew Bartlett <abartlet@samba.org>2008-12-16 11:25:29 +1100
commit9057c2522adf8d17a07fd3c747d7fed06a523af6 (patch)
tree36c6d38984837d24ae604f6d9bc2ae794bd45640 /source4/rpc_server/dcerpc_server.c
parent530758dc2a6dd6dce083789b328e16e51ba6573d (diff)
downloadsamba-9057c2522adf8d17a07fd3c747d7fed06a523af6.tar.gz
samba-9057c2522adf8d17a07fd3c747d7fed06a523af6.tar.bz2
samba-9057c2522adf8d17a07fd3c747d7fed06a523af6.zip
A more-commented version of rpc_server crash fix, matching closer the
previous behaviour for the 'bad bind' case. (It is only close, not matching - Windows 2008 sends a different, non-zero, assoc_group_id each time) Andrew Bartlett
Diffstat (limited to 'source4/rpc_server/dcerpc_server.c')
-rw-r--r--source4/rpc_server/dcerpc_server.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c
index 5f055ae342..d27a8b90de 100644
--- a/source4/rpc_server/dcerpc_server.c
+++ b/source4/rpc_server/dcerpc_server.c
@@ -648,7 +648,20 @@ static NTSTATUS dcesrv_bind(struct dcesrv_call_state *call)
pkt.pfc_flags = DCERPC_PFC_FLAG_FIRST | DCERPC_PFC_FLAG_LAST | extra_flags;
pkt.u.bind_ack.max_xmit_frag = 0x2000;
pkt.u.bind_ack.max_recv_frag = 0x2000;
- pkt.u.bind_ack.assoc_group_id = iface?call->context->assoc_group_id:0;
+
+ /*
+ make it possible for iface->bind() to specify the assoc_group_id
+ This helps the openchange mapiproxy plugin to work correctly.
+
+ metze
+ */
+ if (call->context) {
+ pkt.u.bind_ack.assoc_group_id = call->context->assoc_group_id;
+ } else {
+ /* we better pick something - this chosen so as to send a non zero assoc_group_id (matching windows), it also matches samba3 */
+ pkt.u.bind_ack.assoc_group_id = SAMBA_ASSOC_GROUP;
+ }
+
if (iface) {
/* FIXME: Use pipe name as specified by endpoint instead of interface name */
pkt.u.bind_ack.secondary_address = talloc_asprintf(call, "\\PIPE\\%s", iface->name);