]> granicus.if.org Git - apache/commitdiff
Support multiple names in reimplemented AddOutputFilterByType
authorNick Kew <niq@apache.org>
Thu, 22 Jul 2010 22:27:42 +0000 (22:27 +0000)
committerNick Kew <niq@apache.org>
Thu, 22 Jul 2010 22:27:42 +0000 (22:27 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@966881 13f79535-47bb-0310-9956-ffa450edef68

modules/filters/mod_filter.c

index dc48a80b5f37b85be58be55537af80e3c71d5126..22042c1dbc5ba46711c43c6b396230ed836486eb 100644 (file)
@@ -510,8 +510,8 @@ static const char *filter_chain(cmd_parms *cmd, void *CFG, const char *arg)
 
     return NULL;
 }
-static const char *filter_bytype(cmd_parms *cmd, void *CFG,
-                                 const char *pname, const char *type)
+static const char *filter_bytype1(cmd_parms *cmd, void *CFG,
+                                  const char *pname, const char *type)
 {
     char *etype;
     char *p;
@@ -552,6 +552,21 @@ static const char *filter_bytype(cmd_parms *cmd, void *CFG,
     }
     return rv;
 }
+static const char *filter_bytype(cmd_parms *cmd, void *CFG,
+                                 const char *names, const char *type)
+{
+    /* back compatibility, need to parse multiple components in pname */
+    char *pname;
+    char *strtok_state = NULL;
+    char *name = apr_pstrdup(cmd->pool, names);
+    const char *rv = NULL;
+    for (pname = apr_strtok(name, ";", &strtok_state);
+         pname != NULL && rv == NULL;
+         pname = apr_strtok(NULL, ";", &strtok_state)) {
+        rv = filter_bytype1(cmd, CFG, pname, type);
+    }
+    return rv;
+}
 
 static const char *filter_debug(cmd_parms *cmd, void *CFG, const char *fname,
                                 const char *level)