Skip to content

Commit b863fba

Browse files
authored
Merge pull request #7813 from gneverov/issue_7790
don't set tcp_err callback for listen sockets (fixes #7790)
2 parents 9203b66 + 173bc19 commit b863fba

File tree

1 file changed

+4
-4
lines changed
  • ports/raspberrypi/common-hal/socketpool

1 file changed

+4
-4
lines changed

ports/raspberrypi/common-hal/socketpool/Socket.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -706,8 +706,6 @@ bool socketpool_socket(socketpool_socketpool_obj_t *self,
706706
case MOD_NETWORK_SOCK_STREAM: {
707707
// Register the socket object as our callback argument.
708708
tcp_arg(socket->pcb.tcp, (void *)socket);
709-
// Register our error callback.
710-
tcp_err(socket->pcb.tcp, _lwip_tcp_error);
711709
break;
712710
}
713711
case MOD_NETWORK_SOCK_DGRAM: {
@@ -916,10 +914,11 @@ void socketpool_socket_close(socketpool_socket_obj_t *socket) {
916914
case SOCKETPOOL_SOCK_STREAM: {
917915
// Deregister callback (pcb.tcp is set to NULL below so must deregister now)
918916
tcp_arg(socket->pcb.tcp, NULL);
919-
tcp_err(socket->pcb.tcp, NULL);
920-
tcp_recv(socket->pcb.tcp, NULL);
921917

922918
if (socket->pcb.tcp->state != LISTEN) {
919+
tcp_err(socket->pcb.tcp, NULL);
920+
tcp_recv(socket->pcb.tcp, NULL);
921+
923922
// Schedule a callback to abort the connection if it's not cleanly closed after
924923
// the given timeout. The callback must be set before calling tcp_close since
925924
// the latter may free the pcb; if it doesn't then the callback will be active.
@@ -977,6 +976,7 @@ void common_hal_socketpool_socket_connect(socketpool_socket_obj_t *socket,
977976
// Register our receive callback.
978977
MICROPY_PY_LWIP_ENTER
979978
tcp_recv(socket->pcb.tcp, _lwip_tcp_recv);
979+
tcp_err(socket->pcb.tcp, _lwip_tcp_error);
980980
socket->state = STATE_CONNECTING;
981981
err = tcp_connect(socket->pcb.tcp, &dest, port, _lwip_tcp_connected);
982982
if (err != ERR_OK) {

0 commit comments

Comments
 (0)