svn commit: samba r17990 - in branches/SAMBA_4_0/source/librpc/rpc: .

tridge at samba.org tridge at samba.org
Fri Sep 1 10:33:56 GMT 2006


Author: tridge
Date: 2006-09-01 10:33:55 +0000 (Fri, 01 Sep 2006)
New Revision: 17990

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17990

Log:

added timeout checking on dcerpc connection establishment. This should
fix the problem on some build farm hosts where we were waiting forever
for a connection to DRSUAPI to be made, so the next test will start.

Next is to try and work out why the connection is timing out on some
hosts. That is probably a server bug, but at least with this change we
can see it.

Modified:
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c	2006-09-01 07:28:25 UTC (rev 17989)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c	2006-09-01 10:33:55 UTC (rev 17990)
@@ -736,6 +736,18 @@
 
 
 /*
+  handle timeouts of a dcerpc connect
+*/
+static void dcerpc_connect_timeout_handler(struct event_context *ev, struct timed_event *te, 
+					   struct timeval t, void *private)
+{
+	struct composite_context *c = talloc_get_type(private, struct composite_context);
+	DEBUG(0,("DCERPC CONNECT TIMEOUT\n"));
+	composite_error(c, NT_STATUS_IO_TIMEOUT);
+	composite_done(c);
+}
+
+/*
   start a request to open a rpc connection to a rpc pipe, using
   specified binding structure to determine the endpoint and options
 */
@@ -748,9 +760,7 @@
 	struct composite_context *c;
 	struct pipe_connect_state *s;
 	struct event_context *new_ev = NULL;
-	struct composite_context *binding_req;
 
-
 	if (ev == NULL) {
 		new_ev = event_context_init(parent_ctx);
 		if (new_ev == NULL) return NULL;
@@ -777,12 +787,17 @@
 	s->binding      = binding;
 	s->table        = table;
 	s->credentials  = credentials;
+
+	event_add_timed(c->event_ctx, c,
+			timeval_current_ofs(DCERPC_REQUEST_TIMEOUT, 0),
+			dcerpc_connect_timeout_handler, c);
 	
 	switch (s->binding->transport) {
 	case NCACN_NP:
 	case NCACN_IP_TCP:
 	case NCALRPC:
 		if (!s->binding->endpoint) {
+			struct composite_context *binding_req;
 			binding_req = dcerpc_epm_map_binding_send(c, s->binding, s->table,
 								  s->pipe->conn->event_ctx);
 			composite_continue(c, binding_req, continue_map_binding, c);



More information about the samba-cvs mailing list