diff --git a/vlib/net/socket_options.c.v b/vlib/net/socket_options.c.v index 1a32f65a35c9c7..1e8320d6330c93 100644 --- a/vlib/net/socket_options.c.v +++ b/vlib/net/socket_options.c.v @@ -19,6 +19,11 @@ pub enum SocketOption { send_timeout = C.SO_SNDTIMEO socket_type = C.SO_TYPE ipv6_only = C.IPV6_V6ONLY + ip_proto_ipv6 = C.IPPROTO_IPV6 + // reuse_port = C.SO_REUSEPORT // TODO make it work in windows + // tcp_fastopen = C.TCP_FASTOPEN // TODO make it work in windows + // tcp_quickack = C.TCP_QUICKACK // TODO make it work in os != linux + // tcp_defer_accept = C.TCP_DEFER_ACCEPT // TODO make it work in windows } pub const opts_bool = [SocketOption.broadcast, .debug, .dont_route, .error, .keep_alive, .oob_inline] diff --git a/vlib/net/tcp.c.v b/vlib/net/tcp.c.v index 37bccc58e46735..18743fdd2eda04 100644 --- a/vlib/net/tcp.c.v +++ b/vlib/net/tcp.c.v @@ -355,7 +355,7 @@ pub: } pub fn listen_tcp(family AddrFamily, saddr string, options ListenOptions) !&TcpListener { - if family != .ip && family != .ip6 { + if family !in [.ip, .ip6] { return error('listen_tcp only supports ip and ip6') } mut s := new_tcp_socket(family) or { return error('${err.msg()}; could not create new socket') } @@ -515,7 +515,7 @@ struct TcpSocket { // This is a workaround for issue https://github.com/vlang/v/issues/20858 // `noline` ensure that in `-prod` mode(CFLAG = `-O3 -flto`), gcc does not generate wrong instruction sequence @[noinline] -fn new_tcp_socket(family AddrFamily) !TcpSocket { +pub fn new_tcp_socket(family AddrFamily) !TcpSocket { handle := $if is_coroutine ? { socket_error(C.photon_socket(family, SocketType.tcp, 0))! } $else {