|
6 | 6 | // (See accompanying file LICENSE_1_0.txt of copy at
|
7 | 7 | // http://www.boost.org/LICENSE_1_0.txt)
|
8 | 8 |
|
9 |
| -#include<boost/algorithm/string/case_conv.hpp> |
10 |
| - |
| 9 | +#include<boost/algorithm/string/predicate.hpp> |
11 | 10 | #include<boost/network/uri/http/detail/uri_parts.hpp>
|
12 | 11 | #include<boost/network/uri/detail/parse_uri.hpp>
|
13 | 12 | #include<boost/network/traits/string.hpp>
|
@@ -54,20 +53,16 @@ namespace boost { namespace network { namespace uri {
|
54 | 53 | {
|
55 | 54 | namespaceqi= spirit::qi;
|
56 | 55 |
|
57 |
| -// For resiliency, programs interpreting URI should treat upper |
58 |
| -// case letters as equivalent to lower case in scheme names |
59 |
| -boost::to_lower(parts.scheme); |
60 |
| - |
61 |
| -// Require that parts.scheme is either http or https |
62 |
| -if (parts.scheme.size() <4) |
63 |
| -returnfalse; |
64 |
| -if (parts.scheme.substr(0,4) !="http") |
| 56 | +// Require that parts.scheme is either http or https, case insensitive |
| 57 | +if (parts.scheme.size() <4or parts.scheme.size() >5) |
65 | 58 | returnfalse;
|
66 |
| -if (parts.scheme.size() ==5) { |
67 |
| -if (parts.scheme[4] !='s') |
| 59 | +if (parts.scheme.size() ==4) { |
| 60 | +if (notboost::iequals(parts.scheme.substr(0,4),"http")) |
68 | 61 | returnfalse;
|
69 |
| - }elseif (parts.scheme.size() >5) |
70 |
| -returnfalse; |
| 62 | + }else {// size is 5 |
| 63 | +if (notboost::iequals(parts.scheme.substr(0,5),"https")) |
| 64 | +returnfalse; |
| 65 | + } |
71 | 66 |
|
72 | 67 | typedef string<tags::http>::type string_type;
|
73 | 68 | typedef range_iterator<string_type>::type iterator;
|
|