diff --git a/ports/rtthread/HAL_TCP_rtthread.c b/ports/rtthread/HAL_TCP_rtthread.c index 9780c0f7be16a83447da4c17a162185575a7164d..bfde20f14b3b71c590df731023b5b73ae5fb2819 100644 --- a/ports/rtthread/HAL_TCP_rtthread.c +++ b/ports/rtthread/HAL_TCP_rtthread.c @@ -172,10 +172,20 @@ int32_t HAL_TCP_Read(_IN_ uintptr_t fd, _OU_ unsigned char *buf, _IN_ size_t len ret = recv(tcp_fd, buf + len_recv, len - len_recv, MSG_DONTWAIT); if (ret > 0) { len_recv += ret; - }else if (errno == EINTR || errno == EAGAIN){ + } + else if (0 == ret) + { + break; + } + else + { + if (errno == EINTR || errno == EAGAIN) + { + continue; + } printf("read fail,try again\n"); err_code = ERR_TCP_READ_FAILED; - continue; + break; } } while (len_recv < len);