[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Thu Mar 25 14:27:14 MDT 2010


The branch, master has been updated
       via  ef1c317... s4:libcli/wrepl: correctly remove the tstream_context when the connection is dead
      from  c2a6631... s4-smbtorture: fix include of proto header in main RAP test.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit ef1c3176c80a5d8533d590aacd0b5035ba589b17
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 25 17:58:19 2010 +0100

    s4:libcli/wrepl: correctly remove the tstream_context when the connection is dead
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 source4/libcli/wrepl/winsrepl.c |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/libcli/wrepl/winsrepl.c b/source4/libcli/wrepl/winsrepl.c
index 380c79a..ec7e379 100644
--- a/source4/libcli/wrepl/winsrepl.c
+++ b/source4/libcli/wrepl/winsrepl.c
@@ -413,6 +413,11 @@ static void wrepl_request_trigger(struct tevent_req *req,
 					    struct wrepl_request_state);
 	struct tevent_req *subreq;
 
+	if (state->caller.wrepl_socket->stream == NULL) {
+		tevent_req_nterror(req, NT_STATUS_INVALID_CONNECTION);
+		return;
+	}
+
 	if (DEBUGLVL(10)) {
 		DEBUG(10,("Sending WINS packet of length %u\n",
 			  (unsigned)state->req.blob.length));
@@ -445,10 +450,16 @@ static void wrepl_request_writev_done(struct tevent_req *subreq)
 	TALLOC_FREE(subreq);
 	if (ret == -1) {
 		NTSTATUS status = map_nt_error_from_unix(sys_errno);
+		TALLOC_FREE(state->caller.wrepl_socket->stream);
 		tevent_req_nterror(req, status);
 		return;
 	}
 
+	if (state->caller.wrepl_socket->stream == NULL) {
+		tevent_req_nterror(req, NT_STATUS_INVALID_CONNECTION);
+		return;
+	}
+
 	if (state->ctrl.disconnect_after_send) {
 		subreq = tstream_disconnect_send(state,
 						 state->caller.ev,
@@ -490,12 +501,13 @@ static void wrepl_request_disconnect_done(struct tevent_req *subreq)
 	TALLOC_FREE(subreq);
 	if (ret == -1) {
 		NTSTATUS status = map_nt_error_from_unix(sys_errno);
+		TALLOC_FREE(state->caller.wrepl_socket->stream);
 		tevent_req_nterror(req, status);
 		return;
 	}
 
 	DEBUG(10,("WINS connection disconnected\n"));
-	state->caller.wrepl_socket->stream = NULL;
+	TALLOC_FREE(state->caller.wrepl_socket->stream);
 
 	tevent_req_done(req);
 }
@@ -512,6 +524,7 @@ static void wrepl_request_read_pdu_done(struct tevent_req *subreq)
 
 	status = tstream_read_pdu_blob_recv(subreq, state, &state->rep.blob);
 	if (!NT_STATUS_IS_OK(status)) {
+		TALLOC_FREE(state->caller.wrepl_socket->stream);
 		tevent_req_nterror(req, status);
 		return;
 	}
@@ -554,6 +567,7 @@ NTSTATUS wrepl_request_recv(struct tevent_req *req,
 	NTSTATUS status;
 
 	if (tevent_req_is_nterror(req, &status)) {
+		TALLOC_FREE(state->caller.wrepl_socket->stream);
 		tevent_req_received(req);
 		return status;
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list