Skip to content

Commit 722fb2d

Browse files
committed
extmod/modlwip: User proper field name and value names for socket state.
1 parent 43fecb0 commit 722fb2d

File tree

1 file changed

+30
-27
lines changed

1 file changed

+30
-27
lines changed

extmod/modlwip.c

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,12 @@ typedef struct _lwip_socket_obj_t {
199199
uint8_t domain;
200200
uint8_t type;
201201

202-
// 0 = unconnected, 1 = connecting, 2 = connected, 3 = other side closed
203-
int8_t connected;
202+
#define STATE_NEW 0
203+
#define STATE_CONNECTING 1
204+
#define STATE_CONNECTED 2
205+
#define STATE_PEER_CLOSED 3
206+
// Negative value is lwIP error
207+
int8_t state;
204208
} lwip_socket_obj_t;
205209

206210
static inline void poll_sockets(void) {
@@ -231,7 +235,7 @@ STATIC void _lwip_tcp_error(void *arg, err_t err) {
231235
lwip_socket_obj_t *socket = (lwip_socket_obj_t*)arg;
232236

233237
// Pass the error code back via the connection variable.
234-
socket->connected = err;
238+
socket->state = err;
235239
// If we got here, the lwIP stack either has deallocated or will deallocate the pcb.
236240
socket->pcb.tcp = NULL;
237241
}
@@ -240,7 +244,7 @@ STATIC void _lwip_tcp_error(void *arg, err_t err) {
240244
STATIC err_t _lwip_tcp_connected(void *arg, struct tcp_pcb *tpcb, err_t err) {
241245
lwip_socket_obj_t *socket = (lwip_socket_obj_t*)arg;
242246

243-
socket->connected = 2;
247+
socket->state = STATE_CONNECTED;
244248
return ERR_OK;
245249
}
246250

@@ -264,7 +268,7 @@ STATIC err_t _lwip_tcp_recv(void *arg, struct tcp_pcb *tcpb, struct pbuf *p, err
264268

265269
if (p == NULL) {
266270
// Other side has closed connection.
267-
socket->connected = 3;
271+
socket->state = STATE_PEER_CLOSED;
268272
return ERR_OK;
269273
} else if (socket->incoming.pbuf != NULL) {
270274
// No room in the inn, let LWIP know it's still responsible for delivery later
@@ -378,7 +382,7 @@ STATIC mp_uint_t lwip_tcp_send(lwip_socket_obj_t *socket, const byte *buf, mp_ui
378382
// Helper function for recv/recvfrom to handle TCP packets
379383
STATIC mp_uint_t lwip_tcp_receive(lwip_socket_obj_t *socket, byte *buf, mp_uint_t len, int *_errno) {
380384

381-
if (socket->connected == 3) {
385+
if (socket->state == STATE_PEER_CLOSED) {
382386
return 0;
383387
}
384388

@@ -463,7 +467,7 @@ STATIC mp_obj_t lwip_socket_make_new(mp_obj_t type_in, mp_uint_t n_args,
463467

464468
socket->incoming.pbuf = NULL;
465469
socket->timeout = -1;
466-
socket->connected = 0;
470+
socket->state = STATE_NEW;
467471
socket->leftover_count = 0;
468472
return socket;
469473
}
@@ -489,7 +493,7 @@ STATIC mp_obj_t lwip_socket_close(mp_obj_t self_in) {
489493
//case MOD_NETWORK_SOCK_RAW: raw_remove(socket->pcb.raw); break;
490494
}
491495
socket->pcb.tcp = NULL;
492-
socket->connected = -16; // EBADF
496+
socket->state = -16; // EBADF
493497
if (socket->incoming.pbuf != NULL) {
494498
if (!socket_is_listener) {
495499
pbuf_free(socket->incoming.pbuf);
@@ -599,7 +603,7 @@ STATIC mp_obj_t lwip_socket_accept(mp_obj_t self_in) {
599603
socket2->type = MOD_NETWORK_SOCK_STREAM;
600604
socket2->incoming.pbuf = NULL;
601605
socket2->timeout = socket->timeout;
602-
socket2->connected = 2;
606+
socket2->state = STATE_CONNECTED;
603607
socket2->leftover_count = 0;
604608
tcp_arg(socket2->pcb.tcp, (void*)socket2);
605609
tcp_err(socket2->pcb.tcp, _lwip_tcp_error);
@@ -636,20 +640,19 @@ STATIC mp_obj_t lwip_socket_connect(mp_obj_t self_in, mp_obj_t addr_in) {
636640
err_t err = ERR_ARG;
637641
switch (socket->type) {
638642
case MOD_NETWORK_SOCK_STREAM: {
639-
if (socket->connected != 0) {
640-
if (socket->connected == 2) {
643+
if (socket->state != STATE_NEW) {
644+
if (socket->state == STATE_CONNECTED) {
641645
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(EALREADY)));
642646
} else {
643647
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(EINPROGRESS)));
644648
}
645649
}
646650
// Register our recieve callback.
647651
tcp_recv(socket->pcb.tcp, _lwip_tcp_recv);
648-
// Mark us as "connecting"
649-
socket->connected = 1;
652+
socket->state = STATE_CONNECTING;
650653
err = tcp_connect(socket->pcb.tcp, &dest, port, _lwip_tcp_connected);
651654
if (err != ERR_OK) {
652-
socket->connected = 0;
655+
socket->state = STATE_NEW;
653656
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(error_lookup_table[-err])));
654657
}
655658
socket->peer_port = (mp_uint_t)port;
@@ -658,20 +661,20 @@ STATIC mp_obj_t lwip_socket_connect(mp_obj_t self_in, mp_obj_t addr_in) {
658661
if (socket->timeout != -1) {
659662
for (mp_uint_t retries = socket->timeout / 100; retries--;) {
660663
mp_hal_delay_ms(100);
661-
if (socket->connected != 1) break;
664+
if (socket->state != STATE_CONNECTING) break;
662665
}
663-
if (socket->connected == 1) {
666+
if (socket->state == STATE_CONNECTING) {
664667
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(ETIMEDOUT)));
665668
}
666669
} else {
667-
while (socket->connected == 1) {
670+
while (socket->state == STATE_CONNECTING) {
668671
mp_hal_delay_ms(100);
669672
}
670673
}
671-
if (socket->connected == 2) {
674+
if (socket->state == STATE_CONNECTED) {
672675
err = ERR_OK;
673676
} else {
674-
err = socket->connected;
677+
err = socket->state;
675678
}
676679
break;
677680
}
@@ -695,8 +698,8 @@ STATIC mp_obj_t lwip_socket_send(mp_obj_t self_in, mp_obj_t buf_in) {
695698

696699
if (socket->pcb.tcp == NULL) {
697700
// not connected
698-
_errno = error_lookup_table[-(socket->connected)];
699-
socket->connected = -16;
701+
_errno = error_lookup_table[-(socket->state)];
702+
socket->state = -16;
700703
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(_errno)));
701704
}
702705

@@ -728,8 +731,8 @@ STATIC mp_obj_t lwip_socket_recv(mp_obj_t self_in, mp_obj_t len_in) {
728731

729732
if (socket->pcb.tcp == NULL) {
730733
// not connected
731-
_errno = error_lookup_table[-(socket->connected)];
732-
socket->connected = -16;
734+
_errno = error_lookup_table[-(socket->state)];
735+
socket->state = -16;
733736
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(_errno)));
734737
}
735738

@@ -766,8 +769,8 @@ STATIC mp_obj_t lwip_socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_obj_t
766769

767770
if (socket->pcb.tcp == NULL) {
768771
// not connected
769-
_errno = error_lookup_table[-(socket->connected)];
770-
socket->connected = -16;
772+
_errno = error_lookup_table[-(socket->state)];
773+
socket->state = -16;
771774
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(_errno)));
772775
}
773776

@@ -802,8 +805,8 @@ STATIC mp_obj_t lwip_socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in) {
802805

803806
if (socket->pcb.tcp == NULL) {
804807
// not connected
805-
_errno = error_lookup_table[-(socket->connected)];
806-
socket->connected = -16;
808+
_errno = error_lookup_table[-(socket->state)];
809+
socket->state = -16;
807810
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(_errno)));
808811
}
809812

0 commit comments

Comments
 (0)