On 11/05/2013 01:36 PM, Szokovacs Robert wrote:
Hi,
according to the RFC3261:
"When comparing header fields, field names are always case-
insensitive. Unless otherwise stated in the definition of a particular
header field, field values, parameter names, and parameter values are
case-insensitive. Tokens are always case-insensitive."
I propose the attached change to address this issue.
Updated patch:
get_header_param() should be case-insensitive too
diff --git a/core/AmUtils.cpp b/core/AmUtils.cpp
index a56ea03..82a8202 100644
--- a/core/AmUtils.cpp
+++ b/core/AmUtils.cpp
@@ -623,7 +623,7 @@ string get_header_param(const string& hdr_string,
if (pos == string::npos)
return "";
if ((hdr_string.length()>pos+param_name.length()+1)
- && hdr_string.substr(++pos, param_name.length())==param_name
+ && !strcasecmp(hdr_string.substr(++pos, param_name.length()).c_str(), param_name.c_str())
&& hdr_string[pos+param_name.length()] == '=') {
size_t pos2 = pos+param_name.length()+1;
while(pos2<hdr_string.length()){
@@ -725,7 +725,7 @@ string get_header_keyvalue_single(const string& param_hdr, const string& name) {
case ';': // semicolons before the key
break;
default:
- if (curr==name[0]) {
+ if (curr==tolower(name[0]) || curr==toupper(name[0])) {
if (name.length() == 1)
st = ST_FINDEQ;
else
@@ -739,7 +739,7 @@ string get_header_keyvalue_single(const string& param_hdr, const string& name) {
} break;
case ST_CMPKEY: {
- if (curr==name[corr]) {
+ if (curr==tolower(name[corr]) || curr==toupper(name[corr])) {
corr++;
if (corr == name.length()) {
st = ST_FINDEQ;
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev