* Handling empty netconf XML messages "]]>]]>" is changed from being accepted to return an error.
* Netconf split lines input (input fragments) fixed * Netconf input split on several lines, eg using stdin: "<a>\nfoo</a>]]>]]>" could under some circumstances be split so that only "</a>]]>]]>" be properly processed. This could also happen to a socket receiving a sub-string and then after a delay receive the rest. * Fixed by storing residue and add that to the input string if later input is received on the same socket. * Use [https://github.com/clicon/libevhtp](https://github.com/clicon/libevhtp) instead of [https://github.com/criticalstack/libevhtp](https://github.com/criticalstack/libevhtp) as a source of the evhtp source
This commit is contained in:
parent
cf63d0f761
commit
8cde7a4ded
11 changed files with 70 additions and 15 deletions
|
|
@ -444,6 +444,14 @@ xmltree2cbuf(cbuf *cb,
|
|||
* @see clixon_xml_parse_string
|
||||
* @see _json_parse
|
||||
* @note special case is empty XML where the parser is not invoked.
|
||||
* It is questionable empty XML is legal. From https://www.w3.org/TR/2008/REC-xml-20081126 Sec 2.1:
|
||||
* A well-formed document ... contains one or more elements.
|
||||
* But in clixon one can invoke a parser on a sub-part of a document where it makes sense to accept
|
||||
* an empty XML. For example where an empty config: <config></config> is parsed.
|
||||
* In other cases, such as receiving netconf ]]>]]> it should represent a complete document and
|
||||
* therefore not well-formed.
|
||||
* Therefore checking for empty XML must be done by a calling function which knows wether the
|
||||
* the XML represents a full document or not.
|
||||
*/
|
||||
static int
|
||||
_xml_parse(const char *str,
|
||||
|
|
@ -460,8 +468,9 @@ _xml_parse(const char *str,
|
|||
int i;
|
||||
|
||||
clicon_debug(2, "%s", __FUNCTION__);
|
||||
if (strlen(str) == 0)
|
||||
if (strlen(str) == 0){
|
||||
return 1; /* OK */
|
||||
}
|
||||
if (xt == NULL){
|
||||
clicon_err(OE_XML, errno, "Unexpected NULL XML");
|
||||
return -1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue