From b5dd0e809381a62eecf0ff274bebbe17518c3cd0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=91=D0=BE=D0=B1=D0=B1=D0=B8?= <lsm@cesanta.com>
Date: Thu, 19 Oct 2017 08:38:33 +0100
Subject: [PATCH] Use verbose flags in both socks client and server

PUBLISHED_FROM=d17e96a97e1621e9788844bcd627c3143d37315c
---
 mongoose.c | 18 ++++++++----------
 mongoose.h |  3 +++
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/mongoose.c b/mongoose.c
index aa777cc07..d60c4847c 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -4056,9 +4056,6 @@ const struct mg_iface_vtable mg_default_iface_vtable = MG_SOCKET_IFACE_VTABLE;
 
 #if MG_ENABLE_SOCKS
 
-#define MG_SOCKS_HANDSHAKE_DONE MG_F_USER_1
-#define MG_SOCKS_CONNECT_DONE MG_F_USER_2
-
 struct socksdata {
   char *proxy_addr;        /* HOST:PORT of the socks5 proxy server */
   struct mg_connection *s; /* Respective connection to the server */
@@ -12807,8 +12804,8 @@ struct mg_connection *mg_sntp_get_time(struct mg_mgr *mgr,
 
 #if MG_ENABLE_SOCKS
 
-/* Amalgamated: #include "mongoose/src/internal.h" */
 /* Amalgamated: #include "mongoose/src/socks.h" */
+/* Amalgamated: #include "mongoose/src/internal.h" */
 
 /*
  *  https://www.ietf.org/rfc/rfc1928.txt paragraph 3, handle client handshake
@@ -12833,7 +12830,7 @@ static void mg_socks5_handshake(struct mg_connection *c) {
     }
     mbuf_remove(r, 2 + r->buf[1]);
     mg_send(c, reply, sizeof(reply));
-    c->flags |= MG_F_USER_1; /* Mark handshake done */
+    c->flags |= MG_SOCKS_HANDSHAKE_DONE; /* Mark handshake done */
   }
 }
 
@@ -12937,17 +12934,18 @@ static void mg_socks5_handle_request(struct mg_connection *c) {
   }
   mg_send(c, r->buf + 3, addr_len + 1 + 2);
 
-  mbuf_remove(r, 6 + addr_len); /* Remove request from the input stream */
-  c->flags |= MG_F_USER_2;      /* Mark ourselves as connected */
+  mbuf_remove(r, 6 + addr_len);      /* Remove request from the input stream */
+  c->flags |= MG_SOCKS_CONNECT_DONE; /* Mark ourselves as connected */
 }
 
 static void socks_handler(struct mg_connection *c, int ev, void *ev_data) {
   if (ev == MG_EV_RECV) {
-    if (!(c->flags & MG_F_USER_1)) mg_socks5_handshake(c);
-    if (c->flags & MG_F_USER_1 && !(c->flags & MG_F_USER_2)) {
+    if (!(c->flags & MG_SOCKS_HANDSHAKE_DONE)) mg_socks5_handshake(c);
+    if (c->flags & MG_SOCKS_HANDSHAKE_DONE &&
+        !(c->flags & MG_SOCKS_CONNECT_DONE)) {
       mg_socks5_handle_request(c);
     }
-    if (c->flags & MG_F_USER_2) relay_data(c);
+    if (c->flags & MG_SOCKS_CONNECT_DONE) relay_data(c);
   } else if (ev == MG_EV_CLOSE) {
     disband(c);
   }
diff --git a/mongoose.h b/mongoose.h
index 8c92ce792..65c175028 100644
--- a/mongoose.h
+++ b/mongoose.h
@@ -6051,6 +6051,9 @@ struct mg_connection *mg_sntp_get_time(struct mg_mgr *mgr,
 
 #define MG_SOCKS_VERSION 5
 
+#define MG_SOCKS_HANDSHAKE_DONE MG_F_USER_1
+#define MG_SOCKS_CONNECT_DONE MG_F_USER_2
+
 /* SOCKS5 handshake methods */
 enum mg_socks_handshake_method {
   MG_SOCKS_HANDSHAKE_NOAUTH = 0,     /* Handshake method - no authentication */
-- 
GitLab