Opened 8 years ago
Last modified 4 years ago
#783 assigned Bug / Defect
--enable-async-push --disable-plugins build failure for multi.c
Reported by: | cpwgem | Owned by: | stipa |
---|---|---|---|
Priority: | minor | Milestone: | release 2.4.11 |
Component: | Building / Compiling | Version: | OpenVPN git master branch (Community Ed) |
Severity: | Not set (select this one, unless your'e a OpenVPN developer) | Keywords: | |
Cc: | David Sommerseth |
Description
Given the following configure:
./configure --enable-async-push --disable-plugins
multi.c will fail to compile with the following error:
gcc -DHAVE_CONFIG_H -I. -I../.. -I../../include -I../../include -I../../src/compat -g -O2 -std=c99 -MT multi.o -MD -MP -MF .deps/multi.Tpo -c -o multi.o multi.c multi.c: In function ‘multi_process_post’: multi.c:2215:19: error: ‘struct key_state’ has no member named ‘auth_control_file’ if (ks && ks->auth_control_file && ks->auth_deferred && !was_authenticated) ^ multi.c:2218:70: error: ‘struct key_state’ has no member named ‘auth_control_file’ long watch_descriptor = inotify_add_watch(m->top.c2.inotify_fd, ks->auth_control_file, IN_CLOSE_WRITE | IN_ONESHOT);
struct key_state is defined in ssl_common.h, and the missing member auth_control_file is defined as follows:
#ifdef PLUGIN_DEF_AUTH unsigned int auth_control_status; time_t acf_last_mod; char *auth_control_file; #endif
This PLUGIN_DEF_AUTH expects --enable-plugins however the code in question:
#if defined(ENABLE_ASYNC_PUSH) && defined(ENABLE_DEF_AUTH) if (ks && ks->auth_control_file && ks->auth_deferred && !was_authenticated) { /* watch acf file */ long watch_descriptor = inotify_add_watch(m->top.c2.inotify_fd, ks->auth_control_file, IN_CLOSE_WRITE | IN_ONESHOT);
Checks for ENABLE_DEF_AUTH without attempting to check for plugins being enabled/disable causing this compile to fail. It seems that replacing defined(ENABLE_DEF_AUTH) with defined(PLUGIN_DEF_AUTH) would avoid this.
Change History (5)
comment:1 Changed 8 years ago by
Cc: | David Sommerseth added |
---|---|
Milestone: | → release 2.4 |
Owner: | set to stipa |
Priority: | major → minor |
Status: | new → assigned |
comment:2 Changed 8 years ago by
That combination of options does not make much sense, since async-push is useful only for deferred authentication case, which requires plugins to be enabled.
I'll make configure script fail when async-push is enabled and plugins are disabled.
While I'd reclassify this as "minor", it's still an oversight regarding #ifdef combinations so we should try to fix this for 2.4.0...