#include "http_log.h"
#include <netware.h>
+#include <nks\netware.h>
-int nlmUnloadSignaled();
+int nlmUnloadSignaled(int wait);
+event_handle_t eh;
+Warn_t ref;
AP_DECLARE(apr_status_t) ap_os_create_privileged_process(
const request_rec *r,
int _NonAppCheckUnload( void )
{
- return nlmUnloadSignaled();
+ return nlmUnloadSignaled(1);
}
+
+// down server event callback
+void ap_down_server_cb(void *, void *)
+{
+ nlmUnloadSignaled(0);
+ return;
+}
+
+// destroy callback resources
+void ap_cb_destroy(void *)
+{
+ // cleanup down event notification
+ UnRegisterEventNotification(eh);
+ NX_UNWRAP_INTERFACE(ref);
+}
+
+int _NonAppStart
+(
+ void *NLMHandle,
+ void *errorScreen,
+ const char *cmdLine,
+ const char *loadDirPath,
+ size_t uninitializedDataLength,
+ void *NLMFileHandle,
+ int (*readRoutineP)( int conn, void *fileHandle, size_t offset,
+ size_t nbytes, size_t *bytesRead, void *buffer ),
+ size_t customDataOffset,
+ size_t customDataSize,
+ int messageCount,
+ const char **messages
+)
+{
+#pragma unused(cmdLine)
+#pragma unused(loadDirPath)
+#pragma unused(uninitializedDataLength)
+#pragma unused(NLMFileHandle)
+#pragma unused(readRoutineP)
+#pragma unused(customDataOffset)
+#pragma unused(customDataSize)
+#pragma unused(messageCount)
+#pragma unused(messages)
+
+ // register for down server event
+ rtag_t rt = AllocateResourceTag(NLMHandle, "Apache2 Down Server Callback",
+ EventSignature);
+
+ NX_WRAP_INTERFACE((void *)ap_down_server_cb, 2, (void **)&ref);
+ eh = RegisterForEventNotification(rt, EVENT_DOWN_SERVER,
+ EVENT_PRIORITY_APPLICATION,
+ ref, NULL, NULL);
+
+ // clean-up
+ NXVmRegisterExitHandler(ap_cb_destroy, NULL);
+
+}
+