da2ef9
diff -up openchange-openchange-2.3-VULCAN/libmapi/cdo_mapi.c.samba-4.2.0-rc2 openchange-openchange-2.3-VULCAN/libmapi/cdo_mapi.c
da2ef9
--- openchange-openchange-2.3-VULCAN/libmapi/cdo_mapi.c.samba-4.2.0-rc2	2015-12-03 11:20:17.502119228 +0100
da2ef9
+++ openchange-openchange-2.3-VULCAN/libmapi/cdo_mapi.c	2015-12-03 11:20:44.524118102 +0100
da2ef9
@@ -337,6 +337,9 @@ _PUBLIC_ enum MAPISTATUS SetMAPIDebugLev
da2ef9
 	ret = lpcfg_set_cmdline(mapi_ctx->lp_ctx, "log level", debuglevel);
da2ef9
 	talloc_free(debuglevel);
da2ef9
 
da2ef9
+	if (ret)
da2ef9
+		_oc_log_samba_level = level;
da2ef9
+
da2ef9
 	return (ret == true) ? MAPI_E_SUCCESS : MAPI_E_INVALID_PARAMETER;
da2ef9
 }
da2ef9
 
da2ef9
diff -up openchange-openchange-2.3-VULCAN/libmapi/oc_log.c.samba-4.2.0-rc2 openchange-openchange-2.3-VULCAN/libmapi/oc_log.c
da2ef9
--- openchange-openchange-2.3-VULCAN/libmapi/oc_log.c.samba-4.2.0-rc2	2015-12-03 11:11:01.801142393 +0100
da2ef9
+++ openchange-openchange-2.3-VULCAN/libmapi/oc_log.c	2015-12-03 11:27:22.921101494 +0100
da2ef9
@@ -20,7 +20,9 @@
da2ef9
 */
da2ef9
 
da2ef9
 #include "libmapi/libmapi.h"
da2ef9
-#include <util/debug.h>
da2ef9
+#include <stdio.h>
da2ef9
+
da2ef9
+int _oc_log_samba_level = 0;
da2ef9
 
da2ef9
 void oc_log(enum oc_log_level level, const char *fmt_string, ...)
da2ef9
 {
da2ef9
@@ -47,12 +49,16 @@ void oc_logv(enum oc_log_level level, co
da2ef9
 		samba_level = 0;
da2ef9
 	}
da2ef9
 
da2ef9
+	if (samba_level && !(_oc_log_samba_level & samba_level))
da2ef9
+		return;
da2ef9
+
da2ef9
 	/* Add a trailing newline if one is not already present */
da2ef9
 	if (line[strlen(line)-1] == '\n') {
da2ef9
-		DEBUG(samba_level, ("%s", line));
da2ef9
+		fprintf(stderr, "%s", line);
da2ef9
 	} else {
da2ef9
-		DEBUG(samba_level, ("%s\n", line));
da2ef9
+		fprintf(stderr, "%s\n", line);
da2ef9
 	}
da2ef9
+	fflush(stderr);
da2ef9
 }
da2ef9
 
da2ef9
 void oc_log_init_stdout()
