-/*
- forward a RPC call using IRPC to another task
+/**
+ * Forward a RPC call using IRPC to another task
*/
void dcesrv_irpc_forward_rpc_call(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
void *r, uint32_t callid,
const struct ndr_interface_table *ndr_table,
- const char *dest_task, const char *opname)
+ const char *dest_task, const char *opname,
+ uint32_t timeout)
{
struct dcesrv_forward_state *st;
struct dcerpc_binding_handle *binding_handle;
return;
}
+ /* reset timeout for the handle */
+ dcerpc_binding_handle_set_timeout(binding_handle, timeout);
+
/* forward the call */
subreq = dcerpc_binding_handle_call_send(st, dce_call->event_ctx,
binding_handle,
#include "libcli/security/security.h"
#include "auth/auth.h"
#include "param/param.h"
+#include "lib/messaging/irpc.h"
#define DRSUAPI_UNSUPPORTED(fname) do { \
DEBUG(1,(__location__ ": Unsupported DRS call %s\n", #fname)); \
dcesrv_irpc_forward_rpc_call(dce_call, mem_ctx, r, NDR_DRSUAPI_DSREPLICASYNC,
&ndr_table_drsuapi,
- "dreplsrv", "DsReplicaSync");
+ "dreplsrv", "DsReplicaSync",
+ IRPC_CALL_TIMEOUT);
return WERR_OK;
}
}
dcesrv_irpc_forward_rpc_call(dce_call, mem_ctx, r, NDR_DRSUAPI_DSEXECUTEKCC,
- &ndr_table_drsuapi, "kccsrv", "DsExecuteKCC");
+ &ndr_table_drsuapi, "kccsrv", "DsExecuteKCC",
+ IRPC_CALL_TIMEOUT);
return WERR_OK;
}
}
dcesrv_irpc_forward_rpc_call(dce_call, mem_ctx, r, NDR_DRSUAPI_DSREPLICAGETINFO,
- &ndr_table_drsuapi, "kccsrv", "DsReplicaGetInfo");
+ &ndr_table_drsuapi, "kccsrv", "DsReplicaGetInfo",
+ IRPC_CALL_TIMEOUT);
return WERR_OK;
}