#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
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,
/* 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;
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.
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;
}
/* 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;
}
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;
}
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;
+}
+