{"schema":"libjg2-1",
"vpath":"/git/",
"avatar":"/git/avatar/",
"alang":"",
"gen_ut":1750827199,
"reponame":"libwebsockets",
"desc":"libwebsockets lightweight C networking library",
"owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://libwebsockets.org/repo/libwebsockets",
"f":3,
"items": [
{"schema":"libjg2-1",
"cid":"58e05c3feeb2ad0296c73e7b16279c9e",
"commit": {"type":"commit",
"time": 1617616504,
"time_ofs": 60,
"oid_tree": { "oid": "745adc78935a0b06927daba6c43d59c98495415c", "alias": []},
"oid":{ "oid": "0d06d4bad28a6692a1a9e4d4fb651a0dfbcf94b8", "alias": []},
"msg": "windows: work well with vcpkg pthreads",
"sig_commit": { "git_time": { "time": 1617616504, "offset": 60 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },
"sig_author": { "git_time": { "time": 1617558605, "offset": 60 }, "name": "Mykola Stryebkov", "email": "mykola.stryebkov@icloud.com", "md5": "d29e767f46f3b72c820374317a270e15" }},
"body": "windows: work well with vcpkg pthreads\n"
,
"diff": "diff --git a/CMakeLists-implied-options.txt b/CMakeLists-implied-options.txt\nindex e90d2f4..1675c69 100644\n--- a/CMakeLists-implied-options.txt\n+++ b/CMakeLists-implied-options.txt\n@@ -274,7 +274,7 @@ endif()\n #endif()\n \n if (WIN32)\n-set(LWS_MAX_SMP 1)\n+#set(LWS_MAX_SMP 1)\n if (LWS_WITH_PLUGINS)\n set(LWS_WITH_LIBUV_INTERNAL 1)\n endif()\n@@ -414,6 +414,7 @@ if (LWS_WITH_PLUGINS OR (LWS_WITH_EVLIB_PLUGINS AND LWS_WITH_EVENT_LIBS))\n endif()\n \n if (WIN32 AND NOT LWS_EXT_PTHREAD_LIBRARIES)\n+ set(LWS_MAX_SMP 1)\n message(\u0022SMD requires pthreads\u0022)\n set(LWS_WITH_SYS_SMD 0)\n endif()\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 56ca522..947d51e 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -659,7 +659,11 @@ if (LWS_HAVE_PTHREAD_H AND NOT LWS_PLAT_FREERTOS)\n \t\t#endif\n \t\t#include \u003cpthread.h\u003e\n \t\tint main(void) {\n+\t\t#ifdef __PTW32_H\n+\t\t\tpthread_t th \u003d {0,0};\n+\t\t#else\n \t\t\tpthread_t th \u003d 0;\n+\t\t#endif\n \t\t\tpthread_setname_np(th, NULL);\n \t\t\treturn 0;\n \t\t}\u0022 LWS_HAS_PTHREAD_SETNAME_NP)\ndiff --git a/lib/core-net/dummy-callback.c b/lib/core-net/dummy-callback.c\nindex 2152e8a..c474ec4 100644\n--- a/lib/core-net/dummy-callback.c\n+++ b/lib/core-net/dummy-callback.c\n@@ -845,7 +845,13 @@ lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason,\n \n #if LWS_MAX_SMP \u003e 1\n \tcase LWS_CALLBACK_GET_THREAD_ID:\n+#ifdef __PTW32_H\n+\t\t/* If we use implementation of PThreads for Win that is\n+\t\t * distributed by VCPKG */\n+\t\treturn (int)(lws_intptr_t)(pthread_self()).p;\n+#else\n \t\treturn (int)(lws_intptr_t)pthread_self();\n+#endif // __PTW32_H\n #endif\n \n \tdefault:\ndiff --git a/lib/core/libwebsockets.c b/lib/core/libwebsockets.c\nindex c464085..4def856 100644\n--- a/lib/core/libwebsockets.c\n+++ b/lib/core/libwebsockets.c\n@@ -1250,7 +1250,13 @@ lws_mutex_refcount_init(struct lws_mutex_refcount *mr)\n \tmr-\u003elast_lock_reason \u003d NULL;\n \tmr-\u003elock_depth \u003d 0;\n \tmr-\u003emetadata \u003d 0;\n+#ifdef __PTW32_H\n+\t/* If we use implementation of PThreads for Win that is\n+\t * distributed by VCPKG */\n+\tmemset(\u0026mr-\u003elock_owner, 0, sizeof(pthread_t));\n+#else\n \tmr-\u003elock_owner \u003d 0;\n+#endif\n }\n \n void\n@@ -1272,7 +1278,14 @@ lws_mutex_refcount_lock(struct lws_mutex_refcount *mr, const char *reason)\n \t *\n \t * - it can be false and change to a different tid that is also false\n \t */\n-\tif (mr-\u003elock_owner \u003d\u003d pthread_self()) {\n+#ifdef __PTW32_H\n+\t/* If we use implementation of PThreads for Win that is\n+\t * distributed by VCPKG */\n+\tif (pthread_equal(mr-\u003elock_owner, pthread_self()))\n+#else\n+\tif (mr-\u003elock_owner \u003d\u003d pthread_self())\n+#endif\n+\t{\n \t\t/* atomic because we only change it if we own the lock */\n \t\tmr-\u003elock_depth++;\n \t\treturn;\n@@ -1294,15 +1307,27 @@ lws_mutex_refcount_unlock(struct lws_mutex_refcount *mr)\n \t\treturn;\n \n \tmr-\u003elast_lock_reason \u003d \u0022free\u0022;\n+#ifdef __PTW32_H\n+\t/* If we use implementation of PThreads for Win that is\n+\t * distributed by VCPKG */\n+\tmemset(\u0026mr-\u003elock_owner, 0, sizeof(pthread_t));\n+#else\n \tmr-\u003elock_owner \u003d 0;\n-\t//lwsl_notice(\u0022tid %d: unlock %s\u005cn\u0022, mr-\u003etid, mr-\u003elast_lock_reason);\n+#endif\n+\t// lwsl_notice(\u0022tid %d: unlock %s\u005cn\u0022, mr-\u003etid, mr-\u003elast_lock_reason);\n \tpthread_mutex_unlock(\u0026mr-\u003elock);\n }\n \n void\n lws_mutex_refcount_assert_held(struct lws_mutex_refcount *mr)\n {\n+#ifdef __PTW32_H\n+\t/* If we use implementation of PThreads for Win that is\n+\t * distributed by VCPKG */\n+\tassert(pthread_equal(mr-\u003elock_owner, pthread_self()) \u0026\u0026 mr-\u003elock_depth);\n+#else\n \tassert(mr-\u003elock_owner \u003d\u003d pthread_self() \u0026\u0026 mr-\u003elock_depth);\n+#endif\n }\n \n #endif /* SMP */\ndiff --git a/lib/tls/CMakeLists.txt b/lib/tls/CMakeLists.txt\nindex cc34bb7..78e9dab 100644\n--- a/lib/tls/CMakeLists.txt\n+++ b/lib/tls/CMakeLists.txt\n@@ -421,11 +421,19 @@ if (GENCERTS)\n \t\t\tmessage(\u0022OPENSSL_INPUT_WIN_PATH \u003d ${OPENSSL_INPUT_WIN_PATH}\u0022)\n \t\t\tmessage(\u0022cmd \u003d \u005c\u0022${OPENSSL_EXECUTABLE}\u005c\u0022 req -new -newkey rsa:2048 -days 10000 -nodes -x509 -keyout \u005c\u0022${TEST_SERVER_SSL_KEY}\u005c\u0022 -out \u005c\u0022${TEST_SERVER_SSL_CERT}\u005c\u0022\u0022)\n \n-\t\t\texecute_process(\n-\t\t\t\tCOMMAND cmd /c type \u0022${OPENSSL_INPUT_WIN_PATH}\u0022\n-\t\t\t\tCOMMAND \u0022${OPENSSL_EXECUTABLE}\u0022 req -new -newkey rsa:2048 -days 10000 -nodes -x509 -keyout \u0022${TEST_SERVER_SSL_KEY}\u0022 -out \u0022${TEST_SERVER_SSL_CERT}\u0022\n-\t\t\t\tRESULT_VARIABLE OPENSSL_RETURN_CODE\n-\t\t\t\tOUTPUT_QUIET ERROR_QUIET)\n+\t\t\tif(OPENSSL_CONFIG_FILE)\n+\t\t\t\texecute_process(\n+\t\t\t\t\tCOMMAND cmd /c type \u0022${OPENSSL_INPUT_WIN_PATH}\u0022\n+\t\t\t\t\tCOMMAND \u0022${OPENSSL_EXECUTABLE}\u0022 req -config ${OPENSSL_CONFIG_FILE} -new -newkey rsa:2048 -days 10000 -nodes -x509 -keyout \u0022${TEST_SERVER_SSL_KEY}\u0022 -out \u0022${TEST_SERVER_SSL_CERT}\u0022\n+\t\t\t\t\tRESULT_VARIABLE OPENSSL_RETURN_CODE\n+\t\t\t\t\tOUTPUT_QUIET ERROR_QUIET)\n+\t\t\telse()\n+\t\t\t\texecute_process(\n+\t\t\t\t\tCOMMAND cmd /c type \u0022${OPENSSL_INPUT_WIN_PATH}\u0022\n+\t\t\t\t\tCOMMAND \u0022${OPENSSL_EXECUTABLE}\u0022 req -new -newkey rsa:2048 -days 10000 -nodes -x509 -keyout \u0022${TEST_SERVER_SSL_KEY}\u0022 -out \u0022${TEST_SERVER_SSL_CERT}\u0022\n+\t\t\t\t\tRESULT_VARIABLE OPENSSL_RETURN_CODE\n+\t\t\t\t\tOUTPUT_QUIET ERROR_QUIET)\n+\t\t\tendif()\n \n \t\t\tmessage(\u0022\u005cn\u0022)\n \t\tendif()\ndiff --git a/lib/tls/openssl/openssl-tls.c b/lib/tls/openssl/openssl-tls.c\nindex 2a15ace..e79e6d1 100644\n--- a/lib/tls/openssl/openssl-tls.c\n+++ b/lib/tls/openssl/openssl-tls.c\n@@ -110,7 +110,11 @@ lws_openssl_lock_callback(int mode, int type, const char *file, int line)\n static unsigned long\n lws_openssl_thread_id(void)\n {\n+#ifdef __PTW32_H\n+\treturn (unsigned long)(intptr_t)(pthread_self()).p;\n+#else\n \treturn (unsigned long)pthread_self();\n+#endif\n }\n #endif\n \n","s":{"c":1750827199,"u": 5822}}
],"g": 7633,"chitpc": 0,"ehitpc": 0,"indexed":0
,
"ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}