Fix issue with monocoque not shutting down cleanly when used in standalone udp mode

This commit is contained in:
Paul Dino Jones 2026-03-18 11:48:43 -04:00
parent a7327625df
commit 361d73eba6
1 changed files with 4 additions and 3 deletions

View File

@ -520,7 +520,7 @@ static void on_udp_recv(uv_udp_t* handle, ssize_t nread, const uv_buf_t* rcvbuf,
int startudp(int port) int startudp(int port)
{ {
uv_udp_init(uv_default_loop(), &recv_socket);
struct sockaddr_in recv_addr; struct sockaddr_in recv_addr;
uv_ip4_addr("0.0.0.0", port, &recv_addr); uv_ip4_addr("0.0.0.0", port, &recv_addr);
int err = uv_udp_bind(&recv_socket, (const struct sockaddr *) &recv_addr, UV_UDP_REUSEADDR); int err = uv_udp_bind(&recv_socket, (const struct sockaddr *) &recv_addr, UV_UDP_REUSEADDR);
@ -574,7 +574,6 @@ void datacheckcallback(uv_timer_t* handle)
udpstart(f->ms, f, simdata, simmap); udpstart(f->ms, f, simdata, simmap);
uv_udp_recv_start(&recv_socket, on_alloc, on_udp_recv); uv_udp_recv_start(&recv_socket, on_alloc, on_udp_recv);
slogt("udp receive loop started"); slogt("udp receive loop started");
uv_timer_stop(handle);
} }
else else
{ {
@ -582,7 +581,6 @@ void datacheckcallback(uv_timer_t* handle)
slogd("starting telemetry mapping at %i fps (%i ms ticks)", f->ms->fps, interval); slogd("starting telemetry mapping at %i fps (%i ms ticks)", f->ms->fps, interval);
uv_timer_start(&datamaptimer, shmdatamapcallback, 2000, interval); uv_timer_start(&datamaptimer, shmdatamapcallback, 2000, interval);
} }
//uv_timer_start(&datachecktimer, datacheckcallback, 0, 3000);
} }
if(appstate == 2) if(appstate == 2)
{ {
@ -668,6 +666,8 @@ int monocoque_mainloop(MonocoqueSettings* ms)
{ {
return 1; return 1;
}; };
uv_udp_init(uv_default_loop(), &recv_socket);
uv_timer_init(uv_default_loop(), &datachecktimer); uv_timer_init(uv_default_loop(), &datachecktimer);
uv_timer_init(uv_default_loop(), &showstatstimer); uv_timer_init(uv_default_loop(), &showstatstimer);
uv_timer_init(uv_default_loop(), &datamaptimer); uv_timer_init(uv_default_loop(), &datamaptimer);
@ -703,6 +703,7 @@ int monocoque_mainloop(MonocoqueSettings* ms)
free(baton); free(baton);
free(simdata); free(simdata);
free(simmap);
return 0; return 0;
} }