--- 2.4.1/net/core/datagram.c Fri Feb 2 01:00:10 2001 +++ linux/net/core/datagram.c Fri Feb 2 01:06:59 2001 @@ -74,15 +74,15 @@ if (error) goto out; - if (!skb_queue_empty(&sk->receive_queue)) - goto ready; - + error = -ENOTCONN; /* Socket shut down? */ if (sk->shutdown & RCV_SHUTDOWN) goto out; + if (!skb_queue_empty(&sk->receive_queue)) + goto ready; + /* Sequenced packets can come disconnected. If so we report the problem */ - error = -ENOTCONN; if(connection_based(sk) && !(sk->state==TCP_ESTABLISHED || sk->state==TCP_LISTEN)) goto out;