v2.5.1: Allow ';' as selector separator in resource URI
diff --git a/ChangeLog b/ChangeLog
index 76b9558..7997dd8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2.5.1
+- Features
+ - Allow ';' as separator for URI selectors
+ (RFC 1866 section 8.2.1)
+ - Warn if ',' is used as selector separator
+
2.5.0
- Features
- Rewrite selector and property handling to keep
diff --git a/VERSION.cmake b/VERSION.cmake
index 18bcd01..2cad2f9 100644
--- a/VERSION.cmake
+++ b/VERSION.cmake
@@ -44,10 +44,10 @@
# set COMPATMINOR to MINOR. (binary incompatible change)
#
-# Package version 2.5.0
+# Package version 2.5.1
SET(OPENWSMAN_MAJOR "2")
SET(OPENWSMAN_MINOR "5")
-SET(OPENWSMAN_PATCH "0")
+SET(OPENWSMAN_PATCH "1")
# Plugin API 2.2
SET(OPENWSMAN_PLUGIN_API_MAJOR "2")
diff --git a/src/lib/u/uri.c b/src/lib/u/uri.c
index abc6ecd..25ddb9c 100644
--- a/src/lib/u/uri.c
+++ b/src/lib/u/uri.c
@@ -232,6 +232,17 @@
u_trim(key);
u_trim(val);
+ /* if we parse a URI (& separator) and the value contains
+ * ',' and '=', then the query probably has wrong syntax
+ * and uses ',' instead of '&'
+ */
+ if (*separator == '&') {
+ if (strchr(val, ',')) {
+ if (strchr(val, '=')) {
+ fprintf(stderr, "Maybe wrong use of ',' separator in URI, should be '&'\n");
+ }
+ }
+ }
u_trim_quotes(val);
if (u_string_unify(key) || u_string_unify(val)) {
u_free(key);
@@ -259,10 +270,17 @@
return NULL;
}
+/*
+ * parse query according to
+ * http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax
+ * and RFC 1866 section 8.2.1 : by Tim Berners-Lee in 1995 encourages CGI authors to support ';' in addition to '&'.
+ *
+ */
+
hash_t *
u_parse_query(const char *query)
{
- return _u_parse(query, "&");
+ return _u_parse(query, "&;");
}
hash_t *