******************************************************************************** conan test conan-center-index/recipes/uwebsockets/all/test_package/conanfile.py uwebsockets/18.3.0@ --profile=/home/conan/w/BuildSingleReference/9444/f72dcd98-5d13-4216-a031-c6b841852d11/profile.txt ******************************************************************************** Configuration: [settings] arch=x86_64 arch_build=x86_64 build_type=Release compiler=gcc compiler.libcxx=libstdc++11 compiler.version=7 os=Linux os_build=Linux [options] [build_requires] [env] uwebsockets/18.3.0 (test package): Installing package Requirements libuv/1.41.0 from 'conan-center' - Cache usockets/0.7.1 from 'conan-center' - Cache uwebsockets/18.3.0 from local cache - Cache zlib/1.2.11 from 'conan-center' - Cache Packages libuv/1.41.0:d50a0d523d98c15bb147b18fa7d203887c38be8b - Cache usockets/0.7.1:a95a6f2d8167397cb27ce22a74ad6dcde0810f99 - Cache uwebsockets/18.3.0:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Cache zlib/1.2.11:d50a0d523d98c15bb147b18fa7d203887c38be8b - Cache Installing (downloading, building) binaries... libuv/1.41.0: Already installed! [HOOK - conan-center.py] post_package_info(): [CMAKE FILE NOT IN BUILD FOLDERS (KB-H019)] OK [HOOK - conan-center.py] post_package_info(): [LIBRARY DOES NOT EXIST (KB-H054)] OK zlib/1.2.11: Already installed! [HOOK - conan-center.py] post_package_info(): [CMAKE FILE NOT IN BUILD FOLDERS (KB-H019)] OK [HOOK - conan-center.py] post_package_info(): [LIBRARY DOES NOT EXIST (KB-H054)] OK usockets/0.7.1: Already installed! [HOOK - conan-center.py] post_package_info(): [CMAKE FILE NOT IN BUILD FOLDERS (KB-H019)] OK [HOOK - conan-center.py] post_package_info(): [LIBRARY DOES NOT EXIST (KB-H054)] OK uwebsockets/18.3.0: Already installed! [HOOK - conan-center.py] post_package_info(): [CMAKE FILE NOT IN BUILD FOLDERS (KB-H019)] OK [HOOK - conan-center.py] post_package_info(): [LIBRARY DOES NOT EXIST (KB-H054)] OK uwebsockets/18.3.0 (test package): Generator txt created conanbuildinfo.txt uwebsockets/18.3.0 (test package): Generator cmake created conanbuildinfo.cmake uwebsockets/18.3.0 (test package): Generated conaninfo.txt uwebsockets/18.3.0 (test package): Generated graphinfo Using lockfile: '/home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/build/3ab9e807845e983564d20e53042ddfcbb6c691b9/conan.lock' Using cached profile from lockfile [HOOK - conan-center.py] pre_build(): [FPIC MANAGEMENT (KB-H007)] 'fPIC' option not found [HOOK - conan-center.py] pre_build(): [FPIC MANAGEMENT (KB-H007)] OK uwebsockets/18.3.0 (test package): Calling build() ----Running------ > cd '/home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/build/3ab9e807845e983564d20e53042ddfcbb6c691b9' && cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Release" -DCONAN_IN_LOCAL_CACHE="OFF" -DCONAN_COMPILER="gcc" -DCONAN_COMPILER_VERSION="7" -DCONAN_CXX_FLAGS="-m64" -DCONAN_SHARED_LINKER_FLAGS="-m64" -DCONAN_C_FLAGS="-m64" -DCONAN_LIBCXX="libstdc++11" -DCMAKE_INSTALL_PREFIX="/home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/build/3ab9e807845e983564d20e53042ddfcbb6c691b9/package" -DCMAKE_INSTALL_BINDIR="bin" -DCMAKE_INSTALL_SBINDIR="bin" -DCMAKE_INSTALL_LIBEXECDIR="bin" -DCMAKE_INSTALL_LIBDIR="lib" -DCMAKE_INSTALL_INCLUDEDIR="include" -DCMAKE_INSTALL_OLDINCLUDEDIR="include" -DCMAKE_INSTALL_DATAROOTDIR="share" -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY="ON" -DCONAN_EXPORTED="1" -Wno-dev '/home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package' ----------------- -- The C compiler identification is GNU 7.2.0 -- The CXX compiler identification is GNU 7.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Conan: called by CMake conan helper -- Conan: Adjusting output directories -- Conan: Using cmake global configuration -- Conan: Adjusting default RPATHs Conan policies -- Conan: Adjusting language standard -- Conan: Compiler GCC>=5, checking major version 7 -- Conan: Checking correct version: 7 -- Conan: C++ stdlib: libstdc++11 -- Configuring done -- Generating done -- Build files have been written to: /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/build/3ab9e807845e983564d20e53042ddfcbb6c691b9 ----Running------ > cmake --build '/home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/build/3ab9e807845e983564d20e53042ddfcbb6c691b9' '--' '-j3' ----------------- Scanning dependencies of target test_package [ 50%] Building CXX object CMakeFiles/test_package.dir/test_package.cpp.o CMakeFiles/test_package.dir/build.make:81: recipe for target 'CMakeFiles/test_package.dir/test_package.cpp.o' failed CMakeFiles/Makefile2:94: recipe for target 'CMakeFiles/test_package.dir/all' failed Makefile:102: recipe for target 'all' failed CMake Warning: Manually-specified variables were not used by the project: CMAKE_EXPORT_NO_PACKAGE_REGISTRY CMAKE_INSTALL_BINDIR CMAKE_INSTALL_DATAROOTDIR CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_LIBEXECDIR CMAKE_INSTALL_OLDINCLUDEDIR CMAKE_INSTALL_SBINDIR In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:26:0, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/AsyncSocket.h: In member function ‘us_socket_t* uWS::AsyncSocket::close()’: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/AsyncSocket.h:60:57: error: too few arguments to function ‘us_socket_t* us_socket_close(int, us_socket_t*, int, void*)’ return us_socket_close(SSL, (us_socket_t *) this); ^ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/Loop.h:24:0, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:23, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/usockets/0.7.1/_/_/package/a95a6f2d8167397cb27ce22a74ad6dcde0810f99/include/libusockets.h:252:34: note: declared here WIN32_EXPORT struct us_socket_t *us_socket_close(int ssl, struct us_socket_t *s, int code, void *reason); ^~~~~~~~~~~~~~~ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24:0, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h: In lambda function: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:146:59: error: too few arguments to function ‘us_socket_t* us_socket_close(int, us_socket_t*, int, void*)’ us_socket_close(SSL, (us_socket_t *) s); ^ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/Loop.h:24:0, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:23, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/usockets/0.7.1/_/_/package/a95a6f2d8167397cb27ce22a74ad6dcde0810f99/include/libusockets.h:252:34: note: declared here WIN32_EXPORT struct us_socket_t *us_socket_close(int ssl, struct us_socket_t *s, int code, void *reason); ^~~~~~~~~~~~~~~ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24:0, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:157:59: error: too few arguments to function ‘us_socket_t* us_socket_close(int, us_socket_t*, int, void*)’ us_socket_close(SSL, (us_socket_t *) s); ^ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/Loop.h:24:0, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:23, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/usockets/0.7.1/_/_/package/a95a6f2d8167397cb27ce22a74ad6dcde0810f99/include/libusockets.h:252:34: note: declared here WIN32_EXPORT struct us_socket_t *us_socket_close(int ssl, struct us_socket_t *s, int code, void *reason); ^~~~~~~~~~~~~~~ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24:0, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h: In lambda function: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:227:58: error: too few arguments to function ‘us_socket_t* us_socket_close(int, us_socket_t*, int, void*)’ us_socket_close(SSL, (us_socket_t *) user); ^ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/Loop.h:24:0, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:23, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/usockets/0.7.1/_/_/package/a95a6f2d8167397cb27ce22a74ad6dcde0810f99/include/libusockets.h:252:34: note: declared here WIN32_EXPORT struct us_socket_t *us_socket_close(int ssl, struct us_socket_t *s, int code, void *reason); ^~~~~~~~~~~~~~~ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:26:0, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/WebSocketContext.h: In static member function ‘static void uWS::WebSocketContext<, >::forceClose(uWS::WebSocketState*, void*)’: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/WebSocketContext.h:56:47: error: too few arguments to function ‘us_socket_t* us_socket_close(int, us_socket_t*, int, void*)’ us_socket_close(SSL, (us_socket_t *) s); ^ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/Loop.h:24:0, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:23, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/usockets/0.7.1/_/_/package/a95a6f2d8167397cb27ce22a74ad6dcde0810f99/include/libusockets.h:252:34: note: declared here WIN32_EXPORT struct us_socket_t *us_socket_close(int ssl, struct us_socket_t *s, int code, void *reason); ^~~~~~~~~~~~~~~ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:26:0, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/WebSocketContext.h: In lambda function: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/WebSocketContext.h:350:51: error: too few arguments to function ‘us_socket_t* us_socket_close(int, us_socket_t*, int, void*)’ us_socket_close(SSL, (us_socket_t *) s); ^ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/Loop.h:24:0, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:23, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/usockets/0.7.1/_/_/package/a95a6f2d8167397cb27ce22a74ad6dcde0810f99/include/libusockets.h:252:34: note: declared here WIN32_EXPORT struct us_socket_t *us_socket_close(int ssl, struct us_socket_t *s, int code, void *reason); ^~~~~~~~~~~~~~~ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:26:0, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/WebSocketContext.h: In lambda function: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/WebSocketContext.h:359:51: error: too few arguments to function ‘us_socket_t* us_socket_close(int, us_socket_t*, int, void*)’ us_socket_close(SSL, (us_socket_t *) s); ^ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/Loop.h:24:0, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:23, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/usockets/0.7.1/_/_/package/a95a6f2d8167397cb27ce22a74ad6dcde0810f99/include/libusockets.h:252:34: note: declared here WIN32_EXPORT struct us_socket_t *us_socket_close(int ssl, struct us_socket_t *s, int code, void *reason); ^~~~~~~~~~~~~~~ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24:0, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h: In instantiation of ‘uWS::HttpContext* uWS::HttpContext::init() [with bool SSL = false]’: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:338:29: required from ‘static uWS::HttpContext* uWS::HttpContext::create(uWS::Loop*, us_socket_context_options_t) [with bool SSL = false]’ /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:77:52: required from ‘uWS::TemplatedApp::TemplatedApp(us_socket_context_options_t) [with bool SSL = false]’ /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:5:13: required from here /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:81:35: error: invalid user-defined conversion from ‘uWS::HttpContext::init() [with bool SSL = false]::’ to ‘us_socket_t* (*)(us_socket_t*, int, void*)’ [-fpermissive] us_socket_context_on_close(SSL, getSocketContext(), [](us_socket_t *s) { ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Get socket ext */ ~~~~~~~~~~~~~~~~~~~~ HttpResponseData *httpResponseData = (HttpResponseData *) us_socket_ext(SSL, s); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Call filter */ ~~~~~~~~~~~~~~~~~ HttpContextData *httpContextData = getSocketContextDataS(s); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ for (auto &f : httpContextData->filterHandlers) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ f((HttpResponse *) s, -1); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } ~ /* Signal broken HTTP request only if we have a pending request */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (httpResponseData->onAborted) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ httpResponseData->onAborted(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } ~ /* Destruct socket ext */ ~~~~~~~~~~~~~~~~~~~~~~~~~ httpResponseData->~HttpResponseData(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return s; ~~~~~~~~~ }); ~~ /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:81:78: note: candidate is: constexpr uWS::HttpContext::init() [with bool SSL = false]::::operator us_socket_t* (*)(us_socket_t*)() const us_socket_context_on_close(SSL, getSocketContext(), [](us_socket_t *s) { ^ /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:81:78: note: no known conversion from ‘us_socket_t* (*)(us_socket_t*)’ to ‘us_socket_t* (*)(us_socket_t*, int, void*)’ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/Loop.h:24:0, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:23, from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/usockets/0.7.1/_/_/package/a95a6f2d8167397cb27ce22a74ad6dcde0810f99/include/libusockets.h:111:19: note: initializing argument 3 of ‘void us_socket_context_on_close(int, us_socket_context_t*, us_socket_t* (*)(us_socket_t*, int, void*))’ WIN32_EXPORT void us_socket_context_on_close(int ssl, struct us_socket_context_t *context, ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/App.h:24:0, from /home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/test_package.cpp:1: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include/uWebSockets/HttpContext.h:103:34: error: cannot convert ‘uWS::HttpContext::init() [with bool SSL = false]::’ to ‘us_socket_t* (*)(us_socket_t*, char*, int)’ for argument ‘3’ to ‘void us_socket_context_on_data(int, us_socket_context_t*, us_socket_t* (*)(us_socket_t*, char*, int))’ us_socket_context_on_data(SSL, getSocketContext(), [](us_socket_t *s, char *data, int length) { ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // total overhead is about 210k down to 180k ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ~210k req/sec is the original perf with write in data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ~200k req/sec is with cork and formatting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ~190k req/sec is with http parsing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ~180k - 190k req/sec is with varying routing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HttpContextData *httpContextData = getSocketContextDataS(s); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Do not accept any data while in shutdown state */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (us_socket_is_shut_down(SSL, (us_socket_t *) s)) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return s; ~~~~~~~~~ } ~ HttpResponseData *httpResponseData = (HttpResponseData *) us_socket_ext(SSL, s); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Cork this socket */ ~~~~~~~~~~~~~~~~~~~~~~ ((AsyncSocket *) s)->cork(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Mark that we are inside the parser now */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ httpContextData->isParsingHttp = true; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // clients need to know the cursor after http parse, not servers! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // how far did we read then? we need to know to continue with websocket parsing data? or? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void *proxyParser = nullptr; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #ifdef UWS_WITH_PROXY ~~~~~~~~~~~~~~~~~~~~~ proxyParser = &httpResponseData->proxyParser; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #endif ~~~~~~ /* The return value is entirely up to us to interpret. The HttpParser only care for whether the returned value is DIFFERENT or not from passed user */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void *returnedSocket = httpResponseData->consumePostPadded(data, length, s, proxyParser, [httpContextData](void *s, uWS::HttpRequest *httpRequest) -> void * { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* For every request we reset the timeout and hang until user makes action */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Warning: if we are in shutdown state, resetting the timer is a security issue! */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ us_socket_timeout(SSL, (us_socket_t *) s, 0); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Reset httpResponse */ ~~~~~~~~~~~~~~~~~~~~~~~~ HttpResponseData *httpResponseData = (HttpResponseData *) us_socket_ext(SSL, (us_socket_t *) s); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ httpResponseData->offset = 0; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Are we not ready for another request yet? Terminate the connection. */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (httpResponseData->state & HttpResponseData::HTTP_RESPONSE_PENDING) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ us_socket_close(SSL, (us_socket_t *) s); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return nullptr; ~~~~~~~~~~~~~~~ } ~ /* Mark pending request and emit it */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ httpResponseData->state = HttpResponseData::HTTP_RESPONSE_PENDING; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Route the method and URL */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ httpContextData->router.getUserData() = {(HttpResponse *) s, httpRequest}; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (!httpContextData->router.route(httpRequest->getMethod(), httpRequest->getUrl())) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* We have to force close this socket as we have no handler for it */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ us_socket_close(SSL, (us_socket_t *) s); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return nullptr; ~~~~~~~~~~~~~~~ } ~ /* First of all we need to check if this socket was deleted due to upgrade */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (httpContextData->upgradedWebSocket) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* We differ between closed and upgraded below */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return nullptr; ~~~~~~~~~~~~~~~ } ~ /* Was the socket closed? */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (us_socket_is_closed(SSL, (struct us_socket_t *) s)) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return nullptr; ~~~~~~~~~~~~~~~ } ~ /* We absolutely have to terminate parsing if shutdown */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (us_socket_is_shut_down(SSL, (us_socket_t *) s)) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return nullptr; ~~~~~~~~~~~~~~~ } ~ /* Returning from a request handler without responding or attaching an onAborted handler is ill-use */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (!((HttpResponse *) s)->hasResponded() && !httpResponseData->onAborted) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Throw exception here? */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ std::cerr << "Error: Returning from a request handler without responding or attaching an abort handler is forbidden!" << std::endl; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std::terminate(); ~~~~~~~~~~~~~~~~~ } ~ /* If we have not responded and we have a data handler, we need to timeout to enfore client sending the data */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (!((HttpResponse *) s)->hasResponded() && httpResponseData->inStream) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ us_socket_timeout(SSL, (us_socket_t *) s, HTTP_IDLE_TIMEOUT_S); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } ~ /* Continue parsing */ ~~~~~~~~~~~~~~~~~~~~~~ return s; ~~~~~~~~~ }, [httpResponseData](void *user, std::string_view data, bool fin) -> void * { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* We always get an empty chunk even if there is no data */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (httpResponseData->inStream) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Todo: can this handle timeout for non-post as well? */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (fin) { ~~~~~~~~~~ /* If we just got the last chunk (or empty chunk), disable timeout */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ us_socket_timeout(SSL, (struct us_socket_t *) user, 0); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } else { ~~~~~~~~ /* We still have some more data coming in later, so reset timeout */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ us_socket_timeout(SSL, (struct us_socket_t *) user, HTTP_IDLE_TIMEOUT_S); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } ~ /* We might respond in the handler, so do not change timeout after this */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ httpResponseData->inStream(data, fin); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Was the socket closed? */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (us_socket_is_closed(SSL, (struct us_socket_t *) user)) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return nullptr; ~~~~~~~~~~~~~~~ } ~ /* We absolutely have to terminate parsing if shutdown */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (us_socket_is_shut_down(SSL, (us_socket_t *) user)) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return nullptr; ~~~~~~~~~~~~~~~ } ~ /* If we were given the last data chunk, reset data handler to ensure following ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * requests on the same socket won't trigger any previously registered behavior */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (fin) { ~~~~~~~~~~ httpResponseData->inStream = nullptr; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } ~ } ~ return user; ~~~~~~~~~~~~ }, [](void *user) { ~~~~~~~~~~~~~~~~~~~ /* Close any socket on HTTP errors */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ us_socket_close(SSL, (us_socket_t *) user); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return nullptr; ~~~~~~~~~~~~~~~ }); ~~~ /* Mark that we are no longer parsing Http */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ httpContextData->isParsingHttp = false; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* We need to uncork in all cases, except for nullptr (closed socket, or upgraded socket) */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (returnedSocket != nullptr) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Timeout on uncork failure */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto [written, failed] = ((AsyncSocket *) returnedSocket)->uncork(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (failed) { ~~~~~~~~~~~~~ /* All Http sockets timeout by this, and this behavior match the one in HttpResponse::cork */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Warning: both HTTP_IDLE_TIMEOUT_S and HTTP_TIMEOUT_S are 10 seconds and both are used the same */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ((AsyncSocket *) s)->timeout(HTTP_IDLE_TIMEOUT_S); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } ~ return (us_socket_t *) returnedSocket; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } ~ /* If we upgraded, check here (differ between nullptr close and nullptr upgrade) */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (httpContextData->upgradedWebSocket) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* This path is only for upgraded websockets */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AsyncSocket *asyncSocket = (AsyncSocket *) httpContextData->upgradedWebSocket; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Uncork here as well (note: what if we failed to uncork and we then pub/sub before we even upgraded?) */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /*auto [written, failed] = */asyncSocket->uncork(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Reset upgradedWebSocket before we return */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ httpContextData->upgradedWebSocket = nullptr; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* Return the new upgraded websocket */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return (us_socket_t *) asyncSocket; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } ~ /* It is okay to uncork a closed socket and we need to */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ((AsyncSocket *) s)->uncork(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* We cannot return nullptr to the underlying stack in any case */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return s; ~~~~~~~~~ }); ~~ make[2]: *** [CMakeFiles/test_package.dir/test_package.cpp.o] Error 1 make[1]: *** [CMakeFiles/test_package.dir/all] Error 2 make: *** [all] Error 2 uwebsockets/18.3.0: WARN: Lib folder doesn't exist, can't collect libraries: /home/conan/w/BuildSingleReference/.conan/data/uwebsockets/18.3.0/_/_/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/lib [HOOK - conan-center.py] post_package_info(): WARN: [LIBRARY DOES NOT EXIST (KB-H054)] Component uwebsockets::uwebsockets libdir "lib" does not contain any declared library ERROR: uwebsockets/18.3.0 (test package): Error in build() method, line 12 cmake.build() ConanException: Error 2 while executing cmake --build '/home/conan/w/BuildSingleReference/conan-center-index/recipes/uwebsockets/all/test_package/build/3ab9e807845e983564d20e53042ddfcbb6c691b9' '--' '-j3'