Terminate sockets when process exits.

git-svn-id: svn://kolibrios.org@2849 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
hidnplayr 2012-07-09 10:06:17 +00:00
parent 9dbee8b546
commit dcc40f38fe

View File

@ -66,6 +66,8 @@
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
format binary as "mnt"
include 'macros.inc' include 'macros.inc'
include 'struct.inc' include 'struct.inc'
@ -2034,15 +2036,22 @@ sysfn_terminate: ; 18.2 = TERMINATE
push ecx push ecx
cmp ecx, 2 cmp ecx, 2
jb noprocessterminate jb noprocessterminate
mov edx, [TASK_COUNT]
cmp ecx, edx cmp ecx, [TASK_COUNT]
ja noprocessterminate ja noprocessterminate
mov eax, [TASK_COUNT]
shl ecx, 5 shl ecx, 5
mov eax, [TASK_COUNT]
mov edx, [ecx+CURRENT_TASK+TASKDATA.pid] mov edx, [ecx+CURRENT_TASK+TASKDATA.pid]
add ecx, CURRENT_TASK+TASKDATA.state
cmp byte [ecx], 9 cmp byte [ecx+CURRENT_TASK+TASKDATA.state], 9
jz noprocessterminate jz noprocessterminate
;--------------------------------------
; terminate all network sockets it used
pusha
mov eax, edx
call SOCKET_process_end
popa
;-------------------------------------- ;--------------------------------------
cmp [_display.select_cursor], 0 cmp [_display.select_cursor], 0
je .restore_end je .restore_end