+ if ((isbogus) ||
+ ((Hdr.Handler != NULL) &&
+ ((Hdr.Handler->Flags & BOGUS) != 0)))
+ {
+ wcsession *Bogus;
+ Bogus = (wcsession *)
+ malloc(sizeof(wcsession));
+ memset(Bogus, 0, sizeof(wcsession));
+ pthread_setspecific(MyConKey, (void *)Bogus);
+ Bogus->Hdr = &Hdr;
+ Bogus->WBuf = NewStrBuf();
+ Bogus->HBuf = NewStrBuf();
+ session_new_modules(Bogus);
+ do_404();
+ session_detach_modules(Bogus);
+ http_destroy_modules(&Hdr);
+ session_destroy_modules(&Bogus);
+ return;
+ }
+
+ if ((Hdr.Handler != NULL) &&
+ ((Hdr.Handler->Flags & ISSTATIC) != 0))
+ {
+ wcsession *Static;
+
+ Static = (wcsession *)
+ malloc(sizeof(wcsession));
+ memset(Static, 0, sizeof(wcsession));
+ pthread_setspecific(MyConKey, (void *)Static);
+ Static->Hdr = &Hdr;
+ Static->WBuf = NewStrBuf();
+ Static->HBuf = NewStrBuf();
+ Static->serv_sock = (-1);
+ Static->chat_sock = (-1);
+ Static->is_mobile = -1;
+ session_new_modules(Static);
+
+ Hdr.Handler->F();
+
+ /* How long did this transaction take? */
+ gettimeofday(&tx_finish, NULL);
+
+ lprintf(9, "Transaction [%s] completed in %ld.%06ld seconds.\n",
+ ChrPtr(Hdr.this_page),
+ ((tx_finish.tv_sec*1000000 + tx_finish.tv_usec) - (tx_start.tv_sec*1000000 + tx_start.tv_usec)) / 1000000,
+ ((tx_finish.tv_sec*1000000 + tx_finish.tv_usec) - (tx_start.tv_sec*1000000 + tx_start.tv_usec)) % 1000000
+ );
+
+ session_detach_modules(Static);
+ http_destroy_modules(&Hdr);
+ session_destroy_modules(&Static);
+ return;
+ }
+