zephyr/modusocket: Fix parameter in calls to net_context_get_XXX().

The following simple usocket example throws an error EINVAL on connect

    import usocket
    s = usocket.socket()
    s.connect(usocket.getaddrinfo('www.micropython.org', 80)[0][-1])

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    OSError: [Errno 22] EINVAL

Fixing the context parameter in calls of net_context_get_family() and
net_context_get_type(), the connect works fine.

Tested on a nucleo_h743zi board.
This commit is contained in:
PTH 2021-02-12 15:08:02 +01:00 committed by Damien George
parent 6c4a5d185d
commit 5cb91afb9b

View File

@ -79,7 +79,8 @@ STATIC void parse_inet_addr(socket_obj_t *socket, mp_obj_t addr_in, struct socka
mp_obj_t *addr_items; mp_obj_t *addr_items;
mp_obj_get_array_fixed_n(addr_in, 2, &addr_items); mp_obj_get_array_fixed_n(addr_in, 2, &addr_items);
sockaddr_in->sin_family = net_context_get_family((void *)socket->ctx); void *context = zsock_get_context_object(socket->ctx);
sockaddr_in->sin_family = net_context_get_family(context);
RAISE_ERRNO(net_addr_pton(sockaddr_in->sin_family, mp_obj_str_get_str(addr_items[0]), &sockaddr_in->sin_addr)); RAISE_ERRNO(net_addr_pton(sockaddr_in->sin_family, mp_obj_str_get_str(addr_items[0]), &sockaddr_in->sin_addr));
sockaddr_in->sin_port = htons(mp_obj_get_int(addr_items[1])); sockaddr_in->sin_port = htons(mp_obj_get_int(addr_items[1]));
} }
@ -119,8 +120,8 @@ STATIC void socket_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kin
if (self->ctx == -1) { if (self->ctx == -1) {
mp_printf(print, "<socket NULL>"); mp_printf(print, "<socket NULL>");
} else { } else {
struct net_context *ctx = (void *)self->ctx; void *context = zsock_get_context_object(self->ctx);
mp_printf(print, "<socket %p type=%d>", ctx, net_context_get_type(ctx)); mp_printf(print, "<socket %p type=%d>", self->ctx, net_context_get_type(context));
} }
} }