-const char cgi_rcs[] = "$Id: cgi.c,v 1.46 2002/03/07 03:48:38 oes Exp $";
+const char cgi_rcs[] = "$Id: cgi.c,v 1.50 2002/03/16 23:54:06 jongfoster Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgi.c,v $
*
*
* Copyright : Written by and Copyright (C) 2001 the SourceForge
- * IJBSWA team. http://ijbswa.sourceforge.net
+ * Privoxy team. http://ijbswa.sourceforge.net
*
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
*
* Revisions :
* $Log: cgi.c,v $
+ * Revision 1.50 2002/03/16 23:54:06 jongfoster
+ * Adding graceful termination feature, to help look for memory leaks.
+ * If you enable this (which, by design, has to be done by hand
+ * editing config.h) and then go to http://i.j.b/die, then the program
+ * will exit cleanly after the *next* request. It should free all the
+ * memory that was used.
+ *
+ * Revision 1.49 2002/03/13 00:27:04 jongfoster
+ * Killing warnings
+ *
+ * Revision 1.48 2002/03/08 17:47:07 jongfoster
+ * Adding comments
+ *
+ * Revision 1.47 2002/03/08 16:41:33 oes
+ * Added GIF images again
+ *
* Revision 1.46 2002/03/07 03:48:38 oes
* - Changed built-in images from GIF to PNG
* (with regard to Unisys patent issue)
static const struct cgi_dispatcher cgi_dispatchers[] = {
{ "",
cgi_default,
- "Junkbuster main page" },
+ "Privoxy main page" },
+#ifdef FEATURE_GRACEFUL_TERMINATION
+ { "die",
+ cgi_die,
+ "<b>Shut down</b> - <font color=red size='+1'>Do not deploy this build in a production environment, this is a one click Denial Of Service attack!!!</font>" },
+#endif
{ "show-status",
cgi_show_status,
"Show information about the current configuration" },
*/
#ifdef FEATURE_NO_GIFS
+
+/*
+ * "Junkbuster" logo, as a PNG.
+ */
const char image_logo_data[] =
"\211\120\116\107\015\012\032\012\000\000\000\015\111\110\104"
"\122\000\000\000\104\000\000\000\013\001\003\000\000\000\374"
"\300\000\000\002\127\040\324\250\204\044\102\000\000\000\000"
"\111\105\116\104\256\102\140\202";
+/*
+ * Checkerboard pattern, as a PNG.
+ */
const char image_pattern_data[] =
"\211\120\116\107\015\012\032\012\000\000\000\015\111\110\104"
"\122\000\000\000\004\000\000\000\004\010\002\000\000\000\046"
"\304\011\006\234\062\000\125\200\052\251\125\174\360\223\000"
"\000\000\000\111\105\116\104\256\102\140\202";
+/*
+ * 1x1 transparant PNG.
+ */
const char image_blank_data[] =
"\211\120\116\107\015\012\032\012\000\000\000\015\111\110\104"
"\122\000\000\000\002\000\000\000\002\010\002\000\000\000\375"
"\377\177\000\112\335\012\257\162\103\306\335\000\000\000\000"
"\111\105\116\104\256\102\140\202o";
#else
+
+/*
+ * "Junkbuster" logo, as a GIF.
+ */
const char image_logo_data[] =
"GIF89aD\000\013\000\360\000\000\000\000\000\377\377\377!"
"\371\004\001\000\000\001\000,\000\000\000\000D\000\013\000"
"\372\003S\275\274k2\354\254z\347?\335\274x\306^9\374\276"
"\037Q\000\000;";
+/*
+ * Checkerboard pattern, as a GIF.
+ */
const char image_pattern_data[] =
"\107\111\106\070\071\141\004\000\004\000\200\000\000\310\310"
"\310\377\377\377\041\376\025\111\040\165\163\145\144\040\164"
"\000\000\000\000\004\000\004\000\000\002\005\104\174\147\270"
"\005\000\073";
+/*
+ * 1x1 transparant GIF.
+ */
const char image_blank_data[] =
"GIF89a\001\000\001\000\200\000\000\377\377\377\000\000"
"\000!\371\004\001\000\000\000\000,\000\000\000\000\001"
csp->ip_addr_str, csp->http->cmd);
/* Find and start the right CGI function*/
- for (d = cgi_dispatchers; FOREVER; d++)
+ d = cgi_dispatchers;
+ for (;;)
{
if ((d->name == NULL) || (strcmp(path_copy, d->name) == 0))
{
return cgi_error_memory();
}
}
+ d++;
}
}