1,6 → 1,6 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;; ;; |
;; Copyright (C) KolibriOS team 2013-2018. All rights reserved. ;; |
;; Copyright (C) KolibriOS team 2013-2021. All rights reserved. ;; |
;; Distributed under terms of the GNU General Public License ;; |
;; ;; |
;; ftpc.asm - FTP client for KolibriOS ;; |
353,27 → 353,37 |
add ecx, esi |
jmp .byteloop |
|
; receive socket data |
; receive socket data with timeout |
.receive: |
mcall 26, 9 |
add eax, TIMEOUT*100 |
mov [timeout], eax |
.receive_loop: |
mcall 23, 50 ; Wait for event with timeout |
.again: |
mcall recv, [controlsocket], buf_buffer1, BUFFERSIZE, MSG_DONTWAIT |
cmp eax, 0 |
jg .got_data |
je .closed |
cmp ebx, EWOULDBLOCK |
jne .sock_err |
mcall 26, 9 |
cmp eax, [timeout] |
jl @f |
mov eax, str_err_timeout |
jmp error |
@@: mcall recv, [controlsocket], buf_buffer1, BUFFERSIZE, MSG_DONTWAIT |
test eax, eax |
jnz .got_data |
cmp ebx, EWOULDBLOCK |
je @f |
mov ebx, [timeout] |
sub ebx, eax |
jle .timeout |
mcall 23 ; Wait for event with timeout |
jmp .again |
|
.sock_err: |
mov eax, str_err_recv |
jmp error |
@@: jmp .receive_loop |
|
.closed: |
mov eax, str_err_closed |
jmp error |
|
.timeout: |
mov eax, str_err_timeout |
jmp error |
|
.got_data: |
mov [offset], 0 |
|
750,7 → 760,7 |
|
; data |
str_title db 'FTP client for KolibriOS',0 |
str_welcome db 'FTP client for KolibriOS v0.15b',10 |
str_welcome db 'FTP client for KolibriOS v0.16',10 |
db 10,0 |
str_srv_addr db 'Please enter ftp server address.',10,0 |
|
758,6 → 768,7 |
str_resolve db 'Resolving ',0 |
str_newline db 10,0 |
str_err_resolve db 10,'Name resolution failed.',10,0 |
str_err_closed db 10,'The connection was closed by the remote end',10,0 |
str_err_socket db 10,'[75,0 socket]: Error creating a socket',10,0 |
str_err_bind db 10,'[75,2 bind]: Error binding to socket',10,0 |
str_err_listen db 10,'[75,3 listen]: Cannot accept incoming connections',10,0 |