forked from KolibriOS/kolibrios
FTPC: improved error handeling in wait_for_servercommand
git-svn-id: svn://kolibrios.org@9164 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
5736de5a6f
commit
261bcf35ff
@ -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 ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; ftpc.asm - FTP client for KolibriOS ;;
|
;; ftpc.asm - FTP client for KolibriOS ;;
|
||||||
@ -353,26 +353,36 @@ wait_for_servercommand: ;///////////////////////////////////////////////////////
|
|||||||
add ecx, esi
|
add ecx, esi
|
||||||
jmp .byteloop
|
jmp .byteloop
|
||||||
|
|
||||||
; receive socket data
|
; receive socket data with timeout
|
||||||
.receive:
|
.receive:
|
||||||
mcall 26, 9
|
mcall 26, 9
|
||||||
add eax, TIMEOUT*100
|
add eax, TIMEOUT*100
|
||||||
mov [timeout], eax
|
mov [timeout], eax
|
||||||
.receive_loop:
|
.again:
|
||||||
mcall 23, 50 ; Wait for event with timeout
|
mcall recv, [controlsocket], buf_buffer1, BUFFERSIZE, MSG_DONTWAIT
|
||||||
mcall 26, 9
|
cmp eax, 0
|
||||||
cmp eax, [timeout]
|
jg .got_data
|
||||||
jl @f
|
je .closed
|
||||||
mov eax, str_err_timeout
|
|
||||||
jmp error
|
|
||||||
@@: mcall recv, [controlsocket], buf_buffer1, BUFFERSIZE, MSG_DONTWAIT
|
|
||||||
test eax, eax
|
|
||||||
jnz .got_data
|
|
||||||
cmp ebx, EWOULDBLOCK
|
cmp ebx, EWOULDBLOCK
|
||||||
je @f
|
jne .sock_err
|
||||||
|
mcall 26, 9
|
||||||
|
mov ebx, [timeout]
|
||||||
|
sub ebx, eax
|
||||||
|
jle .timeout
|
||||||
|
mcall 23 ; Wait for event with timeout
|
||||||
|
jmp .again
|
||||||
|
|
||||||
|
.sock_err:
|
||||||
mov eax, str_err_recv
|
mov eax, str_err_recv
|
||||||
jmp error
|
jmp error
|
||||||
@@: jmp .receive_loop
|
|
||||||
|
.closed:
|
||||||
|
mov eax, str_err_closed
|
||||||
|
jmp error
|
||||||
|
|
||||||
|
.timeout:
|
||||||
|
mov eax, str_err_timeout
|
||||||
|
jmp error
|
||||||
|
|
||||||
.got_data:
|
.got_data:
|
||||||
mov [offset], 0
|
mov [offset], 0
|
||||||
@ -750,7 +760,7 @@ exit2:
|
|||||||
|
|
||||||
; data
|
; data
|
||||||
str_title db 'FTP client for KolibriOS',0
|
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
|
db 10,0
|
||||||
str_srv_addr db 'Please enter ftp server address.',10,0
|
str_srv_addr db 'Please enter ftp server address.',10,0
|
||||||
|
|
||||||
@ -758,6 +768,7 @@ str_prompt db '> ',0
|
|||||||
str_resolve db 'Resolving ',0
|
str_resolve db 'Resolving ',0
|
||||||
str_newline db 10,0
|
str_newline db 10,0
|
||||||
str_err_resolve db 10,'Name resolution failed.',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_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_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
|
str_err_listen db 10,'[75,3 listen]: Cannot accept incoming connections',10,0
|
||||||
|
Loading…
Reference in New Issue
Block a user