summaryrefslogtreecommitdiff
path: root/net/tipc/socket.c
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2006-10-16 21:43:54 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2006-10-18 19:55:15 -0700
commiteb5959c2bd290bf6c24ddf6d1f5ebcb496c54adb (patch)
tree57b7ce657f2304eeb4ad981cdbf7fcd8c7b6c8df /net/tipc/socket.c
parent29ede244cc4cfb11432a0bffd158ba09e7b2c167 (diff)
downloadlinux-3.10-eb5959c2bd290bf6c24ddf6d1f5ebcb496c54adb.tar.gz
linux-3.10-eb5959c2bd290bf6c24ddf6d1f5ebcb496c54adb.tar.bz2
linux-3.10-eb5959c2bd290bf6c24ddf6d1f5ebcb496c54adb.zip
[TIPC]: Stream socket can now send > 66000 bytes at a time
The stream socket send code was not initializing some required fields of the temporary msghdr structure it was utilizing; this is now fixed. A check has also been added to detect if a user illegally specifies a destination address when sending on an established stream connection. 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>
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r--net/tipc/socket.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index acfb852e7c9..ed900fe96bd 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -2,7 +2,7 @@
* net/tipc/socket.c: TIPC socket API
*
* Copyright (c) 2001-2006, Ericsson AB
- * Copyright (c) 2004-2005, Wind River Systems
+ * Copyright (c) 2004-2006, Wind River Systems
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -629,6 +629,9 @@ static int send_stream(struct kiocb *iocb, struct socket *sock,
return -ENOTCONN;
}
+ if (unlikely(m->msg_name))
+ return -EISCONN;
+
/*
* Send each iovec entry using one or more messages
*
@@ -641,6 +644,8 @@ static int send_stream(struct kiocb *iocb, struct socket *sock,
curr_iovlen = m->msg_iovlen;
my_msg.msg_iov = &my_iov;
my_msg.msg_iovlen = 1;
+ my_msg.msg_flags = m->msg_flags;
+ my_msg.msg_name = NULL;
bytes_sent = 0;
while (curr_iovlen--) {