tcp.c (0e4b4992b8007c6b62ec143cbbb292f98813ca11) tcp.c (624d1164730d58a494cc5aa4afa37d02c41e83a7)
1/*
2 * INET An implementation of the TCP/IP protocol suite for the LINUX
3 * operating system. INET is implemented using the BSD Socket
4 * interface as the means of communication with the user level.
5 *
6 * Implementation of the Transmission Control Protocol(TCP).
7 *
8 * Version: $Id: tcp.c,v 1.216 2002/02/01 22:01:04 davem Exp $

--- 1058 unchanged lines hidden (view full) ---

1067 seq += used;
1068 copied += used;
1069 offset += used;
1070 }
1071 if (offset != skb->len)
1072 break;
1073 }
1074 if (skb->h.th->fin) {
1/*
2 * INET An implementation of the TCP/IP protocol suite for the LINUX
3 * operating system. INET is implemented using the BSD Socket
4 * interface as the means of communication with the user level.
5 *
6 * Implementation of the Transmission Control Protocol(TCP).
7 *
8 * Version: $Id: tcp.c,v 1.216 2002/02/01 22:01:04 davem Exp $

--- 1058 unchanged lines hidden (view full) ---

1067 seq += used;
1068 copied += used;
1069 offset += used;
1070 }
1071 if (offset != skb->len)
1072 break;
1073 }
1074 if (skb->h.th->fin) {
1075 sk_eat_skb(sk, skb);
1075 sk_eat_skb(sk, skb, 0);
1076 ++seq;
1077 break;
1078 }
1076 ++seq;
1077 break;
1078 }
1079 sk_eat_skb(sk, skb);
1079 sk_eat_skb(sk, skb, 0);
1080 if (!desc->count)
1081 break;
1082 }
1083 tp->copied_seq = seq;
1084
1085 tcp_rcv_space_adjust(sk);
1086
1087 /* Clean up data we have read: This will do ACK frames. */

--- 263 unchanged lines hidden (view full) ---

1351 tcp_fast_path_check(sk, tp);
1352 }
1353 if (used + offset < skb->len)
1354 continue;
1355
1356 if (skb->h.th->fin)
1357 goto found_fin_ok;
1358 if (!(flags & MSG_PEEK))
1080 if (!desc->count)
1081 break;
1082 }
1083 tp->copied_seq = seq;
1084
1085 tcp_rcv_space_adjust(sk);
1086
1087 /* Clean up data we have read: This will do ACK frames. */

--- 263 unchanged lines hidden (view full) ---

1351 tcp_fast_path_check(sk, tp);
1352 }
1353 if (used + offset < skb->len)
1354 continue;
1355
1356 if (skb->h.th->fin)
1357 goto found_fin_ok;
1358 if (!(flags & MSG_PEEK))
1359 sk_eat_skb(sk, skb);
1359 sk_eat_skb(sk, skb, 0);
1360 continue;
1361
1362 found_fin_ok:
1363 /* Process the FIN. */
1364 ++*seq;
1365 if (!(flags & MSG_PEEK))
1360 continue;
1361
1362 found_fin_ok:
1363 /* Process the FIN. */
1364 ++*seq;
1365 if (!(flags & MSG_PEEK))
1366 sk_eat_skb(sk, skb);
1366 sk_eat_skb(sk, skb, 0);
1367 break;
1368 } while (len > 0);
1369
1370 if (user_recv) {
1371 if (!skb_queue_empty(&tp->ucopy.prequeue)) {
1372 int chunk;
1373
1374 tp->ucopy.len = copied > 0 ? len : 0;

--- 820 unchanged lines hidden ---
1367 break;
1368 } while (len > 0);
1369
1370 if (user_recv) {
1371 if (!skb_queue_empty(&tp->ucopy.prequeue)) {
1372 int chunk;
1373
1374 tp->ucopy.len = copied > 0 ? len : 0;

--- 820 unchanged lines hidden ---