- if (separator && separator != '.' && separator != ',') {
- php_http_error(HE_NOTICE, PHP_HTTP_E_MALFORMED_HEADERS, "Non-standard version separator '%c' in HTTP protocol version '%s'", separator, str);
+ switch (*ptr) {
+ case 'h':
+ case 'H':
+ ++ptr; if (*ptr != 't' && *ptr != 'T') break;
+ ++ptr; if (*ptr != 't' && *ptr != 'T') break;
+ ++ptr; if (*ptr != 'p' && *ptr != 'P') break;
+ ++ptr; if (*ptr != '/') break;
+ ++ptr;
+ /* no break */
+ default:
+ tmp.major = strtol(ptr, &stop, 10);
+ if (stop && stop != ptr && tmp.major != LONG_MIN && tmp.major != LONG_MAX) {
+ separator = *stop;
+ if (separator) {
+ if (separator != '.' && separator != ',') {
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Non-standard version separator '%c' in HTTP protocol version '%s'", separator, ptr);
+ }
+ ptr = stop + 1;
+ tmp.minor = strtol(ptr, &stop, 10);
+ if (tmp.minor != LONG_MIN && tmp.minor != LONG_MAX) {
+ return php_http_version_init(v, tmp.major, tmp.minor TSRMLS_CC);
+ }
+ }
+ }