summaryrefslogtreecommitdiffstatshomepage
path: root/extmod/modlwip.c
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-02-28 01:13:14 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-03-09 12:43:09 +0700
commit43d497592f26c4ede5aa7d559ac3ea5ba20db76a (patch)
tree63a7f166f97ae0a9e2b609158510e5ced5fd2727 /extmod/modlwip.c
parentfda874e406f47a37d5e26d402778674d777ffc2f (diff)
downloadmicropython-43d497592f26c4ede5aa7d559ac3ea5ba20db76a.tar.gz
micropython-43d497592f26c4ede5aa7d559ac3ea5ba20db76a.zip
extmod/modlwip: Factor out "socket connected" check to a function.
Same code repeated for each send*() and recv*() function.
Diffstat (limited to 'extmod/modlwip.c')
-rw-r--r--extmod/modlwip.c35
1 files changed, 12 insertions, 23 deletions
diff --git a/extmod/modlwip.c b/extmod/modlwip.c
index 7fe1416206..3ad51f94d5 100644
--- a/extmod/modlwip.c
+++ b/extmod/modlwip.c
@@ -712,16 +712,20 @@ STATIC mp_obj_t lwip_socket_connect(mp_obj_t self_in, mp_obj_t addr_in) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(lwip_socket_connect_obj, lwip_socket_connect);
-STATIC mp_obj_t lwip_socket_send(mp_obj_t self_in, mp_obj_t buf_in) {
- lwip_socket_obj_t *socket = self_in;
- int _errno;
-
+STATIC void lwip_socket_check_connected(lwip_socket_obj_t *socket) {
if (socket->pcb.tcp == NULL) {
// not connected
- _errno = error_lookup_table[-(socket->state)];
+ int _errno = error_lookup_table[-socket->state];
socket->state = _ERR_BADF;
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(_errno)));
}
+}
+
+STATIC mp_obj_t lwip_socket_send(mp_obj_t self_in, mp_obj_t buf_in) {
+ lwip_socket_obj_t *socket = self_in;
+ int _errno;
+
+ lwip_socket_check_connected(socket);
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ);
@@ -749,12 +753,7 @@ STATIC mp_obj_t lwip_socket_recv(mp_obj_t self_in, mp_obj_t len_in) {
lwip_socket_obj_t *socket = self_in;
int _errno;
- if (socket->pcb.tcp == NULL) {
- // not connected
- _errno = error_lookup_table[-(socket->state)];
- socket->state = _ERR_BADF;
- nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(_errno)));
- }
+ lwip_socket_check_connected(socket);
mp_int_t len = mp_obj_get_int(len_in);
vstr_t vstr;
@@ -787,12 +786,7 @@ STATIC mp_obj_t lwip_socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_obj_t
lwip_socket_obj_t *socket = self_in;
int _errno;
- if (socket->pcb.tcp == NULL) {
- // not connected
- _errno = error_lookup_table[-(socket->state)];
- socket->state = _ERR_BADF;
- nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(_errno)));
- }
+ lwip_socket_check_connected(socket);
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(data_in, &bufinfo, MP_BUFFER_READ);
@@ -823,12 +817,7 @@ STATIC mp_obj_t lwip_socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in) {
lwip_socket_obj_t *socket = self_in;
int _errno;
- if (socket->pcb.tcp == NULL) {
- // not connected
- _errno = error_lookup_table[-(socket->state)];
- socket->state = _ERR_BADF;
- nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(_errno)));
- }
+ lwip_socket_check_connected(socket);
mp_int_t len = mp_obj_get_int(len_in);
vstr_t vstr;