@@ -572,10 +572,16 @@ int at_connect(int socket, const struct sockaddr *name, socklen_t namelen)
572572
573573 if (result < 0 )
574574 {
575- at_do_event_changes (sock , AT_EVENT_ERROR , RT_TRUE );
575+ if (sock != RT_NULL )
576+ {
577+ at_do_event_changes (sock , AT_EVENT_ERROR , RT_TRUE );
578+ }
576579 }
577580
578- at_do_event_changes (sock , AT_EVENT_SEND , RT_TRUE );
581+ if (sock )
582+ {
583+ at_do_event_changes (sock , AT_EVENT_SEND , RT_TRUE );
584+ }
579585
580586 return result ;
581587}
@@ -699,24 +705,27 @@ int at_recvfrom(int socket, void *mem, size_t len, int flags, struct sockaddr *f
699705
700706__exit :
701707
702- if (recv_len > 0 )
708+ if (sock != RT_NULL )
703709 {
704- result = recv_len ;
705- at_do_event_changes (sock , AT_EVENT_RECV , RT_FALSE );
706- errno = 0 ;
707- if (!rt_slist_isempty (& sock -> recvpkt_list ))
710+ if (recv_len > 0 )
708711 {
709- at_do_event_changes (sock , AT_EVENT_RECV , RT_TRUE );
712+ result = recv_len ;
713+ at_do_event_changes (sock , AT_EVENT_RECV , RT_FALSE );
714+ errno = 0 ;
715+ if (!rt_slist_isempty (& sock -> recvpkt_list ))
716+ {
717+ at_do_event_changes (sock , AT_EVENT_RECV , RT_TRUE );
718+ }
719+ else
720+ {
721+ at_do_event_clean (sock , AT_EVENT_RECV );
722+ }
710723 }
711724 else
712725 {
713- at_do_event_clean (sock , AT_EVENT_RECV );
726+ at_do_event_changes (sock , AT_EVENT_ERROR , RT_TRUE );
714727 }
715728 }
716- else
717- {
718- at_do_event_changes (sock , AT_EVENT_ERROR , RT_TRUE );
719- }
720729
721730 return result ;
722731}
@@ -807,7 +816,10 @@ int at_sendto(int socket, const void *data, size_t size, int flags, const struct
807816
808817 if (result < 0 )
809818 {
810- at_do_event_changes (sock , AT_EVENT_ERROR , RT_TRUE );
819+ if (sock != RT_NULL )
820+ {
821+ at_do_event_changes (sock , AT_EVENT_ERROR , RT_TRUE );
822+ }
811823 }
812824 else
813825 {
0 commit comments