File tree 2 files changed +11
-5
lines changed
2 files changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -43,6 +43,7 @@ const IUINT32 IKCP_THRESH_INIT = 2;
43
43
const IUINT32 IKCP_THRESH_MIN = 2 ;
44
44
const IUINT32 IKCP_PROBE_INIT = 7000 ; // 7 secs to probe window size
45
45
const IUINT32 IKCP_PROBE_LIMIT = 120000 ; // up to 120 secs to probe window
46
+ const IUINT32 IKCP_FASTACK_LIMIT = 5 ; // max times to trigger fastack
46
47
47
48
48
49
//---------------------------------------------------------------------
@@ -283,6 +284,7 @@ ikcpcb* ikcp_create(IUINT32 conv, void *user)
283
284
kcp -> logmask = 0 ;
284
285
kcp -> ssthresh = IKCP_THRESH_INIT ;
285
286
kcp -> fastresend = 0 ;
287
+ kcp -> fastlimit = IKCP_FASTACK_LIMIT ;
286
288
kcp -> nocwnd = 0 ;
287
289
kcp -> xmit = 0 ;
288
290
kcp -> dead_link = IKCP_DEADLINK ;
@@ -1062,11 +1064,14 @@ void ikcp_flush(ikcpcb *kcp)
1062
1064
lost = 1 ;
1063
1065
}
1064
1066
else if (segment -> fastack >= resent ) {
1065
- needsend = 1 ;
1066
- segment -> xmit ++ ;
1067
- segment -> fastack = 0 ;
1068
- segment -> resendts = current + segment -> rto ;
1069
- change ++ ;
1067
+ if ((int )segment -> xmit <= kcp -> fastlimit ||
1068
+ kcp -> fastlimit <= 0 ) {
1069
+ needsend = 1 ;
1070
+ segment -> xmit ++ ;
1071
+ segment -> fastack = 0 ;
1072
+ segment -> resendts = current + segment -> rto ;
1073
+ change ++ ;
1074
+ }
1070
1075
}
1071
1076
1072
1077
if (needsend ) {
Original file line number Diff line number Diff line change @@ -309,6 +309,7 @@ struct IKCPCB
309
309
void * user ;
310
310
char * buffer ;
311
311
int fastresend ;
312
+ int fastlimit ;
312
313
int nocwnd , stream ;
313
314
int logmask ;
314
315
int (* output )(const char * buf , int len , struct IKCPCB * kcp , void * user );
You can’t perform that action at this time.
0 commit comments