+/*
+ * libwebsockets-test-server - libwebsockets test implementation
+ *
+ * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com>
+ *
+ * This file is made available under the Creative Commons CC0 1.0
+ * Universal Public Domain Dedication.
+ *
+ * The person who associated a work with this deed has dedicated
+ * the work to the public domain by waiving all of his or her rights
+ * to the work worldwide under copyright law, including all related
+ * and neighboring rights, to the extent allowed by law. You can copy,
+ * modify, distribute and perform the work, even for commercial purposes,
+ * all without asking permission.
+ *
+ * The test apps are intended to be adapted for use in your code, which
+ * may be proprietary. So unlike the library itself, they are licensed
+ * Public Domain.
+ */
+
+#if defined(_WIN32) && defined(EXTERNAL_POLL)
+#define WINVER 0x0600
+#define _WIN32_WINNT 0x0600
+#define poll(fdArray, fds, timeout) WSAPoll((LPWSAPOLLFD)(fdArray), (ULONG)(fds), (INT)(timeout))
+#endif
+
#include "lws_config.h"
#include <stdio.h>
#ifdef _WIN32
#include <io.h>
-#ifdef EXTERNAL_POLL
-#define poll WSAPoll
-#endif
#include "gettimeofday.h"
#else
#include <syslog.h>
extern int max_poll_elements;
#ifdef EXTERNAL_POLL
-extern struct libwebsocket_pollfd *pollfds;
+extern struct lws_pollfd *pollfds;
extern int *fd_lookup;
extern int count_pollfds;
#endif
extern volatile int force_exit;
-extern struct libwebsocket_context *context;
+extern struct lws_context *context;
extern char *resource_path;
+#if defined(LWS_OPENSSL_SUPPORT) && defined(LWS_HAVE_SSL_CTX_set1_param)
+extern char crl_path[1024];
+#endif
extern void test_server_lock(int care);
extern void test_server_unlock(int care);
#endif
struct per_session_data__http {
- int fd;
+ lws_filefd_type fd;
+#ifdef LWS_WITH_CGI
+ struct lws_cgi_args args;
+#endif
+#if defined(LWS_WITH_CGI) || !defined(LWS_NO_CLIENT)
+ int reason_bf;
+#endif
+ unsigned int client_finished:1;
+
+
+ struct lws_spa *spa;
+ char result[500 + LWS_PRE];
+ int result_len;
+
+ char filename[256];
+ long file_length;
+ lws_filefd_type post_fd;
};
/*
};
struct per_session_data__lws_mirror {
- struct libwebsocket *wsi;
+ struct lws *wsi;
int ringbuffer_tail;
};
-extern int callback_http(struct libwebsocket_context *context,
- struct libwebsocket *wsi,
- enum libwebsocket_callback_reasons reason,
- void *user, void *in, size_t len);
-extern int callback_lws_mirror(struct libwebsocket_context *context,
- struct libwebsocket *wsi,
- enum libwebsocket_callback_reasons reason,
- void *user, void *in, size_t len);
-extern int callback_dumb_increment(struct libwebsocket_context *context,
- struct libwebsocket *wsi,
- enum libwebsocket_callback_reasons reason,
- void *user, void *in, size_t len);
+struct per_session_data__echogen {
+ size_t total;
+ size_t total_rx;
+ int fd;
+ int fragsize;
+ int wr;
+};
+
+struct per_session_data__lws_status {
+ struct per_session_data__lws_status *list;
+ struct timeval tv_established;
+ int last;
+ char ip[270];
+ char user_agent[512];
+ const char *pos;
+ int len;
+};
+
+extern int
+callback_http(struct lws *wsi, enum lws_callback_reasons reason, void *user,
+ void *in, size_t len);
+extern int
+callback_lws_mirror(struct lws *wsi, enum lws_callback_reasons reason,
+ void *user, void *in, size_t len);
+extern int
+callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason,
+ void *user, void *in, size_t len);
+extern int
+callback_lws_echogen(struct lws *wsi, enum lws_callback_reasons reason,
+ void *user, void *in, size_t len);
+extern int
+callback_lws_status(struct lws *wsi, enum lws_callback_reasons reason,
+ void *user, void *in, size_t len);
+
extern void
-dump_handshake_info(struct libwebsocket *wsi);
+dump_handshake_info(struct lws *wsi);