forked from KolibriOS/kolibrios
fix: reset connection by peer
git-svn-id: svn://kolibrios.org@1288 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
9162c6e06b
commit
2beb55bd3a
@ -2134,10 +2134,10 @@ e3c59x_boomerang_transmit:
|
||||
@@:
|
||||
; calculate
|
||||
mov ebx, ecx
|
||||
test byte [e3c59x_has_hwcksm], 0xff
|
||||
jz @f
|
||||
;;; or ebx, (1 shl 26) ; set AddTcpChecksum
|
||||
@@:
|
||||
;test byte [e3c59x_has_hwcksm], 0xff
|
||||
;jz @f
|
||||
;or ebx, (1 shl 26) ; set AddTcpChecksum
|
||||
;@@:
|
||||
or ebx, 0x8000 ; transmission complete notification
|
||||
or ecx, 0x80000000 ; last fragment
|
||||
; program DPD
|
||||
|
@ -584,6 +584,8 @@ local sockAddr dd ?
|
||||
je .destroy_tcb
|
||||
cmp [ebx + SOCKET.TCBState], TCB_SYN_SENT
|
||||
je .destroy_tcb
|
||||
cmp [ebx + SOCKET.TCBState], TCB_CLOSED
|
||||
je .destroy_tcb
|
||||
|
||||
; Now construct the response, and queue for sending by IP
|
||||
mov eax, EMPTY_QUEUE
|
||||
|
@ -888,7 +888,7 @@ proc stateTCB_ESTABLISHED stdcall, sockAddr:DWORD
|
||||
jne .exit
|
||||
|
||||
; Did we receive a FIN or RST?
|
||||
test [edx + 20 + TCP_PACKET.Flags], TH_FIN
|
||||
test [edx + 20 + TCP_PACKET.Flags], TH_FIN+TH_RST
|
||||
jz .check_ack
|
||||
|
||||
; It was a fin or reset.
|
||||
@ -922,6 +922,10 @@ proc stateTCB_ESTABLISHED stdcall, sockAddr:DWORD
|
||||
@@: ; Send an ACK to that fin, and enter closewait state
|
||||
|
||||
mov [ebx + SOCKET.TCBState], TCB_CLOSE_WAIT
|
||||
test [edx + 20 + TCP_PACKET.Flags], TH_RST
|
||||
je @f
|
||||
mov [ebx + SOCKET.TCBState], TCB_CLOSED
|
||||
@@:
|
||||
call signal_network_event
|
||||
lea esi, [ebx + SOCKET.RCV_NXT]
|
||||
mov eax, [esi] ; save original
|
||||
|
Loading…
Reference in New Issue
Block a user