- Assorted refinements, optimizations and fixes in the js-annoyances,
[privoxy.git] / urlmatch.c
index f3aa6a6..0338131 100644 (file)
@@ -1,7 +1,7 @@
-const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.10.2.1 2002/06/06 19:06:44 jongfoster Exp $";
+const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.10.2.4 2003/02/28 12:57:44 oes Exp $";
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa//current/Attic/urlmatch.c,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/urlmatch.c,v $
  *
  * Purpose     :  Declares functions to match URLs against URL
  *                patterns.
@@ -33,6 +33,18 @@ const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.10.2.1 2002/06/06 19:06:44 jong
  *
  * Revisions   :
  *    $Log: urlmatch.c,v $
+ *    Revision 1.10.2.4  2003/02/28 12:57:44  oes
+ *    Moved freeing of http request structure to its owner
+ *    as per Dan Price's observations in Bug #694713
+ *
+ *    Revision 1.10.2.3  2002/11/12 16:50:40  oes
+ *    Fixed memory leak in parse_http_request() reported by Oliver Stoeneberg. Fixes bug #637073
+ *
+ *    Revision 1.10.2.2  2002/09/25 14:53:15  oes
+ *    Added basic support for OPTIONS and TRACE HTTP methods:
+ *    parse_http_url now recognizes the "*" URI as well as
+ *    the OPTIONS and TRACE method keywords.
+ *
  *    Revision 1.10.2.1  2002/06/06 19:06:44  jongfoster
  *    Adding support for proprietary Microsoft WebDAV extensions
  *
@@ -249,13 +261,11 @@ jb_err parse_http_url(const char * url,
          http->hostport = strdup(url_noproto);
       }
 
-      free(buf);
+      freez(buf);
 
       if ( (http->path == NULL)
         || (http->hostport == NULL))
       {
-         free(buf);
-         free_http_request(http);
          return JB_ERR_MEMORY;
       }
    }
@@ -272,7 +282,6 @@ jb_err parse_http_url(const char * url,
       buf = strdup(http->hostport);
       if (buf == NULL)
       {
-         free_http_request(http);
          return JB_ERR_MEMORY;
       }
 
@@ -310,7 +319,6 @@ jb_err parse_http_url(const char * url,
 
       if (http->host == NULL)
       {
-         free_http_request(http);
          return JB_ERR_MEMORY;
       }
    }
@@ -327,7 +335,6 @@ jb_err parse_http_url(const char * url,
       http->dbuffer = strdup(http->host);
       if (NULL == http->dbuffer)
       {
-         free_http_request(http);
          return JB_ERR_MEMORY;
       }
 
@@ -346,7 +353,6 @@ jb_err parse_http_url(const char * url,
           * Error: More than SZ(vec) components in domain
           *    or: no components in domain
           */
-         free_http_request(http);
          return JB_ERR_PARSE;
       }
 
@@ -356,7 +362,6 @@ jb_err parse_http_url(const char * url,
       http->dvec = (char **)malloc(size);
       if (NULL == http->dvec)
       {
-         free_http_request(http);
          return JB_ERR_MEMORY;
       }
 
@@ -484,11 +489,12 @@ jb_err parse_http_request(const char *req,
      || (http->ver == NULL) )
    {
       free(buf);
-      free_http_request(http);
       return JB_ERR_MEMORY;
    }
 
+   free(buf);
    return JB_ERR_OK;
+
 }