Subversion Repositories Kolibri OS

Rev

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