-const char parsers_rcs[] = "$Id: parsers.c,v 1.13 2001/05/31 21:30:33 jongfoster Exp $";
+const char parsers_rcs[] = "$Id: parsers.c,v 1.17 2001/06/29 21:45:41 oes Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/parsers.c,v $
*
* Revisions :
* $Log: parsers.c,v $
+ * Revision 1.17 2001/06/29 21:45:41 oes
+ * Indentation, CRLF->LF, Tab-> Space
+ *
+ * Revision 1.16 2001/06/29 13:32:42 oes
+ * - Fixed a comment
+ * - Adapted free_http_request
+ * - Removed logentry from cancelled commit
+ *
+ * Revision 1.15 2001/06/03 19:12:38 oes
+ * deleted const struct interceptors
+ *
+ * Revision 1.14 2001/06/01 18:49:17 jongfoster
+ * Replaced "list_share" with "list" - the tiny memory gain was not
+ * worth the extra complexity.
+ *
* Revision 1.13 2001/05/31 21:30:33 jongfoster
* Removed list code - it's now in list.[ch]
* Renamed "permission" to "action", and changed many features
#include "errlog.h"
#include "jbsockets.h"
#include "miscutil.h"
+#include "cgi.h"
const char parsers_h_rcs[] = PARSERS_H_VERSION;
{ NULL, 0, NULL }
};
-const struct interceptors intercept_patterns[] = {
- { "show-proxy-args", 14, show_proxy_args },
- { "ijb-send-banner", 14, ijb_send_banner },
-#ifdef TRUST_FILES
- { "ij-untrusted-url", 15, ij_untrusted_url },
-#endif /* def TRUST_FILES */
- { "show-url-info", 13, ijb_show_url_info },
- { NULL, 0, NULL }
-};
const struct parsers server_patterns[] = {
{ "set-cookie:", 11, server_set_cookie },
{ "connection:", 11, crumble },
-#if defined(PCRS) || defined(KILLPOPUPS)
{ "Content-Type:", 13, content_type },
-#endif /* defined(PCRS) || defined(KILLPOPUPS) */
-#ifdef PCRS
{ "Content-Length:", 15, content_length },
-#endif /* def PCRS */
{ NULL, 0, NULL }
};
freez(http->hostport);
freez(http->path);
freez(http->ver);
+ freez(http->host_ip_addr_str);
}
http->cmd = strdup(req);
buf = strdup(req);
-
n = ssplit(buf, " \r\n", v, SZ(v), 1, 1);
if (n == 3)
url = NULL;
}
- if (url && (p = strchr(url, '/')))
+ if (url)
{
- http->path = strdup(p);
- *p = '\0';
- http->hostport = strdup(url);
+ if (p = strchr(url, '/'))
+ {
+ http->path = strdup(p);
+ *p = '\0';
+ http->hostport = strdup(url);
+ }
+ /*
+ * Repair broken HTTP requests that don't contain a path
+ */
+ else
+ {
+ /* Repair hostport & path */
+ http->path = strdup("/");
+ http->hostport = strdup(url);
+
+ /* Even repair cmd in case we're just forwarding. Boy are we nice ;-) */
+ freez(http->cmd);
+ http->cmd = strsav(http->cmd, http->gpc);
+ http->cmd = strsav(http->cmd, " / ");
+ http->cmd = strsav(http->cmd, http->ver);
+ }
}
}
}
}
-#if defined(PCRS) || defined(KILLPOPUPS)
-
/*********************************************************************
*
* Function : content_type
*********************************************************************/
char *content_type(const struct parsers *v, char *s, struct client_state *csp)
{
- if (strstr (s, " text/") || strstr (s, "application/x-javascript"))
- csp->is_text = 1;
+ if (strstr(s, " text/") || strstr(s, "application/x-javascript"))
+ csp->content_type = CT_TEXT;
+ else if (strstr(s, " image/gif"))
+ csp->content_type = CT_GIF;
else
- csp->is_text = 0;
+ csp->content_type = 0;
return(strdup(s));
}
-#endif /* defined(PCRS) || defined(KILLPOPUPS) */
-#ifdef PCRS
/*********************************************************************
*
* Function : content_length
*
- * Description : Crunch Content-Length header if & only if we are
- * filtering this page through PCRS.
+ * Description : Adjust Content-Length header if we modified
+ * the body.
*
* Parameters :
* 1 : v = ignored
char *content_length(const struct parsers *v, char *s, struct client_state *csp)
{
if (csp->content_length != 0) /* Content has been modified */
- {
- s = (char *) zalloc(100);
- sprintf(s, "Content-Length: %d", csp->content_length);
- log_error(LOG_LEVEL_HEADER, "Adjust Content-Length to %d", csp->content_length);
- return(s);
- }
+ {
+ s = (char *) zalloc(100);
+ sprintf(s, "Content-Length: %d", csp->content_length);
+
+ log_error(LOG_LEVEL_HEADER, "Adjust Content-Length to %d", csp->content_length);
+ return(s);
+ }
else
{
return(strdup(s));
}
-}
-#endif /* def PCRS */
+}
/*********************************************************************