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); }