[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>
This commit is contained in:
Allan Stephens
2006-10-16 21:43:54 -07:00
committed by David S. Miller
parent 29ede244cc
commit eb5959c2bd

View File

@@ -2,7 +2,7 @@
* net/tipc/socket.c: TIPC socket API * net/tipc/socket.c: TIPC socket API
* *
* Copyright (c) 2001-2006, Ericsson AB * Copyright (c) 2001-2006, Ericsson AB
* Copyright (c) 2004-2005, Wind River Systems * Copyright (c) 2004-2006, Wind River Systems
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * 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; return -ENOTCONN;
} }
if (unlikely(m->msg_name))
return -EISCONN;
/* /*
* Send each iovec entry using one or more messages * 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; curr_iovlen = m->msg_iovlen;
my_msg.msg_iov = &my_iov; my_msg.msg_iov = &my_iov;
my_msg.msg_iovlen = 1; my_msg.msg_iovlen = 1;
my_msg.msg_flags = m->msg_flags;
my_msg.msg_name = NULL;
bytes_sent = 0; bytes_sent = 0;
while (curr_iovlen--) { while (curr_iovlen--) {