tcp(4) sockets are the only sockets which could have NULL `so_pcb' and
we handle this case within tcp_rcvd() handler.
Index: sys/kern/uipc_socket.c
===================================================================
RCS file: /cvs/src/sys/kern/uipc_socket.c,v
retrieving revision 1.285
diff -u -p -r1.285 uipc_socket.c
--- sys/kern/uipc_socket.c 26 Aug 2022 16:17:38 -0000 1.285
+++ sys/kern/uipc_socket.c 27 Aug 2022 20:32:50 -0000
@@ -1155,7 +1155,7 @@ dontblock:
}
SBLASTRECORDCHK(&so->so_rcv, "soreceive 4");
SBLASTMBUFCHK(&so->so_rcv, "soreceive 4");
- if (pr->pr_flags & PR_WANTRCVD && so->so_pcb)
+ if (pr->pr_flags & PR_WANTRCVD)
pru_rcvd(so);
}
if (orig_resid == uio->uio_resid && orig_resid &&
@@ -1520,7 +1520,7 @@ somove(struct socket *so, int wait)
m = m->m_next;
if (m == NULL) {
sbdroprecord(so, &so->so_rcv);
- if (so->so_proto->pr_flags & PR_WANTRCVD && so->so_pcb)
+ if (so->so_proto->pr_flags & PR_WANTRCVD)
pru_rcvd(so);
goto nextpkt;
}
@@ -1626,7 +1626,7 @@ somove(struct socket *so, int wait)
}
/* Send window update to source peer as receive buffer has changed. */
- if (so->so_proto->pr_flags & PR_WANTRCVD && so->so_pcb)
+ if (so->so_proto->pr_flags & PR_WANTRCVD)
pru_rcvd(so);
/* Receive buffer did shrink by len bytes, adjust oob. */