netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Per Liden <per.liden@ericsson.com>
To: David Miller <davem@davemloft.net>
Cc: netdev@vger.kernel.org, Allan Stephens <allan.stephens@windriver.com>
Subject: [PATCH 19/32] [TIPC] Stream socket send indicates partial success if data partially sent.
Date: Thu, 22 Jun 2006 15:59:32 +0200	[thread overview]
Message-ID: <1150984786178-git-send-email-per.liden@ericsson.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0606221233570.15853@ulinpc219.uab.ericsson.se>

From: Allan Stephens <allan.stephens@windriver.com>

Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Per Liden <per.liden@ericsson.com>
---
 net/tipc/socket.c |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 9c834fc..8cefacb 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -601,7 +601,8 @@ exit:
  * 
  * 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
  */
 
 
@@ -615,6 +616,7 @@ static int send_stream(struct kiocb *ioc
 	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))
@@ -637,11 +639,11 @@ static int send_stream(struct kiocb *ioc
 	 * 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;
@@ -652,16 +654,18 @@ static int send_stream(struct kiocb *ioc
 				? 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;
 }
 
 /**
-- 
1.4.0


  parent reply	other threads:[~2006-06-22 13:59 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-22 11:14 [PATCH 0/32] TIPC updates Per Liden
2006-06-22 13:59 ` [PATCH 1/32] [TIPC] Improved tolerance to promiscuous mode interface Per Liden
2006-06-22 13:59 ` [PATCH 2/32] [TIPC] Prevent name table corruption if no room for new publication Per Liden
2006-06-22 13:59 ` [PATCH 3/32] [TIPC] Use correct upper bound when validating network zone number Per Liden
2006-06-22 13:59 ` [PATCH 4/32] [TIPC] Corrected potential misuse of tipc_media_addr structure Per Liden
2006-06-22 13:59 ` [PATCH 5/32] [TIPC] Allow ports to receive multicast messages through native API Per Liden
2006-06-22 13:59 ` [PATCH 6/32] [TIPC] Links now validate destination node specified by incoming messages Per Liden
2006-06-22 13:59 ` [PATCH 7/32] [TIPC] Multicast link failure now resets all links to "nacking" node Per Liden
2006-06-22 18:51   ` James Morris
2006-06-22 13:59 ` [PATCH 8/32] [TIPC] Allow compilation when CONFIG_TIPC_DEBUG is not set Per Liden
2006-06-22 13:59 ` [PATCH 9/32] [TIPC] Fix for NULL pointer dereference Per Liden
2006-06-22 13:59 ` [PATCH 10/32] [TIPC] Fixed privilege checking typo in dest_name_check() Per Liden
2006-06-22 13:59 ` [PATCH 11/32] [TIPC] Fix misleading comment in buf_discard() routine Per Liden
2006-06-22 13:59 ` [PATCH 12/32] [TIPC] Added support for MODULE_VERSION capability Per Liden
2006-06-22 13:59 ` [PATCH 13/32] [TIPC] Validate entire interface name when locating bearer to enable Per Liden
2006-06-22 13:59 ` [PATCH 14/32] [TIPC] Non-operation-affecting corrections to comments & function definitions Per Liden
2006-06-22 13:59 ` [PATCH 15/32] [TIPC] Fixed connect() to detect a dest address that is missing or too short Per Liden
2006-06-22 13:59 ` [PATCH 16/32] [TIPC] Implied connect now saves dest name for retrieval as ancillary data Per Liden
2006-06-22 13:59 ` [PATCH 17/32] [TIPC] Can now return destination name of form {0,x,y} via " Per Liden
2006-06-22 13:59 ` [PATCH 18/32] [TIPC] Connected send now checks socket state when retrying congested send Per Liden
2006-06-22 13:59 ` Per Liden [this message]
2006-06-22 13:59 ` [PATCH 20/32] [TIPC] Improved performance of error checking during socket creation Per Liden
2006-06-22 13:59 ` [PATCH 21/32] [TIPC] recvmsg() now returns TIPC ancillary data using correct level (SOL_TIPC) Per Liden
2006-06-22 13:59 ` [PATCH 22/32] [TIPC] Simplify code for returning partial success of stream send request Per Liden
2006-06-22 13:59 ` [PATCH 23/32] [TIPC] Optimized argument validation done by connect() Per Liden
2006-06-22 13:59 ` [PATCH 24/32] [TIPC] Withdrawing all names from nameless port now returns success, not error Per Liden
2006-06-22 13:59 ` [PATCH 25/32] [TIPC] Added missing warning for out-of-memory condition Per Liden
2006-06-22 13:59 ` [PATCH 26/32] [TIPC] Fixed memory leak in tipc_link_send() when destination is unreachable Per Liden
2006-06-22 13:59 ` [PATCH 27/32] [TIPC] Disallow config operations that aren't supported in certain modes Per Liden
2006-06-22 13:59 ` [PATCH 28/32] [TIPC] First phase of assert() cleanup Per Liden
2006-06-22 13:59 ` [PATCH 29/32] [TIPC] Enhanced & cleaned up system messages; fixed 2 obscure memory leaks Per Liden
2006-06-22 13:59 ` [PATCH 30/32] [TIPC] Fixed link switchover bugs Per Liden
2006-06-22 13:59 ` [PATCH 31/32] [TIPC] Get rid of dynamically allocated arrays in broadcast code Per Liden
2006-06-22 13:59 ` [PATCH 32/32] [TIPC] Fix incorrect correction to discovery timer frequency computation Per Liden
2006-06-26  6:54 ` [PATCH 0/32] TIPC updates David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1150984786178-git-send-email-per.liden@ericsson.com \
    --to=per.liden@ericsson.com \
    --cc=allan.stephens@windriver.com \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).