Hello,
Our openvpn server got out of free inodes in /tmp, making it quite
completely nonworking. This is due to some codepath in multi.c which
does not remove its temporary file (when a plugin callback returns an
error, or a client-connect script returns an error). Please see the
attached patch which fixes this.
Samuel
diff --git a/src/openvpn/multi.c b/src/openvpn/multi.c
index 5910154..d0ed147 100644
--- a/src/openvpn/multi.c
+++ b/src/openvpn/multi.c
@@ -1699,6 +1705,9 @@ multi_connection_established (struct multi_context *m,
struct multi_instance *mi
{
msg (M_WARN, "WARNING: client-connect plugin call failed");
cc_succeeded = false;
+ if (!platform_unlink (dc_file))
+ msg (D_MULTI_ERRORS, "MULTI: problem deleting temporary file:
%s",
+ dc_file);
}
else
{
@@ -1757,7 +1766,12 @@ multi_connection_established (struct multi_context *m,
struct multi_instance *mi
++cc_succeeded_count;
}
else
- cc_succeeded = false;
+ {
+ cc_succeeded = false;
+ if (!platform_unlink (dc_file))
+ msg (D_MULTI_ERRORS, "MULTI: problem deleting temporary file:
%s",
+ dc_file);
+ }
script_failed:
argv_reset (&argv);
}