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

Reply via email to