From e0b9e4abfdf0462d07464be73fc15443cf5d05b4 Mon Sep 17 00:00:00 2001
From: Sergey Lyubka <valenok@gmail.com>
Date: Mon, 16 Jun 2014 11:06:57 +0100
Subject: [PATCH] Added enable_proxy

---
 mongoose.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/mongoose.c b/mongoose.c
index b1006b043..92222e616 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -1196,6 +1196,7 @@ enum {
 #ifndef MONGOOSE_NO_DIRECTORY_LISTING
   ENABLE_DIRECTORY_LISTING,
 #endif
+  ENABLE_PROXY,
 #endif
   EXTRA_MIME_TYPES,
 #if !defined(MONGOOSE_NO_FILESYSTEM) && !defined(MONGOOSE_NO_AUTH)
@@ -1238,6 +1239,7 @@ static const char *static_config_options[] = {
 #ifndef MONGOOSE_NO_DIRECTORY_LISTING
   "enable_directory_listing", "yes",
 #endif
+  "enable_proxy", NULL,
 #endif
   "extra_mime_types", NULL,
 #if !defined(MONGOOSE_NO_FILESYSTEM) && !defined(MONGOOSE_NO_AUTH)
@@ -4198,6 +4200,7 @@ static void open_local_endpoint(struct connection *conn, int skip_user) {
   file_stat_t st;
   int exists = 0;
 #endif
+  const char *pxy = conn->server->config_options[ENABLE_PROXY];
 
   // If EP_USER was set in a prev call, reset it
   conn->endpoint_type = EP_NONE;
@@ -4226,8 +4229,9 @@ static void open_local_endpoint(struct connection *conn, int skip_user) {
     return;
   }
 
-  if (strcmp(conn->mg_conn.request_method, "CONNECT") == 0 ||
-      memcmp(conn->mg_conn.uri, "http", 4) == 0) {
+  if (pxy != NULL && !strcmp(pxy, "yes") &&
+      (strcmp(conn->mg_conn.request_method, "CONNECT") == 0 ||
+       memcmp(conn->mg_conn.uri, "http", 4) == 0)) {
     proxify_connection(conn);
     return;
   }
-- 
GitLab