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 |