mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
http11: Remove qsort code paths [changelog skip] (#2073)
* http11: Remove unused qsort/bsearch code paths [changelog skip] * Explicitly include ctype.h to fix compilation warning [changelog skip] Had the following warning during compilation without the include: warning: implicitly declaring library function 'isspace' with type 'int (int)'
This commit is contained in:
parent
fcb99b91cc
commit
befe00a864
1 changed files with 1 additions and 34 deletions
|
@ -10,6 +10,7 @@
|
||||||
#include "ext_help.h"
|
#include "ext_help.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
#include "http11_parser.h"
|
#include "http11_parser.h"
|
||||||
|
|
||||||
#ifndef MANAGED_STRINGS
|
#ifndef MANAGED_STRINGS
|
||||||
|
@ -111,21 +112,6 @@ static struct common_field common_http_fields[] = {
|
||||||
# undef f
|
# undef f
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* qsort(3) and bsearch(3) improve average performance slightly, but may
|
|
||||||
* not be worth it for lack of portability to certain platforms...
|
|
||||||
*/
|
|
||||||
#if defined(HAVE_QSORT_BSEARCH)
|
|
||||||
/* sort by length, then by name if there's a tie */
|
|
||||||
static int common_field_cmp(const void *a, const void *b)
|
|
||||||
{
|
|
||||||
struct common_field *cfa = (struct common_field *)a;
|
|
||||||
struct common_field *cfb = (struct common_field *)b;
|
|
||||||
signed long diff = cfa->len - cfb->len;
|
|
||||||
return diff ? diff : memcmp(cfa->name, cfb->name, cfa->len);
|
|
||||||
}
|
|
||||||
#endif /* HAVE_QSORT_BSEARCH */
|
|
||||||
|
|
||||||
static void init_common_fields(void)
|
static void init_common_fields(void)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
@ -142,28 +128,10 @@ static void init_common_fields(void)
|
||||||
}
|
}
|
||||||
rb_global_variable(&cf->value);
|
rb_global_variable(&cf->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_QSORT_BSEARCH)
|
|
||||||
qsort(common_http_fields,
|
|
||||||
ARRAY_SIZE(common_http_fields),
|
|
||||||
sizeof(struct common_field),
|
|
||||||
common_field_cmp);
|
|
||||||
#endif /* HAVE_QSORT_BSEARCH */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE find_common_field_value(const char *field, size_t flen)
|
static VALUE find_common_field_value(const char *field, size_t flen)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_QSORT_BSEARCH)
|
|
||||||
struct common_field key;
|
|
||||||
struct common_field *found;
|
|
||||||
key.name = field;
|
|
||||||
key.len = (signed long)flen;
|
|
||||||
found = (struct common_field *)bsearch(&key, common_http_fields,
|
|
||||||
ARRAY_SIZE(common_http_fields),
|
|
||||||
sizeof(struct common_field),
|
|
||||||
common_field_cmp);
|
|
||||||
return found ? found->value : Qnil;
|
|
||||||
#else /* !HAVE_QSORT_BSEARCH */
|
|
||||||
unsigned i;
|
unsigned i;
|
||||||
struct common_field *cf = common_http_fields;
|
struct common_field *cf = common_http_fields;
|
||||||
for(i = 0; i < ARRAY_SIZE(common_http_fields); i++, cf++) {
|
for(i = 0; i < ARRAY_SIZE(common_http_fields); i++, cf++) {
|
||||||
|
@ -171,7 +139,6 @@ static VALUE find_common_field_value(const char *field, size_t flen)
|
||||||
return cf->value;
|
return cf->value;
|
||||||
}
|
}
|
||||||
return Qnil;
|
return Qnil;
|
||||||
#endif /* !HAVE_QSORT_BSEARCH */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void http_field(puma_parser* hp, const char *field, size_t flen,
|
void http_field(puma_parser* hp, const char *field, size_t flen,
|
||||||
|
|
Loading…
Reference in a new issue