-const char cgi_rcs[] = "$Id: cgi.c,v 1.41 2002/01/17 20:56:22 jongfoster Exp $";
+const char cgi_rcs[] = "$Id: cgi.c,v 1.44 2002/03/05 22:43:45 david__schmidt Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgi.c,v $
*
* Revisions :
* $Log: cgi.c,v $
+ * Revision 1.44 2002/03/05 22:43:45 david__schmidt
+ * - Better error reporting on OS/2
+ * - Fix double-slash comment (oops)
+ *
+ * Revision 1.43 2002/03/05 21:33:45 david__schmidt
+ * - Re-enable OS/2 building after new parms were added
+ * - Fix false out of memory report when resolving CGI templates when no IP
+ * address is available of failed attempt (a la no such domain)
+ *
+ * Revision 1.42 2002/01/21 00:33:20 jongfoster
+ * Replacing strsav() with the safer string_append() or string_join().
+ * Adding map_block_keep() to save a few bytes in the edit-actions-list HTML.
+ * Adding missing html_encode() to error message generators.
+ * Adding edit-actions-section-swap and many "shortcuts" to the list of CGIs.
+ *
* Revision 1.41 2002/01/17 20:56:22 jongfoster
* Replacing hard references to the URL of the config interface
* with #defines from project.h
if (!err) err = map(exports, "hostport", 1, html_encode(csp->http->hostport), 0);
if (!err) err = map(exports, "path", 1, html_encode(csp->http->path), 0);
if (!err) err = map(exports, "error", 1, html_encode_and_free_original(safe_strerror(sys_err)), 0);
- if (!err) err = map(exports, "host-ip", 1, html_encode(csp->http->host_ip_addr_str), 0);
+ if (!err)
+ {
+ err = map(exports, "host-ip", 1, html_encode(csp->http->host_ip_addr_str), 0);
+ if (err)
+ {
+ /* Some failures, like "404 no such domain", don't have an IP address. */
+ err = map(exports, "host-ip", 1, html_encode(csp->http->host), 0);
+ }
+ }
+
if (err)
{
"<head><title>500 Internal JunkBuster Proxy Error</title></head>\r\n"
"<body>\r\n"
"<h1>500 Internal JunkBuster Proxy Error</h1>\r\n"
- "<p>JunkBuster <b>ran out of memory</b> whilst processing your request.</p>\r\n"
+ "<p>JunkBuster <b>ran out of memory</b> while processing your request.</p>\r\n"
"<p>Please contact your proxy administrator, or try again later</p>\r\n"
"</body>\r\n"
"</html>\r\n";
* Returns a statically-allocated error response.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : template_name = Name of template that could not
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : template_name = Name of template that could not
* be loaded.
*
* Returns : JB_ERR_OK on success
* parameters.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : template_name = Name of template that could not
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : template_name = Name of template that could not
* be loaded.
*
* Returns : JB_ERR_OK on success
"<head><title>500 Internal JunkBuster Proxy Error</title></head>\r\n"
"<body>\r\n"
"<h1>500 Internal JunkBuster Proxy Error</h1>\r\n"
- "<p>JunkBuster encountered an error whilst processing your request:</p>\r\n"
+ "<p>JunkBuster encountered an error while processing your request:</p>\r\n"
"<p><b>Could not load template file <code>";
static const char body_suffix[] =
"</code></b></p>\r\n"
* (query string) for a CGI were wrong.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
*
* CGI Parameters : none
*
* lines.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : template_ptr = Destination for pointer to loaded
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : template_ptr = Destination for pointer to loaded
* template text.
- * 3 : template = name of the HTML template to be used
+ * 3 : template = name of the HTML template to be used
*
* Returns : JB_ERR_OK on success
* JB_ERR_MEMORY on out-of-memory error.
* interpretation.
*
* Parameters :
- * 1 : template_ptr = IN: Template to be filled out.
+ * 1 : template_ptr = IN: Template to be filled out.
* Will be free()d.
* OUT: Filled out template.
* Caller must free().
- * 2 : exports = map with fill in symbol -> name pairs
+ * 2 : exports = map with fill in symbol -> name pairs
*
* Returns : JB_ERR_OK on success
* JB_ERR_MEMORY on out-of-memory error
* this function also frees the passed "exports" map.
*
* Parameters :
- * 1 : csp = Client state
- * 2 : templatename = name of the HTML template to be used
- * 3 : exports = map with fill in symbol -> name pairs.
+ * 1 : csp = Client state
+ * 2 : templatename = name of the HTML template to be used
+ * 3 : exports = map with fill in symbol -> name pairs.
* Will be freed by this function.
*
* Returns : JB_ERR_OK on success