From b8fb8c5b152fea1f52fd7d01e4144112971ae7df Mon Sep 17 00:00:00 2001
From: Andy Green <andy@warmcat.com>
Date: Fri, 16 Mar 2018 10:06:52 +0800
Subject: [PATCH] minimal: multivhost + refactor

---
 lib/context.c                                 |  12 +-
 minimal-examples/README.md                    |  11 +-
 minimal-examples/client-http/README.md        |   3 +
 .../minimal-http-client/CMakeLists.txt        |   0
 .../minimal-http-client/README.md             |   0
 .../minimal-http-client/minimal-http-client.c |   0
 .../{client => client-ws}/README.md           |   1 -
 .../minimal-ws-client/CMakeLists.txt          |   0
 .../minimal-ws-client/README.md               |   0
 .../minimal-ws-client/minimal-ws-client.c     |   0
 minimal-examples/server-http/README.md        |   6 +
 .../minimal-http-server-libuv/CMakeLists.txt  |   0
 .../minimal-http-server-libuv/README.md       |   0
 .../minimal-http-server.c                     |   0
 .../mount-origin/404.html                     |   0
 .../mount-origin/favicon.ico                  | Bin
 .../mount-origin/index.html                   |   0
 .../mount-origin/libwebsockets.org-logo.png   | Bin
 .../CMakeLists.txt                            |  12 ++
 .../minimal-http-server-multivhost/README.md  |  43 +++++
 .../minimal-http-server.c                     | 158 ++++++++++++++++++
 .../mount-origin-localhost1/404.html          |   9 +
 .../mount-origin-localhost1}/favicon.ico      | Bin
 .../mount-origin-localhost1/index.html        |  14 ++
 .../libwebsockets.org-logo.png                | Bin
 .../mount-origin-localhost2/404.html          |   9 +
 .../mount-origin-localhost2}/favicon.ico      | Bin
 .../mount-origin-localhost2/index.html        |  14 ++
 .../libwebsockets.org-logo.png                | Bin
 .../mount-origin-localhost3/404.html          |   9 +
 .../mount-origin-localhost3}/favicon.ico      | Bin
 .../mount-origin-localhost3/index.html        |  14 ++
 .../libwebsockets.org-logo.png                | Bin
 .../minimal-http-server-smp/CMakeLists.txt    |   0
 .../minimal-http-server-smp/README.md         |   0
 .../minimal-http-server-smp.c                 |   0
 .../mount-origin/favicon.ico                  | Bin
 .../mount-origin/index.html                   |   0
 .../mount-origin/libwebsockets.org-logo.png   | Bin
 .../minimal-http-server/CMakeLists.txt        |   0
 .../minimal-http-server/README.md             |   0
 .../minimal-http-server/minimal-http-server.c |   0
 .../minimal-http-server/mount-origin/404.html |   0
 .../mount-origin/favicon.ico                  | Bin
 .../mount-origin/index.html                   |   0
 .../mount-origin/libwebsockets.org-logo.png   | Bin
 .../{server => server-ws}/README.md           |   3 -
 .../minimal-ws-broker/CMakeLists.txt          |   0
 .../minimal-ws-broker/README.md               |   0
 .../minimal-ws-broker/minimal-ws-broker.c     |   0
 .../mount-origin/favicon.ico                  | Bin
 .../minimal-ws-broker/mount-origin/index.html |   0
 .../mount-origin/libwebsockets.org-logo.png   | Bin
 .../minimal-ws-broker/protocol_lws_minimal.c  |   0
 .../minimal-ws-server-pmd-bulk/CMakeLists.txt |   0
 .../minimal-ws-server-pmd-bulk/README.md      |   0
 .../minimal-ws-server-pmd-bulk.c              |   0
 .../mount-origin/favicon.ico                  | Bin
 .../mount-origin/index.html                   |   0
 .../mount-origin/libwebsockets.org-logo.png   | Bin
 .../protocol_lws_minimal_pmd_bulk.c           |   0
 .../minimal-ws-server-pmd/CMakeLists.txt      |   0
 .../minimal-ws-server-pmd/README.md           |   0
 .../minimal-ws-server-pmd.c                   |   0
 .../mount-origin/favicon.ico                  | Bin
 .../mount-origin/index.html                   |   0
 .../mount-origin/libwebsockets.org-logo.png   | Bin
 .../protocol_lws_minimal.c                    |   0
 .../minimal-ws-server-ring/CMakeLists.txt     |   0
 .../minimal-ws-server-ring/README.md          |   0
 .../minimal-ws-server.c                       |   0
 .../mount-origin/favicon.ico                  | Bin 0 -> 1406 bytes
 .../mount-origin/index.html                   |   0
 .../mount-origin/libwebsockets.org-logo.png   | Bin 0 -> 7029 bytes
 .../protocol_lws_minimal.c                    |   0
 .../minimal-ws-server-threads/CMakeLists.txt  |   0
 .../minimal-ws-server-threads/README.md       |   0
 .../minimal-ws-server.c                       |   0
 .../mount-origin/favicon.ico                  | Bin 0 -> 1406 bytes
 .../mount-origin/index.html                   |   0
 .../mount-origin/libwebsockets.org-logo.png   | Bin 0 -> 7029 bytes
 .../protocol_lws_minimal.c                    |   0
 .../minimal-ws-server/CMakeLists.txt          |   0
 .../minimal-ws-server/README.md               |   0
 .../minimal-ws-server/minimal-ws-server.c     |   0
 .../mount-origin/favicon.ico                  | Bin 0 -> 1406 bytes
 .../minimal-ws-server/mount-origin/index.html |   0
 .../mount-origin/libwebsockets.org-logo.png   | Bin 0 -> 7029 bytes
 .../minimal-ws-server/protocol_lws_minimal.c  |   0
 89 files changed, 308 insertions(+), 10 deletions(-)
 create mode 100644 minimal-examples/client-http/README.md
 rename minimal-examples/{client => client-http}/minimal-http-client/CMakeLists.txt (100%)
 rename minimal-examples/{client => client-http}/minimal-http-client/README.md (100%)
 rename minimal-examples/{client => client-http}/minimal-http-client/minimal-http-client.c (100%)
 rename minimal-examples/{client => client-ws}/README.md (67%)
 rename minimal-examples/{client => client-ws}/minimal-ws-client/CMakeLists.txt (100%)
 rename minimal-examples/{client => client-ws}/minimal-ws-client/README.md (100%)
 rename minimal-examples/{client => client-ws}/minimal-ws-client/minimal-ws-client.c (100%)
 create mode 100644 minimal-examples/server-http/README.md
 rename minimal-examples/{server => server-http}/minimal-http-server-libuv/CMakeLists.txt (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server-libuv/README.md (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server-libuv/minimal-http-server.c (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server-libuv/mount-origin/404.html (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server-libuv/mount-origin/favicon.ico (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server-libuv/mount-origin/index.html (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server-libuv/mount-origin/libwebsockets.org-logo.png (100%)
 create mode 100644 minimal-examples/server-http/minimal-http-server-multivhost/CMakeLists.txt
 create mode 100644 minimal-examples/server-http/minimal-http-server-multivhost/README.md
 create mode 100644 minimal-examples/server-http/minimal-http-server-multivhost/minimal-http-server.c
 create mode 100644 minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/404.html
 rename minimal-examples/{server/minimal-http-server-smp/mount-origin => server-http/minimal-http-server-multivhost/mount-origin-localhost1}/favicon.ico (100%)
 create mode 100644 minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/index.html
 rename minimal-examples/{server/minimal-http-server-smp/mount-origin => server-http/minimal-http-server-multivhost/mount-origin-localhost1}/libwebsockets.org-logo.png (100%)
 create mode 100644 minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/404.html
 rename minimal-examples/{server/minimal-http-server/mount-origin => server-http/minimal-http-server-multivhost/mount-origin-localhost2}/favicon.ico (100%)
 create mode 100644 minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/index.html
 rename minimal-examples/{server/minimal-http-server/mount-origin => server-http/minimal-http-server-multivhost/mount-origin-localhost2}/libwebsockets.org-logo.png (100%)
 create mode 100644 minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/404.html
 rename minimal-examples/{server/minimal-ws-broker/mount-origin => server-http/minimal-http-server-multivhost/mount-origin-localhost3}/favicon.ico (100%)
 create mode 100644 minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/index.html
 rename minimal-examples/{server/minimal-ws-broker/mount-origin => server-http/minimal-http-server-multivhost/mount-origin-localhost3}/libwebsockets.org-logo.png (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server-smp/CMakeLists.txt (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server-smp/README.md (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server-smp/minimal-http-server-smp.c (100%)
 rename minimal-examples/{server/minimal-ws-server-pmd-bulk => server-http/minimal-http-server-smp}/mount-origin/favicon.ico (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server-smp/mount-origin/index.html (100%)
 rename minimal-examples/{server/minimal-ws-server-pmd-bulk => server-http/minimal-http-server-smp}/mount-origin/libwebsockets.org-logo.png (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server/CMakeLists.txt (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server/README.md (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server/minimal-http-server.c (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server/mount-origin/404.html (100%)
 rename minimal-examples/{server/minimal-ws-server-pmd => server-http/minimal-http-server}/mount-origin/favicon.ico (100%)
 rename minimal-examples/{server => server-http}/minimal-http-server/mount-origin/index.html (100%)
 rename minimal-examples/{server/minimal-ws-server-pmd => server-http/minimal-http-server}/mount-origin/libwebsockets.org-logo.png (100%)
 rename minimal-examples/{server => server-ws}/README.md (73%)
 rename minimal-examples/{server => server-ws}/minimal-ws-broker/CMakeLists.txt (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-broker/README.md (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-broker/minimal-ws-broker.c (100%)
 rename minimal-examples/{server/minimal-ws-server-ring => server-ws/minimal-ws-broker}/mount-origin/favicon.ico (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-broker/mount-origin/index.html (100%)
 rename minimal-examples/{server/minimal-ws-server-ring => server-ws/minimal-ws-broker}/mount-origin/libwebsockets.org-logo.png (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-broker/protocol_lws_minimal.c (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-pmd-bulk/CMakeLists.txt (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-pmd-bulk/README.md (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-pmd-bulk/minimal-ws-server-pmd-bulk.c (100%)
 rename minimal-examples/{server/minimal-ws-server-threads => server-ws/minimal-ws-server-pmd-bulk}/mount-origin/favicon.ico (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-pmd-bulk/mount-origin/index.html (100%)
 rename minimal-examples/{server/minimal-ws-server-threads => server-ws/minimal-ws-server-pmd-bulk}/mount-origin/libwebsockets.org-logo.png (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-pmd-bulk/protocol_lws_minimal_pmd_bulk.c (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-pmd/CMakeLists.txt (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-pmd/README.md (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-pmd/minimal-ws-server-pmd.c (100%)
 rename minimal-examples/{server/minimal-ws-server => server-ws/minimal-ws-server-pmd}/mount-origin/favicon.ico (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-pmd/mount-origin/index.html (100%)
 rename minimal-examples/{server/minimal-ws-server => server-ws/minimal-ws-server-pmd}/mount-origin/libwebsockets.org-logo.png (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-pmd/protocol_lws_minimal.c (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-ring/CMakeLists.txt (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-ring/README.md (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-ring/minimal-ws-server.c (100%)
 create mode 100644 minimal-examples/server-ws/minimal-ws-server-ring/mount-origin/favicon.ico
 rename minimal-examples/{server => server-ws}/minimal-ws-server-ring/mount-origin/index.html (100%)
 create mode 100644 minimal-examples/server-ws/minimal-ws-server-ring/mount-origin/libwebsockets.org-logo.png
 rename minimal-examples/{server => server-ws}/minimal-ws-server-ring/protocol_lws_minimal.c (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-threads/CMakeLists.txt (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-threads/README.md (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server-threads/minimal-ws-server.c (100%)
 create mode 100644 minimal-examples/server-ws/minimal-ws-server-threads/mount-origin/favicon.ico
 rename minimal-examples/{server => server-ws}/minimal-ws-server-threads/mount-origin/index.html (100%)
 create mode 100644 minimal-examples/server-ws/minimal-ws-server-threads/mount-origin/libwebsockets.org-logo.png
 rename minimal-examples/{server => server-ws}/minimal-ws-server-threads/protocol_lws_minimal.c (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server/CMakeLists.txt (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server/README.md (100%)
 rename minimal-examples/{server => server-ws}/minimal-ws-server/minimal-ws-server.c (100%)
 create mode 100644 minimal-examples/server-ws/minimal-ws-server/mount-origin/favicon.ico
 rename minimal-examples/{server => server-ws}/minimal-ws-server/mount-origin/index.html (100%)
 create mode 100644 minimal-examples/server-ws/minimal-ws-server/mount-origin/libwebsockets.org-logo.png
 rename minimal-examples/{server => server-ws}/minimal-ws-server/protocol_lws_minimal.c (100%)

diff --git a/lib/context.c b/lib/context.c
index c78684a8..fae8f900 100644
--- a/lib/context.c
+++ b/lib/context.c
@@ -847,10 +847,14 @@ lws_create_vhost(struct lws_context *context,
 	} else
 		vh->log_fd = (int)LWS_INVALID_FILE;
 #endif
-	if (lws_context_init_server_ssl(info, vh))
+	if (lws_context_init_server_ssl(info, vh)) {
+		lwsl_err("%s: lws_context_init_server_ssl failed\n", __func__);
 		goto bail1;
-	if (lws_context_init_client_ssl(info, vh))
+	}
+	if (lws_context_init_client_ssl(info, vh)) {
+		lwsl_err("%s: lws_context_init_client_ssl failed\n", __func__);
 		goto bail1;
+	}
 	if (lws_context_init_server(info, vh)) {
 		lwsl_err("init server failed\n");
 		goto bail1;
@@ -867,8 +871,10 @@ lws_create_vhost(struct lws_context *context,
 	/* for the case we are adding a vhost much later, after server init */
 
 	if (context->protocol_init_done)
-		if (lws_protocol_init(context))
+		if (lws_protocol_init(context)) {
+			lwsl_err("%s: lws_protocol_init failed\n", __func__);
 			goto bail1;
+		}
 
 	return vh;
 
diff --git a/minimal-examples/README.md b/minimal-examples/README.md
index 6bb99528..4561e01f 100644
--- a/minimal-examples/README.md
+++ b/minimal-examples/README.md
@@ -1,14 +1,18 @@
 |name|demonstrates|
 ---|---
-server|Minimal examples providing a server
-client|Minimal examples providing a client
+server-http|Minimal examples providing an http server
+server-ws|Minimal examples providing a ws server (and an http server)
+client-http|Minimal examples providing an http client
+client-ws|Minimal examples providing a ws client
 client-server|Minimal examples providing client and server connections simultaneously
 
 ## FAQ
 
 ### What should I look at first
 
-server/minimal-http-server
+Build and install lws itself first, these examples all want to link to it.  Then
+
+`server-http/minimal-http-server`
 
 ### Why are most of the sources split into a main C file file and a protocol file?
 
@@ -70,3 +74,4 @@ external configuration data to a specific vhost + protocol
 combination using code.  In lwsws, this is simply a matter of setting
 the desired JSON config.
 
+
diff --git a/minimal-examples/client-http/README.md b/minimal-examples/client-http/README.md
new file mode 100644
index 00000000..b45fdfeb
--- /dev/null
+++ b/minimal-examples/client-http/README.md
@@ -0,0 +1,3 @@
+|name|demonstrates|
+---|---
+minimal-http-client|Connects to and reads https://warmcat.com
diff --git a/minimal-examples/client/minimal-http-client/CMakeLists.txt b/minimal-examples/client-http/minimal-http-client/CMakeLists.txt
similarity index 100%
rename from minimal-examples/client/minimal-http-client/CMakeLists.txt
rename to minimal-examples/client-http/minimal-http-client/CMakeLists.txt
diff --git a/minimal-examples/client/minimal-http-client/README.md b/minimal-examples/client-http/minimal-http-client/README.md
similarity index 100%
rename from minimal-examples/client/minimal-http-client/README.md
rename to minimal-examples/client-http/minimal-http-client/README.md
diff --git a/minimal-examples/client/minimal-http-client/minimal-http-client.c b/minimal-examples/client-http/minimal-http-client/minimal-http-client.c
similarity index 100%
rename from minimal-examples/client/minimal-http-client/minimal-http-client.c
rename to minimal-examples/client-http/minimal-http-client/minimal-http-client.c
diff --git a/minimal-examples/client/README.md b/minimal-examples/client-ws/README.md
similarity index 67%
rename from minimal-examples/client/README.md
rename to minimal-examples/client-ws/README.md
index 11af3e22..21433e09 100644
--- a/minimal-examples/client/README.md
+++ b/minimal-examples/client-ws/README.md
@@ -1,4 +1,3 @@
 |name|demonstrates|
 ---|---
-minimal-http-client|Connects to and reads https://warmcat.com
 minimal-ws-client|Connects to the dumb-increment-protocol wss server at https://libwebsockets.org
diff --git a/minimal-examples/client/minimal-ws-client/CMakeLists.txt b/minimal-examples/client-ws/minimal-ws-client/CMakeLists.txt
similarity index 100%
rename from minimal-examples/client/minimal-ws-client/CMakeLists.txt
rename to minimal-examples/client-ws/minimal-ws-client/CMakeLists.txt
diff --git a/minimal-examples/client/minimal-ws-client/README.md b/minimal-examples/client-ws/minimal-ws-client/README.md
similarity index 100%
rename from minimal-examples/client/minimal-ws-client/README.md
rename to minimal-examples/client-ws/minimal-ws-client/README.md
diff --git a/minimal-examples/client/minimal-ws-client/minimal-ws-client.c b/minimal-examples/client-ws/minimal-ws-client/minimal-ws-client.c
similarity index 100%
rename from minimal-examples/client/minimal-ws-client/minimal-ws-client.c
rename to minimal-examples/client-ws/minimal-ws-client/minimal-ws-client.c
diff --git a/minimal-examples/server-http/README.md b/minimal-examples/server-http/README.md
new file mode 100644
index 00000000..9a72f66e
--- /dev/null
+++ b/minimal-examples/server-http/README.md
@@ -0,0 +1,6 @@
+|Example|Demonstrates|
+---|---
+minimal-http-server|Serves a directory over http/1 or http/2, custom 404 handler
+minimal-http-server-libuv|Same as minimal-http-server but libuv event loop
+minimal-http-server-multivhost|Same as minimal-http-server but three different vhosts
+minimal-http-server-smp|Multiple service threads
diff --git a/minimal-examples/server/minimal-http-server-libuv/CMakeLists.txt b/minimal-examples/server-http/minimal-http-server-libuv/CMakeLists.txt
similarity index 100%
rename from minimal-examples/server/minimal-http-server-libuv/CMakeLists.txt
rename to minimal-examples/server-http/minimal-http-server-libuv/CMakeLists.txt
diff --git a/minimal-examples/server/minimal-http-server-libuv/README.md b/minimal-examples/server-http/minimal-http-server-libuv/README.md
similarity index 100%
rename from minimal-examples/server/minimal-http-server-libuv/README.md
rename to minimal-examples/server-http/minimal-http-server-libuv/README.md
diff --git a/minimal-examples/server/minimal-http-server-libuv/minimal-http-server.c b/minimal-examples/server-http/minimal-http-server-libuv/minimal-http-server.c
similarity index 100%
rename from minimal-examples/server/minimal-http-server-libuv/minimal-http-server.c
rename to minimal-examples/server-http/minimal-http-server-libuv/minimal-http-server.c
diff --git a/minimal-examples/server/minimal-http-server-libuv/mount-origin/404.html b/minimal-examples/server-http/minimal-http-server-libuv/mount-origin/404.html
similarity index 100%
rename from minimal-examples/server/minimal-http-server-libuv/mount-origin/404.html
rename to minimal-examples/server-http/minimal-http-server-libuv/mount-origin/404.html
diff --git a/minimal-examples/server/minimal-http-server-libuv/mount-origin/favicon.ico b/minimal-examples/server-http/minimal-http-server-libuv/mount-origin/favicon.ico
similarity index 100%
rename from minimal-examples/server/minimal-http-server-libuv/mount-origin/favicon.ico
rename to minimal-examples/server-http/minimal-http-server-libuv/mount-origin/favicon.ico
diff --git a/minimal-examples/server/minimal-http-server-libuv/mount-origin/index.html b/minimal-examples/server-http/minimal-http-server-libuv/mount-origin/index.html
similarity index 100%
rename from minimal-examples/server/minimal-http-server-libuv/mount-origin/index.html
rename to minimal-examples/server-http/minimal-http-server-libuv/mount-origin/index.html
diff --git a/minimal-examples/server/minimal-http-server-libuv/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-http/minimal-http-server-libuv/mount-origin/libwebsockets.org-logo.png
similarity index 100%
rename from minimal-examples/server/minimal-http-server-libuv/mount-origin/libwebsockets.org-logo.png
rename to minimal-examples/server-http/minimal-http-server-libuv/mount-origin/libwebsockets.org-logo.png
diff --git a/minimal-examples/server-http/minimal-http-server-multivhost/CMakeLists.txt b/minimal-examples/server-http/minimal-http-server-multivhost/CMakeLists.txt
new file mode 100644
index 00000000..5077704a
--- /dev/null
+++ b/minimal-examples/server-http/minimal-http-server-multivhost/CMakeLists.txt
@@ -0,0 +1,12 @@
+cmake_minimum_required(VERSION 2.8)
+
+set(SAMP lws-minimal-http-server-multivhost)
+set(SRCS minimal-http-server.c)
+
+if (UNIX)
+      set(CMAKE_C_FLAGS "-Wall -Wsign-compare -Wignored-qualifiers -Wtype-limits -Wuninitialized -Werror -Wundef ${CMAKE_C_FLAGS}" )
+endif()
+
+add_executable(${SAMP} ${SRCS})
+target_link_libraries(${SAMP} -lwebsockets)
+
diff --git a/minimal-examples/server-http/minimal-http-server-multivhost/README.md b/minimal-examples/server-http/minimal-http-server-multivhost/README.md
new file mode 100644
index 00000000..42172208
--- /dev/null
+++ b/minimal-examples/server-http/minimal-http-server-multivhost/README.md
@@ -0,0 +1,43 @@
+# lws minimal http server multivhost
+
+This creates a single server that creates three vhosts listening on both :7681 and
+:7682.  Two separate vhosts share listening on :7682.
+
+|vhost|listens on port|serves|
+---|---|---
+localhost1|7681|./mount-origin-localhost1
+localhost2|7682|./mount-origin-localhost2
+localhost3|7682|./mount-origin-localhost3
+
+Notice the last two both listen on 7682.  If you visit http://localhost:7682,
+by default you will get mapped to the first one, localhost2.
+
+However if you edit /etc/hosts on your machine and add
+
+```
+127.0.0.1 localhost3
+```
+
+so that you can visit http://localhost3:7682 in your browser, lws will use the
+`Host: localhost3` header sent by your browser to select the localhost3 vhost
+for the connection, and you will be served content from ./mount-origin-localhost3
+
+## build
+
+```
+ $ cmake . && make
+```
+
+## usage
+
+```
+ $ ./lws-minimal-http-server-multivhost
+[2018/03/16 09:37:20:0866] USER: LWS minimal http server-multivhost | visit http://localhost:7681 / 7682
+[2018/03/16 09:37:20:0867] NOTICE: Creating Vhost 'localhost1' port 7681, 1 protocols, IPv6 off
+[2018/03/16 09:37:20:0868] NOTICE: Creating Vhost 'localhost2' port 7682, 1 protocols, IPv6 off
+[2018/03/16 09:37:20:0869] NOTICE: Creating Vhost 'localhost3' port 7682, 1 protocols, IPv6 off
+[2018/03/16 09:37:20:0869] NOTICE:  using listen skt from vhost localhost2
+```
+
+Visit http://localhost:7681 and http://localhost:7682
+
diff --git a/minimal-examples/server-http/minimal-http-server-multivhost/minimal-http-server.c b/minimal-examples/server-http/minimal-http-server-multivhost/minimal-http-server.c
new file mode 100644
index 00000000..d73ac729
--- /dev/null
+++ b/minimal-examples/server-http/minimal-http-server-multivhost/minimal-http-server.c
@@ -0,0 +1,158 @@
+/*
+ * lws-minimal-http-server-multivhost
+ *
+ * Copyright (C) 2018 Andy Green <andy@warmcat.com>
+ *
+ * This file is made available under the Creative Commons CC0 1.0
+ * Universal Public Domain Dedication.
+ *
+ * This demonstrates the most minimal http server you can make with lws.
+ *
+ * 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 <libwebsockets.h>
+#include <string.h>
+#include <signal.h>
+
+static int interrupted;
+
+static const struct lws_http_mount mount_localhost1 = {
+	/* .mount_next */		NULL,		/* linked-list "next" */
+	/* .mountpoint */		"/",		/* mountpoint URL */
+	/* .origin */			"./mount-origin-localhost1",
+	/* .def */			"index.html",	/* default filename */
+	/* .protocol */			NULL,
+	/* .cgienv */			NULL,
+	/* .extra_mimetypes */		NULL,
+	/* .interpret */		NULL,
+	/* .cgi_timeout */		0,
+	/* .cache_max_age */		0,
+	/* .auth_mask */		0,
+	/* .cache_reusable */		0,
+	/* .cache_revalidate */		0,
+	/* .cache_intermediaries */	0,
+	/* .origin_protocol */		LWSMPRO_FILE,	/* files in a dir */
+	/* .mountpoint_len */		1,		/* char count */
+	/* .basic_auth_login_file */	NULL,
+}, mount_localhost2 = {
+	/* .mount_next */		NULL,		/* linked-list "next" */
+	/* .mountpoint */		"/",		/* mountpoint URL */
+	/* .origin */			"./mount-origin-localhost2",
+	/* .def */			"index.html",	/* default filename */
+	/* .protocol */			NULL,
+	/* .cgienv */			NULL,
+	/* .extra_mimetypes */		NULL,
+	/* .interpret */		NULL,
+	/* .cgi_timeout */		0,
+	/* .cache_max_age */		0,
+	/* .auth_mask */		0,
+	/* .cache_reusable */		0,
+	/* .cache_revalidate */		0,
+	/* .cache_intermediaries */	0,
+	/* .origin_protocol */		LWSMPRO_FILE,	/* files in a dir */
+	/* .mountpoint_len */		1,		/* char count */
+	/* .basic_auth_login_file */	NULL,
+}, mount_localhost3 = {
+	/* .mount_next */		NULL,		/* linked-list "next" */
+	/* .mountpoint */		"/",		/* mountpoint URL */
+	/* .origin */			"./mount-origin-localhost3",
+	/* .def */			"index.html",	/* default filename */
+	/* .protocol */			NULL,
+	/* .cgienv */			NULL,
+	/* .extra_mimetypes */		NULL,
+	/* .interpret */		NULL,
+	/* .cgi_timeout */		0,
+	/* .cache_max_age */		0,
+	/* .auth_mask */		0,
+	/* .cache_reusable */		0,
+	/* .cache_revalidate */		0,
+	/* .cache_intermediaries */	0,
+	/* .origin_protocol */		LWSMPRO_FILE,	/* files in a dir */
+	/* .mountpoint_len */		1,		/* char count */
+	/* .basic_auth_login_file */	NULL,
+};
+
+void sigint_handler(int sig)
+{
+	interrupted = 1;
+}
+
+int main(int argc, char **argv)
+{
+	struct lws_context_creation_info info;
+	struct lws_context *context;
+	int n = 0;
+
+	signal(SIGINT, sigint_handler);
+
+	memset(&info, 0, sizeof info); /* otherwise uninitialized garbage */
+	info.options = LWS_SERVER_OPTION_EXPLICIT_VHOSTS;
+
+	lws_set_log_level(LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_USER
+			  /* | LLL_INFO */ /* | LLL_DEBUG */, NULL);
+
+	lwsl_user("LWS minimal http server-multivhost | visit http://localhost:7681 / 7682\n");
+
+	/*
+	 * Because of LWS_SERVER_OPTION_EXPLICIT_VHOSTS, this only creates
+	 * the context and no longer creates a default vhost
+	 */
+	context = lws_create_context(&info);
+	if (!context) {
+		lwsl_err("lws init failed\n");
+		return 1;
+	}
+
+	/* it's our job now to create the vhosts we want:
+	 *
+	 *   - "localhost1" listen on 7681 and serve ./mount-origin-localhost1/
+	 *   - "localhost2" listen on 7682 and serve ./mount-origin-localhost2/
+	 *   - "localhost3" share 7682 and serve ./mount-origin-localhost3/
+	 *
+	 * Note lws supports dynamic vhost creation and destruction at runtime.
+	 * When using multi-vhost with your own protocols, you must provide a
+	 * pvo for each vhost naming each protocol you want enabled on it.
+	 * minimal-ws-server-threads demonstrates how to provide pvos.
+	 */
+
+	info.port = 7681;
+	info.mounts = &mount_localhost1;
+	info.error_document_404 = "/404.html";
+	info.vhost_name = "localhost1";
+
+	if (!lws_create_vhost(context, &info)) {
+		lwsl_err("Failed to create first vhost\n");
+		goto bail;
+	}
+
+	info.port = 7682;
+	info.mounts = &mount_localhost2;
+	info.error_document_404 = "/404.html";
+	info.vhost_name = "localhost2";
+
+	if (!lws_create_vhost(context, &info)) {
+		lwsl_err("Failed to create second vhost\n");
+		goto bail;
+	}
+
+	/* a second vhost listens on port 7682 */
+	info.mounts = &mount_localhost3;
+	info.error_document_404 = "/404.html";
+	info.vhost_name = "localhost3";
+
+	if (!lws_create_vhost(context, &info)) {
+		lwsl_err("Failed to create third vhost\n");
+		goto bail;
+	}
+
+	while (n >= 0 && !interrupted)
+		n = lws_service(context, 1000);
+
+bail:
+	lws_context_destroy(context);
+
+	return 0;
+}
diff --git a/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/404.html b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/404.html
new file mode 100644
index 00000000..ab948658
--- /dev/null
+++ b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/404.html
@@ -0,0 +1,9 @@
+<meta charset="UTF-8"> 
+<html>
+	<body>
+		<img src="libwebsockets.org-logo.png"><br>
+		<h1>404 (vhost localhost1)</h1>
+		Sorry, that file doesn't exist.
+	</body>
+</html>
+
diff --git a/minimal-examples/server/minimal-http-server-smp/mount-origin/favicon.ico b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/favicon.ico
similarity index 100%
rename from minimal-examples/server/minimal-http-server-smp/mount-origin/favicon.ico
rename to minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/favicon.ico
diff --git a/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/index.html b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/index.html
new file mode 100644
index 00000000..df01441e
--- /dev/null
+++ b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/index.html
@@ -0,0 +1,14 @@
+ <meta charset="UTF-8"> 
+<html>
+	<body>
+		<img src="libwebsockets.org-logo.png"><br>
+	
+		Hello from the <b>minimal http server multivhost example</b>.<br>
+		<br>
+		This was served from <i>./mount-origin-<b>localhost1</b>/index.html</i><br>
+		<br>
+		You can confirm the 404 page handler by going to this
+		nonexistant <a href="notextant.html">page</a>.
+	</body>
+</html>
+
diff --git a/minimal-examples/server/minimal-http-server-smp/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/libwebsockets.org-logo.png
similarity index 100%
rename from minimal-examples/server/minimal-http-server-smp/mount-origin/libwebsockets.org-logo.png
rename to minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost1/libwebsockets.org-logo.png
diff --git a/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/404.html b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/404.html
new file mode 100644
index 00000000..1591faf5
--- /dev/null
+++ b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/404.html
@@ -0,0 +1,9 @@
+<meta charset="UTF-8"> 
+<html>
+	<body>
+		<img src="libwebsockets.org-logo.png"><br>
+		<h1>404 (vhost localhost2)</h1>
+		Sorry, that file doesn't exist.
+	</body>
+</html>
+
diff --git a/minimal-examples/server/minimal-http-server/mount-origin/favicon.ico b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/favicon.ico
similarity index 100%
rename from minimal-examples/server/minimal-http-server/mount-origin/favicon.ico
rename to minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/favicon.ico
diff --git a/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/index.html b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/index.html
new file mode 100644
index 00000000..33caf445
--- /dev/null
+++ b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/index.html
@@ -0,0 +1,14 @@
+ <meta charset="UTF-8"> 
+<html>
+	<body>
+		<img src="libwebsockets.org-logo.png"><br>
+	
+		Hello from the <b>minimal http server multivhost example</b>.<br>
+		<br>
+		This was served from <i>./mount-origin-<b>localhost2</b>/index.html</i><br>
+		<br>
+		You can confirm the 404 page handler by going to this
+		nonexistant <a href="notextant.html">page</a>.
+	</body>
+</html>
+
diff --git a/minimal-examples/server/minimal-http-server/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/libwebsockets.org-logo.png
similarity index 100%
rename from minimal-examples/server/minimal-http-server/mount-origin/libwebsockets.org-logo.png
rename to minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost2/libwebsockets.org-logo.png
diff --git a/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/404.html b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/404.html
new file mode 100644
index 00000000..0c054569
--- /dev/null
+++ b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/404.html
@@ -0,0 +1,9 @@
+<meta charset="UTF-8"> 
+<html>
+	<body>
+		<img src="libwebsockets.org-logo.png"><br>
+		<h1>404 (vhost localhost3)</h1>
+		Sorry, that file doesn't exist.
+	</body>
+</html>
+
diff --git a/minimal-examples/server/minimal-ws-broker/mount-origin/favicon.ico b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/favicon.ico
similarity index 100%
rename from minimal-examples/server/minimal-ws-broker/mount-origin/favicon.ico
rename to minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/favicon.ico
diff --git a/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/index.html b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/index.html
new file mode 100644
index 00000000..85ca5027
--- /dev/null
+++ b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/index.html
@@ -0,0 +1,14 @@
+ <meta charset="UTF-8"> 
+<html>
+	<body>
+		<img src="libwebsockets.org-logo.png"><br>
+	
+		Hello from the <b>minimal http server multivhost example</b>.<br>
+		<br>
+		This was served from <i>./mount-origin-<b>localhost3</b>/index.html</i><br>
+		<br>
+		You can confirm the 404 page handler by going to this
+		nonexistant <a href="notextant.html">page</a>.
+	</body>
+</html>
+
diff --git a/minimal-examples/server/minimal-ws-broker/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/libwebsockets.org-logo.png
similarity index 100%
rename from minimal-examples/server/minimal-ws-broker/mount-origin/libwebsockets.org-logo.png
rename to minimal-examples/server-http/minimal-http-server-multivhost/mount-origin-localhost3/libwebsockets.org-logo.png
diff --git a/minimal-examples/server/minimal-http-server-smp/CMakeLists.txt b/minimal-examples/server-http/minimal-http-server-smp/CMakeLists.txt
similarity index 100%
rename from minimal-examples/server/minimal-http-server-smp/CMakeLists.txt
rename to minimal-examples/server-http/minimal-http-server-smp/CMakeLists.txt
diff --git a/minimal-examples/server/minimal-http-server-smp/README.md b/minimal-examples/server-http/minimal-http-server-smp/README.md
similarity index 100%
rename from minimal-examples/server/minimal-http-server-smp/README.md
rename to minimal-examples/server-http/minimal-http-server-smp/README.md
diff --git a/minimal-examples/server/minimal-http-server-smp/minimal-http-server-smp.c b/minimal-examples/server-http/minimal-http-server-smp/minimal-http-server-smp.c
similarity index 100%
rename from minimal-examples/server/minimal-http-server-smp/minimal-http-server-smp.c
rename to minimal-examples/server-http/minimal-http-server-smp/minimal-http-server-smp.c
diff --git a/minimal-examples/server/minimal-ws-server-pmd-bulk/mount-origin/favicon.ico b/minimal-examples/server-http/minimal-http-server-smp/mount-origin/favicon.ico
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd-bulk/mount-origin/favicon.ico
rename to minimal-examples/server-http/minimal-http-server-smp/mount-origin/favicon.ico
diff --git a/minimal-examples/server/minimal-http-server-smp/mount-origin/index.html b/minimal-examples/server-http/minimal-http-server-smp/mount-origin/index.html
similarity index 100%
rename from minimal-examples/server/minimal-http-server-smp/mount-origin/index.html
rename to minimal-examples/server-http/minimal-http-server-smp/mount-origin/index.html
diff --git a/minimal-examples/server/minimal-ws-server-pmd-bulk/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-http/minimal-http-server-smp/mount-origin/libwebsockets.org-logo.png
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd-bulk/mount-origin/libwebsockets.org-logo.png
rename to minimal-examples/server-http/minimal-http-server-smp/mount-origin/libwebsockets.org-logo.png
diff --git a/minimal-examples/server/minimal-http-server/CMakeLists.txt b/minimal-examples/server-http/minimal-http-server/CMakeLists.txt
similarity index 100%
rename from minimal-examples/server/minimal-http-server/CMakeLists.txt
rename to minimal-examples/server-http/minimal-http-server/CMakeLists.txt
diff --git a/minimal-examples/server/minimal-http-server/README.md b/minimal-examples/server-http/minimal-http-server/README.md
similarity index 100%
rename from minimal-examples/server/minimal-http-server/README.md
rename to minimal-examples/server-http/minimal-http-server/README.md
diff --git a/minimal-examples/server/minimal-http-server/minimal-http-server.c b/minimal-examples/server-http/minimal-http-server/minimal-http-server.c
similarity index 100%
rename from minimal-examples/server/minimal-http-server/minimal-http-server.c
rename to minimal-examples/server-http/minimal-http-server/minimal-http-server.c
diff --git a/minimal-examples/server/minimal-http-server/mount-origin/404.html b/minimal-examples/server-http/minimal-http-server/mount-origin/404.html
similarity index 100%
rename from minimal-examples/server/minimal-http-server/mount-origin/404.html
rename to minimal-examples/server-http/minimal-http-server/mount-origin/404.html
diff --git a/minimal-examples/server/minimal-ws-server-pmd/mount-origin/favicon.ico b/minimal-examples/server-http/minimal-http-server/mount-origin/favicon.ico
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd/mount-origin/favicon.ico
rename to minimal-examples/server-http/minimal-http-server/mount-origin/favicon.ico
diff --git a/minimal-examples/server/minimal-http-server/mount-origin/index.html b/minimal-examples/server-http/minimal-http-server/mount-origin/index.html
similarity index 100%
rename from minimal-examples/server/minimal-http-server/mount-origin/index.html
rename to minimal-examples/server-http/minimal-http-server/mount-origin/index.html
diff --git a/minimal-examples/server/minimal-ws-server-pmd/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-http/minimal-http-server/mount-origin/libwebsockets.org-logo.png
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd/mount-origin/libwebsockets.org-logo.png
rename to minimal-examples/server-http/minimal-http-server/mount-origin/libwebsockets.org-logo.png
diff --git a/minimal-examples/server/README.md b/minimal-examples/server-ws/README.md
similarity index 73%
rename from minimal-examples/server/README.md
rename to minimal-examples/server-ws/README.md
index 628eb053..0112d625 100644
--- a/minimal-examples/server/README.md
+++ b/minimal-examples/server-ws/README.md
@@ -1,8 +1,5 @@
 |Example|Demonstrates|
 ---|---
-minimal-http-server|Serves a directory over http/1 or http/2, custom 404 handler
-minimal-http-server-libuv|Same as minimal-http-server but libuv event loop
-minimal-http-server-smp|Multiple service threads
 minimal-ws-server|Serves an index.html over http that opens a ws shared chat client in a browser
 minimal-ws-server-pmd|Simple ws server with permessage-deflate support
 minimal-ws-server-pmd-bulk|Simple ws server showing how to pass bulk data with permessage-deflate
diff --git a/minimal-examples/server/minimal-ws-broker/CMakeLists.txt b/minimal-examples/server-ws/minimal-ws-broker/CMakeLists.txt
similarity index 100%
rename from minimal-examples/server/minimal-ws-broker/CMakeLists.txt
rename to minimal-examples/server-ws/minimal-ws-broker/CMakeLists.txt
diff --git a/minimal-examples/server/minimal-ws-broker/README.md b/minimal-examples/server-ws/minimal-ws-broker/README.md
similarity index 100%
rename from minimal-examples/server/minimal-ws-broker/README.md
rename to minimal-examples/server-ws/minimal-ws-broker/README.md
diff --git a/minimal-examples/server/minimal-ws-broker/minimal-ws-broker.c b/minimal-examples/server-ws/minimal-ws-broker/minimal-ws-broker.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-broker/minimal-ws-broker.c
rename to minimal-examples/server-ws/minimal-ws-broker/minimal-ws-broker.c
diff --git a/minimal-examples/server/minimal-ws-server-ring/mount-origin/favicon.ico b/minimal-examples/server-ws/minimal-ws-broker/mount-origin/favicon.ico
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-ring/mount-origin/favicon.ico
rename to minimal-examples/server-ws/minimal-ws-broker/mount-origin/favicon.ico
diff --git a/minimal-examples/server/minimal-ws-broker/mount-origin/index.html b/minimal-examples/server-ws/minimal-ws-broker/mount-origin/index.html
similarity index 100%
rename from minimal-examples/server/minimal-ws-broker/mount-origin/index.html
rename to minimal-examples/server-ws/minimal-ws-broker/mount-origin/index.html
diff --git a/minimal-examples/server/minimal-ws-server-ring/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-ws/minimal-ws-broker/mount-origin/libwebsockets.org-logo.png
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-ring/mount-origin/libwebsockets.org-logo.png
rename to minimal-examples/server-ws/minimal-ws-broker/mount-origin/libwebsockets.org-logo.png
diff --git a/minimal-examples/server/minimal-ws-broker/protocol_lws_minimal.c b/minimal-examples/server-ws/minimal-ws-broker/protocol_lws_minimal.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-broker/protocol_lws_minimal.c
rename to minimal-examples/server-ws/minimal-ws-broker/protocol_lws_minimal.c
diff --git a/minimal-examples/server/minimal-ws-server-pmd-bulk/CMakeLists.txt b/minimal-examples/server-ws/minimal-ws-server-pmd-bulk/CMakeLists.txt
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd-bulk/CMakeLists.txt
rename to minimal-examples/server-ws/minimal-ws-server-pmd-bulk/CMakeLists.txt
diff --git a/minimal-examples/server/minimal-ws-server-pmd-bulk/README.md b/minimal-examples/server-ws/minimal-ws-server-pmd-bulk/README.md
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd-bulk/README.md
rename to minimal-examples/server-ws/minimal-ws-server-pmd-bulk/README.md
diff --git a/minimal-examples/server/minimal-ws-server-pmd-bulk/minimal-ws-server-pmd-bulk.c b/minimal-examples/server-ws/minimal-ws-server-pmd-bulk/minimal-ws-server-pmd-bulk.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd-bulk/minimal-ws-server-pmd-bulk.c
rename to minimal-examples/server-ws/minimal-ws-server-pmd-bulk/minimal-ws-server-pmd-bulk.c
diff --git a/minimal-examples/server/minimal-ws-server-threads/mount-origin/favicon.ico b/minimal-examples/server-ws/minimal-ws-server-pmd-bulk/mount-origin/favicon.ico
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-threads/mount-origin/favicon.ico
rename to minimal-examples/server-ws/minimal-ws-server-pmd-bulk/mount-origin/favicon.ico
diff --git a/minimal-examples/server/minimal-ws-server-pmd-bulk/mount-origin/index.html b/minimal-examples/server-ws/minimal-ws-server-pmd-bulk/mount-origin/index.html
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd-bulk/mount-origin/index.html
rename to minimal-examples/server-ws/minimal-ws-server-pmd-bulk/mount-origin/index.html
diff --git a/minimal-examples/server/minimal-ws-server-threads/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-ws/minimal-ws-server-pmd-bulk/mount-origin/libwebsockets.org-logo.png
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-threads/mount-origin/libwebsockets.org-logo.png
rename to minimal-examples/server-ws/minimal-ws-server-pmd-bulk/mount-origin/libwebsockets.org-logo.png
diff --git a/minimal-examples/server/minimal-ws-server-pmd-bulk/protocol_lws_minimal_pmd_bulk.c b/minimal-examples/server-ws/minimal-ws-server-pmd-bulk/protocol_lws_minimal_pmd_bulk.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd-bulk/protocol_lws_minimal_pmd_bulk.c
rename to minimal-examples/server-ws/minimal-ws-server-pmd-bulk/protocol_lws_minimal_pmd_bulk.c
diff --git a/minimal-examples/server/minimal-ws-server-pmd/CMakeLists.txt b/minimal-examples/server-ws/minimal-ws-server-pmd/CMakeLists.txt
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd/CMakeLists.txt
rename to minimal-examples/server-ws/minimal-ws-server-pmd/CMakeLists.txt
diff --git a/minimal-examples/server/minimal-ws-server-pmd/README.md b/minimal-examples/server-ws/minimal-ws-server-pmd/README.md
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd/README.md
rename to minimal-examples/server-ws/minimal-ws-server-pmd/README.md
diff --git a/minimal-examples/server/minimal-ws-server-pmd/minimal-ws-server-pmd.c b/minimal-examples/server-ws/minimal-ws-server-pmd/minimal-ws-server-pmd.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd/minimal-ws-server-pmd.c
rename to minimal-examples/server-ws/minimal-ws-server-pmd/minimal-ws-server-pmd.c
diff --git a/minimal-examples/server/minimal-ws-server/mount-origin/favicon.ico b/minimal-examples/server-ws/minimal-ws-server-pmd/mount-origin/favicon.ico
similarity index 100%
rename from minimal-examples/server/minimal-ws-server/mount-origin/favicon.ico
rename to minimal-examples/server-ws/minimal-ws-server-pmd/mount-origin/favicon.ico
diff --git a/minimal-examples/server/minimal-ws-server-pmd/mount-origin/index.html b/minimal-examples/server-ws/minimal-ws-server-pmd/mount-origin/index.html
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd/mount-origin/index.html
rename to minimal-examples/server-ws/minimal-ws-server-pmd/mount-origin/index.html
diff --git a/minimal-examples/server/minimal-ws-server/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-ws/minimal-ws-server-pmd/mount-origin/libwebsockets.org-logo.png
similarity index 100%
rename from minimal-examples/server/minimal-ws-server/mount-origin/libwebsockets.org-logo.png
rename to minimal-examples/server-ws/minimal-ws-server-pmd/mount-origin/libwebsockets.org-logo.png
diff --git a/minimal-examples/server/minimal-ws-server-pmd/protocol_lws_minimal.c b/minimal-examples/server-ws/minimal-ws-server-pmd/protocol_lws_minimal.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-pmd/protocol_lws_minimal.c
rename to minimal-examples/server-ws/minimal-ws-server-pmd/protocol_lws_minimal.c
diff --git a/minimal-examples/server/minimal-ws-server-ring/CMakeLists.txt b/minimal-examples/server-ws/minimal-ws-server-ring/CMakeLists.txt
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-ring/CMakeLists.txt
rename to minimal-examples/server-ws/minimal-ws-server-ring/CMakeLists.txt
diff --git a/minimal-examples/server/minimal-ws-server-ring/README.md b/minimal-examples/server-ws/minimal-ws-server-ring/README.md
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-ring/README.md
rename to minimal-examples/server-ws/minimal-ws-server-ring/README.md
diff --git a/minimal-examples/server/minimal-ws-server-ring/minimal-ws-server.c b/minimal-examples/server-ws/minimal-ws-server-ring/minimal-ws-server.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-ring/minimal-ws-server.c
rename to minimal-examples/server-ws/minimal-ws-server-ring/minimal-ws-server.c
diff --git a/minimal-examples/server-ws/minimal-ws-server-ring/mount-origin/favicon.ico b/minimal-examples/server-ws/minimal-ws-server-ring/mount-origin/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c0cc2e3dff34012ba3d4a7848a7ed17579788ec5
GIT binary patch
literal 1406
zcmZQzU}Ruq5D;JhgA7&%1~CQ(1`P%V29S^f14y0&EXTkIp}-`Ry|Mg1n7g4Wf+79t
z2ZrqYe+;>20vPVjzRB=<LjuF5*B2OyS3%T(6^;_4Aut*O!zKh6Nd`<zOpI)7Y@qT3
ztd|fUtO$wV;NW0nWo2b#XJ-eC65@juArUMrER39-oQ%xO%wSPMe6S*%#Q*;c3^07e
Soq+*{L1HjAh{nbTi2(qS_AI0T

literal 0
HcmV?d00001

diff --git a/minimal-examples/server/minimal-ws-server-ring/mount-origin/index.html b/minimal-examples/server-ws/minimal-ws-server-ring/mount-origin/index.html
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-ring/mount-origin/index.html
rename to minimal-examples/server-ws/minimal-ws-server-ring/mount-origin/index.html
diff --git a/minimal-examples/server-ws/minimal-ws-server-ring/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-ws/minimal-ws-server-ring/mount-origin/libwebsockets.org-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..2060a10c936a0959f2a5c3a6b7fa60ac324f1a95
GIT binary patch
literal 7029
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

literal 0
HcmV?d00001

diff --git a/minimal-examples/server/minimal-ws-server-ring/protocol_lws_minimal.c b/minimal-examples/server-ws/minimal-ws-server-ring/protocol_lws_minimal.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-ring/protocol_lws_minimal.c
rename to minimal-examples/server-ws/minimal-ws-server-ring/protocol_lws_minimal.c
diff --git a/minimal-examples/server/minimal-ws-server-threads/CMakeLists.txt b/minimal-examples/server-ws/minimal-ws-server-threads/CMakeLists.txt
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-threads/CMakeLists.txt
rename to minimal-examples/server-ws/minimal-ws-server-threads/CMakeLists.txt
diff --git a/minimal-examples/server/minimal-ws-server-threads/README.md b/minimal-examples/server-ws/minimal-ws-server-threads/README.md
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-threads/README.md
rename to minimal-examples/server-ws/minimal-ws-server-threads/README.md
diff --git a/minimal-examples/server/minimal-ws-server-threads/minimal-ws-server.c b/minimal-examples/server-ws/minimal-ws-server-threads/minimal-ws-server.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-threads/minimal-ws-server.c
rename to minimal-examples/server-ws/minimal-ws-server-threads/minimal-ws-server.c
diff --git a/minimal-examples/server-ws/minimal-ws-server-threads/mount-origin/favicon.ico b/minimal-examples/server-ws/minimal-ws-server-threads/mount-origin/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c0cc2e3dff34012ba3d4a7848a7ed17579788ec5
GIT binary patch
literal 1406
zcmZQzU}Ruq5D;JhgA7&%1~CQ(1`P%V29S^f14y0&EXTkIp}-`Ry|Mg1n7g4Wf+79t
z2ZrqYe+;>20vPVjzRB=<LjuF5*B2OyS3%T(6^;_4Aut*O!zKh6Nd`<zOpI)7Y@qT3
ztd|fUtO$wV;NW0nWo2b#XJ-eC65@juArUMrER39-oQ%xO%wSPMe6S*%#Q*;c3^07e
Soq+*{L1HjAh{nbTi2(qS_AI0T

literal 0
HcmV?d00001

diff --git a/minimal-examples/server/minimal-ws-server-threads/mount-origin/index.html b/minimal-examples/server-ws/minimal-ws-server-threads/mount-origin/index.html
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-threads/mount-origin/index.html
rename to minimal-examples/server-ws/minimal-ws-server-threads/mount-origin/index.html
diff --git a/minimal-examples/server-ws/minimal-ws-server-threads/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-ws/minimal-ws-server-threads/mount-origin/libwebsockets.org-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..2060a10c936a0959f2a5c3a6b7fa60ac324f1a95
GIT binary patch
literal 7029
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

literal 0
HcmV?d00001

diff --git a/minimal-examples/server/minimal-ws-server-threads/protocol_lws_minimal.c b/minimal-examples/server-ws/minimal-ws-server-threads/protocol_lws_minimal.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-server-threads/protocol_lws_minimal.c
rename to minimal-examples/server-ws/minimal-ws-server-threads/protocol_lws_minimal.c
diff --git a/minimal-examples/server/minimal-ws-server/CMakeLists.txt b/minimal-examples/server-ws/minimal-ws-server/CMakeLists.txt
similarity index 100%
rename from minimal-examples/server/minimal-ws-server/CMakeLists.txt
rename to minimal-examples/server-ws/minimal-ws-server/CMakeLists.txt
diff --git a/minimal-examples/server/minimal-ws-server/README.md b/minimal-examples/server-ws/minimal-ws-server/README.md
similarity index 100%
rename from minimal-examples/server/minimal-ws-server/README.md
rename to minimal-examples/server-ws/minimal-ws-server/README.md
diff --git a/minimal-examples/server/minimal-ws-server/minimal-ws-server.c b/minimal-examples/server-ws/minimal-ws-server/minimal-ws-server.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-server/minimal-ws-server.c
rename to minimal-examples/server-ws/minimal-ws-server/minimal-ws-server.c
diff --git a/minimal-examples/server-ws/minimal-ws-server/mount-origin/favicon.ico b/minimal-examples/server-ws/minimal-ws-server/mount-origin/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c0cc2e3dff34012ba3d4a7848a7ed17579788ec5
GIT binary patch
literal 1406
zcmZQzU}Ruq5D;JhgA7&%1~CQ(1`P%V29S^f14y0&EXTkIp}-`Ry|Mg1n7g4Wf+79t
z2ZrqYe+;>20vPVjzRB=<LjuF5*B2OyS3%T(6^;_4Aut*O!zKh6Nd`<zOpI)7Y@qT3
ztd|fUtO$wV;NW0nWo2b#XJ-eC65@juArUMrER39-oQ%xO%wSPMe6S*%#Q*;c3^07e
Soq+*{L1HjAh{nbTi2(qS_AI0T

literal 0
HcmV?d00001

diff --git a/minimal-examples/server/minimal-ws-server/mount-origin/index.html b/minimal-examples/server-ws/minimal-ws-server/mount-origin/index.html
similarity index 100%
rename from minimal-examples/server/minimal-ws-server/mount-origin/index.html
rename to minimal-examples/server-ws/minimal-ws-server/mount-origin/index.html
diff --git a/minimal-examples/server-ws/minimal-ws-server/mount-origin/libwebsockets.org-logo.png b/minimal-examples/server-ws/minimal-ws-server/mount-origin/libwebsockets.org-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..2060a10c936a0959f2a5c3a6b7fa60ac324f1a95
GIT binary patch
literal 7029
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

literal 0
HcmV?d00001

diff --git a/minimal-examples/server/minimal-ws-server/protocol_lws_minimal.c b/minimal-examples/server-ws/minimal-ws-server/protocol_lws_minimal.c
similarity index 100%
rename from minimal-examples/server/minimal-ws-server/protocol_lws_minimal.c
rename to minimal-examples/server-ws/minimal-ws-server/protocol_lws_minimal.c
-- 
GitLab