From a81210e4a9e79d57d8e48a1f1eada88f22ad36c9 Mon Sep 17 00:00:00 2001 From: wollman Date: Wed, 19 Feb 1997 19:15:43 +0000 Subject: Make the operation of sonewconn1() a bit clearer by calling pru_attach() before putting the new connection on the connection queue. --- sys/kern/uipc_sockbuf.c | 19 +++++++------------ sys/kern/uipc_socket2.c | 19 +++++++------------ 2 files changed, 14 insertions(+), 24 deletions(-) (limited to 'sys/kern') diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c index 2d753dd7..a99b6bb 100644 --- a/sys/kern/uipc_sockbuf.c +++ b/sys/kern/uipc_sockbuf.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)uipc_socket2.c 8.1 (Berkeley) 6/10/93 - * $FreeBSD$ + * $Id$ */ #include @@ -222,6 +222,12 @@ sonewconn1(head, connstatus) so->so_timeo = head->so_timeo; so->so_pgid = head->so_pgid; (void) soreserve(so, head->so_snd.sb_hiwat, head->so_rcv.sb_hiwat); + + if ((*so->so_proto->pr_usrreqs->pru_attach)(so, 0)) { + (void) free((caddr_t)so, M_SOCKET); + return ((struct socket *)0); + } + if (connstatus) { TAILQ_INSERT_TAIL(&head->so_comp, so, so_list); so->so_state |= SS_COMP; @@ -231,17 +237,6 @@ sonewconn1(head, connstatus) head->so_incqlen++; } head->so_qlen++; - if ((*so->so_proto->pr_usrreqs->pru_attach)(so, 0)) { - if (so->so_state & SS_COMP) { - TAILQ_REMOVE(&head->so_comp, so, so_list); - } else { - TAILQ_REMOVE(&head->so_incomp, so, so_list); - head->so_incqlen--; - } - head->so_qlen--; - (void) free((caddr_t)so, M_SOCKET); - return ((struct socket *)0); - } if (connstatus) { sorwakeup(head); wakeup((caddr_t)&head->so_timeo); diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c index 2d753dd7..a99b6bb 100644 --- a/sys/kern/uipc_socket2.c +++ b/sys/kern/uipc_socket2.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)uipc_socket2.c 8.1 (Berkeley) 6/10/93 - * $FreeBSD$ + * $Id$ */ #include @@ -222,6 +222,12 @@ sonewconn1(head, connstatus) so->so_timeo = head->so_timeo; so->so_pgid = head->so_pgid; (void) soreserve(so, head->so_snd.sb_hiwat, head->so_rcv.sb_hiwat); + + if ((*so->so_proto->pr_usrreqs->pru_attach)(so, 0)) { + (void) free((caddr_t)so, M_SOCKET); + return ((struct socket *)0); + } + if (connstatus) { TAILQ_INSERT_TAIL(&head->so_comp, so, so_list); so->so_state |= SS_COMP; @@ -231,17 +237,6 @@ sonewconn1(head, connstatus) head->so_incqlen++; } head->so_qlen++; - if ((*so->so_proto->pr_usrreqs->pru_attach)(so, 0)) { - if (so->so_state & SS_COMP) { - TAILQ_REMOVE(&head->so_comp, so, so_list); - } else { - TAILQ_REMOVE(&head->so_incomp, so, so_list); - head->so_incqlen--; - } - head->so_qlen--; - (void) free((caddr_t)so, M_SOCKET); - return ((struct socket *)0); - } if (connstatus) { sorwakeup(head); wakeup((caddr_t)&head->so_timeo); -- cgit v1.1