6.0.0-alpha10
5/14/25

[#11775] syncml fails - unable to find dtd...
Summary syncml fails - unable to find dtd...
Queue Synchronization
Queue Version Git master
Type Bug
State Assigned
Priority 2. Medium
Owners jan (at) horde (dot) org
Requester kikireon (at) gmail (dot) com
Created 11/28/2012 (4550 days ago)
Due
Updated 08/27/2013 (4278 days ago)
Assigned 08/27/2013 (4278 days ago)
Resolved
Milestone
Patch No

History
08/27/2013 10:47:08 AM Jan Schneider Assigned to Jan Schneider
State ⇒ Assigned
 
01/08/2013 10:00:04 PM delrio (at) mie (dot) utoronto (dot) ca Comment #7 Reply to this comment
Changing setVersion() alone did not help.

Adding some debugging, I found that setVersion() is being called with $v = 2
Then writeHeader() is being called with $uri = "syncml:syncml1.1" and 
$_wbxmlVersion is 2

I couldn't figure out where $uri with 1.1 is coming from.

01/03/2013 11:50:37 AM Jan Schneider Comment #6
Milestone ⇒
State ⇒ Feedback
Reply to this comment
This patch is just curing symptoms. The question is, why does $uri at 
that point already have a version attached, and why doesn't it match 
the version in $this->_wbxmlVersion?

setVersion() indeed looks broken though. Did you try if only changing 
that method already fixes the double version number?

[Show Quoted Text - 38 lines]
12/13/2012 07:32:16 PM delrio (at) mie (dot) utoronto (dot) ca Comment #5 Reply to this comment
Can anyone review/test the patch I proposed in the earlier comment?
Syncml broke again for my blackberry/syncje after a "pear upgrade".
"Unable to find dtd for syncml:syncml1.11.2"

Thanks

[Show Quoted Text - 30 lines]
12/01/2012 01:42:35 PM kikireon (at) gmail (dot) com Comment #4 Reply to this comment
I did follow these linked instructions in the horde wiki and spent 
hours reading further informations about server adjustments in the 
internet.
Submitting bug reports is going to get you nowhere at this stage.
Tell me what debug information you want and I see whether I can get them.
I was just telling you that something doesn't work and should be 
looked after. It is not my intention and responsability to work as a 
developer and solve implementation problems. I just switch the product 
if I encounter problems not solvable with a reasonable amount of time.
If it doesn't work, there are instructions on how to provide 
meaningful debug information.
so where is that?

Sincerely, David
11/30/2012 03:26:12 PM delrio (at) mie (dot) utoronto (dot) ca Comment #3 Reply to this comment
Message from syslogd@host at Nov 28 20:49:46 ...
  HORDE: [horde] Unable to find dtd for syncml:syncml1.11.2 [pid 2291 
on line 110
  of "/usr/share/php/Horde/Xml/Wbxml/Encoder.php"]
I get the same error using SyncJE for Blackberry.
It seems to be a bug parsing wbxmlVersion in Encoder.php, function 
writeHeader($uri).
In some cases, it would add "1.2" to the $uri when it already has 
"1.1", resulting in an invalid "1.11.2" version.

The following patches should seems to fix it:

--- Horde/Xml/Wbxml/Encoder.php.orig    Wed Oct 31 10:24:43 2012
+++ Horde/Xml/Wbxml/Encoder.php Fri Nov 30 10:02:21 2012
@@ -95,15 +95,8 @@
      public function writeHeader($uri)
      {
          // @todo: this is a hack!
-        if ($this->_wbxmlVersion == 2 && !preg_match('/1\.2$/', $uri)) {
-            $uri .= '1.2';
-        }
-        if ($this->_wbxmlVersion == 1 && !preg_match('/1\.1$/', $uri)) {
-            $uri .= '1.1';
-        }
-        if ($this->_wbxmlVersion == 0 && !preg_match('/1\.0$/', $uri)) {
-            $uri .= '1.0';
-        }
+        if (!preg_match('/1\.[0-9]$/', $uri))
+            $uri .= '1.' . $this->_wbxmlVersion;

          $this->_dtd = $this->_dtdManager->getInstanceURI($uri);



Also, I'm not sure why ContentHandler.php forces wbxmlVersion = 2.

--- Horde/Xml/Wbxml/ContentHandler.php.orig     Wed Oct 31 10:24:43 2012
+++ Horde/Xml/Wbxml/ContentHandler.php  Fri Nov 30 09:58:31 2012
@@ -51,7 +51,7 @@

      public function setVersion($v)
      {
-        $this->_wbxmlVersion = 2;
+        $this->_wbxmlVersion = $v;
      }


Hope that helps.
Oscar
11/28/2012 08:41:17 PM arjen+horde (at) de-korte (dot) org Comment #2 Reply to this comment

[Show Quoted Text - 21 lines]
Did you follow the instructions from

     http://wiki.horde.org/SyncHowTo

There are instructions on what to do when things don't work out. 
Submitting bug reports is going to get you nowhere at this stage.
Unfortunately, ActiveSync didn't work out of the box neither.
It requires some steps to set this up. Again, follow the instructions:

     http://wiki.horde.org/ActiveSync

If it doesn't work, there are instructions on how to provide 
meaningful debug information.
11/28/2012 08:21:53 PM kikireon (at) gmail (dot) com Comment #1
Priority ⇒ 2. Medium
Type ⇒ Bug
Summary ⇒ syncml fails - unable to find dtd...
Queue ⇒ Synchronization
Milestone ⇒ 5.0.2
Patch ⇒ No
State ⇒ Unconfirmed
Reply to this comment
I tried to sync horde by syncml with an android mobile phone (android 
4.0). I used 4myPAL SyncML and SyncJe.
The connection to the server was properly established when I omitted 
the https (encryption), but when trying to open folders the software 
hung or gave an error. That's what the log says:

Message from syslogd@host at Nov 28 20:49:46 ...
  HORDE: [horde] Unable to find dtd for syncml:syncml1.11.2 [pid 2291 
on line 110
  of "/usr/share/php/Horde/Xml/Wbxml/Encoder.php"]

Message from syslogd@host at Nov 28 20:51:09 ...
  HORDE: [horde] Unable to find dtd for syncml:syncml1.11.2 [pid 3118 
on line 110
  of "/usr/share/php/Horde/Xml/Wbxml/Encoder.php"]

Message from syslogd@host at Nov 28 20:51:30 ...
  HORDE: [horde] Unable to find dtd for syncml:syncml1.11.2 [pid 3051 
on line 110
  of "/usr/share/php/Horde/Xml/Wbxml/Encoder.php"]

Unfortunately, ActiveSync didn't work out of the box neither. Ical 
worked with lightning. The only remaining way (after hours of fiddling 
round) to sync tasks and contacts is then a manual export? So CardDav 
(and CalDAV) will be very welcome once ready.

Thanks for checking / improving.

Saved Queries