summaryrefslogtreecommitdiff
path: root/components/net
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2019-01-02 10:47:52 +0800
committerGitHub <[email protected]>2019-01-02 10:47:52 +0800
commit9556288e549e7ad23bb76f7a830223c130eef2c4 (patch)
tree4ecd5c1d6c725d75437a76739e0bd57f90d7bf34 /components/net
parent56f1a8af4f9e8bad0a0fdc5cea7112767267b243 (diff)
parent71c3c35c3c4fa7f27da491188f92df0d5cc9bd5f (diff)
Merge pull request #2103 from thomasonegd/master
fix socket nullptr bug
Diffstat (limited to 'components/net')
-rw-r--r--components/net/at/at_socket/at_socket.c40
1 files changed, 26 insertions, 14 deletions
diff --git a/components/net/at/at_socket/at_socket.c b/components/net/at/at_socket/at_socket.c
index 3925f0f57c..cccb35ae1a 100644
--- a/components/net/at/at_socket/at_socket.c
+++ b/components/net/at/at_socket/at_socket.c
@@ -572,10 +572,16 @@ __exit:
if (result < 0)
{
- at_do_event_changes(sock, AT_EVENT_ERROR, RT_TRUE);
+ if (sock != RT_NULL)
+ {
+ at_do_event_changes(sock, AT_EVENT_ERROR, RT_TRUE);
+ }
}
- at_do_event_changes(sock, AT_EVENT_SEND, RT_TRUE);
+ if (sock)
+ {
+ at_do_event_changes(sock, AT_EVENT_SEND, RT_TRUE);
+ }
return result;
}
@@ -699,24 +705,27 @@ int at_recvfrom(int socket, void *mem, size_t len, int flags, struct sockaddr *f
__exit:
- if (recv_len > 0)
+ if (sock != RT_NULL)
{
- result = recv_len;
- at_do_event_changes(sock, AT_EVENT_RECV, RT_FALSE);
- errno = 0;
- if (!rt_slist_isempty(&sock->recvpkt_list))
+ if (recv_len > 0)
{
- at_do_event_changes(sock, AT_EVENT_RECV, RT_TRUE);
+ result = recv_len;
+ at_do_event_changes(sock, AT_EVENT_RECV, RT_FALSE);
+ errno = 0;
+ if (!rt_slist_isempty(&sock->recvpkt_list))
+ {
+ at_do_event_changes(sock, AT_EVENT_RECV, RT_TRUE);
+ }
+ else
+ {
+ at_do_event_clean(sock, AT_EVENT_RECV);
+ }
}
else
{
- at_do_event_clean(sock, AT_EVENT_RECV);
+ at_do_event_changes(sock, AT_EVENT_ERROR, RT_TRUE);
}
}
- else
- {
- at_do_event_changes(sock, AT_EVENT_ERROR, RT_TRUE);
- }
return result;
}
@@ -807,7 +816,10 @@ __exit:
if (result < 0)
{
- at_do_event_changes(sock, AT_EVENT_ERROR, RT_TRUE);
+ if (sock != RT_NULL)
+ {
+ at_do_event_changes(sock, AT_EVENT_ERROR, RT_TRUE);
+ }
}
else
{