| 49 | #define UNKNOWN_METHOD (-1) |
| 50 | |
| 51 | static int sc_for_req_header(const char *header_name) |
| 52 | { |
| 53 | char header[16]; |
| 54 | apr_size_t len = strlen(header_name); |
| 55 | const char *p = header_name; |
| 56 | int i = 0; |
| 57 | |
| 58 | /* ACCEPT-LANGUAGE is the longest header |
| 59 | * that is of interest. |
| 60 | */ |
| 61 | if (len < 4 || len > 15) |
| 62 | return UNKNOWN_METHOD; |
| 63 | |
| 64 | memset(header, 0, sizeof header); |
| 65 | while (*p) |
| 66 | header[i++] = apr_toupper(*p++); |
| 67 | header[i] = '\0'; |
| 68 | p = &header[1]; |
| 69 | |
| 70 | switch (header[0]) { |
| 71 | case 'A': |
| 72 | if (memcmp(p, "CCEPT", 5) == 0) { |
| 73 | if (!header[6]) |
| 74 | return SC_ACCEPT; |
| 75 | else if (header[6] == '-') { |
| 76 | p += 6; |
| 77 | if (strcmp(p, "CHARSET") == 0) |
| 78 | return SC_ACCEPT_CHARSET; |
| 79 | else if (strcmp(p, "ENCODING") == 0) |
| 80 | return SC_ACCEPT_ENCODING; |
| 81 | else if (strcmp(p, "LANGUAGE") == 0) |
| 82 | return SC_ACCEPT_LANGUAGE; |
| 83 | else |
| 84 | return UNKNOWN_METHOD; |
| 85 | } |
| 86 | else |
| 87 | return UNKNOWN_METHOD; |
| 88 | } |
| 89 | else if (strcmp(p, "UTHORIZATION") == 0) |
| 90 | return SC_AUTHORIZATION; |
| 91 | else |
| 92 | return UNKNOWN_METHOD; |
| 93 | break; |
| 94 | case 'C': |
| 95 | if (strcmp(p, "OOKIE2") == 0) |
| 96 | return SC_COOKIE2; |
| 97 | else if (strcmp(p, "OOKIE") == 0) |
| 98 | return SC_COOKIE; |
| 99 | else if (strcmp(p, "ONNECTION") == 0) |
| 100 | return SC_CONNECTION; |
| 101 | else if (strcmp(p, "ONTENT-TYPE") == 0) |
| 102 | return SC_CONTENT_TYPE; |
| 103 | else if (strcmp(p, "ONTENT-LENGTH") == 0) |
| 104 | return SC_CONTENT_LENGTH; |
| 105 | else |
| 106 | return UNKNOWN_METHOD; |
| 107 | break; |
| 108 | case 'H': |
no outgoing calls
no test coverage detected