svn commit: samba r8408 - in branches/SAMBA_4_0/source/lib/socket: .

tridge at samba.org tridge at samba.org
Wed Jul 13 03:25:37 GMT 2005


Author: tridge
Date: 2005-07-13 03:25:36 +0000 (Wed, 13 Jul 2005)
New Revision: 8408

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

Log:
its quite common in our code to free up a connection when we get an
error, but sometimes a socket option may then happen on the NULL
socket. This has been handled by the individual libraries up to now,
but its cleaner to centralise it here

Modified:
   branches/SAMBA_4_0/source/lib/socket/socket.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/socket/socket.c
===================================================================
--- branches/SAMBA_4_0/source/lib/socket/socket.c	2005-07-13 03:01:26 UTC (rev 8407)
+++ branches/SAMBA_4_0/source/lib/socket/socket.c	2005-07-13 03:25:36 UTC (rev 8408)
@@ -98,6 +98,9 @@
 			const char *server_address, int server_port,
 			uint32_t flags)
 {
+	if (sock == NULL) {
+		return NT_STATUS_CONNECTION_DISCONNECTED;
+	}
 	if (sock->state != SOCKET_STATE_UNDEFINED) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
@@ -119,6 +122,9 @@
 
 NTSTATUS socket_listen(struct socket_context *sock, const char *my_address, int port, int queue_size, uint32_t flags)
 {
+	if (sock == NULL) {
+		return NT_STATUS_CONNECTION_DISCONNECTED;
+	}
 	if (sock->state != SOCKET_STATE_UNDEFINED) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
@@ -134,6 +140,9 @@
 {
 	NTSTATUS status;
 
+	if (sock == NULL) {
+		return NT_STATUS_CONNECTION_DISCONNECTED;
+	}
 	if (sock->type != SOCKET_TYPE_STREAM) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
@@ -158,6 +167,9 @@
 NTSTATUS socket_recv(struct socket_context *sock, void *buf, 
 		     size_t wantlen, size_t *nread, uint32_t flags)
 {
+	if (sock == NULL) {
+		return NT_STATUS_CONNECTION_DISCONNECTED;
+	}
 	if (sock->state != SOCKET_STATE_CLIENT_CONNECTED &&
 	    sock->state != SOCKET_STATE_SERVER_CONNECTED &&
 	    sock->type  != SOCKET_TYPE_DGRAM) {
@@ -183,6 +195,9 @@
 			 size_t wantlen, size_t *nread, uint32_t flags,
 			 const char **src_addr, int *src_port)
 {
+	if (sock == NULL) {
+		return NT_STATUS_CONNECTION_DISCONNECTED;
+	}
 	if (sock->type != SOCKET_TYPE_DGRAM) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
@@ -198,6 +213,9 @@
 NTSTATUS socket_send(struct socket_context *sock, 
 		     const DATA_BLOB *blob, size_t *sendlen, uint32_t flags)
 {
+	if (sock == NULL) {
+		return NT_STATUS_CONNECTION_DISCONNECTED;
+	}
 	if (sock->state != SOCKET_STATE_CLIENT_CONNECTED &&
 	    sock->state != SOCKET_STATE_SERVER_CONNECTED) {
 		return NT_STATUS_INVALID_PARAMETER;
@@ -225,6 +243,9 @@
 		       const DATA_BLOB *blob, size_t *sendlen, uint32_t flags,
 		       const char *dest_addr, int dest_port)
 {
+	if (sock == NULL) {
+		return NT_STATUS_CONNECTION_DISCONNECTED;
+	}
 	if (sock->type != SOCKET_TYPE_DGRAM) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
@@ -247,6 +268,9 @@
 */
 NTSTATUS socket_pending(struct socket_context *sock, size_t *npending)
 {
+	if (sock == NULL) {
+		return NT_STATUS_CONNECTION_DISCONNECTED;
+	}
 	if (!sock->ops->fn_pending) {
 		return NT_STATUS_NOT_IMPLEMENTED;
 	}
@@ -256,6 +280,9 @@
 
 NTSTATUS socket_set_option(struct socket_context *sock, const char *option, const char *val)
 {
+	if (sock == NULL) {
+		return NT_STATUS_CONNECTION_DISCONNECTED;
+	}
 	if (!sock->ops->fn_set_option) {
 		return NT_STATUS_NOT_IMPLEMENTED;
 	}



More information about the samba-cvs mailing list