patch-2.1.7 linux/net/core/datagram.c
Next file: linux/net/core/dev.c
Previous file: linux/init/main.c
Back to the patch index
Back to the overall index
- Lines: 74
- Date:
Wed Oct 30 19:52:11 1996
- Orig file:
v2.1.6/linux/net/core/datagram.c
- Orig date:
Tue Oct 29 19:58:49 1996
diff -u --recursive --new-file v2.1.6/linux/net/core/datagram.c linux/net/core/datagram.c
@@ -68,9 +68,7 @@
static inline int connection_based(struct sock *sk)
{
- if(sk->type==SOCK_SEQPACKET || sk->type==SOCK_STREAM)
- return 1;
- return 0;
+ return (sk->type==SOCK_SEQPACKET || sk->type==SOCK_STREAM);
}
/*
@@ -190,29 +188,26 @@
int datagram_select(struct sock *sk, int sel_type, select_table *wait)
{
- select_wait(sk->sleep, wait);
+ if (sk->err)
+ return 1;
switch(sel_type)
{
case SEL_IN:
- if (sk->err)
- return 1;
if (sk->shutdown & RCV_SHUTDOWN)
return 1;
if (connection_based(sk) && sk->state==TCP_CLOSE)
{
/* Connection closed: Wake up */
- return(1);
+ return 1;
}
- if (skb_peek(&sk->receive_queue) != NULL)
+ if (!skb_queue_empty(&sk->receive_queue))
{ /* This appears to be consistent
with other stacks */
- return(1);
+ return 1;
}
- return(0);
+ break;
case SEL_OUT:
- if (sk->err)
- return 1;
if (sk->shutdown & SEND_SHUTDOWN)
return 1;
if (connection_based(sk) && sk->state==TCP_SYN_SENT)
@@ -222,18 +217,19 @@
}
if (sk->prot && sock_wspace(sk) >= MIN_WRITE_SPACE)
{
- return(1);
+ return 1;
}
if (sk->prot==NULL && sk->sndbuf-sk->wmem_alloc >= MIN_WRITE_SPACE)
{
- return(1);
+ return 1;
}
- return(0);
+ break;
case SEL_EX:
- if (sk->err)
- return(1); /* Socket has gone into error state (eg icmp error) */
- return(0);
+ break;
}
- return(0);
+
+ /* select failed.. */
+ select_wait(sk->sleep, wait);
+ return 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov