Subversion Repositories Kolibri OS

Rev

Rev 2390 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2390 Rev 2402
Line 12... Line 12...
12
;;          GNU GENERAL PUBLIC LICENSE                             ;;
12
;;          GNU GENERAL PUBLIC LICENSE                             ;;
13
;;             Version 2, June 1991                                ;;
13
;;             Version 2, June 1991                                ;;
14
;;                                                                 ;;
14
;;                                                                 ;;
15
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
15
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 16... Line 16...
16
 
16
 
Line 17... Line 17...
17
$Revision: 2390 $
17
$Revision: 2402 $
18
 
18
 
19
;-----------------------------------------------------------------
19
;-----------------------------------------------------------------
20
;
20
;
Line 141... Line 141...
141
        je      .drop_not_locked
141
        je      .drop_not_locked
Line 142... Line 142...
142
 
142
 
143
;----------------
143
;----------------
Line 144... Line 144...
144
; Lock the socket
144
; Lock the socket
145
 
-
 
146
        cmp     [ebx + SOCKET.lock], 0
-
 
147
        jne     .drop_not_locked     ;;; HACK ! HACK ! dirty fucking HACK !   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
145
 
148
 
-
 
149
        add     ebx, SOCKET.lock
146
        pusha
150
        DEBUGF  1,"lock: %x\n", [ebx]
147
        lea     ecx, [ebx + SOCKET.mutex]
Line 151... Line 148...
151
        call    wait_mutex
148
        call    mutex_lock
Line 152... Line 149...
152
        sub     ebx, SOCKET.lock
149
        popa
153
 
150
 
Line 169... Line 166...
169
        test    [ebx + SOCKET.options], SO_ACCEPTCON
166
        test    [ebx + SOCKET.options], SO_ACCEPTCON
170
        jz      .no_listening_socket
167
        jz      .no_listening_socket
Line 171... Line 168...
171
 
168
 
Line -... Line 169...
-
 
169
        DEBUGF  1,"Accepting new connection\n"
172
        DEBUGF  1,"Accepting new connection\n"
170
 
-
 
171
        pusha
-
 
172
        lea     ecx, [ebx + SOCKET.mutex]
-
 
173
        call    mutex_unlock
173
 
174
        popa
174
        mov     [ebx + SOCKET.lock], 0
175
 
175
        push    ecx edx esi edi         ;;;
176
        push    ecx edx esi edi         ;;;
Line 176... Line 177...
176
        call    SOCKET_fork
177
        call    SOCKET_fork
Line 373... Line 374...
373
 
374
 
374
; Stop retransmit timer
375
; Stop retransmit timer
Line 375... Line 376...
375
        mov     [ebx + TCP_SOCKET.timer_retransmission], 0
376
        mov     [ebx + TCP_SOCKET.timer_retransmission], 0
-
 
377
 
376
 
378
; Awaken waiting processes
-
 
379
        pusha
-
 
380
        lea     ecx, [ebx + SOCKET.mutex]
-
 
381
        call    mutex_unlock
377
; Awaken waiting processes
382
        popa
378
        mov     [ebx + SOCKET.lock], 0
383
 
Line 379... Line 384...
379
        mov     eax, ebx
384
        mov     eax, ebx
380
        call    SOCKET_notify_owner
385
        call    SOCKET_notify_owner
Line 1463... Line 1468...
1463
        call    TCP_output
1468
        call    TCP_output
1464
        pop     ebx
1469
        pop     ebx
Line 1465... Line 1470...
1465
 
1470
 
Line -... Line 1471...
-
 
1471
  .dumpit:
1466
  .dumpit:
1472
 
-
 
1473
        pusha
-
 
1474
        lea     ecx, [ebx + SOCKET.mutex]
Line 1467... Line 1475...
1467
 
1475
        call    mutex_unlock
1468
        mov     [ebx + SOCKET.lock], 0
1476
        popa
1469
 
1477
 
Line 1488... Line 1496...
1488
        test    [edx + TCP_header.Flags], TH_RST
1496
        test    [edx + TCP_header.Flags], TH_RST
1489
        jnz     .drop
1497
        jnz     .drop
Line 1490... Line 1498...
1490
 
1498
 
Line -... Line 1499...
-
 
1499
        and     [ebx + TCP_SOCKET.t_flags], TF_ACKNOW
1491
        and     [ebx + TCP_SOCKET.t_flags], TF_ACKNOW
1500
 
-
 
1501
        pusha
-
 
1502
        lea     ecx, [ebx + SOCKET.mutex]
Line 1492... Line 1503...
1492
 
1503
        call    mutex_unlock
1493
        mov     [ebx + SOCKET.lock], 0
1504
        popa
1494
 
1505
 
1495
        push    ebx
1506
        push    ebx
Line 1514... Line 1525...
1514
; Generate an RST, dropping incoming segment
1525
; Generate an RST, dropping incoming segment
Line 1515... Line 1526...
1515
 
1526
 
1516
align 4
1527
align 4
Line -... Line 1528...
-
 
1528
.drop_with_reset:
1517
.drop_with_reset:
1529
 
-
 
1530
        pusha
-
 
1531
        lea     ecx, [ebx + SOCKET.mutex]
Line 1518... Line 1532...
1518
 
1532
        call    mutex_unlock
Line 1519... Line 1533...
1519
        mov     [ebx + SOCKET.lock], 0
1533
        popa
Line 1566... Line 1580...
1566
; Drop
1580
; Drop
Line 1567... Line 1581...
1567
 
1581
 
1568
align 4
1582
align 4
Line -... Line 1583...
-
 
1583
.drop:
1569
.drop:
1584
 
-
 
1585
        pusha
-
 
1586
        lea     ecx, [ebx + SOCKET.mutex]
Line 1570... Line 1587...
1570
 
1587
        call    mutex_unlock
Line 1571... Line 1588...
1571
        mov     [ebx + SOCKET.lock], 0
1588
        popa