Skip to content

Commit

Permalink
[TIPC]: Stream socket send indicates partial success if data partiall…
Browse files Browse the repository at this point in the history
…y sent.

Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Per Liden <per.liden@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Allan Stephens authored and David S. Miller committed Jun 26, 2006
1 parent bdd9478 commit 1303e8f
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions net/tipc/socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,8 @@ static int send_packet(struct kiocb *iocb, struct socket *sock,
*
* Used for SOCK_STREAM data.
*
* Returns the number of bytes sent on success, or errno otherwise
* Returns the number of bytes sent on success (or partial success),
* or errno if no data sent
*/


Expand All @@ -615,6 +616,7 @@ static int send_stream(struct kiocb *iocb, struct socket *sock,
char __user *curr_start;
int curr_left;
int bytes_to_send;
int bytes_sent;
int res;

if (likely(total_len <= TIPC_MAX_USER_MSG_SIZE))
Expand All @@ -637,11 +639,11 @@ static int send_stream(struct kiocb *iocb, struct socket *sock,
* of small iovec entries into send_packet().
*/

my_msg = *m;
curr_iov = my_msg.msg_iov;
curr_iovlen = my_msg.msg_iovlen;
curr_iov = m->msg_iov;
curr_iovlen = m->msg_iovlen;
my_msg.msg_iov = &my_iov;
my_msg.msg_iovlen = 1;
bytes_sent = 0;

while (curr_iovlen--) {
curr_start = curr_iov->iov_base;
Expand All @@ -652,16 +654,18 @@ static int send_stream(struct kiocb *iocb, struct socket *sock,
? curr_left : TIPC_MAX_USER_MSG_SIZE;
my_iov.iov_base = curr_start;
my_iov.iov_len = bytes_to_send;
if ((res = send_packet(iocb, sock, &my_msg, 0)) < 0)
return res;
if ((res = send_packet(iocb, sock, &my_msg, 0)) < 0) {
return bytes_sent ? bytes_sent : res;
}
curr_left -= bytes_to_send;
curr_start += bytes_to_send;
bytes_sent += bytes_to_send;
}

curr_iov++;
}

return total_len;
return bytes_sent;
}

/**
Expand Down

0 comments on commit 1303e8f

Please sign in to comment.