diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b70b358..f1b64445 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1222,6 +1222,10 @@ elseif (WIN32) list(APPEND LIB_LIST ws2_32.lib userenv.lib psapi.lib iphlpapi.lib) endif() +if (${CMAKE_SYSTEM_NAME} MATCHES "QNX") + list(APPEND LIB_LIST socket) +endif() + if (UNIX) list(APPEND LIB_LIST m) endif() @@ -1453,7 +1457,7 @@ if (NOT LWS_WITHOUT_TESTAPPS) if (UNIX AND LWS_WITH_PLUGINS) set(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}") - if(NOT(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")) + if(NOT((${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") OR (${CMAKE_SYSTEM_NAME} MATCHES "QNX"))) target_link_libraries(websockets dl) endif() endif() diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index d017735b..32157eff 100644 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -2270,7 +2270,7 @@ lws_parse_uri(char *p, const char **prot, const char **ads, int *port, * extensions disabled. */ -int +LWS_VISIBLE int lws_extension_callback_pm_deflate(struct lws_context *context, const struct lws_extension *ext, struct lws *wsi, diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 504eb46c..e51052bb 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -113,7 +113,7 @@ typedef unsigned long long lws_intptr_t; #include #endif -#if defined(__NetBSD__) || defined(__FreeBSD__) +#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__QNX__) #include #endif diff --git a/lib/plat/lws-plat-unix.c b/lib/plat/lws-plat-unix.c index 81c2d1be..e5be9e8a 100644 --- a/lib/plat/lws-plat-unix.c +++ b/lib/plat/lws-plat-unix.c @@ -70,6 +70,13 @@ lws_plat_pipe_close(struct lws *wsi) pt->dummy_pipe_fds[0] = pt->dummy_pipe_fds[1] = -1; } +#ifdef __QNX__ +# include "netinet/tcp_var.h" +# define TCP_KEEPINTVL TCPCTL_KEEPINTVL +# define TCP_KEEPIDLE TCPCTL_KEEPIDLE +# define TCP_KEEPCNT TCPCTL_KEEPCNT +#endif + unsigned long long time_in_microseconds(void) { struct timeval tv; @@ -344,7 +351,7 @@ lws_plat_set_socket_options(struct lws_vhost *vhost, int fd) /* Disable Nagle */ optval = 1; -#if defined (__sun) +#if defined (__sun) || defined(__QNX__) if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (const void *)&optval, optlen) < 0) return 1; #elif !defined(__APPLE__) && \ diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index 6d3a1928..b2c14cca 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -152,7 +152,7 @@ int fork(void); #if defined (__ANDROID__) #include #include -#elif defined (__sun) || defined(__HAIKU__) +#elif defined (__sun) || defined(__HAIKU__) || defined(__QNX__) #include #else #if !defined(LWS_WITH_ESP32) diff --git a/plugins/generic-table/protocol_table_dirlisting.c b/plugins/generic-table/protocol_table_dirlisting.c index dd1300a2..90872668 100644 --- a/plugins/generic-table/protocol_table_dirlisting.c +++ b/plugins/generic-table/protocol_table_dirlisting.c @@ -23,8 +23,8 @@ #define LWS_INTERNAL #include "../lib/libwebsockets.h" -#include #include +#include #include struct fobj { diff --git a/plugins/protocol_post_demo.c b/plugins/protocol_post_demo.c index e1b788b4..4bff99b8 100644 --- a/plugins/protocol_post_demo.c +++ b/plugins/protocol_post_demo.c @@ -24,6 +24,7 @@ #include "../lib/libwebsockets.h" #endif +#include #include #include #include @@ -32,7 +33,6 @@ #include #endif #include -#include struct per_session_data__post_demo { struct lws_spa *spa; diff --git a/test-apps/test-server-v2.0.c b/test-apps/test-server-v2.0.c index 8c45ae95..96623ed5 100644 --- a/test-apps/test-server-v2.0.c +++ b/test-apps/test-server-v2.0.c @@ -22,9 +22,10 @@ #include #include #ifndef WIN32 +#include +#include #include #endif -#include /* windows has no SIGUSR1 */ #if !defined(WIN32) && !defined(_WIN32)