diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index 957d9b89..41918d0b 100644 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -2737,7 +2737,18 @@ lws_is_cgi(struct lws *wsi) { #endif } +const struct lws_protocol_vhost_options * +lws_pvo_search(const struct lws_protocol_vhost_options *pvo, const char *name) +{ + while (pvo) { + if (!strcmp(pvo->name, name)) + break; + pvo = pvo->next; + } + + return pvo; +} #ifdef LWS_NO_EXTENSIONS LWS_EXTERN int diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 00e6485a..ea483f23 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -2346,6 +2346,17 @@ lws_adjust_protocol_psds(struct lws *wsi, size_t new_size); LWS_VISIBLE LWS_EXTERN int lws_finalize_startup(struct lws_context *context); +/** + * lws_pvo_search() - helper to find a named pvo in a linked-list + * + * \param pvo: the first pvo in the linked-list + * \param name: the name of the pvo to return if found + * + * Returns NULL, or a pointer to the name pvo in the linked-list + */ +const struct lws_protocol_vhost_options * +lws_pvo_search(const struct lws_protocol_vhost_options *pvo, const char *name); + LWS_VISIBLE LWS_EXTERN int lws_protocol_init(struct lws_context *context); diff --git a/minimal-examples/minimal-http-server-smp/minimal-http-server-smp.c b/minimal-examples/minimal-http-server-smp/minimal-http-server-smp.c index 52bd2cb9..86bbb1ad 100644 --- a/minimal-examples/minimal-http-server-smp/minimal-http-server-smp.c +++ b/minimal-examples/minimal-http-server-smp/minimal-http-server-smp.c @@ -8,7 +8,8 @@ * * This demonstrates a minimal multithreaded http server you can make with lws. * - * To keep it simple, it serves stuff in the directory it was started in. + * To keep it simple, it serves stuff in the subdirectory "./mount-origin" of + * the directory it was started in. * You can change that by changing mount.origin. * * Also for simplicity the number of threads is set in the code... note that @@ -29,7 +30,7 @@ static int interrupted; static const struct lws_http_mount mount = { /* .mount_next */ NULL, /* linked-list "next" */ /* .mountpoint */ "/", /* mountpoint URL */ - /* .origin */ ".", /* serve from dir */ + /* .origin */ "./mount-origin", /* serve from dir */ /* .def */ "index.html", /* default filename */ /* .protocol */ NULL, /* .cgienv */ NULL, diff --git a/minimal-examples/minimal-http-server-smp/favicon.ico b/minimal-examples/minimal-http-server-smp/mount-origin/favicon.ico similarity index 100% rename from minimal-examples/minimal-http-server-smp/favicon.ico rename to minimal-examples/minimal-http-server-smp/mount-origin/favicon.ico diff --git a/minimal-examples/minimal-http-server-smp/index.html b/minimal-examples/minimal-http-server-smp/mount-origin/index.html similarity index 100% rename from minimal-examples/minimal-http-server-smp/index.html rename to minimal-examples/minimal-http-server-smp/mount-origin/index.html diff --git a/minimal-examples/minimal-http-server-smp/libwebsockets.org-logo.png b/minimal-examples/minimal-http-server-smp/mount-origin/libwebsockets.org-logo.png similarity index 100% rename from minimal-examples/minimal-http-server-smp/libwebsockets.org-logo.png rename to minimal-examples/minimal-http-server-smp/mount-origin/libwebsockets.org-logo.png diff --git a/minimal-examples/minimal-http-server/minimal-http-server.c b/minimal-examples/minimal-http-server/minimal-http-server.c index 0784b550..e82cd3b3 100644 --- a/minimal-examples/minimal-http-server/minimal-http-server.c +++ b/minimal-examples/minimal-http-server/minimal-http-server.c @@ -8,8 +8,9 @@ * * This demonstrates the most minimal http server you can make with lws. * - * To keep it simple, it serves stuff in the directory it was started in. - * You can change that by changing mount.origin + * To keep it simple, it serves stuff from the subdirectory + * "./mount-origin" of the directory it was started in. + * You can change that by changing mount.origin below. */ #include @@ -21,7 +22,7 @@ static int interrupted; static const struct lws_http_mount mount = { /* .mount_next */ NULL, /* linked-list "next" */ /* .mountpoint */ "/", /* mountpoint URL */ - /* .origin */ ".", /* serve from dir */ + /* .origin */ "./mount-origin", /* serve from dir */ /* .def */ "index.html", /* default filename */ /* .protocol */ NULL, /* .cgienv */ NULL, diff --git a/minimal-examples/minimal-http-server/mount-origin/404.html b/minimal-examples/minimal-http-server/mount-origin/404.html new file mode 100644 index 00000000..1f7ae66e --- /dev/null +++ b/minimal-examples/minimal-http-server/mount-origin/404.html @@ -0,0 +1,9 @@ + + + +
+

404

+ Sorry, that file doesn't exist. + + + diff --git a/minimal-examples/minimal-http-server/favicon.ico b/minimal-examples/minimal-http-server/mount-origin/favicon.ico similarity index 100% rename from minimal-examples/minimal-http-server/favicon.ico rename to minimal-examples/minimal-http-server/mount-origin/favicon.ico diff --git a/minimal-examples/minimal-http-server/index.html b/minimal-examples/minimal-http-server/mount-origin/index.html similarity index 58% rename from minimal-examples/minimal-http-server/index.html rename to minimal-examples/minimal-http-server/mount-origin/index.html index cd3e8bc7..cc294bf6 100644 --- a/minimal-examples/minimal-http-server/index.html +++ b/minimal-examples/minimal-http-server/mount-origin/index.html @@ -4,6 +4,9 @@
Hello from the minimal http server example. +
+ You can confirm the 404 page handler by going to this + nonexistant page. diff --git a/minimal-examples/minimal-http-server/libwebsockets.org-logo.png b/minimal-examples/minimal-http-server/mount-origin/libwebsockets.org-logo.png similarity index 100% rename from minimal-examples/minimal-http-server/libwebsockets.org-logo.png rename to minimal-examples/minimal-http-server/mount-origin/libwebsockets.org-logo.png diff --git a/minimal-examples/minimal-ws-server-pmd-bulk/minimal-ws-server-pmd-bulk.c b/minimal-examples/minimal-ws-server-pmd-bulk/minimal-ws-server-pmd-bulk.c index 15867752..6a1b7150 100644 --- a/minimal-examples/minimal-ws-server-pmd-bulk/minimal-ws-server-pmd-bulk.c +++ b/minimal-examples/minimal-ws-server-pmd-bulk/minimal-ws-server-pmd-bulk.c @@ -8,8 +8,9 @@ * * This demonstrates the most minimal http server you can make with lws. * - * To keep it simple, it serves stuff in the directory it was started in. - * You can change that by changing mount.origin + * To keep it simple, it serves stuff in the subdirectory "./mount-origin" of + * the directory it was started in. + * You can change that by changing mount.origin. */ #include @@ -30,7 +31,7 @@ static int interrupted; static const struct lws_http_mount mount = { /* .mount_next */ NULL, /* linked-list "next" */ /* .mountpoint */ "/", /* mountpoint URL */ - /* .origin */ ".", /* serve from dir */ + /* .origin */ "./mount-origin", /* serve from dir */ /* .def */ "index.html", /* default filename */ /* .protocol */ NULL, /* .cgienv */ NULL, diff --git a/minimal-examples/minimal-ws-server-pmd/favicon.ico b/minimal-examples/minimal-ws-server-pmd-bulk/mount-origin/favicon.ico similarity index 100% rename from minimal-examples/minimal-ws-server-pmd/favicon.ico rename to minimal-examples/minimal-ws-server-pmd-bulk/mount-origin/favicon.ico diff --git a/minimal-examples/minimal-ws-server-pmd-bulk/index.html b/minimal-examples/minimal-ws-server-pmd-bulk/mount-origin/index.html similarity index 100% rename from minimal-examples/minimal-ws-server-pmd-bulk/index.html rename to minimal-examples/minimal-ws-server-pmd-bulk/mount-origin/index.html diff --git a/minimal-examples/minimal-ws-server-pmd-bulk/libwebsockets.org-logo.png b/minimal-examples/minimal-ws-server-pmd-bulk/mount-origin/libwebsockets.org-logo.png similarity index 100% rename from minimal-examples/minimal-ws-server-pmd-bulk/libwebsockets.org-logo.png rename to minimal-examples/minimal-ws-server-pmd-bulk/mount-origin/libwebsockets.org-logo.png diff --git a/minimal-examples/minimal-ws-server-pmd/minimal-ws-server-pmd.c b/minimal-examples/minimal-ws-server-pmd/minimal-ws-server-pmd.c index b77e7d0a..1cd9b381 100644 --- a/minimal-examples/minimal-ws-server-pmd/minimal-ws-server-pmd.c +++ b/minimal-examples/minimal-ws-server-pmd/minimal-ws-server-pmd.c @@ -8,8 +8,9 @@ * * This demonstrates the most minimal http server you can make with lws. * - * To keep it simple, it serves stuff in the directory it was started in. - * You can change that by changing mount.origin + * To keep it simple, it serves stuff in the subdirectory "./mount-origin" of + * the directory it was started in. + * You can change that by changing mount.origin. */ #include @@ -30,7 +31,7 @@ static int interrupted; static const struct lws_http_mount mount = { /* .mount_next */ NULL, /* linked-list "next" */ /* .mountpoint */ "/", /* mountpoint URL */ - /* .origin */ ".", /* serve from dir */ + /* .origin */ "./mount-origin", /* serve from dir */ /* .def */ "index.html", /* default filename */ /* .protocol */ NULL, /* .cgienv */ NULL, diff --git a/minimal-examples/minimal-ws-server-ring/favicon.ico b/minimal-examples/minimal-ws-server-pmd/mount-origin/favicon.ico similarity index 100% rename from minimal-examples/minimal-ws-server-ring/favicon.ico rename to minimal-examples/minimal-ws-server-pmd/mount-origin/favicon.ico diff --git a/minimal-examples/minimal-ws-server-pmd/index.html b/minimal-examples/minimal-ws-server-pmd/mount-origin/index.html similarity index 100% rename from minimal-examples/minimal-ws-server-pmd/index.html rename to minimal-examples/minimal-ws-server-pmd/mount-origin/index.html diff --git a/minimal-examples/minimal-ws-server-pmd/libwebsockets.org-logo.png b/minimal-examples/minimal-ws-server-pmd/mount-origin/libwebsockets.org-logo.png similarity index 100% rename from minimal-examples/minimal-ws-server-pmd/libwebsockets.org-logo.png rename to minimal-examples/minimal-ws-server-pmd/mount-origin/libwebsockets.org-logo.png diff --git a/minimal-examples/minimal-ws-server-ring/minimal-ws-server.c b/minimal-examples/minimal-ws-server-ring/minimal-ws-server.c index dcc805da..d5f255d3 100644 --- a/minimal-examples/minimal-ws-server-ring/minimal-ws-server.c +++ b/minimal-examples/minimal-ws-server-ring/minimal-ws-server.c @@ -9,8 +9,9 @@ * This demonstrates the most minimal http server you can make with lws, * with an added websocket chat server using a ringbuffer. * - * To keep it simple, it serves stuff in the directory it was started in. - * You can change that by changing mount.origin + * To keep it simple, it serves stuff in the subdirectory "./mount-origin" of + * the directory it was started in. + * You can change that by changing mount.origin. */ #include @@ -31,7 +32,7 @@ static int interrupted; static const struct lws_http_mount mount = { /* .mount_next */ NULL, /* linked-list "next" */ /* .mountpoint */ "/", /* mountpoint URL */ - /* .origin */ ".", /* serve from dir */ + /* .origin */ "./mount-origin", /* serve from dir */ /* .def */ "index.html", /* default filename */ /* .protocol */ NULL, /* .cgienv */ NULL, diff --git a/minimal-examples/minimal-ws-server/favicon.ico b/minimal-examples/minimal-ws-server-ring/mount-origin/favicon.ico similarity index 100% rename from minimal-examples/minimal-ws-server/favicon.ico rename to minimal-examples/minimal-ws-server-ring/mount-origin/favicon.ico diff --git a/minimal-examples/minimal-ws-server-ring/index.html b/minimal-examples/minimal-ws-server-ring/mount-origin/index.html similarity index 100% rename from minimal-examples/minimal-ws-server-ring/index.html rename to minimal-examples/minimal-ws-server-ring/mount-origin/index.html diff --git a/minimal-examples/minimal-ws-server-ring/libwebsockets.org-logo.png b/minimal-examples/minimal-ws-server-ring/mount-origin/libwebsockets.org-logo.png similarity index 100% rename from minimal-examples/minimal-ws-server-ring/libwebsockets.org-logo.png rename to minimal-examples/minimal-ws-server-ring/mount-origin/libwebsockets.org-logo.png diff --git a/minimal-examples/minimal-ws-server/minimal-ws-server.c b/minimal-examples/minimal-ws-server/minimal-ws-server.c index 56245bab..d5397c79 100644 --- a/minimal-examples/minimal-ws-server/minimal-ws-server.c +++ b/minimal-examples/minimal-ws-server/minimal-ws-server.c @@ -9,8 +9,9 @@ * This demonstrates the most minimal http server you can make with lws, * with an added websocket chat server. * - * To keep it simple, it serves stuff in the directory it was started in. - * You can change that by changing mount.origin + * To keep it simple, it serves stuff in the subdirectory "./mount-origin" of + * the directory it was started in. + * You can change that by changing mount.origin. */ #include @@ -31,7 +32,7 @@ static int interrupted; static const struct lws_http_mount mount = { /* .mount_next */ NULL, /* linked-list "next" */ /* .mountpoint */ "/", /* mountpoint URL */ - /* .origin */ ".", /* serve from dir */ + /* .origin */ "./mount-origin", /* serve from dir */ /* .def */ "index.html", /* default filename */ /* .protocol */ NULL, /* .cgienv */ NULL, diff --git a/minimal-examples/minimal-ws-server/mount-origin/favicon.ico b/minimal-examples/minimal-ws-server/mount-origin/favicon.ico new file mode 100644 index 00000000..c0cc2e3d Binary files /dev/null and b/minimal-examples/minimal-ws-server/mount-origin/favicon.ico differ diff --git a/minimal-examples/minimal-ws-server/index.html b/minimal-examples/minimal-ws-server/mount-origin/index.html similarity index 100% rename from minimal-examples/minimal-ws-server/index.html rename to minimal-examples/minimal-ws-server/mount-origin/index.html diff --git a/minimal-examples/minimal-ws-server/libwebsockets.org-logo.png b/minimal-examples/minimal-ws-server/mount-origin/libwebsockets.org-logo.png similarity index 100% rename from minimal-examples/minimal-ws-server/libwebsockets.org-logo.png rename to minimal-examples/minimal-ws-server/mount-origin/libwebsockets.org-logo.png