From ae611a6e553dfe8e9cc814f71a42181bc6af1194 Mon Sep 17 00:00:00 2001
From: Sergey Lyubka <sergey.lyubka@cesanta.com>
Date: Sat, 1 Jul 2017 09:47:33 +0100
Subject: [PATCH] Clean up v7 from mongoose

PUBLISHED_FROM=efa9cc3aaf0c5ae8841e029370f882b615cebf1b
---
 docs/c-api/net.h/intro.md                |  1 -
 docs/c-api/net.h/mg_enable_javascript.md | 14 -----
 docs/c-api/net.h/struct_mg_mgr.md        |  3 -
 mongoose.c                               | 79 +-----------------------
 mongoose.h                               | 23 -------
 5 files changed, 2 insertions(+), 118 deletions(-)
 delete mode 100644 docs/c-api/net.h/mg_enable_javascript.md

diff --git a/docs/c-api/net.h/intro.md b/docs/c-api/net.h/intro.md
index fc0bb22f1..1534ceb03 100644
--- a/docs/c-api/net.h/intro.md
+++ b/docs/c-api/net.h/intro.md
@@ -11,7 +11,6 @@ items:
   - { name: mg_check_ip_acl.md }
   - { name: mg_connect.md }
   - { name: mg_connect_opt.md }
-  - { name: mg_enable_javascript.md }
   - { name: mg_mgr_free.md }
   - { name: mg_mgr_init.md }
   - { name: mg_mgr_init_opt.md }
diff --git a/docs/c-api/net.h/mg_enable_javascript.md b/docs/c-api/net.h/mg_enable_javascript.md
deleted file mode 100644
index 763151e02..000000000
--- a/docs/c-api/net.h/mg_enable_javascript.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: "mg_enable_javascript()"
-decl_name: "mg_enable_javascript"
-symbol_kind: "func"
-signature: |
-  enum v7_err mg_enable_javascript(struct mg_mgr *m, struct v7 *v7,
-                                   const char *init_js_file_name);
----
-
-Enables server-side JavaScript scripting.
-Requires a `-DMG_ENABLE_JAVASCRIPT` compilation flag and V7 engine sources.
-V7 instance must not be destroyed during manager's lifetime.
-Returns a V7 error. 
-
diff --git a/docs/c-api/net.h/struct_mg_mgr.md b/docs/c-api/net.h/struct_mg_mgr.md
index 63d946339..8e43a1e64 100644
--- a/docs/c-api/net.h/struct_mg_mgr.md
+++ b/docs/c-api/net.h/struct_mg_mgr.md
@@ -14,9 +14,6 @@ signature: |
     void *user_data; /* User data */
     int num_ifaces;
     struct mg_iface **ifaces; /* network interfaces */
-  #if MG_ENABLE_JAVASCRIPT
-    struct v7 *v7;
-  #endif
     const char *nameserver; /* DNS server to use */
   };
 ---
diff --git a/mongoose.c b/mongoose.c
index 66563fcf1..ec4303fb6 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -317,7 +317,7 @@ void cs_log_set_filter(char *str) {
     s_filter_pattern = NULL;
     s_filter_pattern_len = 0;
   }
