Hi Sandro,

at a first glance the patch looks reasonable.
However, we truly need you to write some commit message explaining what your patch is fixing/implementing, why it is doing so and what problem it solves.

Cheers,

On 30/08/2023 15:05, 5andr0 wrote:
---
  src/openvpn/socket.c |  2 ++
  src/openvpn/socks.c  | 25 ++++++++++++++-----------
  src/openvpn/socks.h  |  2 ++
  3 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/src/openvpn/socket.c b/src/openvpn/socket.c
index 501e023e..10fd0e26 100644
--- a/src/openvpn/socket.c
+++ b/src/openvpn/socket.c
@@ -2075,6 +2075,7 @@ phase2_tcp_client(struct link_socket *sock, struct 
signal_info *sig_info)
                                             sock->sd,
                                             sock->proxy_dest_host,
                                             sock->proxy_dest_port,
+                                           sock->server_poll_timeout,
                                             sig_info);
          }
          if (proxy_retry)
@@ -2104,6 +2105,7 @@ phase2_socks_client(struct link_socket *sock, struct 
signal_info *sig_info)
                                     sock->ctrl_sd,
                                     sock->sd,
                                     &sock->socks_relay.dest,
+                                   sock->server_poll_timeout,
                                     sig_info);
if (sig_info->signal_received)
diff --git a/src/openvpn/socks.c b/src/openvpn/socks.c
index a29eb83a..2cb83a66 100644
--- a/src/openvpn/socks.c
+++ b/src/openvpn/socks.c
@@ -42,6 +42,7 @@
  #include "fdmisc.h"
  #include "misc.h"
  #include "proxy.h"
