Subversion Repositories Kolibri OS

Rev

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

Rev 3884 Rev 4020
Line 606... Line 606...
606
        call    TCP_output
606
        call    TCP_output
607
        pop     eax
607
        pop     eax
Line 608... Line 608...
608
 
608
 
609
  .block:
609
  .block:
610
        test    [eax + SOCKET.options], SO_NONBLOCK
610
        test    [eax + SOCKET.options], SO_NONBLOCK
Line 611... Line 611...
611
        jz      .loop
611
        jz      .waitforit
612
 
612
 
613
        mov     dword[esp+20], EWOULDBLOCK
613
        mov     dword[esp+20], EWOULDBLOCK
Line -... Line 614...
-
 
614
        mov     dword[esp+32], -1
-
 
615
        ret
-
 
616
 
-
 
617
  .waitforit:
-
 
618
        push    eax
614
        mov     dword[esp+32], -1
619
        stdcall timer_hs, 300, 0, .wake, eax            ; FIXME: make timeout a constant
615
        ret
620
        pop     eax
616
 
621
 
617
  .loop:
622
  .loop:
618
        cmp     [eax + TCP_SOCKET.t_state], TCPS_CLOSED
623
        cmp     [eax + SOCKET.errorcode], 0
619
        je      .fail
-
 
Line 620... Line 624...
620
        cmp     [eax + TCP_SOCKET.t_state], TCPS_ESTABLISHED
624
        jne     .fail
621
        je      .established
625
        cmp     [eax + TCP_SOCKET.t_state], TCPS_ESTABLISHED
Line -... Line 626...
-
 
626
        je      .established
-
 
627
 
-
 
628
        call    SOCKET_block
-
 
629
        jmp     .loop
-
 
630
 
-
 
631
  .wake:
622
        ja      .fail
632
        mov     eax, [esp+4]
623
 
633
        mov     [eax + SOCKET.errorcode], ETIMEDOUT
624
        call    SOCKET_block
634
        call    SOCKET_notify.unblock
625
        jmp     .loop
635
        ret     4
626
 
636