diff --git a/components/net/at/at_socket/at_socket.c b/components/net/at/at_socket/at_socket.c index 84325c15013ceed812270309d84341b4f0722d6e..80b86f81981fc1c773514275260eb8fcfdd6433e 100644 --- a/components/net/at/at_socket/at_socket.c +++ b/components/net/at/at_socket/at_socket.c @@ -715,7 +715,19 @@ __exit: } else { - at_do_event_changes(sock, AT_EVENT_ERROR, RT_TRUE); + /* try to read Legacy data */ + /* receive packet list last transmission of remaining data */ + rt_mutex_take(sock->recv_lock, RT_WAITING_FOREVER); + recv_len = at_recvpkt_get(&(sock->recvpkt_list), (char *)mem, len); + rt_mutex_release(sock->recv_lock); + if(recv_len<=0) + { + at_do_event_changes(sock, AT_EVENT_ERROR, RT_TRUE); + } + else + { + result = recv_len; + } } return result;