-};
+}
 
 int cs_log_print_prefix(enum cs_log_level, const char *, const char *) WEAK;
 int cs_log_print_prefix(enum cs_log_level level, const char *func,
@@ -2281,32 +2281,6 @@ void mg_mgr_init_opt(struct mg_mgr *m, void *user_data,
   DBG(("init mgr=%p", m));
 }
 
-#if MG_ENABLE_JAVASCRIPT
-static enum v7_err mg_send_js(struct v7 *v7, v7_val_t *res) {
-  v7_val_t arg0 = v7_arg(v7, 0);
-  v7_val_t arg1 = v7_arg(v7, 1);
-  struct mg_connection *c = (struct mg_connection *) v7_get_ptr(v7, arg0);
-  size_t len = 0;
-
-  if (v7_is_string(arg1)) {
-    const char *data = v7_get_string(v7, &arg1, &len);
-    mg_send(c, data, len);
-  }
-
-  *res = v7_mk_number(v7, len);
-
-  return V7_OK;
-}
-
-enum v7_err mg_enable_javascript(struct mg_mgr *m, struct v7 *v7,
-                                 const char *init_file_name) {
-  v7_val_t v;
-  m->v7 = v7;
-  v7_set_method(v7, v7_get_global(v7), "mg_send", mg_send_js);
-  return v7_exec_file(v7, init_file_name, &v);
-}
-#endif
-
 void mg_mgr_free(struct mg_mgr *m) {
   struct mg_connection *conn, *tmp_conn;
 
@@ -5995,57 +5969,8 @@ void mg_http_handler(struct mg_connection *nc, int ev,
                           MG_SOCK_STRINGIFY_IP | MG_SOCK_STRINGIFY_PORT);
       DBG(("%p %s %.*s %.*s", nc, addr, (int) hm->method.len, hm->method.p,
            (int) hm->uri.len, hm->uri.p));
-
-/* Whole HTTP message is fully buffered, call event handler */
-
-#if MG_ENABLE_JAVASCRIPT
-      v7_val_t v1, v2, headers, req, args, res;
-      struct v7 *v7 = nc->mgr->v7;
-      const char *ev_name = trigger_ev == MG_EV_HTTP_REPLY ? "onsnd" : "onrcv";
-      int i, js_callback_handled_request = 0;
-
-      if (v7 != NULL) {
-        /* Lookup JS callback */
-        v1 = v7_get(v7, v7_get_global(v7), "Http", ~0);
-        v2 = v7_get(v7, v1, ev_name, ~0);
-
-        /* Create callback params. TODO(lsm): own/disown those */
-        args = v7_mk_array(v7);
-        req = v7_mk_object(v7);
-        headers = v7_mk_object(v7);
-
-        /* Populate request object */
-        v7_set(v7, req, "method", ~0,
-               v7_mk_string(v7, hm->method.p, hm->method.len, 1));
-        v7_set(v7, req, "uri", ~0, v7_mk_string(v7, hm->uri.p, hm->uri.len, 1));
-        v7_set(v7, req, "body", ~0,
-               v7_mk_string(v7, hm->body.p, hm->body.len, 1));
-        v7_set(v7, req, "headers", ~0, headers);
-        for (i = 0; hm->header_names[i].len > 0; i++) {
-          const struct mg_str *name = &hm->header_names[i];
-          const struct mg_str *value = &hm->header_values[i];
-          v7_set(v7, headers, name->p, name->len,
-                 v7_mk_string(v7, value->p, value->len, 1));
-        }
-
-        /* Invoke callback. TODO(lsm): report errors */
-        v7_array_push(v7, args, v7_mk_foreign(v7, nc));
-        v7_array_push(v7, args, req);
-        if (v7_apply(v7, v2, V7_UNDEFINED, args, &res) == V7_OK &&
-            v7_is_truthy(v7, res)) {
-          js_callback_handled_request++;
-        }
-      }
-
-      /* If JS callback returns true, stop request processing */
-      if (js_callback_handled_request) {
-        nc->flags |= MG_F_SEND_AND_CLOSE;
-      } else {
-        mg_http_call_endpoint_handler(nc, trigger_ev, hm);
-      }
-#else
+      /* Whole HTTP message is fully buffered, call event handler */
       mg_http_call_endpoint_handler(nc, trigger_ev, hm);
-#endif
       mbuf_remove(io, hm->message.len);
     }
   }
diff --git a/mongoose.h b/mongoose.h
index 76bab9281..23ef0f16a 100644
--- a/mongoose.h
+++ b/mongoose.h
@@ -2939,10 +2939,6 @@ struct {								\
 #define MG_ENABLE_IPV6 0
 #endif
 
-#ifndef MG_ENABLE_JAVASCRIPT
-#define MG_ENABLE_JAVASCRIPT 0
-#endif
-
 #ifndef MG_ENABLE_MQTT
 #define MG_ENABLE_MQTT 1
 #endif
@@ -3243,11 +3239,6 @@ int mg_ssl_if_write(struct mg_connection *nc, const void *data, size_t len);
 #ifndef CS_MONGOOSE_SRC_NET_H_
 #define CS_MONGOOSE_SRC_NET_H_
 
-#if MG_ENABLE_JAVASCRIPT
-#define EXCLUDE_COMMON
-#include <v7.h>
-#endif
-
 /* Amalgamated: #include "mongoose/src/common.h" */
 /* Amalgamated: #include "mongoose/src/net_if.h" */
 /* Amalgamated: #include "common/mbuf.h" */
@@ -3310,9 +3301,6 @@ struct mg_mgr {
   void *user_data; /* User data */
   int num_ifaces;
   struct mg_iface **ifaces; /* network interfaces */
-#if MG_ENABLE_JAVASCRIPT
-  struct v7 *v7;
-#endif
   const char *nameserver; /* DNS server to use */
 };
 
@@ -3777,17 +3765,6 @@ int mg_resolve(const char *domain_name, char *ip_addr_buf, size_t buf_len);
  */
 int mg_check_ip_acl(const char *acl, uint32_t remote_ip);
 
-#if MG_ENABLE_JAVASCRIPT
-/*
- * Enables server-side JavaScript scripting.
- * Requires a `-DMG_ENABLE_JAVASCRIPT` compilation flag and V7 engine sources.
- * V7 instance must not be destroyed during manager's lifetime.
- * Returns a V7 error.
- */
-enum v7_err mg_enable_javascript(struct mg_mgr *m, struct v7 *v7,
-                                 const char *init_js_file_name);
-#endif
-
 /*
  * Schedules an MG_EV_TIMER event to be delivered at `timestamp` time.
  * `timestamp` is UNIX time (the number of seconds since Epoch). It is
-- 
GitLab