diff options
author | Andy Green <andy@warmcat.com> | 2012-04-12 13:26:49 +0800 |
---|---|---|
committer | Andy Green <andy.green@linaro.org> | 2012-04-12 13:32:19 +0800 |
commit | aa6fc44b0aba44a4ce455bb5752c3bacc20c4991 (patch) | |
tree | b3a396458c6f63b8e3c56584bc794c4ec24e19cd | |
parent | dc36192435059246cfb5bc492761c60a663d9ae6 (diff) |
mingw add win32helper to lib and fix extpoll
Based on work from Radu Sorici <soriciradu@gmail.com>
Signed-off-by: Andy Green <andy.green@linaro.org>
-rw-r--r-- | lib/Makefile.am | 2 | ||||
-rw-r--r-- | lib/Makefile.in | 2 | ||||
-rw-r--r-- | lib/libwebsockets.c | 8 | ||||
-rw-r--r-- | libwebsockets-api-doc.html | 5 | ||||
-rw-r--r-- | test-server/Makefile.am | 8 | ||||
-rw-r--r-- | test-server/Makefile.in | 8 | ||||
-rw-r--r-- | test-server/test-server-extpoll.c | 18 | ||||
-rw-r--r-- | win32port/win32helpers/websock-w32.c | 9 | ||||
-rw-r--r-- | win32port/win32helpers/websock-w32.h | 2 |
9 files changed, 47 insertions, 15 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am index fec6cd4..119366f 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -24,7 +24,7 @@ libwebsockets_la_LDFLAGS:= if MINGW libwebsockets_la_CFLAGS+= -w -I../win32port/win32helpers -I ../win32port/zlib/ -libwebsockets_la_LDFLAGS+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -L../win32port/zlib -L../win32port/win32helpers/ -lwebsock-w32 +libwebsockets_la_LDFLAGS+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc else libwebsockets_la_CFLAGS+= -rdynamic -fPIC -Werror libwebsockets_la_LDFLAGS+= -version-info 0:3 diff --git a/lib/Makefile.in b/lib/Makefile.in index 3604ce3..b1b8783 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -38,7 +38,7 @@ host_triplet = @host@ @EXT_GOOGLE_MUX_TRUE@am__append_1 = extension-x-google-mux.c @LIBCRYPTO_FALSE@am__append_2 = md5.c sha-1.c @MINGW_TRUE@am__append_3 = -w -I../win32port/win32helpers -I ../win32port/zlib/ -@MINGW_TRUE@am__append_4 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -L../win32port/zlib -L../win32port/win32helpers/ -lwebsock-w32 +@MINGW_TRUE@am__append_4 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc @MINGW_FALSE@am__append_5 = -rdynamic -fPIC -Werror @MINGW_FALSE@am__append_6 = -version-info 0:3 subdir = lib diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index ebd54ba..9e22a16 100644 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -32,6 +32,14 @@ int openssl_websocket_private_data_index; #endif +#ifdef __MINGW32__ +#include "../win32port/win32helpers/websock-w32.c" +#else +#ifdef __MINGW64__ +#include "../win32port/win32helpers/websock-w32.c" +#endif +#endif + /* * In-place str to lower case */ diff --git a/libwebsockets-api-doc.html b/libwebsockets-api-doc.html index 98e1e66..afffe0d 100644 --- a/libwebsockets-api-doc.html +++ b/libwebsockets-api-doc.html @@ -863,6 +863,7 @@ allows as many protocols as you like to be handled by one server. <i>const char *</i> <b>name</b>;<br> <i>int (*</i><b>callback</b>) <i>(struct libwebsocket_context *context,struct libwebsocket_extension *ext,struct libwebsocket *wsi,enum libwebsocket_extension_callback_reasons reason,void *user, void *in, size_t len)</i>;<br> <i>size_t</i> <b>per_session_data_size</b>;<br> + <i>void *</i> <b>per_context_private_data</b>;<br> };<br> <h3>Members</h3> <dl> @@ -874,5 +875,9 @@ allows as many protocols as you like to be handled by one server. <dd>Libwebsockets will auto-malloc this much memory for the use of the extension, a pointer to it comes in the <tt><b>user</b></tt> callback parameter +<dt><b>per_context_private_data</b> +<dd>Optional storage for this externsion that +is per-context, so it can track stuff across +all sessions, etc, if it wants </dl> <hr> diff --git a/test-server/Makefile.am b/test-server/Makefile.am index 09da2e9..d2b85f1 100644 --- a/test-server/Makefile.am +++ b/test-server/Makefile.am @@ -14,10 +14,10 @@ libwebsockets_test_client_CFLAGS:= -w -I../win32port/win32helpers libwebsockets_test_server_extpoll_CFLAGS:= -w -I../win32port/win32helpers libwebsockets_test_fraggle_CFLAGS:= -w -I../win32port/win32helpers -libwebsockets_test_server_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32 -libwebsockets_test_client_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32 -libwebsockets_test_server_extpoll_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32 -libwebsockets_test_fraggle_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32 +libwebsockets_test_server_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz +libwebsockets_test_client_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz +libwebsockets_test_server_extpoll_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz +libwebsockets_test_fraggle_LDADD+= -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz else libwebsockets_test_server_CFLAGS:= -Werror diff --git a/test-server/Makefile.in b/test-server/Makefile.in index 5beb753..b7615c9 100644 --- a/test-server/Makefile.in +++ b/test-server/Makefile.in @@ -38,10 +38,10 @@ bin_PROGRAMS = libwebsockets-test-server$(EXEEXT) \ libwebsockets-test-client$(EXEEXT) \ libwebsockets-test-server-extpoll$(EXEEXT) \ libwebsockets-test-fraggle$(EXEEXT) $(am__EXEEXT_1) -@MINGW_TRUE@am__append_1 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32 -@MINGW_TRUE@am__append_2 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32 -@MINGW_TRUE@am__append_3 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32 -@MINGW_TRUE@am__append_4 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lpthread -ldl -lws2_32 -lz -L../win32port/win32helpers/ -lwebsock-w32 +@MINGW_TRUE@am__append_1 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz +@MINGW_TRUE@am__append_2 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz +@MINGW_TRUE@am__append_3 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz +@MINGW_TRUE@am__append_4 = -lm -luser32 -ladvapi32 -lkernel32 -lgcc -lws2_32 -lz @NOPING_FALSE@am__append_5 = libwebsockets-test-ping subdir = test-server DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in diff --git a/test-server/test-server-extpoll.c b/test-server/test-server-extpoll.c index 1ad3fb5..0b44d8a 100644 --- a/test-server/test-server-extpoll.c +++ b/test-server/test-server-extpoll.c @@ -30,7 +30,15 @@ #include <getopt.h> #include <string.h> #include <sys/time.h> +#ifdef __MINGW32__ +#include "../win32port/win32helpers/websock-w32.h" +#else +#ifdef __MINGW64__ +#include "../win32port/win32helpers/websock-w32.h" +#else #include <poll.h> +#endif +#endif #include "../lib/libwebsockets.h" @@ -428,9 +436,9 @@ int main(int argc, char **argv) { int n = 0; const char *cert_path = - LOCAL_RESOURCE_PATH"/libwebsockets-test-server.pem"; + LOCAL_RESOURCE_PATH"/libwebsockets-test-server.pem"; const char *key_path = - LOCAL_RESOURCE_PATH"/libwebsockets-test-server.key.pem"; + LOCAL_RESOURCE_PATH"/libwebsockets-test-server.key.pem"; unsigned char buf[LWS_SEND_BUFFER_PRE_PADDING + 1024 + LWS_SEND_BUFFER_POST_PADDING]; int port = 7681; @@ -439,7 +447,7 @@ int main(int argc, char **argv) int opts = 0; unsigned int oldus = 0; char interface_name[128] = ""; - const char * interface = NULL; + const char *interface_ptr = NULL; fprintf(stderr, "libwebsockets test server with external poll()\n" "(C) Copyright 2010-2011 Andy Green <andy@warmcat.com> " @@ -462,7 +470,7 @@ int main(int argc, char **argv) case 'i': strncpy(interface_name, optarg, sizeof interface_name); interface_name[(sizeof interface_name) - 1] = '\0'; - interface = interface_name; + interface_ptr = interface_name; break; case 'h': fprintf(stderr, "Usage: test-server " @@ -474,7 +482,7 @@ int main(int argc, char **argv) if (!use_ssl) cert_path = key_path = NULL; - context = libwebsocket_create_context(port, interface, protocols, + context = libwebsocket_create_context(port, interface_ptr, protocols, libwebsocket_internal_extensions, cert_path, key_path, -1, -1, opts); if (context == NULL) { diff --git a/win32port/win32helpers/websock-w32.c b/win32port/win32helpers/websock-w32.c index d412c0c..bec150b 100644 --- a/win32port/win32helpers/websock-w32.c +++ b/win32port/win32helpers/websock-w32.c @@ -1,6 +1,15 @@ #define FD_SETSIZE 256 +#ifdef __MINGW32__ +#include <winsock2.h> +#else +#ifdef __MINGW64__ +#include <winsock2.h> +#else #include <WinSock2.h> +#endif +#endif + #include <stdlib.h> #include <errno.h> #include "websock-w32.h" diff --git a/win32port/win32helpers/websock-w32.h b/win32port/win32helpers/websock-w32.h index 2483a8f..dfd99ca 100644 --- a/win32port/win32helpers/websock-w32.h +++ b/win32port/win32helpers/websock-w32.h @@ -28,6 +28,8 @@ #ifdef DEF_POLL_STUFF
+#include <winsock2.h>
+
typedef struct pollfd {
SOCKET fd;
short events;
|