+#include "forward.h"
#include "memdbg.h" @@ -85,12 +86,12 @@ socks_proxy_close(struct socks_proxy_info *sp)
  static bool
  socks_username_password_auth(struct socks_proxy_info *p,
                               socket_descriptor_t sd,
+                             struct event_timeout *server_poll_timeout,
                               volatile int *signal_received)
  {
      char to_send[516];
      char buf[2];
      int len = 0;
-    const int timeout_sec = 5;
      struct user_pass creds;
      ssize_t size;
      bool ret = false;
@@ -129,7 +130,7 @@ socks_username_password_auth(struct socks_proxy_info *p,
FD_ZERO(&reads);
          openvpn_fd_set(sd, &reads);
-        tv.tv_sec = timeout_sec;
+        tv.tv_sec = get_server_poll_remaining_time(server_poll_timeout);
          tv.tv_usec = 0;
status = select(sd + 1, &reads, NULL, NULL, &tv);
@@ -185,11 +186,11 @@ cleanup:
  static bool
  socks_handshake(struct socks_proxy_info *p,
                  socket_descriptor_t sd,
+                struct event_timeout *server_poll_timeout,
                  volatile int *signal_received)
  {
      char buf[2];
      int len = 0;
-    const int timeout_sec = 5;
      ssize_t size;
/* VER = 5, NMETHODS = 1, METHODS = [0 (no auth)] */
@@ -216,7 +217,7 @@ socks_handshake(struct socks_proxy_info *p,
FD_ZERO(&reads);
          openvpn_fd_set(sd, &reads);
-        tv.tv_sec = timeout_sec;
+        tv.tv_sec = get_server_poll_remaining_time(server_poll_timeout);
          tv.tv_usec = 0;
status = select(sd + 1, &reads, NULL, NULL, &tv);
@@ -283,7 +284,7 @@ socks_handshake(struct socks_proxy_info *p,
                  return false;
              }
- if (!socks_username_password_auth(p, sd, signal_received))
+            if (!socks_username_password_auth(p, sd, server_poll_timeout, 
signal_received))
              {
                  return false;
              }
@@ -301,13 +302,13 @@ socks_handshake(struct socks_proxy_info *p,
  static bool
  recv_socks_reply(socket_descriptor_t sd,
                   struct openvpn_sockaddr *addr,
+                 struct event_timeout *server_poll_timeout,
                   volatile int *signal_received)
  {
      char atyp = '\0';
      int alen = 0;
      int len = 0;
      char buf[270];              /* 4 + alen(max 256) + 2 */
-    const int timeout_sec = 5;
if (addr != NULL)
      {
@@ -326,7 +327,7 @@ recv_socks_reply(socket_descriptor_t sd,
FD_ZERO(&reads);
          openvpn_fd_set(sd, &reads);
-        tv.tv_sec = timeout_sec;
+        tv.tv_sec = get_server_poll_remaining_time(server_poll_timeout);
          tv.tv_usec = 0;
status = select(sd + 1, &reads, NULL, NULL, &tv);
@@ -451,12 +452,13 @@ establish_socks_proxy_passthru(struct socks_proxy_info *p,
                                 socket_descriptor_t sd,  /* already open to 
proxy */
                                 const char *host,        /* openvpn server 
remote */
                                 const char *servname,    /* openvpn server 
port */
+                               struct event_timeout *server_poll_timeout,
                                 struct signal_info *sig_info)
  {
      char buf[270];
      size_t len;
- if (!socks_handshake(p, sd, &sig_info->signal_received))
+    if (!socks_handshake(p, sd, server_poll_timeout, 
&sig_info->signal_received))
      {
          goto error;
      }
@@ -494,7 +496,7 @@ establish_socks_proxy_passthru(struct socks_proxy_info *p,
/* receive reply from Socks proxy and discard */
-    if (!recv_socks_reply(sd, NULL, &sig_info->signal_received))
+    if (!recv_socks_reply(sd, NULL, server_poll_timeout, 
&sig_info->signal_received))
      {
          goto error;
      }
@@ -512,9 +514,10 @@ establish_socks_proxy_udpassoc(struct socks_proxy_info *p,
                                 socket_descriptor_t ctrl_sd,  /* already open 
to proxy */
                                 socket_descriptor_t udp_sd,
                                 struct openvpn_sockaddr *relay_addr,
+                               struct event_timeout *server_poll_timeout,
                                 struct signal_info *sig_info)
  {
-    if (!socks_handshake(p, ctrl_sd, &sig_info->signal_received))
+    if (!socks_handshake(p, ctrl_sd, server_poll_timeout, 
&sig_info->signal_received))
      {
          goto error;
      }
@@ -535,7 +538,7 @@ establish_socks_proxy_udpassoc(struct socks_proxy_info *p,
/* receive reply from Socks proxy */
      CLEAR(*relay_addr);
-    if (!recv_socks_reply(ctrl_sd, relay_addr, &sig_info->signal_received))
+    if (!recv_socks_reply(ctrl_sd, relay_addr, server_poll_timeout, 
&sig_info->signal_received))
      {
          goto error;
      }
diff --git a/src/openvpn/socks.h b/src/openvpn/socks.h
index 3a89245b..a7094f06 100644
--- a/src/openvpn/socks.h
+++ b/src/openvpn/socks.h
@@ -52,12 +52,14 @@ void establish_socks_proxy_passthru(struct socks_proxy_info 
*p,
                                      socket_descriptor_t sd,  /* already open 
to proxy */
                                      const char *host,        /* openvpn 
server remote */
                                      const char *servname,          /* openvpn 
server port */
+                                    struct event_timeout *server_poll_timeout,
                                      struct signal_info *sig_info);
void establish_socks_proxy_udpassoc(struct socks_proxy_info *p,
                                      socket_descriptor_t ctrl_sd,  /* already 
open to proxy */
                                      socket_descriptor_t udp_sd,
                                      struct openvpn_sockaddr *relay_addr,
+                                    struct event_timeout *server_poll_timeout,
                                      struct signal_info *sig_info);
void socks_process_incoming_udp(struct buffer *buf,

--
Antonio Quartulli


_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to