@@ -1400,8 +1400,13 @@ int wolfSSH_SFTP_read(WOLFSSH* ssh)
14001400 ret = wolfSSH_SFTP_buffer_read (ssh , & state -> buffer ,
14011401 state -> buffer .sz );
14021402 if (ret < 0 ) {
1403- if (ssh -> error != WS_WANT_READ && ssh -> error != WS_WANT_WRITE )
1404- wolfSSH_SFTP_ClearState (ssh , STATE_ID_RECV );
1403+ if (NoticeError (ssh )) {
1404+ /* keep state for returning to */
1405+ ret = WS_FATAL_ERROR ;
1406+ }
1407+ else {
1408+ wolfSSH_SFTP_ClearState (ssh , STATE_ID_RECV );
1409+ }
14051410 return ret ;
14061411 }
14071412
@@ -7246,8 +7251,7 @@ int wolfSSH_SFTP_SendWritePacket(WOLFSSH* ssh, byte* handle, word32 handleSz,
72467251 /* send header and type specific data */
72477252 ret = wolfSSH_SFTP_buffer_send (ssh , & state -> buffer );
72487253 if (ret < 0 ) {
7249- if (ssh -> error == WS_WANT_READ ||
7250- ssh -> error == WS_WANT_WRITE ) {
7254+ if (NoticeError (ssh )) {
72517255 return WS_FATAL_ERROR ;
72527256 }
72537257 state -> state = STATE_SEND_WRITE_CLEANUP ;
@@ -7259,12 +7263,8 @@ int wolfSSH_SFTP_SendWritePacket(WOLFSSH* ssh, byte* handle, word32 handleSz,
72597263 case STATE_SEND_WRITE_SEND_BODY :
72607264 WLOG (WS_LOG_SFTP , "SFTP SEND_WRITE STATE: SEND_BODY" );
72617265 state -> sentSz = wolfSSH_stream_send (ssh , in , inSz );
7262- if (state -> sentSz == WS_WINDOW_FULL ||
7263- state -> sentSz == WS_REKEYING ||
7264- state -> sentSz == WS_WANT_READ ||
7265- state -> sentSz == WS_WANT_WRITE ) {
7266- ret = wolfSSH_worker (ssh , NULL );
7267- continue ; /* skip past rest and send more */
7266+ if (NoticeError (ssh )) {
7267+ return WS_FATAL_ERROR ;
72687268 }
72697269 if (state -> sentSz <= 0 ) {
72707270 ssh -> error = state -> sentSz ;
@@ -7290,8 +7290,7 @@ int wolfSSH_SFTP_SendWritePacket(WOLFSSH* ssh, byte* handle, word32 handleSz,
72907290 state -> maxSz = SFTP_GetHeader (ssh , & state -> reqId , & type ,
72917291 & state -> buffer );
72927292 if (state -> maxSz <= 0 ) {
7293- if (ssh -> error == WS_WANT_READ ||
7294- ssh -> error == WS_WANT_WRITE ) {
7293+ if (NoticeError (ssh )) {
72957294 return WS_FATAL_ERROR ;
72967295 }
72977296 ssh -> error = WS_SFTP_BAD_HEADER ;
@@ -8954,10 +8953,9 @@ int wolfSSH_SFTP_Put(WOLFSSH* ssh, char* from, char* to, byte resume,
89548953 state -> handle , state -> handleSz , state -> pOfst ,
89558954 state -> r , state -> rSz );
89568955 if (sz <= 0 ) {
8957- if (ssh -> error == WS_WANT_READ ||
8958- ssh -> error == WS_WANT_WRITE ||
8959- ssh -> error == WS_WINDOW_FULL )
8956+ if (NoticeError (ssh )) {
89608957 return WS_FATAL_ERROR ;
8958+ }
89618959 }
89628960 else {
89638961 AddAssign64 (state -> pOfst , sz );
0 commit comments