patch-2.4.25 linux-2.4.25/net/ipv4/tcp.c
Next file: linux-2.4.25/net/ipv6/mcast.c
Previous file: linux-2.4.25/net/ipv4/netfilter/ipt_state.c
Back to the patch index
Back to the overall index
- Lines: 46
- Date:
2004-02-18 05:36:32.000000000 -0800
- Orig file:
linux-2.4.24/net/ipv4/tcp.c
- Orig date:
2003-08-25 04:44:44.000000000 -0700
diff -urN linux-2.4.24/net/ipv4/tcp.c linux-2.4.25/net/ipv4/tcp.c
@@ -1505,19 +1505,14 @@
struct sk_buff * skb;
u32 offset;
- /* Are we at urgent data? Stop if we have read anything. */
- if (copied && tp->urg_data && tp->urg_seq == *seq)
- break;
-
- /* We need to check signals first, to get correct SIGURG
- * handling. FIXME: Need to check this doesn't impact 1003.1g
- * and move it down to the bottom of the loop
- */
- if (signal_pending(current)) {
+ /* Are we at urgent data? Stop if we have read anything or have SIGURG pending. */
+ if (tp->urg_data && tp->urg_seq == *seq) {
if (copied)
break;
- copied = timeo ? sock_intr_errno(timeo) : -EAGAIN;
- break;
+ if (signal_pending(current)) {
+ copied = timeo ? sock_intr_errno(timeo) : -EAGAIN;
+ break;
+ }
}
/* Next get a buffer. */
@@ -1556,6 +1551,7 @@
sk->state == TCP_CLOSE ||
(sk->shutdown & RCV_SHUTDOWN) ||
!timeo ||
+ signal_pending(current) ||
(flags & MSG_PEEK))
break;
} else {
@@ -1585,6 +1581,11 @@
copied = -EAGAIN;
break;
}
+
+ if (signal_pending(current)) {
+ copied = sock_intr_errno(timeo);
+ break;
+ }
}
cleanup_rbuf(sk, copied);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)