svn commit: samba r8407 - in branches/SAMBA_4_0/source/libcli/raw: .

tridge at samba.org tridge at samba.org
Wed Jul 13 03:01:27 GMT 2005


Author: tridge
Date: 2005-07-13 03:01:26 +0000 (Wed, 13 Jul 2005)
New Revision: 8407

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

Log:
fixed a bug left over from our old socket code. 

Thanks to lha for giving me a login on a netbsd machine to see this

Modified:
   branches/SAMBA_4_0/source/libcli/raw/clisocket.c
   branches/SAMBA_4_0/source/libcli/raw/clitransport.c


Changeset:
Modified: branches/SAMBA_4_0/source/libcli/raw/clisocket.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/raw/clisocket.c	2005-07-13 02:16:58 UTC (rev 8406)
+++ branches/SAMBA_4_0/source/libcli/raw/clisocket.c	2005-07-13 03:01:26 UTC (rev 8407)
@@ -273,48 +273,33 @@
 /****************************************************************************
  Write to socket. Return amount written.
 ****************************************************************************/
-ssize_t smbcli_sock_write(struct smbcli_socket *sock, const uint8_t *data, size_t len)
+NTSTATUS smbcli_sock_write(struct smbcli_socket *sock, const uint8_t *data, 
+			   size_t len, size_t *nsent)
 {
-	NTSTATUS status;
 	DATA_BLOB blob;
-	size_t nsent;
 
 	if (sock->sock == NULL) {
-		errno = EIO;
-		return -1;
+		return NT_STATUS_CONNECTION_DISCONNECTED;
 	}
 
 	blob.data = discard_const(data);
 	blob.length = len;
 
-	status = socket_send(sock->sock, &blob, &nsent, 0);
-	if (NT_STATUS_IS_ERR(status)) {
-		return -1;
-	}
-
-	return nsent;
+	return socket_send(sock->sock, &blob, nsent, 0);
 }
 
 
 /****************************************************************************
  Read from socket. return amount read
 ****************************************************************************/
-ssize_t smbcli_sock_read(struct smbcli_socket *sock, uint8_t *data, size_t len)
+NTSTATUS smbcli_sock_read(struct smbcli_socket *sock, uint8_t *data, 
+			  size_t len, size_t *nread)
 {
-	NTSTATUS status;
-	size_t nread;
-
 	if (sock->sock == NULL) {
-		errno = EIO;
-		return -1;
+		return NT_STATUS_CONNECTION_DISCONNECTED;
 	}
 
-	status = socket_recv(sock->sock, data, len, &nread, 0);
-	if (NT_STATUS_IS_ERR(status)) {
-		return -1;
-	}
-
-	return nread;
+	return socket_recv(sock->sock, data, len, nread, 0);
 }
 
 

Modified: branches/SAMBA_4_0/source/libcli/raw/clitransport.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/raw/clitransport.c	2005-07-13 02:16:58 UTC (rev 8406)
+++ branches/SAMBA_4_0/source/libcli/raw/clitransport.c	2005-07-13 03:01:26 UTC (rev 8407)
@@ -346,17 +346,19 @@
 {
 	while (transport->pending_send) {
 		struct smbcli_request *req = transport->pending_send;
-		ssize_t ret;
-		ret = smbcli_sock_write(transport->socket, req->out.buffer, req->out.size);
-		if (ret == -1) {
-			if (errno == EAGAIN || errno == EINTR) {
-				return;
-			}
+		NTSTATUS status;
+		size_t nwritten;
+
+		status = smbcli_sock_write(transport->socket, req->out.buffer, 
+					   req->out.size, &nwritten);
+		if (NT_STATUS_IS_ERR(status)) {
 			smbcli_transport_dead(transport);
+		}
+		if (!NT_STATUS_IS_OK(status)) {
 			return;
 		}
-		req->out.buffer += ret;
-		req->out.size -= ret;
+		req->out.buffer += nwritten;
+		req->out.size -= nwritten;
 		if (req->out.size == 0) {
 			DLIST_REMOVE(transport->pending_send, req);
 			if (req->one_way_request) {
@@ -529,17 +531,21 @@
 	   4 byte header, which tells us how much more is coming. Then
 	   we read the rest */
 	if (transport->recv_buffer.received < NBT_HDR_SIZE) {
-		ssize_t ret;
-		ret = smbcli_sock_read(transport->socket, 
-				    transport->recv_buffer.header + 
-				    transport->recv_buffer.received,
-				    NBT_HDR_SIZE - transport->recv_buffer.received);
-		if (ret == -1) {
+		NTSTATUS status;
+		size_t nread;
+		status = smbcli_sock_read(transport->socket, 
+					  transport->recv_buffer.header + 
+					  transport->recv_buffer.received,
+					  NBT_HDR_SIZE - transport->recv_buffer.received,
+					  &nread);
+		if (NT_STATUS_IS_ERR(status)) {
 			smbcli_transport_dead(transport);
+		}
+		if (!NT_STATUS_IS_OK(status)) {
 			return;
 		}
 
-		transport->recv_buffer.received += ret;
+		transport->recv_buffer.received += nread;
 
 		if (transport->recv_buffer.received == NBT_HDR_SIZE) {
 			/* we've got a full header */
@@ -555,17 +561,21 @@
 	}
 
 	if (transport->recv_buffer.received < transport->recv_buffer.req_size) {
-		ssize_t ret;
-		ret = smbcli_sock_read(transport->socket, 
-				    transport->recv_buffer.buffer + 
-				    transport->recv_buffer.received,
-				    transport->recv_buffer.req_size - 
-				    transport->recv_buffer.received);
-		if (ret == -1) {
+		NTSTATUS status;
+		size_t nread;
+		status = smbcli_sock_read(transport->socket, 
+					  transport->recv_buffer.buffer + 
+					  transport->recv_buffer.received,
+					  transport->recv_buffer.req_size - 
+					  transport->recv_buffer.received,
+					  &nread);
+		if (NT_STATUS_IS_ERR(status)) {
 			smbcli_transport_dead(transport);
+		}
+		if (!NT_STATUS_IS_OK(status)) {
 			return;
 		}
-		transport->recv_buffer.received += ret;
+		transport->recv_buffer.received += nread;
 	}
 
 	if (transport->recv_buffer.received != 0 &&



More information about the samba-cvs mailing list