hdr->HR.got_auth = AUTH_COOKIE;
}
+void
+HttpDetachModule_AUTH
+(ParsedHttpHdrs *httpreq)
+{
+ FLUSHStrBuf(httpreq->c_username);
+ FLUSHStrBuf(httpreq->c_password);
+ FLUSHStrBuf(httpreq->c_roomname);
+ FLUSHStrBuf(httpreq->c_language);
+}
+
void
HttpDestroyModule_AUTH
(ParsedHttpHdrs *httpreq)
ChrPtr(Hdr->this_page)
);
session_detach_modules(Bogus);
- http_destroy_modules(Hdr);
session_destroy_modules(&Bogus);
return;
}
ChrPtr(Hdr->this_page)
);
session_detach_modules(Static);
- http_destroy_modules(Hdr);
session_destroy_modules(&Static);
return;
}
TheSession->Hdr = NULL;
pthread_mutex_unlock(&TheSession->SessionMutex); /* unbind */
-
- http_destroy_modules(Hdr);
}
void tmplput_nonce(StrBuf *Target, WCTemplputParams *TP)
+void
+HttpDetachModule_CONTEXT
+(ParsedHttpHdrs *httpreq)
+{
+ FlushStrBuf(httpreq->ReadBuf);
+ FlushStrBuf(httpreq->PlainArgs);
+ FlushStrBuf(httpreq->this_page);
+ DeleteHash(&httpreq->HTTPHeaders);
+ memset(&httpreq->HR, 0, sizeof(HdrRefs));
+}
+
void
HttpDestroyModule_CONTEXT
(ParsedHttpHdrs *httpreq)
SESS_DETACH_FUNCS=`grep SessionDetachModule_ *.c |sed "s;.*:;;" |sort -u`
SESS_DESTROY_FUNCS=`grep SessionDestroyModule_ *.c |sed "s;.*:;;" |sort -u`
+HTTP_DETACH_FUNCS=`grep HttpDetachModule_ *.c |sed "s;.*:;;" |sort -u`
HTTP_DESTROY_FUNCS=`grep HttpDestroyModule_ *.c |sed "s;.*:;;" |sort -u`
void session_detach_modules (wcsession *sess);
void session_destroy_modules (wcsession **sess);
+void http_detach_modules (ParsedHttpHdrs *httpreq);
void http_destroy_modules (ParsedHttpHdrs *httpreq);
+#********************************************************************************
+# DETACH-Httprequest module logic.
+#********************************************************************************
+cat <<EOF >> $C_FILE
+
+void http_detach_modules (ParsedHttpHdrs *httpreq)
+{
+EOF
+
+for HOOK in $HTTP_DETACH_FUNCS; do
+HOOKNAME=`echo $HOOK |sed "s;HttpDetachModule_;;"`
+# Add this entry point to the .c file
+cat <<EOF >> $C_FILE
+#ifdef DBG_PRINNT_HOOKS_AT_START
+ lprintf (CTDL_INFO, "Detaching $HOOKNAME\n");
+#endif
+ $HOOK(httpreq);
+EOF
+# Add this entry point to the .h file
+cat <<EOF >> $H_FILE
+extern void $HOOK(ParsedHttpHdrs *httpreq);
+EOF
+done
+
+cat <<EOF >>$C_FILE
+}
+EOF
+
+
#********************************************************************************
# DESTROY-Httprequest module logic.
#********************************************************************************
int home_specified = 0; /* did the user specify a homedir? */
int time_to_die = 0; /* Nonzero if server is shutting down */
int DisableGzip = 0;
-extern void *context_loop(int*);
+extern void *context_loop(ParsedHttpHdrs *Hdr);
extern void *housekeeping_loop(void);
extern pthread_mutex_t SessionListMutex;
extern pthread_key_t MyConKey;
int ret;
struct timeval tv;
fd_set readset, tempset;
+ ParsedHttpHdrs Hdr;
+
+ memset(&Hdr, 0, sizeof(ParsedHttpHdrs));
+ Hdr.HR.eReqType = eGET;
tv.tv_sec = 0;
tv.tv_usec = 10000;
#endif
if (fail_this_transaction == 0) {
- ParsedHttpHdrs Hdr;
- memset(&Hdr, 0, sizeof(ParsedHttpHdrs));
- Hdr.HR.eReqType = eGET;
Hdr.http_sock = ssock;
/* Perform an HTTP transaction... */
/* ...and close the socket. */
if (Hdr.http_sock > 0)
lingering_close(ssock);
+ http_detach_modules(&Hdr);
+
}
}
} while (!time_to_die);
+ http_destroy_modules(&Hdr);
lprintf (1, "bye\n");
pthread_exit(NULL);
}