mirror of
https://git.freebsd.org/ports.git
synced 2025-05-25 15:36:35 -04:00
* 098edbb1 2020-05-20 | Switch assertion failure to returning false [Jeremy Evans] * fc029714 2020-05-30 | pool: prevent IPv6 pools to be larger than 2^16 addresses [Antonio Quartulli] * 38b46e6b 2020-02-20 | Persist management-query-remote and proxy prompts [Selva Nair] MFH: 2020Q2 (blanket approval for stability fixes)
61 lines
2.6 KiB
Text
61 lines
2.6 KiB
Text
From 38b46e6bf65489c2c5d75da1c02a3a1c33e6da88 Mon Sep 17 00:00:00 2001
|
|
From: Selva Nair <selva.nair@gmail.com>
|
|
Date: Thu, 20 Feb 2020 22:00:28 -0500
|
|
Subject: [PATCH] Persist management-query-remote and proxy prompts
|
|
|
|
Currently this prompt is only output once, not re-written to the
|
|
management interface when the management client connects. It is thus
|
|
not seen by a client that connects after the prompt is output or one that
|
|
disconnects and reconnects. This leads to a deadlock: the daemon waiting
|
|
for the "remote" command from the client, the latter not aware of it.
|
|
|
|
Resolve by adding the ">REMOTE" and ">PROXY" prompt to
|
|
man.persist.special_state_msg as done for other persisted prompts such
|
|
as ">PASSWORD"
|
|
|
|
Signed-off-by: Selva Nair <selva.nair@gmail.com>
|
|
Acked-by: Gert Doering <gert@greenie.muc.de>
|
|
Message-Id: <1582254028-7763-1-git-send-email-selva.nair@gmail.com>
|
|
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg19497.html
|
|
Signed-off-by: Gert Doering <gert@greenie.muc.de>
|
|
(cherry picked from commit 93ba6ccddafcc87f336f50dadde144ea4f6178ad)
|
|
---
|
|
src/openvpn/init.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/src/openvpn/init.c b/src/openvpn/init.c
|
|
index 8bac74f97..e153682ed 100644
|
|
--- ./src/openvpn/init.c
|
|
+++ ./src/openvpn/init.c
|
|
@@ -269,6 +269,7 @@ ce_management_query_proxy(struct context *c)
|
|
buf_printf(&out, ">PROXY:%u,%s,%s", (l ? l->current : 0) + 1,
|
|
(proto_is_udp(ce->proto) ? "UDP" : "TCP"), np(ce->remote));
|
|
management_notify_generic(management, BSTR(&out));
|
|
+ management->persist.special_state_msg = BSTR(&out);
|
|
}
|
|
ce->flags |= CE_MAN_QUERY_PROXY;
|
|
while (ce->flags & CE_MAN_QUERY_PROXY)
|
|
@@ -280,6 +281,7 @@ ce_management_query_proxy(struct context *c)
|
|
break;
|
|
}
|
|
}
|
|
+ management->persist.special_state_msg = NULL;
|
|
gc_free(&gc);
|
|
}
|
|
|
|
@@ -349,6 +351,7 @@ ce_management_query_remote(struct context *c)
|
|
buf_printf(&out, ">REMOTE:%s,%s,%s", np(ce->remote), ce->remote_port,
|
|
proto2ascii(ce->proto, ce->af, false));
|
|
management_notify_generic(management, BSTR(&out));
|
|
+ management->persist.special_state_msg = BSTR(&out);
|
|
|
|
ce->flags &= ~(CE_MAN_QUERY_REMOTE_MASK << CE_MAN_QUERY_REMOTE_SHIFT);
|
|
ce->flags |= (CE_MAN_QUERY_REMOTE_QUERY << CE_MAN_QUERY_REMOTE_SHIFT);
|
|
@@ -362,6 +365,7 @@ ce_management_query_remote(struct context *c)
|
|
break;
|
|
}
|
|
}
|
|
+ management->persist.special_state_msg = NULL;
|
|
}
|
|
gc_free(&gc);
|
|
|