mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-05-08 20:56:13 +00:00
Allow defining hints without exact socket type or address family (#2337)
This commit is contained in:
parent
ae4069df41
commit
a9b76228b0
|
@ -17,6 +17,8 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
/* Used only for sock_addr_resolve hints */
|
||||||
|
SOCKET_ANY = -1,
|
||||||
SOCKET_DGRAM = 0,
|
SOCKET_DGRAM = 0,
|
||||||
SOCKET_STREAM,
|
SOCKET_STREAM,
|
||||||
} __wasi_sock_type_t;
|
} __wasi_sock_type_t;
|
||||||
|
@ -84,7 +86,7 @@ typedef struct __wasi_addr_t {
|
||||||
} addr;
|
} addr;
|
||||||
} __wasi_addr_t;
|
} __wasi_addr_t;
|
||||||
|
|
||||||
typedef enum { INET4 = 0, INET6 } __wasi_address_family_t;
|
typedef enum { INET4 = 0, INET6, INET_UNSPEC } __wasi_address_family_t;
|
||||||
|
|
||||||
typedef struct __wasi_addr_info_t {
|
typedef struct __wasi_addr_info_t {
|
||||||
__wasi_addr_t addr;
|
__wasi_addr_t addr;
|
||||||
|
|
|
@ -430,6 +430,9 @@ addrinfo_hints_to_wasi_hints(const struct addrinfo *hints,
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
wasi_hints->family = INET6;
|
wasi_hints->family = INET6;
|
||||||
break;
|
break;
|
||||||
|
case AF_UNSPEC:
|
||||||
|
wasi_hints->family = INET_UNSPEC;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return __WASI_ERRNO_AFNOSUPPORT;
|
return __WASI_ERRNO_AFNOSUPPORT;
|
||||||
}
|
}
|
||||||
|
@ -440,6 +443,8 @@ addrinfo_hints_to_wasi_hints(const struct addrinfo *hints,
|
||||||
case SOCK_DGRAM:
|
case SOCK_DGRAM:
|
||||||
wasi_hints->type = SOCKET_DGRAM;
|
wasi_hints->type = SOCKET_DGRAM;
|
||||||
break;
|
break;
|
||||||
|
case 0:
|
||||||
|
wasi_hints->type = SOCKET_ANY;
|
||||||
default:
|
default:
|
||||||
return __WASI_ERRNO_NOTSUP;
|
return __WASI_ERRNO_NOTSUP;
|
||||||
}
|
}
|
||||||
|
|
|
@ -552,6 +552,8 @@ _Static_assert(offsetof(__wasi_subscription_t, u) == 8, "witx calculated offset"
|
||||||
|
|
||||||
/* keep syncing with wasi_socket_ext.h */
|
/* keep syncing with wasi_socket_ext.h */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
/* Used only for sock_addr_resolve hints */
|
||||||
|
SOCKET_ANY = -1,
|
||||||
SOCKET_DGRAM = 0,
|
SOCKET_DGRAM = 0,
|
||||||
SOCKET_STREAM,
|
SOCKET_STREAM,
|
||||||
} __wasi_sock_type_t;
|
} __wasi_sock_type_t;
|
||||||
|
@ -605,7 +607,7 @@ typedef struct __wasi_addr_t {
|
||||||
} addr;
|
} addr;
|
||||||
} __wasi_addr_t;
|
} __wasi_addr_t;
|
||||||
|
|
||||||
typedef enum { INET4 = 0, INET6 } __wasi_address_family_t;
|
typedef enum { INET4 = 0, INET6, INET_UNSPEC } __wasi_address_family_t;
|
||||||
|
|
||||||
typedef struct __wasi_addr_info_t {
|
typedef struct __wasi_addr_info_t {
|
||||||
__wasi_addr_t addr;
|
__wasi_addr_t addr;
|
||||||
|
|
|
@ -3102,9 +3102,12 @@ wasi_ssp_sock_addr_resolve(
|
||||||
}
|
}
|
||||||
|
|
||||||
int ret = os_socket_addr_resolve(
|
int ret = os_socket_addr_resolve(
|
||||||
host, service, hints->hints_enabled ? &hints_is_tcp : NULL,
|
host, service,
|
||||||
hints->hints_enabled ? &hints_is_ipv4 : NULL, wamr_addr_info,
|
hints->hints_enabled && hints->type != SOCKET_ANY ? &hints_is_tcp
|
||||||
addr_info_size, &_max_info_size);
|
: NULL,
|
||||||
|
hints->hints_enabled && hints->family != INET_UNSPEC ? &hints_is_ipv4
|
||||||
|
: NULL,
|
||||||
|
wamr_addr_info, addr_info_size, &_max_info_size);
|
||||||
|
|
||||||
if (ret != BHT_OK) {
|
if (ret != BHT_OK) {
|
||||||
wasm_runtime_free(wamr_addr_info);
|
wasm_runtime_free(wamr_addr_info);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user