Skip to content

Commit

Permalink
[SCTP]: Return socket errors only if the receive queue is empty.
Browse files Browse the repository at this point in the history
This patch fixes an issue where it is possible to get valid data after
a ENOTCONN error. It returns socket errors only after data queued on
socket receive queue is consumed.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
nhorman authored and davem330 committed Dec 3, 2005
1 parent 1b0997f commit 6736dc3
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions net/sctp/socket.c
Expand Up @@ -4743,11 +4743,6 @@ static struct sk_buff *sctp_skb_recv_datagram(struct sock *sk, int flags,
struct sk_buff *skb;
long timeo;

/* Caller is allowed not to check sk->sk_err before calling. */
error = sock_error(sk);
if (error)
goto no_packet;

timeo = sock_rcvtimeo(sk, noblock);

SCTP_DEBUG_PRINTK("Timeout: timeo: %ld, MAX: %ld.\n",
Expand All @@ -4774,6 +4769,11 @@ static struct sk_buff *sctp_skb_recv_datagram(struct sock *sk, int flags,
if (skb)
return skb;

/* Caller is allowed not to check sk->sk_err before calling. */
error = sock_error(sk);
if (error)
goto no_packet;

if (sk->sk_shutdown & RCV_SHUTDOWN)
break;

Expand Down

0 comments on commit 6736dc3

Please sign in to comment.