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