Skip to content

Commit

Permalink
Waiting the tcp socket closed by remote client
Browse files Browse the repository at this point in the history
So that the tcp socket are closed by debugger client first and
the debugger client won't receive socket are closed by remote error

JerryScript-DCO-1.0-Signed-off-by: Yonggang Luo luoyonggang@gmail.com
  • Loading branch information
lygstate committed Nov 14, 2024
1 parent 06c35ea commit 2f2b9f6
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions jerry-ext/debugger/debugger-tcp.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,30 @@ jerryx_debugger_tcp_close (jerry_debugger_transport_header_t *header_p) /**< tcp

jerryx_debugger_transport_tcp_t *tcp_p = (jerryx_debugger_transport_tcp_t *) header_p;

/* Waiting for the debug client close the tcp connection first. */
while (true)
{
char buf[8];
jerryx_socket_ssize_t result = recv (tcp_p->tcp_socket, buf, sizeof (buf), 0);
if (result == 0)
{
/**
* If result == 0, means the socket are closed by remote client, break the loop
*/
break;
}
else if (result < 0 && jerryx_debugger_tcp_get_errno () != JERRYX_EWOULDBLOCK)
{
/* errno other than JERRYX_EWOULDBLOCK means socket have true error, break the loop */
break;
}
/**
* If result > 0, means that there is data available on the socket, waiting.
* If result < 0 and errno == JERRYX_EWOULDBLOCK, means have no data but
* the socket still available, waiting.
*/
}

JERRYX_DEBUG_MSG ("TCP connection closed.\n");

jerryx_debugger_tcp_close_socket (tcp_p->tcp_socket);
Expand Down

0 comments on commit 2f2b9f6

Please sign in to comment.