SOCKET_is_disconnected now clears TCP and UDP ports.

git-svn-id: svn://kolibrios.org@3514 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
hidnplayr 2013-05-17 11:30:56 +00:00
parent 5f291d1d1c
commit a8351928d4
2 changed files with 16 additions and 2 deletions

View File

@ -2230,6 +2230,19 @@ SOCKET_is_disconnected:
and [eax + SOCKET.options], not (SS_ISCONNECTING + SS_ISCONNECTED + SS_ISDISCONNECTING)
or [eax + SOCKET.options], SS_CANTRCVMORE + SS_CANTSENDMORE
cmp [eax + SOCKET.Protocol], IP_PROTO_TCP
je .tcp
cmp [eax + SOCKET.Protocol], IP_PROTO_UDP
je .udp
jmp SOCKET_notify
.tcp:
.udp:
mov [eax + UDP_SOCKET.LocalPort], 0 ; UDP and TCP structs store localport at the same offset
mov [eax + UDP_SOCKET.RemotePort], 0
jmp SOCKET_notify

View File

@ -416,13 +416,14 @@ local .done
align 4
TCP_set_persist:
DEBUGF 1,"TCP_set_persist\n"
; First, check if retransmit timer is not set, retransmit and persist are mutually exclusive
cmp [eax + TCP_SOCKET.timer_retransmission], 0
jg @f
ja @f
; calculate RTO
push ebx
mov ebx, [eax + TCP_SOCKET.t_srtt]
shr ebx, 2