From: <svn...@op...> - 2009-04-17 11:24:51
|
Author: bellmich Date: Fri Apr 17 13:24:35 2009 New Revision: 1055 URL: http://libsyncml.opensync.org/changeset/1055 Log: Google has a wrong implementation of Alert Status. <Status> <CmdID>5</CmdID> <MsgRef>2</MsgRef> <CmdRef>3</CmdRef> <Cmd>Alert</Cmd> <SourceRef>contacts</SourceRef> <TargetRef>contacts</TargetRef> <Data>200</Data> <Item> <Data><![CDATA[20090417T112101Z]]></Data> </Item> </Status> The Item Data is the Next Anchor. Please see ticket #230 for more details. Modified: trunk/libsyncml/parser/sml_xml_parse.c Modified: trunk/libsyncml/parser/sml_xml_parse.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_parse.c Fri Apr 17 13:23:50 2009 (r1054) +++ trunk/libsyncml/parser/sml_xml_parse.c Fri Apr 17 13:24:35 2009 (r1055) @@ -743,9 +743,19 @@ } SmlAnchor *anchor = NULL; - if (!_smlAnchorParse(&anchor, parser, error)) - goto error_free_item; - + if (xmlTextReaderNodeType(parser->reader) == XML_NODE_TEXT) { + /* Google just copies the element Next from the Anchor + * Please see ticket #230 for more details. + */ + anchor = smlTryMalloc0(sizeof(SmlAnchor), error); + if (!anchor) + goto error_free_item; + anchor->next = g_strdup((char *)xmlTextReaderConstValue(parser->reader)); + } else { + /* normal behaviour with anchor copy */ + if (!_smlAnchorParse(&anchor, parser, error)) + goto error_free_item; + } item->anchor = anchor; if (!_smlXmlParserStep(parser)) { |