mirror of
https://github.com/OpenVPN/openvpn.git
synced 2026-05-28 04:03:29 -04:00
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>
This commit is contained in:
parent
a885040104
commit
93ba6ccdda
1 changed files with 4 additions and 0 deletions
|
|
@ -272,6 +272,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)
|
||||
|
|
@ -283,6 +284,7 @@ ce_management_query_proxy(struct context *c)
|
|||
break;
|
||||
}
|
||||
}
|
||||
management->persist.special_state_msg = NULL;
|
||||
gc_free(&gc);
|
||||
}
|
||||
|
||||
|
|
@ -352,6 +354,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);
|
||||
|
|
@ -365,6 +368,7 @@ ce_management_query_remote(struct context *c)
|
|||
break;
|
||||
}
|
||||
}
|
||||
management->persist.special_state_msg = NULL;
|
||||
}
|
||||
gc_free(&gc);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue