To make TCP listening properly multithreaded, we need to have the uv_export() and uv_import() functions that were removed from libuv. The alternative is passing sockets over IPC, which is complicated and error prone. To make it simple, we export two internal functions from libuv; they will be used in lib/isc/netmgr/uv-compat.c by our versions of the uv_export() and uv_import() functions. diff --git a/src/win/internal.h b/src/win/internal.h index 058ddb8e..a9dc4168 100644 --- a/src/win/internal.h +++ b/src/win/internal.h @@ -92,11 +92,11 @@ void uv_process_tcp_connect_req(uv_loop_t* loop, uv_tcp_t* handle, void uv_tcp_close(uv_loop_t* loop, uv_tcp_t* tcp); void uv_tcp_endgame(uv_loop_t* loop, uv_tcp_t* handle); -int uv__tcp_xfer_export(uv_tcp_t* handle, +UV_EXTERN int uv__tcp_xfer_export(uv_tcp_t* handle, int pid, uv__ipc_socket_xfer_type_t* xfer_type, uv__ipc_socket_xfer_info_t* xfer_info); -int uv__tcp_xfer_import(uv_tcp_t* tcp, +UV_EXTERN int uv__tcp_xfer_import(uv_tcp_t* tcp, uv__ipc_socket_xfer_type_t xfer_type, uv__ipc_socket_xfer_info_t* xfer_info);