diff --git a/kernel/branches/net/network/socket.inc b/kernel/branches/net/network/socket.inc index 10b07aa275..829e0563ad 100644 --- a/kernel/branches/net/network/socket.inc +++ b/kernel/branches/net/network/socket.inc @@ -513,6 +513,8 @@ align 4 pop [eax + TCP_SOCKET.ISS] mov [eax + TCP_SOCKET.timer_keepalive], TCP_time_keep_init + mov [eax + TCP_SOCKET.t_maxseg], 1480 ;;;;; + TCP_sendseqinit eax ; mov [ebx + TCP_SOCKET.timer_retransmission], ;; todo: create macro to set retransmission timer diff --git a/kernel/branches/net/network/tcp_output.inc b/kernel/branches/net/network/tcp_output.inc index 96270b0c85..d7804f8616 100644 --- a/kernel/branches/net/network/tcp_output.inc +++ b/kernel/branches/net/network/tcp_output.inc @@ -88,7 +88,7 @@ TCP_output: ; If FIN has been set, but not ACKed, but we havent been called to retransmit, esi will be -1 ; Otherwise, window shrank after we sent into it. - jnc .bigger_than_zero + jns .not_negative ; enter persist state xor esi, esi @@ -108,7 +108,7 @@ TCP_output: ; If window didn't close completely, just wait for an ACK - .bigger_than_zero: + .not_negative: ;--------------------------- ; Send one segment at a time (124) @@ -129,9 +129,7 @@ TCP_output: add edi, esi sub edi, [eax + TCP_SOCKET.SND_UNA] sub edi, [eax + STREAM_SOCKET.snd + RING_BUFFER.size] - - cmp edi, 0 - jge @f + jns @f and dl, not (TH_FIN)