]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
introducing ap_array_index in util, used in protocol and mod_h2
authorStefan Eissing <icing@apache.org>
Mon, 17 Aug 2015 12:45:57 +0000 (12:45 +0000)
committerStefan Eissing <icing@apache.org>
Mon, 17 Aug 2015 12:45:57 +0000 (12:45 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1696264 13f79535-47bb-0310-9956-ffa450edef68

include/httpd.h
modules/http2/h2_switch.c
server/protocol.c
server/util.c

index 285b76b8215872d89304da8463148abb5f970ea9..d68db185c43d4e8da7d83b75eed33ef91edddf90 100644 (file)
@@ -2402,6 +2402,14 @@ AP_DECLARE(char *) ap_get_exec_line(apr_pool_t *p,
 
 #define AP_NORESTART APR_OS_START_USEERR + 1
 
+/**
+ * Get the index of the string in the array or -1 if not found.
+ * @param array the array the check
+ * @param s the string to find
+ * @return index of string in array or -1
+ */
+AP_DECLARE(int) ap_array_index(apr_array_header_t *array, const char *s);
+
 #ifdef __cplusplus
 }
 #endif
index 2d521fc9396aeeaf99ba56a059e73b3710a1acaa..ae138ace44fb0fc227c7ef57276b3a9c0475825e 100644 (file)
@@ -60,18 +60,6 @@ apr_status_t h2_switch_init(apr_pool_t *pool, server_rec *s)
 static const char *const mod_ssl[]        = { "mod_ssl.c", NULL};
 static const char *const mod_core[]       = { "core.c", NULL};
 
-static int h2_util_array_index(const apr_array_header_t *array, const char *s)
-{
-    int i;
-    for (i = 0; i < array->nelts; i++) {
-        const char *p = APR_ARRAY_IDX(array, i, const char*);
-        if (!strcmp(p, s)) {
-            return i;
-        }
-    }
-    return -1;
-}
-
 static int h2_protocol_propose(conn_rec *c, request_rec *r,
                                server_rec *s,
                                const apr_array_header_t *offers,
@@ -125,7 +113,7 @@ static int h2_protocol_propose(conn_rec *c, request_rec *r,
         /* Add all protocols we know (tls or clear) and that
          * were offered as options for the switch. 
          */
-        if (h2_util_array_index(offers, *protos) >= 0) {
+        if (ap_array_index(offers, *protos) >= 0) {
             ap_log_cerror(APLOG_MARK, APLOG_TRACE1, 0, c,
                           "proposing protocol '%s'", *protos);
             APR_ARRAY_PUSH(proposals, const char*) = *protos;
index bb2951560abee95ac1b6f5e84498106a9b5ecbd3..444e25cc18f74b8b20bf4094d18b7b01fc2ce407 100644 (file)
@@ -1947,19 +1947,6 @@ AP_DECLARE(void) ap_send_interim_response(request_rec *r, int send_headers)
     apr_brigade_destroy(x.bb);
 }
 
-/* Something like this must be in APR, only I do not find it... */
-static int array_index(apr_array_header_t *array, const char *s)
-{
-    int i;
-    for (i = 0; i < array->nelts; i++) {
-        const char *p = APR_ARRAY_IDX(array, i, const char *);
-        if (!strcmp(p, s)) {
-            return i;
-        }
-    }
-    return -1;
-}
-
 /*
  * Compare two protocol identifier. Result is similar to strcmp():
  * 0 gives same precedence, >0 means proto1 is preferred.
@@ -1969,8 +1956,8 @@ static int protocol_cmp(apr_array_header_t *preferences,
                         const char *proto2)
 {
     if (preferences && preferences->nelts > 0) {
-        int index1 = array_index(preferences, proto1);
-        int index2 = array_index(preferences, proto2);
+        int index1 = ap_array_index(preferences, proto1);
+        int index2 = ap_array_index(preferences, proto2);
         if (index2 > index1) {
             return (index1 >= 0) ? 1 : -1;
         }
@@ -2013,8 +2000,8 @@ AP_DECLARE(const char *) ap_select_protocol(conn_rec *c, request_rec *r,
         /* If the existing protocol has not been proposed, but is a choice,
          * add it to the proposals implicitly.
          */
-        if (array_index(proposals, existing) < 0 
-            && array_index(choices, existing) >= 0) {
+        if (ap_array_index(proposals, existing) < 0 
+            && ap_array_index(choices, existing) >= 0) {
             APR_ARRAY_PUSH(proposals, const char*) = existing;
         }
         
@@ -2028,7 +2015,7 @@ AP_DECLARE(const char *) ap_select_protocol(conn_rec *c, request_rec *r,
         for (i = 0; i < proposals->nelts; ++i) {
             const char *p = APR_ARRAY_IDX(proposals, i, const char *);
             if (conf->protocols->nelts > 0 
-                && array_index(conf->protocols, p) < 0) {
+                && ap_array_index(conf->protocols, p) < 0) {
                 /* not a permitted protocol here */
                 continue;
             }
index c8932a2e772f9d0471f2a530ef8c888335a1b593..6f764e6a67c6b0f25f8a1f8d1e770f75dc48633b 100644 (file)
@@ -3148,3 +3148,16 @@ AP_DECLARE(char *) ap_get_exec_line(apr_pool_t *p,
 
     return apr_pstrndup(p, buf, k);
 }
+
+AP_DECLARE(int) ap_array_index(apr_array_header_t *array, const char *s)
+{
+    int i;
+    for (i = 0; i < array->nelts; i++) {
+        const char *p = APR_ARRAY_IDX(array, i, const char *);
+        if (!strcmp(p, s)) {
+            return i;
+        }
+    }
+    return -1;
+}
+