tcprwindow.c,v
来自「TCP-IP红宝书源代码」· C,V 代码 · 共 68 行
C,V
68 行
head 1.2;
access;
symbols;
locks
dls:1.2; strict;
comment @ * @;
1.2
date 97.09.21.19.29.52; author dls; state Dist;
branches;
next 1.1;
1.1
date 94.01.14.03.51.20; author dls; state v2e1;
branches;
next ;
desc
@@
1.2
log
@pre-3e code
@
text
@/* tcprwindow.c - tcprwindow */
#include <conf.h>
#include <kernel.h>
#include <network.h>
/*------------------------------------------------------------------------
* tcprwindow - do receive window processing for a TCB
*------------------------------------------------------------------------
*/
int tcprwindow(ptcb)
struct tcb *ptcb;
{
int window;
window = ptcb->tcb_rbsize - ptcb->tcb_rbcount;
if (ptcb->tcb_state < TCPS_ESTABLISHED)
return window;
/*
* Receiver-Side Silly Window Syndrome Avoidance:
* Never shrink an already-advertised window, but wait for at
* least 1/4 receiver buffer and 1 max-sized segment before
* opening a zero window.
*/
if (window*4 < ptcb->tcb_rbsize || window < ptcb->tcb_rmss)
window = 0;
window = max(window, ptcb->tcb_cwin - ptcb->tcb_rnext);
ptcb->tcb_cwin = ptcb->tcb_rnext + window;
return window;
}
@
1.1
log
@Initial revision
@
text
@@
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?