[3/3] openvpn-authenticator: Break read loop when daemon goes away
Commit Message
Fixes: #12963
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
config/ovpn/openvpn-authenticator | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
Comments
Tested-by: Adolf Belka <adolf.belka@ipfire.org>
On 06/12/2022 11:01, Michael Tremer wrote:
> Fixes: #12963
> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
> ---
> config/ovpn/openvpn-authenticator | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/config/ovpn/openvpn-authenticator b/config/ovpn/openvpn-authenticator
> index c22e08f0a..4341993e6 100644
> --- a/config/ovpn/openvpn-authenticator
> +++ b/config/ovpn/openvpn-authenticator
> @@ -68,6 +68,12 @@ class OpenVPNAuthenticator(object):
>
> while True:
> char = self.sock.recv(1)
> +
> + # Break if we could not read from the socket
> + if not char:
> + raise EOFError("Could not read from socket")
> +
> + # Append to buffer
> buf.append(char)
>
> # Reached end of line
> @@ -112,7 +118,7 @@ class OpenVPNAuthenticator(object):
> self._client_event(line)
>
> # Terminate the daemon when it loses its connection to the OpenVPN daemon
> - except ConnectionResetError as e:
> + except (ConnectionResetError, EOFError) as e:
> log.error("Connection to OpenVPN has been lost: %s" % e)
>
> log.info("OpenVPN Authenticator terminated")
@@ -68,6 +68,12 @@ class OpenVPNAuthenticator(object):
while True:
char = self.sock.recv(1)
+
+ # Break if we could not read from the socket
+ if not char:
+ raise EOFError("Could not read from socket")
+
+ # Append to buffer
buf.append(char)
# Reached end of line
@@ -112,7 +118,7 @@ class OpenVPNAuthenticator(object):
self._client_event(line)
# Terminate the daemon when it loses its connection to the OpenVPN daemon
- except ConnectionResetError as e:
+ except (ConnectionResetError, EOFError) as e:
log.error("Connection to OpenVPN has been lost: %s" % e)
log.info("OpenVPN Authenticator terminated")