summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libproxy/cmake/modules/pacrunner_duktape.cmk12
-rw-r--r--libproxy/modules/pacrunner_duktape.cpp11
2 files changed, 21 insertions, 2 deletions
diff --git a/libproxy/cmake/modules/pacrunner_duktape.cmk b/libproxy/cmake/modules/pacrunner_duktape.cmk
index a468125..0f2c323 100644
--- a/libproxy/cmake/modules/pacrunner_duktape.cmk
+++ b/libproxy/cmake/modules/pacrunner_duktape.cmk
@@ -1,11 +1,19 @@
+option(WITH_DUKTAPE "Search for Duktape package" ON)
+
if(WIN32)
set(DUKTAPE_FOUND 0)
+ if(WITH_DUKTAPE)
+ find_package(duktape QUIET)
+ if(DUKTAPE_FOUND)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${DUKTAPE_INCLUDE_DIRS})
+ link_libraries(${DUKTAPE_LIBRARY})
+ set(DUKTAPE_FOUND 1) # find_package sets DUKTAPE_FOUND to True and not 0
+ endif()
+ endif()
else()
set(DUKTAPE_INCLUDE_DIR "DUKTAPE_INCLUDE_DIR-NOTFOUND" CACHE PATH "Path to Duktape headers")
set(DUKTAPE_LIBRARIES "DUKTAPE_LIBRARIES-NOTFOUND" CACHE FILEPATH "Path to Duktape libraries")
- option(WITH_DUKTAPE "Search for Duktape package" ON)
-
if(WITH_DUKTAPE)
px_check_modules(DUKTAPE "duktape")
diff --git a/libproxy/modules/pacrunner_duktape.cpp b/libproxy/modules/pacrunner_duktape.cpp
index 8288e13..a32d946 100644
--- a/libproxy/modules/pacrunner_duktape.cpp
+++ b/libproxy/modules/pacrunner_duktape.cpp
@@ -19,7 +19,10 @@
******************************************************************************/
#include "../extension_pacrunner.hpp"
+#ifndef WIN32
#include <unistd.h> // gethostname
+#endif
+
using namespace libproxy;
#include <duktape.h>
@@ -75,6 +78,11 @@ static duk_ret_t myIpAddress(duk_context *ctx) {
class duktape_pacrunner : public pacrunner {
public:
duktape_pacrunner(string pac, const url& pacurl) : pacrunner(pac, pacurl) {
+#ifdef WIN32
+ // On windows, we need to initialize the winsock dll first.
+ WSADATA WsaData;
+ WSAStartup(MAKEWORD(2, 0), &WsaData);
+#endif
this->ctx = duk_create_heap_default();
if (!this->ctx) goto error;
duk_push_c_function(this->ctx, dnsResolve, 1);
@@ -103,6 +111,9 @@ public:
~duktape_pacrunner() {
duk_destroy_heap(this->ctx);
+#ifdef WIN32
+ WSACleanup();
+#endif
}
string run(const url& url_) override {