You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.

===================================================================


ChangeSet@1.1422.1.10, 2003-11-13 04:28:29-02:00, acme@conectiva.com.br
  o NET: introduce sk_wait_error
  
  To have a common function and avoid tons of open coded implementations.


 include/net/sock.h |    2 +
 net/core/sock.c    |   58 ++++++++++++++++++++++++++++++-----------------------
 2 files changed, 35 insertions(+), 25 deletions(-)


diff -Nru a/include/net/sock.h b/include/net/sock.h
--- a/include/net/sock.h	Sat Nov 15 17:01:30 2003
+++ b/include/net/sock.h	Sat Nov 15 17:01:30 2003
@@ -407,6 +407,8 @@
 
 extern int __sk_wait_data(struct sock *sk, long *timeo);
 extern int sk_wait_data(struct sock *sk, long timeo);
+extern int __sk_wait_error(long timeo);
+extern int sk_wait_error(struct sock *sk, long timeo);
 
 /* IP protocol blocks we attach to sockets.
  * socket layer -> transport layer interface
diff -Nru a/net/core/sock.c b/net/core/sock.c
--- a/net/core/sock.c	Sat Nov 15 17:01:30 2003
+++ b/net/core/sock.c	Sat Nov 15 17:01:30 2003
@@ -747,9 +747,7 @@
 
 	clear_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags);
 	for (;;) {
-		if (!timeo)
-			break;
-		if (signal_pending(current))
+		if (__sk_wait_error(timeo))
 			break;
 		set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
 		prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
@@ -757,8 +755,6 @@
 			break;
 		if (sk->sk_shutdown & SEND_SHUTDOWN)
 			break;
-		if (sk->sk_err)
-			break;
 		timeo = schedule_timeout(timeo);
 	}
 	finish_wait(sk->sk_sleep, &wait);
@@ -834,19 +830,14 @@
 		}
 		set_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags);
 		set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
-		err = -EAGAIN;
-		if (!timeo)
+		err = __sk_wait_error(timeo);
+		if (err)
 			goto failure;
-		if (signal_pending(current))
-			goto interrupted;
 		timeo = sock_wait_for_wmem(sk, timeo);
 	}
 
 	skb_set_owner_w(skb, sk);
 	return skb;
-
-interrupted:
-	err = sock_intr_errno(timeo);
 failure:
 	*errcode = err;
 	return NULL;
@@ -926,28 +917,45 @@
 
 EXPORT_SYMBOL(__sk_wait_data);
 
+int __sk_wait_error(long timeo)
+{
+	int rc = 0;
+
+	if (!timeo)
+		rc = -EAGAIN;
+	else if (signal_pending(current))
+		rc = sock_intr_errno(timeo);
+	return rc;
+}
+
+EXPORT_SYMBOL(__sk_wait_error);
+
+int sk_wait_error(struct sock *sk, long timeo)
+{
+	int rc = 0;
+	/*
+	 * POSIX 1003.1g mandates this order.
+	 */
+	if (sk->sk_err)
+		rc = sock_error(sk);
+	else
+		rc = __sk_wait_error(timeo);
+	return rc;
+}
+
+EXPORT_SYMBOL(sk_wait_error);
+
 int sk_wait_data(struct sock *sk, long timeo)
 {
 	int rc;
 
 	while (1) {
-		/*
-		 * POSIX 1003.1g mandates this order.
-		 */
-		if (sk->sk_err) {
-			rc = sock_error(sk);
+		rc = sk_wait_error(sk, timeo);
+		if (rc)
 			break;
-		}
 		rc = 0;
 		if (sk->sk_shutdown & RCV_SHUTDOWN)
 			break;
-		rc = -EAGAIN;
-		if (!timeo)
-			break;
-		rc = sock_intr_errno(timeo);
-		if (signal_pending(current))
-			break;
-		rc = 0;
 		if (__sk_wait_data(sk, &timeo))
 			break;
 	}

===================================================================


This BitKeeper patch contains the following changesets:
1.1422.1.10
## Wrapped with gzip_uu ##


M'XL(  IXMC\  ^5676_;-A1]%G_%'?H29[-$4E^4 Q=-FZ SUC9&D@(=,,!@
M*,86;(D!1;L;YOWW7LEN$CMVC01[VFS!-,C#^W'N.89?P>=:VYXG5:G)*_C5
MU*[G*5-IY8J%])4I_1N+!Y?&X$$P,:4.&FQP,^5!I5V7^XG/""*&TJD)++2M
M>Q[SP_L=]]>=[GF7Y^\_?SB])*3?AW<368WUE7;0[Q-G[$+.\OJ-=).9J7QG
M9567VK6YE_?0):>4XSMF:4CC9,D2&J5+Q7+&9,1T3GDDDH@TI;W9+G\S2L@8
M"_$S8V+)HH0FY R8SR+.?5PHT#!@+& AT*C'18]G7<I[E,+.T/ SARXE;^'?
M;>,=46#@T_EU#XK*69//E89Z.OHJ"S?2UAJ+ 'RN#4SD0H,$S%*:"F[G%9:'
M7V25@UR8(L?*JAK,+9@[72$LUSD4Y=U,E[IRLL'6/OD-D E&R?!A-J3[S!<A
M5%+R^@ 31:5F\UPWT@EJHZ;^Y#$E6226429BNI0IE4Q(F2H>:Y6FN^G?$VXU
MXH2+9L2IH(?+:NXK8_4JB-JH*6YTPC(<$[\13 I]DZDT1('L+FE'J,?U<)IR
MUMK@:>V'_?!2^O88XT?TA8RR=$F%2.+6(?$3:S#Q_[!&JZ +Z-JO[8-2'^X8
MW@L,,XAH!ISH/YVV5=,.C$8;K1PA7V-P1:E-Y^0Q;A-5.SM7N(EUP'$]_04V
MKC5:VQ+E8:&]Q!![1+;7$&N%95$:M@H+^7,5%H;0Y?%_0&.K7X4MC6T1]P*!
MG:7HVI ,TI@#(YY7W,+1ML16,ND@-J$HQC,1IK@,1"AP\3P$0?^)+K]K:Q42
M]_"^B%;WH[1)F7&\+\@!49._B== +$H2Z GY@[0!?UJ?>EY[T#T_?7\Z^(3I
M]*S6T"#J8ES)V0A)S8MJ?*3FUB*AG?LK#66C9GA-SLH\%&RUFZ.)K#HA_V"Z
M\R_#B\OKT=7O']]>?-CFIM,4]#R[;3?D!<?$@V,87EP-O@!#Z?ML#"7J0SI=
M@YL4J Z;:^LWL&#5?CWMOL:4+:V/^UFGGW;63'P_W#N='S;[M-6S+(P@QMFM
M9[_*O-D[MKLY?*MP]AG.GC5+!.G#GT$UT6I:S\N^%%%(<R')-]ZL':AO"@  
 
