diff options
Diffstat (limited to 'debian/patches/client_hang_when_server_dont_push.patch')
-rw-r--r-- | debian/patches/client_hang_when_server_dont_push.patch | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/debian/patches/client_hang_when_server_dont_push.patch b/debian/patches/client_hang_when_server_dont_push.patch deleted file mode 100644 index 3e56613..0000000 --- a/debian/patches/client_hang_when_server_dont_push.patch +++ /dev/null @@ -1,53 +0,0 @@ -Description: When the client sends PUSH_REQUESTS, it waits until the server - sends PUSH_REPLY. If the server do not have anything to push to the client - nothing happens. The client will then regularly send new PUSH_REQUESTS until - it gets an answer, which results in not completing the connection negotiation. - This patch makes the server send an empty PUSH_REPLY when it has nothing - more to push to the client. -Author: David Sommerseth <dazo@users.sourceforge.net> -Origin: upstream, https://community.openvpn.net/openvpn/attachment/ticket/13/0001-Fixed-client-hang-when-server-don-t-PUSH-aka-the-NO_.patch -Bug: https://community.openvpn.net/openvpn/ticket/13 -Reviewed-By: James Yonan <james@openvpn.net> - -Index: openvpn-2.1.3/push.c -=================================================================== ---- openvpn-2.1.3.orig/push.c 2010-05-31 09:05:55.000000000 +0200 -+++ openvpn-2.1.3/push.c 2010-09-29 13:15:46.788461606 +0200 -@@ -177,6 +177,7 @@ - static char cmd[] = "PUSH_REPLY"; - const int extra = 64; /* extra space for possible trailing ifconfig and push-continuation */ - const int safe_cap = BCAP (&buf) - extra; -+ bool push_sent = false; - - buf_printf (&buf, cmd); - -@@ -192,6 +193,7 @@ - const bool status = send_control_channel_string (c, BSTR (&buf), D_PUSH); - if (!status) - goto fail; -+ push_sent = true; - multi_push = true; - buf_reset_len (&buf); - buf_printf (&buf, cmd); -@@ -218,6 +220,21 @@ - { - const bool status = send_control_channel_string (c, BSTR (&buf), D_PUSH); - if (!status) -+ goto fail; -+ push_sent = true; -+ } -+ -+ /* If nothing have been pushed, send an empty push, -+ * as the client is expecting a response -+ */ -+ if (!push_sent) -+ { -+ bool status = false; -+ -+ buf_reset_len (&buf); -+ buf_printf (&buf, cmd); -+ status = send_control_channel_string (c, BSTR(&buf), D_PUSH); -+ if (!status) - goto fail; - } - |