-const char parsers_rcs[] = "$Id: parsers.c,v 1.15 2001/06/03 11:03:48 oes 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.15 2001/06/03 11:03:48 oes
- * Makefile/in
+ * Revision 1.17 2001/06/29 21:45:41 oes
+ * Indentation, CRLF->LF, Tab-> Space
*
- * introduced cgi.c
- *
- * actions.c:
- *
- * adapted to new enlist_unique arg format
- *
- * conf loadcfg.c
- *
- * introduced confdir option
- *
- * filters.c filtrers.h
- *
- * extracted-CGI relevant stuff
- *
- * jbsockets.c
- *
- * filled comment
- *
- * jcc.c
- *
- * support for new cgi mechansim
- *
- * list.c list.h
- *
- * functions for new list type: "map"
- * extended enlist_unique
- *
- * miscutil.c .h
- * introduced bindup()
- *
- * parsers.c parsers.h
+ * 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
*
- * pcrs.c
- * added FIXME
- *
- * project.h
- *
- * added struct map
- * added struct http_response
- * changes struct interceptors to struct cgi_dispatcher
- * moved HTML stuff to cgi.h
- *
- * re_filterfile:
- *
- * changed
- *
- * showargs.c
- * NO TIME LEFT
- *
* 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.
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 */
+}
/*********************************************************************