From: Selva Nair <selva.n...@gmail.com> --management-client has an obscure and undocumented feature to take a file argument where the peer's address and port are recorded. This has become dead code over time.
- reactivate the dead code - make it work with v6 addresses as well - do not exit on error in writing the record Signed-off-by: Selva Nair <selva.n...@gmail.com> --- Alternatively we could remove this "feature" and related code. src/openvpn/manage.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/openvpn/manage.c b/src/openvpn/manage.c index 21c7ccdd..548d3b9a 100644 --- a/src/openvpn/manage.c +++ b/src/openvpn/manage.c @@ -1621,23 +1621,19 @@ man_record_peer_info(struct management *man) if (man->settings.write_peer_info_file) { bool success = false; -#ifdef HAVE_GETSOCKNAME if (socket_defined(man->connection.sd_cli)) { - struct sockaddr_in addr; + struct sockaddr_storage addr; socklen_t addrlen = sizeof(addr); int status; - CLEAR(addr); status = getsockname(man->connection.sd_cli, (struct sockaddr *)&addr, &addrlen); - if (!status && addrlen == sizeof(addr)) + if (!status) { - const in_addr_t a = ntohl(addr.sin_addr.s_addr); - const int p = ntohs(addr.sin_port); FILE *fp = platform_fopen(man->settings.write_peer_info_file, "w"); if (fp) { - fprintf(fp, "%s\n%d\n", print_in_addr_t(a, 0, &gc), p); + fprintf(fp, "%s\n", print_sockaddr((struct sockaddr *)&addr, &gc)); if (!fclose(fp)) { success = true; @@ -1645,12 +1641,10 @@ man_record_peer_info(struct management *man) } } } -#endif /* ifdef HAVE_GETSOCKNAME */ if (!success) { msg(D_MANAGEMENT, "MANAGEMENT: failed to write peer info to file %s", man->settings.write_peer_info_file); - throw_signal_soft(SIGTERM, "management-connect-failed"); } } gc_free(&gc); -- 2.30.2 _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel