@@ -706,8 +706,6 @@ bool socketpool_socket(socketpool_socketpool_obj_t *self,
706
706
case MOD_NETWORK_SOCK_STREAM : {
707
707
// Register the socket object as our callback argument.
708
708
tcp_arg (socket -> pcb .tcp , (void * )socket );
709
- // Register our error callback.
710
- tcp_err (socket -> pcb .tcp , _lwip_tcp_error );
711
709
break ;
712
710
}
713
711
case MOD_NETWORK_SOCK_DGRAM : {
@@ -916,10 +914,11 @@ void socketpool_socket_close(socketpool_socket_obj_t *socket) {
916
914
case SOCKETPOOL_SOCK_STREAM : {
917
915
// Deregister callback (pcb.tcp is set to NULL below so must deregister now)
918
916
tcp_arg (socket -> pcb .tcp , NULL );
919
- tcp_err (socket -> pcb .tcp , NULL );
920
- tcp_recv (socket -> pcb .tcp , NULL );
921
917
922
918
if (socket -> pcb .tcp -> state != LISTEN ) {
919
+ tcp_err (socket -> pcb .tcp , NULL );
920
+ tcp_recv (socket -> pcb .tcp , NULL );
921
+
923
922
// Schedule a callback to abort the connection if it's not cleanly closed after
924
923
// the given timeout. The callback must be set before calling tcp_close since
925
924
// 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,
977
976
// Register our receive callback.
978
977
MICROPY_PY_LWIP_ENTER
979
978
tcp_recv (socket -> pcb .tcp , _lwip_tcp_recv );
979
+ tcp_err (socket -> pcb .tcp , _lwip_tcp_error );
980
980
socket -> state = STATE_CONNECTING ;
981
981
err = tcp_connect (socket -> pcb .tcp , & dest , port , _lwip_tcp_connected );
982
982
if (err != ERR_OK ) {
0 commit comments