da2ef9
diff -up openchange-openchange-2.3-VULCAN/libmapi/oc_log.h.samba-4.2.0-rc2 openchange-openchange-2.3-VULCAN/libmapi/oc_log.h
da2ef9
--- openchange-openchange-2.3-VULCAN/libmapi/oc_log.h.samba-4.2.0-rc2	2015-12-03 11:18:27.407123817 +0100
da2ef9
+++ openchange-openchange-2.3-VULCAN/libmapi/oc_log.h	2015-12-03 11:20:19.228119156 +0100
da2ef9
@@ -77,4 +77,6 @@ void oc_log_init_user(const char *progna
da2ef9
    defaulting to /var/log/openchange.log */
da2ef9
 void oc_log_init_server(const char *progname, struct loadparm_context *lp_ctx);
da2ef9
 
da2ef9
+extern int _oc_log_samba_level; /* Private, do not change it other than by SetMAPIDebugLevel() */
da2ef9
+
da2ef9
 #endif /* _OC_LOG_H_ */
da2ef9
diff -up openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/fault_util.c.samba-4.2.0-rc2 openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/fault_util.c
da2ef9
--- openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/fault_util.c.samba-4.2.0-rc2	2015-12-03 11:11:17.337141745 +0100
da2ef9
+++ openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/fault_util.c	2015-12-03 11:27:46.505100511 +0100
da2ef9
@@ -30,14 +30,14 @@
da2ef9
 #include "fault_util.h"
da2ef9
 #include "libmapi/libmapi.h"
da2ef9
 #include "libmapi/libmapi_private.h"
da2ef9
-#include <util/debug.h>
da2ef9
+#include <stdio.h>
da2ef9
 
da2ef9
 #include <samba/version.h>
da2ef9
 
da2ef9
 #include <execinfo.h>
da2ef9
 
da2ef9
 /**
da2ef9
-   \details print a backtrace using DEBUG() macro.
da2ef9
+   \details print a backtrace (*not* using DEBUG() macro).
da2ef9
 
da2ef9
  */
da2ef9
 _PUBLIC_ void debug_print_backtrace(int dbg_level)
da2ef9
@@ -47,16 +47,19 @@ _PUBLIC_ void debug_print_backtrace(int
da2ef9
 	size_t backtrace_size;
da2ef9
 	char **backtrace_strings;
da2ef9
 
da2ef9
+	if (!(_oc_log_samba_level & dbg_level))
da2ef9
+		return;
da2ef9
+
da2ef9
 	backtrace_size = backtrace(backtrace_stack, BACKTRACE_SIZE);
da2ef9
 	backtrace_strings = backtrace_symbols(backtrace_stack, backtrace_size);
da2ef9
 
da2ef9
-	DEBUG(dbg_level, ("BACKTRACE: %lu stack frames:\n", (unsigned long)backtrace_size));
da2ef9
+	fprintf(stderr, "BACKTRACE: %lu stack frames:\n", (unsigned long)backtrace_size);
da2ef9
 
da2ef9
 	if (backtrace_strings) {
da2ef9
 		int i;
da2ef9
 
da2ef9
 		for (i = 0; i < backtrace_size; i++) {
da2ef9
-			DEBUGADD(dbg_level, (" #%.2u %s\n", i, backtrace_strings[i]));
da2ef9
+			fprintf(stderr, " #%.2u %s\n", i, backtrace_strings[i]);
da2ef9
 		}
da2ef9
 
da2ef9
 		free(backtrace_strings);
da2ef9
diff -up openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/fault_util.h.samba-4.2.0-rc2 openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/fault_util.h
da2ef9
--- openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/fault_util.h.samba-4.2.0-rc2	2015-12-03 11:11:37.089140922 +0100
da2ef9
+++ openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/fault_util.h	2015-12-03 11:26:38.633103340 +0100
da2ef9
@@ -28,7 +28,7 @@
da2ef9
  * It will print information about the error and if is_fatal is true abort()
da2ef9
  * will be called.
da2ef9
  *
da2ef9
- * DEBUG macro will be used to print a report with the following format:
da2ef9
+ * DEBUG macro will *not* be used to print a report with the following format:
da2ef9
  * @code
da2ef9
  *  ==================================
da2ef9
  *  OPENCHANGE INTERNAL ERROR: pid 123
da2ef9
@@ -59,9 +59,10 @@
da2ef9
  * @see DEBUG()
da2ef9
  */
da2ef9
 #define OC_PANIC( is_fatal, body ) \
da2ef9
-	DEBUGSEP(0); \
da2ef9
-	DEBUG(0, ("OPENCHANGE INTERNAL ERROR: pid %d\n", (int)getpid())); \
da2ef9
-	DEBUG(0, body); \
da2ef9
+	fprintf(stderr,"\n"); \
da2ef9
+	fprintf(stderr, "OPENCHANGE INTERNAL ERROR: pid %d\n", (int)getpid()); \
da2ef9
+	fprintf(stderr, body); \
da2ef9
+	fflush(stderr); \
da2ef9
 	openchange_abort(is_fatal);
da2ef9
 
da2ef9
 #ifndef __BEGIN_DECLS
da2ef9
diff -up openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/mapi_handles.c.samba-4.2.0-rc2 openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/mapi_handles.c
da2ef9
--- openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/mapi_handles.c.samba-4.2.0-rc2	2015-12-03 11:12:08.457139614 +0100
da2ef9
+++ openchange-openchange-2.3-VULCAN/mapiproxy/libmapiproxy/mapi_handles.c	2015-12-03 11:26:50.473102847 +0100
da2ef9
@@ -429,7 +429,7 @@ static int mapi_handles_traverse_delete(
da2ef9
 		OC_DEBUG(5, "handles being released must NOT have child handles attached to them (%s is a child of %s)", handle_str, container_handle_str);
da2ef9
 		handle = strtol((const char *) handle_str, NULL, 16);
da2ef9
 		/* abort(); */
da2ef9
-		/* DEBUG(5, ("deleting child handle: %d, %s\n", handle, handle_str)); */
da2ef9
+		/* OC_DEBUG(5, ("deleting child handle: %d, %s\n", handle, handle_str)); */
da2ef9
 		mapi_handles_delete(handles_private->handles_ctx, handle);
da2ef9
 	}
da2ef9