Move default profiles table from FAQ to U-M, and other minor related changes.
[privoxy.git] / urlmatch.c
index 1b2aee8..7586fc1 100644 (file)
@@ -1,7 +1,7 @@
-const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.9 2002/04/04 00:36:36 gliptak Exp $";
+const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.10.2.2 2002/09/25 14:53:15 oes Exp $";
 /*********************************************************************
  *
- * File        :  $Source: /cvsroot/ijbswa/current/urlmatch.c,v $
+ * File        :  $Source: /cvsroot/ijbswa/current/Attic/urlmatch.c,v $
  *
  * Purpose     :  Declares functions to match URLs against URL
  *                patterns.
@@ -33,6 +33,17 @@ const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.9 2002/04/04 00:36:36 gliptak E
  *
  * Revisions   :
  *    $Log: urlmatch.c,v $
+ *    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
+ *
+ *    Revision 1.10  2002/05/12 21:40:37  jongfoster
+ *    - Removing some unused code
+ *
  *    Revision 1.9  2002/04/04 00:36:36  gliptak
  *    always use pcre for matching
  *
@@ -152,8 +163,8 @@ void free_http_request(struct http_request *http)
  *
  * Returns     :  JB_ERR_OK on success
  *                JB_ERR_MEMORY on out of memory
- *                JB_ERR_CGI_PARAMS on malformed command/URL
- *                                  or >100 domains deep.
+ *                JB_ERR_PARSE on malformed command/URL
+ *                             or >100 domains deep.
  *
  *********************************************************************/
 jb_err parse_http_url(const char * url,
@@ -176,6 +187,17 @@ jb_err parse_http_url(const char * url,
    }
 
 
+   /*
+    * Check for * URI. If found, we're done.
+    */  
+   if (*http->url == '*')
+   {
+      http->path = strdup("*");
+      http->hostport = strdup("");
+      return JB_ERR_OK;
+   }
+
+
    /*
     * Split URL into protocol,hostport,path.
     */
@@ -298,10 +320,10 @@ jb_err parse_http_url(const char * url,
       }
    }
 
-
    /*
     * Split domain name so we can compare it against wildcards
     */
+
    {
       char *vec[BUFFER_SIZE];
       size_t size;
@@ -346,8 +368,8 @@ jb_err parse_http_url(const char * url,
       memcpy(http->dvec, vec, size);
    }
 
-
    return JB_ERR_OK;
+
 }
 
 
@@ -406,6 +428,8 @@ jb_err parse_http_request(const char *req,
          || (0 == strcmpic(v[0], "post"))
          || (0 == strcmpic(v[0], "put"))
          || (0 == strcmpic(v[0], "delete"))
+         || (0 == strcmpic(v[0], "options"))
+         || (0 == strcmpic(v[0], "trace"))
  
          /* or a webDAV extension (RFC2518) */
          || (0 == strcmpic(v[0], "propfind"))
@@ -415,6 +439,24 @@ jb_err parse_http_request(const char *req,
          || (0 == strcmpic(v[0], "mkcol"))
          || (0 == strcmpic(v[0], "lock"))
          || (0 == strcmpic(v[0], "unlock"))
+
+         /* Or a Microsoft webDAV extension for Exchange 2000.  See: */
+         /*   http://lists.w3.org/Archives/Public/w3c-dist-auth/2002JanMar/0001.html */
+         /*   http://msdn.microsoft.com/library/en-us/wss/wss/_webdav_methods.asp */ 
+         || (0 == strcmpic(v[0], "bcopy"))
+         || (0 == strcmpic(v[0], "bmove"))
+         || (0 == strcmpic(v[0], "bdelete"))
+         || (0 == strcmpic(v[0], "bpropfind"))
+         || (0 == strcmpic(v[0], "bproppatch"))
+
+         /* Or another Microsoft webDAV extension for Exchange 2000.  See: */
+         /*   http://systems.cs.colorado.edu/grunwald/MobileComputing/Papers/draft-cohen-gena-p-base-00.txt */
+         /*   http://lists.w3.org/Archives/Public/w3c-dist-auth/2002JanMar/0001.html */
+         /*   http://msdn.microsoft.com/library/en-us/wss/wss/_webdav_methods.asp */ 
+         || (0 == strcmpic(v[0], "subscribe"))
+         || (0 == strcmpic(v[0], "unsubscribe"))
+         || (0 == strcmpic(v[0], "notify"))
+         || (0 == strcmpic(v[0], "poll"))
          )
    {
       /* Normal */
@@ -451,7 +493,9 @@ jb_err parse_http_request(const char *req,
       return JB_ERR_MEMORY;
    }
 
+   free(buf);
    return JB_ERR_OK;
+
 }