- 论坛徽章:
- 1
|
大家好!
在阅读tcp_rcv_state_process函数中关于3次握手中local方收到client发来的最后一个ACK后,进入到如下的step 5:
5730 /* step 5: check the ACK field */
5731 if (th->ack) {
5732 int acceptable = tcp_ack(sk, skb, FLAG_SLOWPATH);
5733
5734 switch (sk->sk_state) {
5735 case TCP_SYN_RECV: /* for child sock */
5736 if (acceptable) {
5737 tp->copied_seq = tp->rcv_nxt;
5738 smp_mb();
5739 tcp_set_state(sk, TCP_ESTABLISHED);
5740 sk->sk_state_change(sk); /* call sock_def_wakeup */ ...
我的问题是这里为啥要调用sock_def_wakeup呢,此时作为被动打开的服务端怎么会有正在此套接字上有用户进程在操作而等待被唤醒继续进行呢?这到底是什么意思,望斑竹和各位前辈指教,谢谢! |
|