File tree Expand file tree Collapse file tree 1 file changed +17
-5
lines changed Expand file tree Collapse file tree 1 file changed +17
-5
lines changed Original file line number Diff line number Diff line change @@ -547,10 +547,16 @@ MODEM_CMD_DIRECT_DEFINE(on_cmd_ciprecvdata)
547547{
548548 struct esp_data * dev = CONTAINER_OF (data , struct esp_data ,
549549 cmd_handler_data );
550- struct esp_socket * sock = dev -> rx_sock ;
550+ struct esp_socket * sock ;
551551 int data_offset , data_len ;
552552 int err ;
553553
554+ sock = esp_socket_ref (dev -> rx_sock );
555+ if (!sock ) {
556+ LOG_ERR ("No rx_sock socket" );
557+ return - ENOTCONN ;
558+ }
559+
554560#if defined(CONFIG_WIFI_ESP_AT_CIPDINFO_USE )
555561 char raw_remote_ip [INET_ADDRSTRLEN + 3 ] = {0 };
556562 int port = 0 ;
@@ -563,10 +569,10 @@ MODEM_CMD_DIRECT_DEFINE(on_cmd_ciprecvdata)
563569#endif
564570 if (err ) {
565571 if (err == - EAGAIN ) {
566- return - EAGAIN ;
572+ goto socket_unref ;
567573 }
568574
569- return err ;
575+ goto socket_unref ;
570576 }
571577
572578#if defined(CONFIG_WIFI_ESP_AT_CIPDINFO_USE )
@@ -591,12 +597,18 @@ MODEM_CMD_DIRECT_DEFINE(on_cmd_ciprecvdata)
591597 if (net_addr_pton (AF_INET , remote_ip_addr , & recv_addr -> sin_addr ) < 0 ) {
592598 LOG_ERR ("Invalid src addr %s" , remote_ip_addr );
593599 err = - EIO ;
594- return err ;
600+ goto socket_unref ;
595601 }
596602#endif
597603 esp_socket_rx (sock , data -> rx_buf , data_offset , data_len );
598604
599- return data_offset + data_len ;
605+ err = data_offset + data_len ;
606+ goto socket_unref ;
607+
608+ socket_unref :
609+ esp_socket_unref (sock );
610+
611+ return err ;
600612}
601613
602614void esp_recvdata_work (struct k_work * work )
You can’t perform that action at this time.
0 commit comments