More TCP advertised window size fixes, small updates regarding closing of TCP sockets.

git-svn-id: svn://kolibrios.org@8026 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
hidnplayr
2020-06-08 19:57:03 +00:00
parent 8ef9f2b1e7
commit d6b05dd5d5
3 changed files with 53 additions and 25 deletions

View File

@@ -185,9 +185,22 @@ tcp_disconnect:
cmp [eax + TCP_SOCKET.t_state], TCPS_ESTABLISHED
jb tcp_close ; Connection not yet synchronised, just get rid of the socket
; TODO: implement LINGER
test [eax + SOCKET.options], SO_LINGER
jz .nolinger
; TODO: implement LINGER
; cmp [eax + SOCKET.so_linger], 0
; je TCP_drop
.nolinger:
call socket_is_disconnecting
push eax
add eax, STREAM_SOCKET.rcv
mov ecx, [eax + RING_BUFFER.size]
call socket_ring_free
pop eax
call tcp_usrclosed
test eax, eax
@@ -311,7 +324,7 @@ tcp_respond:
cmp eax, TCP_max_win
jbe .lessthanmax
mov eax, TCP_max_win
.lessthanmax:
.lessthanmax:
mov cl, [esi + TCP_SOCKET.RCV_SCALE]
shr eax, cl