28
28
#include "net_utils.h"
29
29
#include "str_utils.h"
30
30
31
+ extern struct k_poll_signal mosh_signal ;
32
+
31
33
/* Maximum number of sockets takes into account AT command socket */
32
34
#define MAX_SOCKETS (CONFIG_POSIX_MAX_FDS - 1)
33
35
#define SOCK_SEND_BUFFER_SIZE_UDP 1200
@@ -695,6 +697,15 @@ static int sock_send(
695
697
{
696
698
int bytes ;
697
699
int dest_addr_len = 0 ;
700
+ int set , res ;
701
+
702
+ k_poll_signal_check (& mosh_signal , & set , & res );
703
+ if (set && res == MOSH_SIGNAL_KILL ) {
704
+ k_poll_signal_reset (& mosh_signal );
705
+ shell_error (shell_global ,
706
+ "KILL signal received - exiting" );
707
+ return - ECANCELED ;
708
+ }
698
709
699
710
if (log_data ) {
700
711
if (data_hex_format ) {
@@ -741,6 +752,7 @@ static void data_send_work_handler(struct k_work *item)
741
752
struct data_transfer_info * data_send_info_ptr =
742
753
CONTAINER_OF (item , struct data_transfer_info , work );
743
754
struct sock_info * socket_info = data_send_info_ptr -> parent ;
755
+ int ret ;
744
756
745
757
if (!socket_info -> in_use ) {
746
758
shell_print (
@@ -751,16 +763,17 @@ static void data_send_work_handler(struct k_work *item)
751
763
return ;
752
764
}
753
765
754
- sock_send (
766
+ ret = sock_send (
755
767
socket_info ,
756
768
socket_info -> send_buffer ,
757
769
socket_info -> send_buffer_size ,
758
770
true,
759
771
data_send_info_ptr -> data_format_hex );
760
772
761
- k_work_schedule (
762
- & socket_info -> send_info .work ,
763
- K_SECONDS (socket_info -> send_info .interval ));
773
+ if (ret != - ECANCELED ) {
774
+ k_work_schedule (& socket_info -> send_info .work ,
775
+ K_SECONDS (socket_info -> send_info .interval ));
776
+ }
764
777
}
765
778
766
779
static void sock_send_random_data_length (struct sock_info * socket_info )
@@ -779,6 +792,11 @@ static void sock_send_random_data_length(struct sock_info *socket_info)
779
792
bytes = sock_send (socket_info , socket_info -> send_buffer ,
780
793
strlen (socket_info -> send_buffer ), false, false);
781
794
795
+ if (bytes == - ECANCELED ) {
796
+ socket_info -> send_poll = false;
797
+ break ;
798
+ }
799
+
782
800
if (bytes < 0 ) {
783
801
/* Wait for socket to allow sending again */
784
802
socket_info -> send_poll = true;
0 commit comments