SMB_INCLUDE_M4(gtk/config.m4)
SMB_INCLUDE_M4(ntvfs/posix/config.m4)
SMB_INCLUDE_M4(lib/socket_wrapper/config.m4)
+SMB_INCLUDE_M4(web_server/config.m4)
ALLLIBS_LIBS="$LIBS"
ALLLIBS_CFLAGS="$CFLAGS"
void mprBreakpoint(const char *file, int line, const char *cond)
{
- /*
- * Optionally break into the debugger here
- */
- mprLog(0, "ASSERT at %s:%d, %s\n", file, line, cond);
+ char *buf;
+ mprAllocSprintf(&buf, MPR_MAX_STRING, "esp exception - ASSERT at %s:%d, %s\n",
+ file, line, cond);
+ http_exception(buf);
}
#endif /* !BLD_GOAHEAD_WEBSERVER */
SETVAR(ESP_REQUEST_OBJ, "SCRIPT_FILENAME", web->input.url);
}
+#if HAVE_SETJMP_H
+/* the esp scripting lirary generates exceptions when
+ it hits a major error. We need to catch these and
+ report a internal server error via http
+*/
+#include <setjmp.h>
+static jmp_buf http_exception_buf;
+static const char *exception_reason;
+
+void http_exception(const char *reason)
+{
+ exception_reason = reason;
+ DEBUG(0,("%s", reason));
+ longjmp(http_exception_buf, -1);
+}
+#else
+void http_exception(const char *reason)
+{
+ DEBUG(0,("%s", reason));
+ smb_panic(reason);
+}
+#endif
/*
process a esp request
return;
}
+#if HAVE_SETJMP_H
+ if (setjmp(http_exception_buf) != 0) {
+ http_error(web, 500, exception_reason);
+ return;
+ }
+#endif
res = espProcessRequest(esp->req, url, buf, &emsg);
if (res != 0 && emsg) {
http_writeBlock(web, emsg, strlen(emsg));