summaryrefslogtreecommitdiffstats
path: root/proxy/src
diff options
context:
space:
mode:
Diffstat (limited to 'proxy/src')
-rw-r--r--proxy/src/mechglue/gss_plugin.c17
-rw-r--r--proxy/src/mechglue/gss_plugin.h25
2 files changed, 31 insertions, 11 deletions
diff --git a/proxy/src/mechglue/gss_plugin.c b/proxy/src/mechglue/gss_plugin.c
index 372ab2e..ab0f139 100644
--- a/proxy/src/mechglue/gss_plugin.c
+++ b/proxy/src/mechglue/gss_plugin.c
@@ -605,3 +605,20 @@ bool gpp_is_krb5_oid(const gss_OID mech)
}
return false;
}
+
+bool gpp_debugging_enabled(void)
+{
+ static enum gpp_debugging debug = GPP_DEBUG_UNINITIALIZED;
+ char *envval;
+
+ if (debug == GPP_DEBUG_UNINITIALIZED) {
+ envval = getenv("GSSI_DEBUG");
+ if (envval) {
+ debug = GPP_DEBUG_ENABLED;
+ } else {
+ debug = GPP_DEBUG_DISABLED;
+ }
+ }
+
+ return debug;
+}
diff --git a/proxy/src/mechglue/gss_plugin.h b/proxy/src/mechglue/gss_plugin.h
index 739ec26..638ad77 100644
--- a/proxy/src/mechglue/gss_plugin.h
+++ b/proxy/src/mechglue/gss_plugin.h
@@ -54,26 +54,29 @@ enum gpp_behavior {
GPP_REMOTE_ONLY,
};
-#ifdef GSSI_DEBUGGING
+enum gpp_debugging {
+ GPP_DEBUG_UNINITIALIZED = 0,
+ GPP_DEBUG_ENABLED,
+ GPP_DEBUG_DISABLED
+};
#define GSSI_DEBUG(...) \
do { \
- fprintf(stderr, "GSSI %s:%d ", __FUNCTION__, __LINE__); \
- fprintf(stderr, __VA_ARGS__); \
- fflush(stderr); \
+ if (gpp_debugging_enabled() == GPP_DEBUG_ENABLED) { \
+ fprintf(stderr, "GSSI %s:%d ", __FUNCTION__, __LINE__); \
+ fprintf(stderr, __VA_ARGS__); \
+ fflush(stderr); \
+ } \
} while(0);
#define GSSI_TRACE(...) \
do { \
- fprintf(stderr, "GSSI %s:%d called\n", __FUNCTION__, __LINE__); \
- fflush(stderr); \
+ if (gpp_debugging_enabled() == GPP_DEBUG_ENABLED) { \
+ fprintf(stderr, "GSSI %s:%d called\n", __FUNCTION__, __LINE__); \
+ fflush(stderr); \
+ } \
} while(0);
-#else
-#define GSSI_DEBUG(...)
-#define GSSI_TRACE(...)
-#endif /* GSSI_DEBUGGING */
-
gss_OID_set gss_mech_interposer(gss_OID mech_type);
enum gpp_behavior gpp_get_behavior(void);
bool gpp_is_special_oid(const gss_OID mech_type);