fix: harden tcp bridge reconnect handling
This commit is contained in:
@@ -8,6 +8,8 @@
|
||||
#include "lwip/pbuf.h"
|
||||
#include "lwip/tcp.h"
|
||||
|
||||
#include "SEGGER_RTT.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
typedef struct {
|
||||
@@ -49,6 +51,7 @@ static err_t tcp_server_on_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p,
|
||||
}
|
||||
ctx->client_pcb = NULL;
|
||||
ctx->status.state = TCP_SERVER_STATE_LISTENING;
|
||||
SEGGER_RTT_WriteString(0, "TCP server peer disconnected\r\n");
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
@@ -85,6 +88,7 @@ static void tcp_server_on_err(void *arg, err_t err)
|
||||
ctx->client_pcb = NULL;
|
||||
ctx->status.state = TCP_SERVER_STATE_LISTENING;
|
||||
ctx->status.errors++;
|
||||
SEGGER_RTT_printf(0, "TCP server connection error=%d\r\n", (int)err);
|
||||
}
|
||||
|
||||
static err_t tcp_server_on_accept(void *arg, struct tcp_pcb *newpcb, err_t err)
|
||||
@@ -103,6 +107,7 @@ static err_t tcp_server_on_accept(void *arg, struct tcp_pcb *newpcb, err_t err)
|
||||
ctx->client_pcb = newpcb;
|
||||
ctx->status.state = TCP_SERVER_STATE_CONNECTED;
|
||||
ctx->status.connections++;
|
||||
SEGGER_RTT_WriteString(0, "TCP server client connected\r\n");
|
||||
|
||||
tcp_nagle_disable(newpcb);
|
||||
|
||||
@@ -158,6 +163,7 @@ int tcp_server_start(void)
|
||||
tcp_arg(g_server.listen_pcb, &g_server);
|
||||
tcp_accept(g_server.listen_pcb, tcp_server_on_accept);
|
||||
g_server.status.state = TCP_SERVER_STATE_LISTENING;
|
||||
SEGGER_RTT_printf(0, "TCP server listening on %u\r\n", g_server.config.port);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user