diff --git a/core/shared/platform/zephyr/zephyr_socket.c b/core/shared/platform/zephyr/zephyr_socket.c index 6d108623e..52dc5e619 100644 --- a/core/shared/platform/zephyr/zephyr_socket.c +++ b/core/shared/platform/zephyr/zephyr_socket.c @@ -173,7 +173,7 @@ os_socket_getbooloption(bh_socket_t socket, int level, int optname, int optval; socklen_t optval_size = sizeof(optval); - if (zsock_setsockopt(socket->fd, level, optname, &optval, optval_size) + if (zsock_getsockopt(socket->fd, level, optname, &optval, &optval_size) != 0) { return BHT_ERROR; } @@ -190,7 +190,7 @@ os_socket_create(bh_socket_t *sock, bool is_ipv4, bool is_tcp) *(sock) = BH_MALLOC(sizeof(zephyr_handle)); - if (!sock) { + if (!*sock) { return BHT_ERROR; } @@ -262,8 +262,13 @@ os_socket_settimeout(bh_socket_t socket, uint64 timeout_us) timeout.tv_sec = timeout_us / 1000000; timeout.tv_usec = timeout_us % 1000000; - return zsock_setsockopt(socket->fd, SOL_SOCKET, SO_RCVTIMEO, &timeout, - sizeof(timeout)); + if (zsock_setsockopt(socket->fd, SOL_SOCKET, SO_RCVTIMEO, &timeout, + sizeof(timeout)) + != 0) { + return BHT_ERROR; + } + + return BHT_OK; } int @@ -277,7 +282,7 @@ os_socket_accept(bh_socket_t server_sock, bh_socket_t *sock, void *addr, unsigned int *addrlen) { *sock = BH_MALLOC(sizeof(zephyr_handle)); - if (!sock) { + if (!*sock) { return BHT_ERROR; } @@ -609,7 +614,7 @@ os_socket_get_send_timeout(bh_socket_t socket, uint64 *timeout_us) struct timeval tv; socklen_t tv_len = sizeof(tv); - if (zsock_setsockopt(socket->fd, SOL_SOCKET, SO_SNDTIMEO, &tv, tv_len) + if (zsock_getsockopt(socket->fd, SOL_SOCKET, SO_SNDTIMEO, &tv, &tv_len) != 0) { return BHT_ERROR; } @@ -639,7 +644,7 @@ os_socket_get_recv_timeout(bh_socket_t socket, uint64 *timeout_us) struct timeval tv; socklen_t tv_len = sizeof(tv); - if (zsock_setsockopt(socket->fd, SOL_SOCKET, SO_RCVTIMEO, &tv, tv_len) + if (zsock_getsockopt(socket->fd, SOL_SOCKET, SO_RCVTIMEO, &tv, &tv_len) != 0) { return BHT_ERROR; } @@ -760,8 +765,8 @@ os_socket_get_tcp_keep_idle(bh_socket_t socket, uint32_t *time_s) socklen_t time_s_len = sizeof(time_s_int); #ifdef TCP_KEEPIDLE - if (zsock_setsockopt(socket->fd, IPPROTO_TCP, TCP_KEEPIDLE, &time_s_int, - time_s_len) + if (zsock_getsockopt(socket->fd, IPPROTO_TCP, TCP_KEEPIDLE, &time_s_int, + &time_s_len) != 0) { return BHT_ERROR; } @@ -769,8 +774,8 @@ os_socket_get_tcp_keep_idle(bh_socket_t socket, uint32_t *time_s) return BHT_OK; #elif defined(TCP_KEEPALIVE) - if (zsock_setsockopt(socket->fd, IPPROTO_TCP, TCP_KEEPALIVE, &time_s_int, - time_s_len) + if (zsock_getsockopt(socket->fd, IPPROTO_TCP, TCP_KEEPALIVE, &time_s_int, + &time_s_len) != 0) { return BHT_ERROR; } @@ -965,13 +970,13 @@ os_socket_set_ip_ttl(bh_socket_t socket, uint8_t ttl_s) int os_socket_get_ip_ttl(bh_socket_t socket, uint8_t *ttl_s) { - socklen_t opt_len = sizeof(*ttl_s); - - if (zsock_setsockopt(socket->fd, IPPROTO_IP, IP_MULTICAST_TTL, ttl_s, - opt_len) - != 0) { + /* Most socket-level options utilize an int argument for optval */ + int opt; + socklen_t opt_len = sizeof(opt); + if (zsock_getsockopt(socket->fd, IPPROTO_IP, IP_TTL, &opt, &opt_len) != 0) { return BHT_ERROR; } + *ttl_s = (uint8_t)opt; return BHT_OK; } @@ -991,13 +996,15 @@ os_socket_set_ip_multicast_ttl(bh_socket_t socket, uint8_t ttl_s) int os_socket_get_ip_multicast_ttl(bh_socket_t socket, uint8_t *ttl_s) { - socklen_t opt_len = sizeof(*ttl_s); - - if (zsock_setsockopt(socket->fd, IPPROTO_IP, IP_MULTICAST_TTL, ttl_s, - opt_len) + /* Most socket-level options utilize an int argument for optval */ + int opt; + socklen_t opt_len = sizeof(opt); + if (zsock_getsockopt(socket->fd, IPPROTO_IP, IP_MULTICAST_TTL, &opt, + &opt_len) != 0) { return BHT_ERROR; } + *ttl_s = (uint8_t)opt; return BHT_OK; } @@ -1059,4 +1066,4 @@ int os_poll(os_poll_file_handle *fds, os_nfds_t nfs, int timeout) { return zsock_poll(fds, nfs, timeout); -} \ No newline at end of file +}