-const char parsers_rcs[] = "$Id: parsers.c,v 1.28 2001/09/22 16:32:28 jongfoster Exp $";
+const char parsers_rcs[] = "$Id: parsers.c,v 1.29 2001/09/24 21:09:24 jongfoster Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/parsers.c,v $
*
* Revisions :
* $Log: parsers.c,v $
+ * Revision 1.29 2001/09/24 21:09:24 jongfoster
+ * Fixing 2 memory leaks that Guy spotted, where the paramater to
+ * enlist() was not being free()d.
+ *
* Revision 1.28 2001/09/22 16:32:28 jongfoster
* Removing unused #includes.
*
const struct parsers server_patterns[] = {
+ { "HTTP/1.1 ", 9, server_http11 },
{ "set-cookie:", 11, server_set_cookie },
{ "connection:", 11, crumble },
{ "Content-Type:", 13, content_type },
|| (0 == strcmpic(v[0], "unlock"))
)
{
- http->ssl = 0;
- http->gpc = strdup(v[0]);
- url = v[1];
- http->ver = strdup(v[2]);
+ http->ssl = 0;
+ http->gpc = strdup(v[0]);
+ url = v[1];
+ /* since we don't support HTTP/1.1 we must not send it */
+ if (!strcmpic(v[2], "HTTP/1.1"))
+ {
+ http->ver = strdup("HTTP/1.0");
+ /* change cmd too (forwaring) */
+ freez(http->cmd);
+ http->cmd = strsav(http->cmd, http->gpc);
+ http->cmd = strsav(http->cmd, " ");
+ http->cmd = strsav(http->cmd, url);
+ http->cmd = strsav(http->cmd, " ");
+ http->cmd = strsav(http->cmd, http->ver);
+ }
+ else
+ {
+ http->ver = strdup(v[2]);
+ }
save_url = url;
if (strncmpic(url, "http://", 7) == 0)
}
+/*********************************************************************
+ *
+ * Function : server_http11
+ *
+ * Description : Rewrite HTTP/1.1 answers to HTTP/1.0 until we add
+ * HTTP/1.1 support. Called from `sed'.
+ *
+ * Parameters :
+ * 1 : v = parser pattern that matched this header
+ * 2 : s = header that matched this pattern
+ * 3 : csp = Current client state (buffers, headers, etc...)
+ *
+ * Returns : "HTTP/1.0" answer.
+ *
+ *********************************************************************/
+char *server_http11(const struct parsers *v, const char *s, struct client_state *csp)
+{
+ char *ret;
+
+ ret = strdup(s);
+ ret[7] = '0'; /* "HTTP/1.1 ..." -> "HTTP/1.0 ..." */
+
+ return ret;
+}
+
+
/*********************************************************************
*
* Function : server_set_cookie
#ifndef PARSERS_H_INCLUDED
#define PARSERS_H_INCLUDED
-#define PARSERS_H_VERSION "$Id: parsers.h,v 1.11 2001/07/31 14:46:53 oes Exp $"
+#define PARSERS_H_VERSION "$Id: parsers.h,v 1.12 2001/09/13 23:05:50 jongfoster Exp $"
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/parsers.h,v $
*
* Revisions :
* $Log: parsers.h,v $
+ * Revision 1.12 2001/09/13 23:05:50 jongfoster
+ * Changing the string paramater to the header parsers a "const".
+ *
* Revision 1.11 2001/07/31 14:46:53 oes
* Added prototype for connection_close_adder
*
extern void client_x_forwarded_adder(struct client_state *csp);
extern char *server_set_cookie(const struct parsers *v, const char *s, struct client_state *csp);
+extern char *server_http11(const struct parsers *v, const char *s, struct client_state *csp);
extern char *content_type(const struct parsers *v, const char *s, struct client_state *csp);
extern char *content_length(const struct parsers *v, const char *s, struct client_state *csp);