amazon-kinesis-video-streams-webrtc-sdk-c
amazon-kinesis-video-streams-webrtc-sdk-c copied to clipboard
[QUESTION] Error running the client Viewer Sample: createSocket error
I would like to implement a video/audio viewer in my 64 bit Windows VS2017 project. I have downloaded and built the Windows C SDK. (master branch: SHA-1: ced19d0 Release 1 7 3 (#1473))
Here are the build flags I set while building the SDK: cmake -G "NMake Makefiles" -DBUILD_TEST=TRUE -DOPENSSL_ROOT_DIR="E:/vcpkg/installed/x64-windows" -DLWS_HAVE_PTHREAD_H=1 -DLWS_EXT_PTHREAD_INCLUDE_DIR="C:\pthread\include" -DLWS_EXT_PTHREAD_LIBRARIES="C:\pthread\lib\x64\libpthreadGC2.a" -DLWS_WITH_MINIMAL_EXAMPLES=1 ..
In order to pass some build errors, I had to disable threadpool usage by: setting DLWS_WITH_THREADPOOL=0 in \amazon-kinesis-video-streams-webrtc-sdk-c\CMake\Dependencies\libwebsockets-CMakeLists.txt
I am trying to incorporate the sample viewer program into my Visual Studio 2017 project but having run into some problems, I decided to first run the the built samples using the KVS WebRTC Test Page. But the client fails (logs below). I use the KVS WebRTC Test Page on my macbook(safari) and try to connect to it on my Windows PC using the kvsWebrtcClientViewer sample exe. The only modification I made onto the stock kvsWebrtcClientViewer sample is to disable trickleICE by setting:
in Samples/Common.c Line 707 STATUS createSampleConfiguration(PCHAR channelName, SIGNALING_CHANNEL_ROLE_TYPE roleType, BOOL trickleIce, BOOL useTurn,PSampleConfiguration* ppSampleConfiguration) { trickleIce = FALSE; // ONLY ADDED THIS LINE TO FORCE TRICKLEICE TO FALSE ...
In the Test Page, I have
set the Region, Access Key ID, Secret Key ID, Channel Name checked "Send Video" and "Send Audio", left "Open Data Channel" unchecked. checked 1280/720 checked "STUN/TURN" unchecked "Use Trickle ICE" clicked "Create Channel" clicked "Start Master" On the console, I see [MASTER] Connected to signaling service
On x64 Native Tools Command Prompt for VS2017, I set the env variables for AWS KEY, SECRET_KEY, REGION and CACERT_PATH. And ran the command: kvsWebrtcClientViewer.exe TEST1234 where TEST1234 is the name of the channel I created on the KVS Test Page.
I receive these errors:
2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN socketBind(): bind() failed for ip address: 169.254.87.231, port 0 with errno The requested address is not valid in its context. 2022-07-22 12:46:58 ERROR createSocketConnection(): operation returned status code: 0x58000018
setsockopt is called with NO_SIGNAL parameter which resolves to 0 and it seems like it might be an invalid value for Windows environment. Do you have any workarounds to fix this issue? in src\source\Ice\Network.c, in function: STATUS createSocket(KVS_IP_FAMILY_TYPE familyType, KVS_SOCKET_PROTOCOL protocol, UINT32 sendBufSize, PINT32 pOutSockFd)
if (setsockopt(sockfd, SOL_SOCKET, NO_SIGNAL, &optionValue, SIZEOF(optionValue)) < 0) { DLOGD("setsockopt() NO_SIGNAL failed with errno %s", getErrorString(getErrorCode())); }
The entire logs are captured below.
With log level set to 1 (LOG_LEVEL_VERBOSE) I receive these on the console:
kvsWebrtcClientViewer.exe TEST1234 [KVS Master] NOT Using trickleICE [KVS Viewer] Created signaling channel TEST1234 2022-07-22 12:46:54 VERBOSE pregenerateCertTimerCallback(): New certificate has been pre-generated and added to the queue 2022-07-22 12:46:54 INFO initKvsWebRtc(): SDK version: ced19d02ed6fbc1e59dd63bc19d847c5ec5ebf47 [KVS Viewer] KVS WebRTC initialization completed successfully 2022-07-22 12:46:54 VERBOSE createSignalingClientSync(): Creating Signaling Client Sync 2022-07-22 12:46:54 VERBOSE createRetryStrategyForCreatingSignalingClient(): Using exponential backoff retry strategy for creating signaling client 2022-07-22 12:46:54 VERBOSE normalizeExponentialBackoffConfig(): Thread Id [18446744073709551614]. Exponential backoff retry strategy config - maxRetryCount: [14757395255531667456], maxRetryWaitTime: [160000000], retryFactorTime: [10000000], minTimeToResetRetryState: [900000000], jitterType: [14757395255531667457], jitterFactor: [14757395255531667456], 2022-07-22 12:46:54 VERBOSE resetExponentialBackoffRetryState(): Thread Id [18446744073709551614]. Resetting Exponential Backoff State. Last retry system time [0], retry count so far [0], Current system time [16584940146260250] 2022-07-22 12:46:54 VERBOSE exponentialBackoffRetryStrategyWithDefaultConfigCreate(): Created exponential backoff retry strategy state with default configuration. 2022-07-22 12:46:54 ERROR signalingCacheLoadFromFile(): operation returned status code: 0x0000000a 2022-07-22 12:46:54 WARN createSignalingSync(): Failed to load signaling cache from file 2022-07-22 12:46:54 VERBOSE normalizeExponentialBackoffConfig(): Thread Id [18446744073709551614]. Exponential backoff retry strategy config - maxRetryCount: [14757395255531667456], maxRetryWaitTime: [100000000], retryFactorTime: [1000000], minTimeToResetRetryState: [900000000], jitterType: [14757395255531667457], jitterFactor: [14757395255531667456], 2022-07-22 12:46:54 VERBOSE resetExponentialBackoffRetryState(): Thread Id [18446744073709551614]. Resetting Exponential Backoff State. Last retry system time [0], retry count so far [0], Current system time [16584940146277168] 2022-07-22 12:46:54 VERBOSE exponentialBackoffRetryStrategyCreate(): Created exponential backoff retry strategy state with provided retry configuration. [2022/07/22 15:46:54:6287] N: LWS: 4.2.1-v4.2.2, loglevel 7 [2022/07/22 15:46:54:6302] N: NET CLI H1 H2 WS ConMon IPv6-absent [2022/07/22 15:46:54:6360] N: ++ [wsi|0|pipe] (1) [2022/07/22 15:46:54:6379] N: ++ [vh|0|default||-1] (1) [2022/07/22 15:46:54:6469] N: lws_plat_vhost_tls_client_ctx_init: Imported 52 certs from plat store 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 21 2022-07-22 12:46:54 VERBOSE signalingClientStateChanged(): Signaling client state changed to 1 - 'New' 2022-07-22 12:46:54 VERBOSE stepStateMachine(): State Machine - Current state: 0x0000000000000001, Next state: 0x0000000000000002, Current local state retry count [0], Max local state retry count [1], State transition wait time [0] ms 2022-07-22 12:46:54 VERBOSE signalingClientStateChanged(): Signaling client state changed to 2 - 'Get Security Credentials' [KVS Viewer] Signaling client created successfully 2022-07-22 12:46:54 VERBOSE signalingClientFetchSync(): Signaling Client Fetch Sync 2022-07-22 12:46:54 VERBOSE createRetryStrategyForCreatingSignalingClient(): Using exponential backoff retry strategy for creating signaling client 2022-07-22 12:46:54 VERBOSE normalizeExponentialBackoffConfig(): Thread Id [18446744073709551614]. Exponential backoff retry strategy config - maxRetryCount: [14757395255531667456], maxRetryWaitTime: [160000000], retryFactorTime: [10000000], minTimeToResetRetryState: [900000000], jitterType: [14757395255531667457], jitterFactor: [14757395255531667456], 2022-07-22 12:46:54 VERBOSE resetExponentialBackoffRetryState(): Thread Id [18446744073709551614]. Resetting Exponential Backoff State. Last retry system time [0], retry count so far [0], Current system time [16584940146549298] 2022-07-22 12:46:54 VERBOSE exponentialBackoffRetryStrategyWithDefaultConfigCreate(): Created exponential backoff retry strategy state with default configuration. 2022-07-22 12:46:54 VERBOSE stepStateMachine(): State Machine - Current state: 0x0000000000000002, Next state: 0x0000000000000004, Current local state retry count [0], Max local state retry count [1], State transition wait time [0] ms 2022-07-22 12:46:54 VERBOSE signalingClientStateChanged(): Signaling client state changed to 3 - 'Describe Channel' 2022-07-22 12:46:54 VERBOSE lwsCompleteSync(): Perform secure synchronous call for URL: https://kinesisvideo.us-east-2.amazonaws.com/describeSignalingChannel 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 27 2022-07-22 12:46:54 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 27 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 85 [2022/07/22 15:46:54:6569] N: ++ [wsicli|0|POST/h1/kinesisvideo.us-east-2.amazonaws.com] (1) [2022/07/22 15:46:54:6639] W: lws_plat_set_socket_options_ip: not implemented on windows platform 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 105 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 19 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 31 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 29 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 71 2022-07-22 12:46:54 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 71 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:54 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 24 2022-07-22 12:46:55 DEBUG lwsHttpCallbackRoutine(): Client append handshake header 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Appending header - Authorization: AWS4-HMAC-SHA256 Credential=[PRIVATE-DATA]/20220722/us-east-2/kinesisvideo/aws4_request, SignedHeaders=host;user-agent;x-amz-date, Signature=5db07e4efb4c52e2e271d878bad59a520e684200abc786d9c1d1a77b25dd99ae 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Appending header - content-length: 30 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Appending header - content-type: application/json 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Appending header - user-agent: AWS-SDK-KVS/3.0.0 MSVC/1916 Windows/6.2.9200 AMD64 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Appending header - X-Amz-Date: 20220722T124654Z 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 57 2022-07-22 12:46:55 DEBUG lwsHttpCallbackRoutine(): Sending the body { "ChannelName": "TEST1234" }, size 30 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 2 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 44 2022-07-22 12:46:55 DEBUG lwsHttpCallbackRoutine(): Connected with server response: 200 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Date Header Returned By Server: Fri, 22 Jul 2022 12:46:56 GMT 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 46 2022-07-22 12:46:55 DEBUG lwsHttpCallbackRoutine(): Received client http 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 48 2022-07-22 12:46:55 DEBUG lwsHttpCallbackRoutine(): Received client http read: 334 bytes 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Received client http read response: {"ChannelInfo":{"ChannelARN":"arn:aws:kinesisvideo:us-east-2:420029824569:channel/TEST1234/1658274591195","ChannelName":"TEST1234","ChannelStatus":"ACTIVE","ChannelType":"SINGLE_MASTER","CreationTime":1.658274591195E9,"FullMeshConfiguration":null,"SingleMasterConfiguration":{"MessageTtlSeconds":60},"Version":"GSpwwII8z5BM75QZKE6r"}} 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 47 2022-07-22 12:46:55 DEBUG lwsHttpCallbackRoutine(): Http client completed 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 45 2022-07-22 12:46:55 DEBUG lwsHttpCallbackRoutine(): Client http closed 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 30 [2022/07/22 15:46:55:4066] N: -- [wsicli|0|POST/h1/kinesisvideo.us-east-2.amazonaws.com] (0) 749.683ms 2022-07-22 12:46:55 VERBOSE stepStateMachine(): State Machine - Current state: 0x0000000000000004, Next state: 0x0000000000000010, Current local state retry count [0], Max local state retry count [1], State transition wait time [0] ms 2022-07-22 12:46:55 VERBOSE signalingClientStateChanged(): Signaling client state changed to 5 - 'Get Channel Endpoint' 2022-07-22 12:46:55 VERBOSE lwsCompleteSync(): Perform secure synchronous call for URL: https://kinesisvideo.us-east-2.amazonaws.com/getSignalingChannelEndpoint 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 85 [2022/07/22 15:46:55:4214] N: ++ [wsicli|1|POST/h1/kinesisvideo.us-east-2.amazonaws.com] (1) [2022/07/22 15:46:55:4267] W: lws_plat_set_socket_options_ip: not implemented on windows platform 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 105 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 19 2022-07-22 12:46:55 VERBOSE pregenerateCertTimerCallback(): New certificate has been pre-generated and added to the queue 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 29 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 24 2022-07-22 12:46:55 DEBUG lwsHttpCallbackRoutine(): Client append handshake header 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Appending header - Authorization: AWS4-HMAC-SHA256 Credential=[PRIVATE-DATA]/20220722/us-east-2/kinesisvideo/aws4_request, SignedHeaders=host;user-agent;x-amz-date, Signature=ed5fec9181df410b1e57d05eee0e10ef3447485bb4348c011d7a5f852bf7aacd 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Appending header - content-length: 198 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Appending header - content-type: application/json 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Appending header - user-agent: AWS-SDK-KVS/3.0.0 MSVC/1916 Windows/6.2.9200 AMD64 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): Appending header - X-Amz-Date: 20220722T124655Z 2022-07-22 12:46:55 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 57 2022-07-22 12:46:55 DEBUG lwsHttpCallbackRoutine(): Sending the body { "ChannelARN": "arn:aws:kinesisvideo:us-east-2:420029824569:channel/TEST1234/1658274591195", "SingleMasterChannelEndpointConfiguration": { "Protocols": ["WSS", "HTTPS"], "Role": "VIEWER" } }, size 198 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 2 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 44 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Connected with server response: 200 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): Date Header Returned By Server: Fri, 22 Jul 2022 12:46:57 GMT 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 46 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Received client http 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 48 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Received client http read: 218 bytes 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): Received client http read response: {"ResourceEndpointList":[{"Protocol":"HTTPS","ResourceEndpoint":"https://r-b0356e67.kinesisvideo.us-east-2.amazonaws.com"},{"Protocol":"WSS","ResourceEndpoint":"wss://v-dc297268.kinesisvideo.us-east-2.amazonaws.com"}]} 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 47 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Http client completed 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 45 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Client http closed 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 30 [2022/07/22 15:46:56:1369] N: -- [wsicli|1|POST/h1/kinesisvideo.us-east-2.amazonaws.com] (0) 715.510ms 2022-07-22 12:46:56 ERROR signalingCacheSaveToFile(): operation returned status code: 0x0000000a 2022-07-22 12:46:56 WARN getChannelEndpoint(): Failed to save signaling cache to file 2022-07-22 12:46:56 VERBOSE stepStateMachine(): State Machine - Current state: 0x0000000000000010, Next state: 0x0000000000000020, Current local state retry count [0], Max local state retry count [1], State transition wait time [0] ms 2022-07-22 12:46:56 VERBOSE signalingClientStateChanged(): Signaling client state changed to 6 - 'Get ICE Server Configuration' 2022-07-22 12:46:56 VERBOSE lwsCompleteSync(): Perform secure synchronous call for URL: https://r-b0356e67.kinesisvideo.us-east-2.amazonaws.com/v1/get-ice-server-config 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 85 [2022/07/22 15:46:56:1515] N: ++ [wsicli|2|POST/h1/r-b0356e67.kinesisvideo.us-east-2.amazonaws.] (1) [2022/07/22 15:46:56:1576] W: lws_plat_set_socket_options_ip: not implemented on windows platform 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 105 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 19 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 29 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:56 VERBOSE pregenerateCertTimerCallback(): New certificate has been pre-generated and added to the queue 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 24 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Client append handshake header 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): Appending header - Authorization: AWS4-HMAC-SHA256 Credential=[PRIVATE-DATA]/20220722/us-east-2/kinesisvideo/aws4_request, SignedHeaders=host;user-agent;x-amz-date, Signature=e90c99ea98b9742d33a03549ff47002159a2806c3e517b7f70a2f1aa52904f7d 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): Appending header - content-length: 152 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): Appending header - content-type: application/json 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): Appending header - user-agent: AWS-SDK-KVS/3.0.0 MSVC/1916 Windows/6.2.9200 AMD64 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): Appending header - X-Amz-Date: 20220722T124656Z 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 57 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Sending the body { "ChannelARN": "arn:aws:kinesisvideo:us-east-2:420029824569:channel/TEST1234/1658274591195", "ClientId": "ConsumerViewer_23046", "Service": "TURN" }, size 152 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 2 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 44 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Connected with server response: 200 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): Date Header Returned By Server: Fri, 22 Jul 2022 12:46:59 GMT 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 46 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Received client http 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 48 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Received client http read: 481 bytes 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): Received client http read response: {"IceServerList":[{"Password":[PRIVATE],"Ttl":300,"Uris":["turn:3-144-2-67.t-c01cb9af.kinesisvideo.us-east-2.amazonaws.com:443?transport=udp","turns:3-144-2-67.t-c01cb9af.kinesisvideo.us-east-2.amazonaws.com:443?transport=udp","turns:3-144-2-67.t-c01cb9af.kinesisvideo.us-east-2.amazonaws.com:443?transport=tcp"],"Username":[PRIVATE]}]} 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 47 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Http client completed 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 45 2022-07-22 12:46:56 DEBUG lwsHttpCallbackRoutine(): Client http closed 2022-07-22 12:46:56 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 30 [2022/07/22 15:46:56:8871] N: -- [wsicli|2|POST/h1/r-b0356e67.kinesisvideo.us-east-2.amazonaws.] (0) 735.534ms 2022-07-22 12:46:56 VERBOSE stepStateMachine(): State Machine - Current state: 0x0000000000000020, Next state: 0x0000000000000040, Current local state retry count [0], Max local state retry count [0], State transition wait time [0] ms 2022-07-22 12:46:56 VERBOSE signalingClientStateChanged(): Signaling client state changed to 7 - 'Ready' 2022-07-22 12:46:56 VERBOSE signalingClientConnectSync(): Signaling Client Connect Sync 2022-07-22 12:46:56 VERBOSE stepStateMachine(): State Machine - Current state: 0x0000000000000040, Next state: 0x0000000000000080, Current local state retry count [0], Max local state retry count [0], State transition wait time [0] ms 2022-07-22 12:46:56 VERBOSE signalingClientStateChanged(): Signaling client state changed to 8 - 'Connecting' 2022-07-22 12:46:56 VERBOSE lwsCompleteSync(): Perform secure synchronous call for URL: wss://v-dc297268.kinesisvideo.us-east-2.amazonaws.com?X-Amz-ChannelARN=arn:aws:kinesisvideo:us-east-2:420029824569:channel/TEST1234/1658274591195&X-Amz-ClientId=ConsumerViewer_23046 2022-07-22 12:46:56 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 85 [2022/07/22 15:46:56:8959] N: ++ [wsicli|3|WS/h1/v-dc297268.kinesisvideo.us-east-2.amazonaws.co] (1) [2022/07/22 15:46:57:0279] W: lws_plat_set_socket_options_ip: not implemented on windows platform 2022-07-22 12:46:57 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 105 2022-07-22 12:46:57 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 19 2022-07-22 12:46:57 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 29 2022-07-22 12:46:57 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:57 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:57 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:57 VERBOSE lwsHttpCallbackRoutine(): HTTPS callback with reason 58 2022-07-22 12:46:57 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 24 2022-07-22 12:46:57 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 44 2022-07-22 12:46:57 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 2 2022-07-22 12:46:57 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 3 2022-07-22 12:46:57 DEBUG lwsWssCallbackRoutine(): Connection established 2022-07-22 12:46:57 VERBOSE stepStateMachine(): State Machine - Current state: 0x0000000000000080, Next state: 0x0000000000000100, Current local state retry count [0], Max local state retry count [0], State transition wait time [0] ms 2022-07-22 12:46:57 VERBOSE signalingClientStateChanged(): Signaling client state changed to 9 - 'Connected' [KVS Viewer] Signaling client connection to socket established 2022-07-22 12:46:57 VERBOSE signalingClientGetIceConfigInfoCount(): Signaling Client Get ICE Config Info Count 2022-07-22 12:46:57 DEBUG refreshIceConfiguration(): Refreshing the ICE Server Configuration 2022-07-22 12:46:57 VERBOSE signalingClientGetIceConfigInfo(): Signaling Client Get ICE Config Info 2022-07-22 12:46:57 DEBUG refreshIceConfiguration(): Refreshing the ICE Server Configuration 2022-07-22 12:46:57 DEBUG iceAgentValidateKvsRtcConfig(): iceLocalCandidateGatheringTimeout: 10000 ms iceConnectionCheckTimeout: 10000 ms iceCandidateNominationTimeout: 10000 ms iceConnectionCheckPollingInterval: 50 ms 2022-07-22 12:46:57 DEBUG initializePeerConnection(): time taken to create peer connection 227 ms [KVS Viewer] Creating streaming session...completed 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN socketBind(): bind() failed for ip address: 169.254.87.231, port 0 with errno The requested address is not valid in its context. 2022-07-22 12:46:58 ERROR createSocketConnection(): operation returned status code: 0x58000018 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN socketBind(): bind() failed for ip address: 169.254.254.116, port 0 with errno The requested address is not valid in its context. 2022-07-22 12:46:58 ERROR createSocketConnection(): operation returned status code: 0x58000018 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN socketBind(): bind() failed for ip address: 169.254.252.37, port 0 with errno The requested address is not valid in its context. 2022-07-22 12:46:58 ERROR createSocketConnection(): operation returned status code: 0x58000018 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG createSocket(): setsockopt() NO_SIGNAL failed with errno An unknown, invalid, or unsupported option or level was specified in a getsockopt or setsockopt call. [KVS Viewer] Completed setting local description [KVS Viewer] Non trickle ice. Wait for Candidate collection to complete 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG turnConnectionStepState(): TurnConnection state changed from TURN_STATE_NEW to TURN_STATE_CHECK_SOCKET_CONNECTION 2022-07-22 12:46:58 DEBUG turnConnectionStepState(): TurnConnection state changed from TURN_STATE_NEW to TURN_STATE_CHECK_SOCKET_CONNECTION 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): sendto() failed with errno A socket operation was attempted to an unreachable network. 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): Close socket 588 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): Failed to send data. Bytes sent 0. Data len 28. Retry count 0 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): Warning: Send data failed with 0x5800001a 2022-07-22 12:46:58 ERROR iceUtilsSendData(): operation returned status code: 0x5800001a 2022-07-22 12:46:58 ERROR iceUtilsSendStunPacket(): operation returned status code: 0x5800001a 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN iceAgentSendStunPacket(): iceUtilsSendStunPacket failed with 0x5800001a 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): sendto() failed with errno A socket operation was attempted to an unreachable network. 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): Close socket 580 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): Failed to send data. Bytes sent 0. Data len 28. Retry count 0 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): Warning: Send data failed with 0x5800001a 2022-07-22 12:46:58 ERROR iceUtilsSendData(): operation returned status code: 0x5800001a 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 ERROR iceUtilsSendStunPacket(): operation returned status code: 0x5800001a 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN iceAgentSendStunPacket(): iceUtilsSendStunPacket failed with 0x5800001a 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG iceAgentLogNewCandidate(): New local ice candidate discovered. Id: o+SlZj8/q. Ip: 127.0.0.1:54130. Type: host. Protocol: udp. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG iceAgentLogNewCandidate(): New local ice candidate discovered. Id: sMwrymhYu. Ip: 0000:0000:0000:0000:0000:0000:0000:0001:54129. Type: host. Protocol: udp. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG iceAgentLogNewCandidate(): New local ice candidate discovered. Id: +0Af9Vlsd. Ip: 192.168.1.104:54128. Type: host. Protocol: udp. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 DEBUG iceAgentLogNewCandidate(): New local ice candidate discovered. Id: Bqnz+1PUO. Ip: 192.168.56.1:54127. Type: host. Protocol: udp. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied. 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied.
Hi @mehmetcy84, the error codes from your logs mean the following:
- 0x58000018:
STATUS_BINDING_SOCKET_FAILED
- 0x5800001a:
STATUS_SEND_DATA_FAILED
- 0x0000000a:
STATUS_READ_FILE_FAILED
I think the first two errors happen because of issues with the connection. It could have been caused due toDLWS_WITH_THREADPOOL=0
in libwebsockets. The third error can be caused due to missing permissions to create / read files in a folder
Hi @mehmetcy84, I'm also facing the same errors while trying to run client Viewer Sample on Windows 11 64bit + VS2017. I'm trying with "-DLWS_WITH_THREADPOOL=1" at libwebsockets building, but it does not ease the problem.
createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied.
This error does not affect its behavior since it has no actual effect, so we can just ignore it.
Critical point is that it fails to send data at this point:
2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): sendto() failed with errno A socket operation was attempted to an unreachable network.
2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): Close socket 588
2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): Failed to send data. Bytes sent 0. Data len 28. Retry count 0
It seems that the first data sending part blocks inside libwebsocket waiting for a signal. Can anyone have a solution for this?
Hi @mehmetcy84, I'm also facing the same errors while trying to run client Viewer Sample on Windows 11 64bit + VS2017. I'm trying with "-DLWS_WITH_THREADPOOL=1" at libwebsockets building, but it does not ease the problem.
createSocket(): setsockopt() NO_SIGNAL failed with errno An invalid argument was supplied.
This error does not affect its behavior since it has no actual effect, so we can just ignore it.
Critical point is that it fails to send data at this point:
2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): sendto() failed with errno A socket operation was attempted to an unreachable network. 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): Close socket 588 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): Failed to send data. Bytes sent 0. Data len 28. Retry count 0
It seems that the first data sending part blocks inside libwebsocket waiting for a signal. Can anyone have a solution for this?
You are right. By the way, throughout the build, did you encounter an issue with the threadpool usage, or did it work automatically?
Today I have built the SDK for MacOS, and the build flowed flawlessly and I could run the built sample viewer right away. For some reason, the SDK built for Windows has this weird issue.
Yes, I've succeeded building with threadpool enabled. You need pthread for Windows. Before build, place the "pthreads for Windows" files at a directory, and add the following to CMAKE_ARGS
in CMake/Dependencies/libwebsockets-CMakeLists.txt
to tell cmake to use pthread.
-DLWS_HAVE_PTHREAD_H=1
-DLWS_EXT_PTHREAD_INCLUDE_DIR=c:/some/where/pthreads/include
-DLWS_EXT_PTHREAD_LIBRARIES=c:/some/where/pthreads/lib/x64/libpthreadGC2.a
-DLWS_WITH_MINIMAL_EXAMPLES=1
After the build, place the corresponding DLL pthreads/dll/x64/pthreadGC2.dll
to somewhere on exec path or at build/samples
.
(edited) @mehmetcy84 Adding those arguments to cmake command did not work but editing CMakeLists.txt worked for me. I'm not familiar with CMake and don't know why, though.
Tried updating libwebsocket to latest version (v4.3.2) but no effect.
Hi @mehmetcy84, the error codes from your logs mean the following:
- 0x58000018:
STATUS_BINDING_SOCKET_FAILED
- 0x5800001a:
STATUS_SEND_DATA_FAILED
- 0x0000000a:
STATUS_READ_FILE_FAILED
I think the first two errors happen because of issues with the connection. It could have been caused due toDLWS_WITH_THREADPOOL=0
in libwebsockets. The third error can be caused due to missing permissions to create / read files in a folder
Seems like this issue is not related with threadpool, as per the comment by [nitslp-ri].
Is there a possible workaround, or a way to access to a prebuilt C SDK for Windows, as this is currently blocking development on Windows?
Tried updating libwebsocket to latest version (v4.3.2) but no effect.
Have you been able to find a workaround for this?
No, nothing yet.
hi @mehmetcy84, have you solved this problem yet
hi @mehmetcy84, have you solved this problem yet @uianster Unfortunately not yet. I have all sorts of issues running the Kvs Viewer client on Windows. Signaling (sending SDP offer) works intermittently, STUN server response does not fire the incomingdatahandler callback, and for local connection, the STUN message from the browser is ignored as well not firing OnInboundPacket function. Nothing works on Windows for me.
hi @mehmetcy84, have you solved this problem yet @uianster Unfortunately not yet. I have all sorts of issues running the Kvs Viewer client on Windows. Signaling (sending SDP offer) works intermittently, STUN server response does not fire the incomingdatahandler callback, and for local connection, the STUN message from the browser is ignored as well not firing OnInboundPacket function. Nothing works on Windows for me.
I have the same problem. I tried to solve these problems these days. Now the program can run normally on Windows,it work for me.
The following is what I do:
1、filter network
error log: 2022-07-22 12:46:58 ERROR createSocketConnection(): operation returned status code: 0x58000018 2022-07-22 12:46:58 DEBUG socketSendDataWithRetry(): sendto() failed with errno A socket operation was attempted to an unreachable network.
The log becode of some local network interfaces not work well,you can filter network by:
- fix:
- configuration.kvsRtcConfiguration.iceSetInterfaceFilterFunc = NULL
+ configuration.kvsRtcConfiguration.iceSetInterfaceFilterFunc = sampleFilterNetworkInterfaces
2、poll events
error log: 2022-07-22 12:46:58 WARN connectionListenerReceiveDataRoutine(): poll() failed with errno An invalid argument was supplied.
for windows,POLLPRI will causes the poll() return -1
- fix:
- rfds[nfds].events = POLLIN | POLLPRI;
+ rfds[nfds].events = POLLIN;
3、send offer timeout
- fix:
- #define SIGNALING_SEND_TIMEOUT (5 * HUNDREDS_OF_NANOS_IN_A_SECOND)
+ #define SIGNALING_SEND_TIMEOUT (10 * HUNDREDS_OF_NANOS_IN_A_SECOND)
@uianster Oh my goodness. After months of agony, thanks to you, finally a working solution! @nitslp-ri Removing POLLPRI and increasing the timeout duration fixed for me.
Kinesis people, please do fix this for Windows...
The only part I didn't apply in your checklist is this: (I had modified code to skip 127.0.0.1 and IPv6 interfaces manually.)
- configuration.kvsRtcConfiguration.iceSetInterfaceFilterFunc = NULL
- configuration.kvsRtcConfiguration.iceSetInterfaceFilterFunc = sampleFilterNetworkInterfaces
Adding this change gave me these errors: 2022-11-25 09:39:14 INFO getLocalhostIpAddresses(): Callback set to allow network interface filtering 2022-11-25 09:39:14 DEBUG sampleFilterNetworkInterfaces(): Ethernet 2 blocked. Candidates will not be gathered 2022-11-25 09:39:14 INFO getLocalhostIpAddresses(): Callback set to allow network interface filtering 2022-11-25 09:39:14 DEBUG sampleFilterNetworkInterfaces(): Loopback Pseudo-Interface 1 blocked. Candidates will not be gathered 2022-11-25 09:39:14 INFO getLocalhostIpAddresses(): Callback set to allow network interface filtering 2022-11-25 09:39:14 DEBUG sampleFilterNetworkInterfaces(): Loopback Pseudo-Interface 1 blocked. Candidates will not be gathered 2022-11-25 09:39:14 WARN iceAgentInitHostCandidate(): MEHKIN iceAgentInitHostCandidate-0 2022-11-25 09:39:14 ERROR iceAgentInitHostCandidate(): operation returned status code: 0x5a00001d 2022-11-25 09:39:14 ERROR iceAgentStartGathering(): operation returned status code: 0x5a00001d [KVS Viewer] setLocalDescription(): operation returned status code: 0x5a00001d
Tried updating libwebsocket to latest version (v4.3.2) but no effect.
Have you been able to find a workaround for this?
@nitslp-ri how did you manage to update the libwebsocket to latest version? Did you just change the git tag inside CMake/Dependencies/libwebsockets-CMakeLists.txt?
-GIT_TAG v4.2.2
+GIT_TAG v4.3.0
When I changed this I received a build error about applying a path. So I also disabled the patch application for libwebsockets in the same file.
-SET(PATCH_COMMAND git apply --ignore-whitespace ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-old-gcc-fix-cast-cmakelists.patch ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-leak-pipe-fix.patch)
+//SET(PATCH_COMMAND git apply --ignore-whitespace ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-old-gcc-fix-cast-cmakelists.patch ${CMAKE_CURRENT_LIST_DIR}/libwebsockets-leak-pipe-fix.patch)
But still get this error:
[100%] Linking C shared library ..\bin\websockets.dll LINK Pass 1: command "C:\PROGRA~2\MICROS~1\2017\ENTERP~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\websockets_shared.dir\objects1.rsp /out:..\bin\websockets.dll /implib:websockets.lib /pdb:E:\BitBucketRepository\amazon-kinesis-video-streams-webrtc-sdk-c-5\open-source\libwebsockets\build\src\project_libwebsockets-build\bin\websockets.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL C:\Program Files\OpenSSL-Win64\lib\VC\libssl64MDd.lib C:\Program Files\OpenSSL-Win64\lib\VC\libcrypto64MDd.lib ssl.lib crypto.lib ws2_32.lib userenv.lib psapi.lib iphlpapi.lib crypt32.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\websockets_shared.dir/intermediate.manifest CMakeFiles\websockets_shared.dir/manifest.res" failed (exit code 1104) with the following output: LINK : fatal error LNK1104: cannot open file 'ssl.lib'