Rev 3602 | Rev 3644 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3602 | Rev 3603 | ||
---|---|---|---|
Line 91... | Line 91... | ||
91 | @@: |
91 | @@: |
92 | inc ecx |
92 | inc ecx |
93 | jmp .no_force |
93 | jmp .no_force |
Line 94... | Line 94... | ||
94 | 94 | ||
95 | .no_zero_window: |
95 | .no_zero_window: |
96 | and [ebx + TCP_SOCKET.timer_flags], not timer_flag_persist |
96 | and [eax + TCP_SOCKET.timer_flags], not timer_flag_persist |
Line 97... | Line 97... | ||
97 | mov [eax + TCP_SOCKET.t_rxtshift], 0 |
97 | mov [eax + TCP_SOCKET.t_rxtshift], 0 |
Line 98... | Line 98... | ||
98 | 98 | ||
Line 123... | Line 123... | ||
123 | ; If window shrank to 0 |
123 | ; If window shrank to 0 |
124 | test ecx, ecx |
124 | test ecx, ecx |
125 | jnz @f |
125 | jnz @f |
Line 126... | Line 126... | ||
126 | 126 | ||
127 | ; cancel pending retransmit |
127 | ; cancel pending retransmit |
Line 128... | Line 128... | ||
128 | and [ebx + TCP_SOCKET.timer_flags], not timer_flag_retransmission |
128 | and [eax + TCP_SOCKET.timer_flags], not timer_flag_retransmission |
129 | 129 | ||
130 | ; pull SND_NXT back to (closed) window, We will enter persist state below. |
130 | ; pull SND_NXT back to (closed) window, We will enter persist state below. |
131 | push [eax + TCP_SOCKET.SND_UNA] |
131 | push [eax + TCP_SOCKET.SND_UNA] |
Line 266... | Line 266... | ||
266 | 266 | ||
Line 267... | Line 267... | ||
267 | .enter_persist: |
267 | .enter_persist: |
268 | 268 | ||
269 | cmp [eax + STREAM_SOCKET.snd.size], 0 ; Data ready to send? |
269 | cmp [eax + STREAM_SOCKET.snd.size], 0 ; Data ready to send? |
270 | jne @f |
270 | jne @f |
Line 271... | Line 271... | ||
271 | and [ebx + TCP_SOCKET.timer_flags], not timer_flag_retransmission |
271 | and [eax + TCP_SOCKET.timer_flags], not timer_flag_retransmission |
272 | jne @f |
272 | jne @f |
Line 273... | Line 273... | ||
273 | 273 | ||
Line 274... | Line 274... | ||
274 | test [ebx + TCP_SOCKET.timer_flags], timer_flag_persist ; Persist timer already expired? |
274 | test [eax + TCP_SOCKET.timer_flags], timer_flag_persist ; Persist timer already expired? |
Line 519... | Line 519... | ||
519 | cmp edx, [eax + TCP_SOCKET.SND_UNA] ; edx is still [eax + TCP_SOCKET.SND_NXT] |
519 | cmp edx, [eax + TCP_SOCKET.SND_UNA] ; edx is still [eax + TCP_SOCKET.SND_NXT] |
520 | je .retransmit_set |
520 | je .retransmit_set |
Line 521... | Line 521... | ||
521 | 521 | ||
522 | mov edx, [eax + TCP_SOCKET.t_rxtcur] |
522 | mov edx, [eax + TCP_SOCKET.t_rxtcur] |
523 | mov [eax + TCP_SOCKET.timer_retransmission], edx |
523 | mov [eax + TCP_SOCKET.timer_retransmission], edx |
Line 524... | Line 524... | ||
524 | or [ebx + TCP_SOCKET.timer_flags], timer_flag_retransmission |
524 | or [eax + TCP_SOCKET.timer_flags], timer_flag_retransmission |
525 | 525 | ||
526 | test [eax + TCP_SOCKET.timer_flags], timer_flag_persist |
526 | test [eax + TCP_SOCKET.timer_flags], timer_flag_persist |
527 | jz .retransmit_set |
527 | jz .retransmit_set |
Line 528... | Line 528... | ||
528 | and [ebx + TCP_SOCKET.timer_flags], not timer_flag_persist |
528 | and [eax + TCP_SOCKET.timer_flags], not timer_flag_persist |
Line 529... | Line 529... | ||
529 | mov [eax + TCP_SOCKET.t_rxtshift], 0 |
529 | mov [eax + TCP_SOCKET.t_rxtshift], 0 |