From afa5e3f4692cc968d362cf7b56e7eb33eb40a129 Mon Sep 17 00:00:00 2001
From: Alexander Alashkin <alexander.alashkin@cesanta.com>
Date: Mon, 4 Apr 2016 18:30:10 +0200
Subject: [PATCH] Enable SSL in SJ/WS

PUBLISHED_FROM=d7b3e083c7a7d5095c8e61bb6183ae7e6e068858
---
 docs/c-api/http.h/items.json         |  8 -------
 docs/c-api/http.h/mg_connect_http.md | 35 ----------------------------
 docs/c-api/http.h/mg_connect_ws.md   | 30 ------------------------
 mongoose.h                           | 28 ++++++++++++++++++++++
 4 files changed, 28 insertions(+), 73 deletions(-)
 delete mode 100644 docs/c-api/http.h/mg_connect_http.md
 delete mode 100644 docs/c-api/http.h/mg_connect_ws.md

diff --git a/docs/c-api/http.h/items.json b/docs/c-api/http.h/items.json
index 037e457b3..01032204b 100644
--- a/docs/c-api/http.h/items.json
+++ b/docs/c-api/http.h/items.json
@@ -16,10 +16,6 @@
             "type": "markdown",
             "name": "mg_send_websocket_handshake2.md"
         },
-        {
-            "type": "markdown",
-            "name": "mg_connect_ws.md"
-        },
         {
             "type": "markdown",
             "name": "mg_send_websocket_frame.md"
@@ -80,10 +76,6 @@
             "type": "markdown",
             "name": "mg_http_create_digest_auth_header.md"
         },
-        {
-            "type": "markdown",
-            "name": "mg_connect_http.md"
-        },
         {
             "type": "markdown",
             "name": "mg_serve_http.md"
diff --git a/docs/c-api/http.h/mg_connect_http.md b/docs/c-api/http.h/mg_connect_http.md
deleted file mode 100644
index b897be0ce..000000000
--- a/docs/c-api/http.h/mg_connect_http.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: "mg_connect_http()"
-decl_name: "mg_connect_http"
-symbol_kind: "func"
-signature: |
-  struct mg_connection *mg_connect_http(struct mg_mgr *mgr,
-                                        mg_event_handler_t event_handler,
-                                        const char *url,
-                                        const char *extra_headers,
-                                        const char *post_data);
----
-
-Helper function that creates outbound HTTP connection.
-
-`url` is a URL to fetch. It must be properly URL-encoded, e.g. have
-no spaces, etc. By default, `mg_connect_http()` sends Connection and
-Host headers. `extra_headers` is an extra HTTP headers to send, e.g.
-`"User-Agent: my-app\r\n"`.
-If `post_data` is NULL, then GET request is created. Otherwise, POST request
-is created with the specified POST data. Note that if the data being posted
-is a form submission, the `Content-Type` header should be set accordingly
-(see example below).
-
-Examples:
-
-```c
-  nc1 = mg_connect_http(mgr, ev_handler_1, "http://www.google.com", NULL,
-                        NULL);
-  nc2 = mg_connect_http(mgr, ev_handler_1, "https://github.com", NULL, NULL);
-  nc3 = mg_connect_http(
-      mgr, ev_handler_1, "my_server:8000/form_submit/",
-      "Content-Type: application/x-www-form-urlencoded\r\n",
-      "var_1=value_1&var_2=value_2");
-``` 
-
diff --git a/docs/c-api/http.h/mg_connect_ws.md b/docs/c-api/http.h/mg_connect_ws.md
deleted file mode 100644
index 417279c86..000000000
--- a/docs/c-api/http.h/mg_connect_ws.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: "mg_connect_ws()"
-decl_name: "mg_connect_ws"
-symbol_kind: "func"
-signature: |
-  struct mg_connection *mg_connect_ws(struct mg_mgr *mgr,
-                                      mg_event_handler_t event_handler,
-                                      const char *url, const char *protocol,
-                                      const char *extra_headers);
----
-
-Helper function that creates an outbound WebSocket connection.
-
-`url` is a URL to connect to. It must be properly URL-encoded, e.g. have
-no spaces, etc. By default, `mg_connect_ws()` sends Connection and
-Host headers. `extra_headers` is an extra HTTP headers to send, e.g.
-`"User-Agent: my-app\r\n"`.
-If `protocol` is not NULL, then a `Sec-WebSocket-Protocol` header is sent.
-
-Examples:
-
-```c
-  nc1 = mg_connect_ws(mgr, ev_handler_1, "ws://echo.websocket.org", NULL,
-                      NULL);
-  nc2 = mg_connect_ws(mgr, ev_handler_1, "wss://echo.websocket.org", NULL,
-                      NULL);
-  nc3 = mg_connect_ws(mgr, ev_handler_1, "ws://api.cesanta.com",
-                      "clubby.cesanta.com", NULL);
-``` 
-
diff --git a/mongoose.h b/mongoose.h
index f357a25fe..1b0f3dcad 100644
--- a/mongoose.h
+++ b/mongoose.h
@@ -2147,11 +2147,25 @@ void mg_send_websocket_handshake2(struct mg_connection *nc, const char *path,
  *                       "clubby.cesanta.com", NULL);
  * ```
  */
+
 struct mg_connection *mg_connect_ws(struct mg_mgr *mgr,
                                     mg_event_handler_t event_handler,
                                     const char *url, const char *protocol,
                                     const char *extra_headers);
 
+/*
+ * Helper function that creates an outbound WebSocket connection
+ *
+ * Mostly identical to mg_connect_ws, but allows to provide extra parameters
+ * (for example, SSL parameters
+ */
+
+struct mg_connection *mg_connect_ws_opt(struct mg_mgr *mgr,
+                                        mg_event_handler_t ev_handler,
+                                        struct mg_connect_opts opts,
+                                        const char *url, const char *protocol,
+                                        const char *extra_headers);
+
 /*
  * Send websocket frame to the remote end.
  *
@@ -2405,12 +2419,26 @@ int mg_http_create_digest_auth_header(char *buf, size_t buf_len,
  *       "var_1=value_1&var_2=value_2");
  * ```
  */
+
 struct mg_connection *mg_connect_http(struct mg_mgr *mgr,
                                       mg_event_handler_t event_handler,
                                       const char *url,
                                       const char *extra_headers,
                                       const char *post_data);
 
+/*
+ * Helper function that creates outbound HTTP connection.
+ *
+ * Mostly identical to mg_connect_http, but allows to provide extra parameters
+ * (for example, SSL parameters
+ */
+
+struct mg_connection *mg_connect_http_opt(struct mg_mgr *mgr,
+                                          mg_event_handler_t ev_handler,
+                                          struct mg_connect_opts opts,
+                                          const char *url,
+                                          const char *extra_headers,
+                                          const char *post_data);
 /*
  * This structure defines how `mg_serve_http()` works.
  * Best practice is to set only required settings, and leave the rest as NULL.
-- 
GitLab