svn commit: samba r10768 - in branches/SAMBA_4_0/source/smbd: .

metze at samba.org metze at samba.org
Thu Oct 6 14:44:38 GMT 2005


Author: metze
Date: 2005-10-06 14:44:37 +0000 (Thu, 06 Oct 2005)
New Revision: 10768

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

Log:
add a function to create a stream_connection from an already
existing socket connection, that's used for protocols
which switch the client/server roles inside a session

metze
Modified:
   branches/SAMBA_4_0/source/smbd/service_stream.c


Changeset:
Modified: branches/SAMBA_4_0/source/smbd/service_stream.c
===================================================================
--- branches/SAMBA_4_0/source/smbd/service_stream.c	2005-10-06 14:38:42 UTC (rev 10767)
+++ branches/SAMBA_4_0/source/smbd/service_stream.c	2005-10-06 14:44:37 UTC (rev 10768)
@@ -78,7 +78,40 @@
 	}
 }
 
+/*
+  this creates a stream_connection from an already existing connection,
+  used for protocols, where a client connection needs to switched into
+  a server connection
+*/
+NTSTATUS stream_new_connection_merge(struct event_context *ev,
+				     const struct model_ops *model_ops,
+				     struct socket_context *sock,
+				     const struct stream_server_ops *stream_ops,
+				     struct messaging_context *msg_ctx,
+				     void *private_data,
+				     struct stream_connection **_srv_conn)
+{
+	struct stream_connection *srv_conn;
 
+	srv_conn = talloc_zero(ev, struct stream_connection);
+	NT_STATUS_HAVE_NO_MEMORY(srv_conn);
+
+	talloc_steal(srv_conn, sock);
+
+	srv_conn->private       = private_data;
+	srv_conn->model_ops     = model_ops;
+	srv_conn->socket	= sock;
+	srv_conn->server_id	= 0;
+	srv_conn->ops           = stream_ops;
+	srv_conn->msg_ctx	= msg_ctx;
+	srv_conn->event.ctx	= ev;
+	srv_conn->event.fde	= event_add_fd(ev, srv_conn, socket_get_fd(sock),
+					       EVENT_FD_READ, 
+					       stream_io_handler, srv_conn);
+	*_srv_conn = srv_conn;
+	return NT_STATUS_OK;
+}
+
 /*
   called when a new socket connection has been established. This is called in the process
   context of the new process (if appropriate)



More information about the samba-cvs mailing list