<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet href="https://dev.horde.org/themes/horde//default/feed-rss.xsl" type="text/xsl"?> 
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
 <channel> 
  <title>All day events cause crash with Funambol outlook connector</title> 
  <pubDate>Thu, 09 Apr 2026 23:32:30 +0000</pubDate> 
  <link>https://bugs.horde.org/ticket/8474</link> 
  <atom:link rel="self" type="application/rss+xml" title="All day events cause crash with Funambol outlook connector" href="https://bugs.horde.org/ticket/8474/rss" /> 
  <description>All day events cause crash with Funambol outlook connector</description> 
 
   
   
  <item> 
   <title>Funambol crashes when receiving events that last from 00:00 </title> 
   <description>Funambol crashes when receiving events that last from 00:00 to 00:00 the next day from horde. 

The events are usually public holidays(New Years Day etc) that are automatically added by outlook. 

The events when export to csv look like

New Year&#039;s Day	Holiday	Australia			1/01/2008	0:00:00	2/01/2008	0:00:00	0								

This occurs for recurring events as well. 

I am running centos 5.3 with horde webmail edition 1.2.3. Using Funambol outlook connector 7.2.



The debug information from /tmp/sync/log.txt for an event is below:

DEBUG:  Sync4j for name DTSTAMP, value 1248955555

DEBUG:  Sync4j for name CREATED, value 1248955444

DEBUG:  Sync4j for name LAST-MODIFIED, value 1248502388

DEBUG:  Sync4j for name SUMMARY, value New Year&#039;s Day

DEBUG:  Sync4j for name ORGANIZER, value mailto:xxx@xxx.com

DEBUG:  Sync4j for name CATEGORIES, value Holiday

DEBUG:  Sync4j for name LOCATION, value Australia

DEBUG:  Sync4j for name CLASS, value PUBLIC

DEBUG:  Sync4j for name STATUS, value CONFIRMED

DEBUG:  Sync4j for name TRANSP, value OPAQUE

DEBUG:  Created device class SyncML_Device_Sync4j

DEBUG:  Sending add from server: 040000008200E00074C5B7101A82E00800000000705EEB086CEEC701000000000000000010000000122B51157EE4734EA7DC47716CD028AC

DEBUG:  Sync4j for name DTSTART, value array (

  &#039;year&#039; =&gt; &#039;2008&#039;,

  &#039;month&#039; =&gt; &#039;01&#039;,

  &#039;mday&#039; =&gt; &#039;01&#039;,

)

DEBUG:  Sync4j for name DTEND, value array (

  &#039;year&#039; =&gt; &#039;2008&#039;,

  &#039;month&#039; =&gt; &#039;01&#039;,

  &#039;mday&#039; =&gt; &#039;02&#039;,

)

</description> 
   <pubDate>Sun, 02 Aug 2009 02:30:57 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55123</link> 
  </item> 
   
  <item> 
   <title>What do you mean with &quot;crashes&quot; and how is this a bug in Hor</title> 
   <description>What do you mean with &quot;crashes&quot; and how is this a bug in Horde?</description> 
   <pubDate>Mon, 03 Aug 2009 15:33:00 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55168</link> 
  </item> 
   
  <item> 
   <title>This was introduced with the latest changes in Horde for 3.3</title> 
   <description>This was introduced with the latest changes in Horde for 3.3.4 / SyncML. The Plugin crashes with the &quot;send report to MS&quot; message and that&#039;s it. It occurs as soon as a reccuring event should be synced with all versions of the Outlook Funambol Plugin up to 8.0.4</description> 
   <pubDate>Fri, 14 Aug 2009 14:50:24 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55310</link> 
  </item> 
   
  <item> 
   <title>This where the changes which break Funambol/Outlook (Bug #68</title> 
   <description>This where the changes which break Funambol/Outlook (Bug #6847)



@@ -840,7 +843,7 @@ class SyncML_Device_sync4j extends SyncM

                 if (!empty($item[&#039;params&#039;][&#039;VALUE&#039;]) &amp;&amp;

                     $item[&#039;params&#039;][&#039;VALUE&#039;] == &#039;DATE&#039;) {

                     $hash[&#039;AllDayEvent&#039;] = 1;

-                    $hash[&#039;Start&#039;] = sprintf(&#039;%04d-%02d-%02d&#039;,

+                    $hash[&#039;Start&#039;] = sprintf(&#039;%04d-%02d-%02dT00:00:00Z&#039;,

                                              $item[&#039;value&#039;][&#039;year&#039;],

                                              $item[&#039;value&#039;][&#039;month&#039;],

                                              $item[&#039;value&#039;][&#039;mday&#039;]);

@@ -858,9 +861,9 @@ class SyncML_Device_sync4j extends SyncM



             case &#039;DTEND&#039;:

                 if (!empty($item[&#039;params&#039;][&#039;VALUE&#039;]) &amp;&amp;

-                    $item[&#039;params&#039;][&#039;VALUE&#039;] == &quot;DATE&quot;) {

+                    $item[&#039;params&#039;][&#039;VALUE&#039;] == &#039;DATE&#039;) {

                     $hash[&#039;AllDayEvent&#039;] = 1;

-                    $hash[&#039;End&#039;] = sprintf(&#039;%04d-%02d-%02d&#039;,

+                    $hash[&#039;End&#039;] = sprintf(&#039;%04d-%02d-%02dT00:00:00Z&#039;,



Seams Funambol does not like too many zeros :-(

</description> 
   <pubDate>Fri, 14 Aug 2009 15:05:33 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55311</link> 
  </item> 
   
  <item> 
   <title>Please report this to Funambol then.

Unless we did somethin</title> 
   <description>Please report this to Funambol then.

Unless we did something wrong in the iCalendar implementation (and this change was actually required to *fix* a broken implementation), there is nothing we could do.</description> 
   <pubDate>Fri, 14 Aug 2009 15:39:17 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55312</link> 
  </item> 
   
  <item> 
   <title>I thought Horde always send SIF-E if the client is funambol </title> 
   <description>I thought Horde always send SIF-E if the client is funambol so this would be a misshandling of there own format?

</description> 
   <pubDate>Fri, 14 Aug 2009 20:59:21 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55316</link> 
  </item> 
   
  <item> 
   <title>Eh, true, I was confused. Can you post a SIF-E event sent fr</title> 
   <description>Eh, true, I was confused. Can you post a SIF-E event sent from the client, that matches the rules of the Kronolith event that causes the client to crash?</description> 
   <pubDate>Fri, 14 Aug 2009 21:28:52 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55317</link> 
  </item> 
   
  <item> 
   <title>Here are two data.txt debug files with AllDayEvent sync Even</title> 
   <description>Here are two data.txt debug files with AllDayEvent sync Events.



Outlook-receive-allday.txt lead to crash of the Funambol Outlook Plugin



Outlook-sent-allday.txt is what the same Plugin sent when the event is created in Outlook



It seams that the SIF-E does not like full date/times in case of AllDayEvent maybe because AllDayEvent means the whole day and not lasting 24 hours in Outlook world, so the time part is pointless anyway.

Next in SIF-E Start and End Day have to be the same for a one Day event, otherwise it is translated to a two day event as addressed Bug#6847.

As the SIF-E is solely to Funambol we could simply hack Sync4j.php to follow there &quot;rules&quot;, or check version number of the Funambol Plugin and use &quot;vcalendar 1.0&quot; instead if the version is &gt;= 7...</description> 
   <pubDate>Mon, 17 Aug 2009 11:25:44 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55331</link> 
  </item> 
   
  <item> 
   <title>Changes have been made in CVS for this ticket:

http://cvs.h</title> 
   <description>Changes have been made in CVS for this ticket:

http://cvs.horde.org/diff.php/framework/SyncML/SyncML/Device/Sync4j.php?rt=horde&amp;r1=1.64&amp;r2=1.65&amp;ty=u</description> 
   <pubDate>Tue, 18 Aug 2009 11:05:21 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55341</link> 
  </item> 
   
  <item> 
   <title>Changes have been made in CVS for this ticket:

http://cvs.h</title> 
   <description>Changes have been made in CVS for this ticket:

http://cvs.horde.org/diff.php/framework/SyncML/SyncML/Device/Sync4j.php?rt=horde&amp;r1=1.8.2.25&amp;r2=1.8.2.26&amp;ty=u</description> 
   <pubDate>Tue, 18 Aug 2009 11:10:00 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55342</link> 
  </item> 
   
  <item> 
   <title>Thanks, that helps a lot. It&#039;s still a serious bug in Funamb</title> 
   <description>Thanks, that helps a lot. It&#039;s still a serious bug in Funambol that really has to be fixed there, but at least we have some hints how to work around it now.

Try what I committed.</description> 
   <pubDate>Tue, 18 Aug 2009 11:11:22 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55343</link> 
  </item> 
   
  <item> 
   <title>It does not work



For the lines 

+                $hash[&#039;</title> 
   <description>It does not work



For the lines 

+                $hash[&#039;Start&#039;] = Horde_iCalendar::_exportDateTime($item[&#039;value&#039;]);

+                $start = $item[&#039;value&#039;];



I get a &quot;Undefined variable: item&quot;



and for 



+                    $hash[&#039;End&#039;] = $date-&gt;sprintf(&#039;%04d-%02d-%02d&#039;);



a &quot;call to undefined method Horde_Date::sprintf()&quot;



in the logfile.



My Horde Version is 3.3.4.</description> 
   <pubDate>Tue, 18 Aug 2009 14:17:24 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55375</link> 
  </item> 
   
  <item> 
   <title>Changes have been made in CVS for this ticket:

http://cvs.h</title> 
   <description>Changes have been made in CVS for this ticket:

http://cvs.horde.org/diff.php/framework/SyncML/SyncML/Device/Sync4j.php?rt=horde&amp;r1=1.8.2.26&amp;r2=1.8.2.27&amp;ty=u</description> 
   <pubDate>Tue, 18 Aug 2009 15:47:50 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55379</link> 
  </item> 
   
  <item> 
   <title>No idea what I was thinking. Try now?</title> 
   <description>No idea what I was thinking. Try now?</description> 
   <pubDate>Tue, 18 Aug 2009 15:47:59 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55380</link> 
  </item> 
   
  <item> 
   <title>Hmm



Lead to &quot;Undefined Index: value&quot; and some strange Sta</title> 
   <description>Hmm



Lead to &quot;Undefined Index: value&quot; and some strange Start Date :



Output converted for client (text/x-s4j-sife):

&lt;?xml version=&quot;1.0&quot;?&gt;&lt;appointment&gt;&lt;ReminderSet&gt;0&lt;/ReminderSet&gt;&lt;IsRecurring&gt;0&lt;/IsRecurring&gt;&lt;BusyStatus&gt;2&lt;/BusyStatus&gt;&lt;AllDayEvent&gt;1&lt;/AllDayEvent&gt;&lt;Start&gt;19700101T000000Z&lt;/Start&gt;&lt;End&gt;2009-08-19&lt;/End&gt;&lt;Subject&gt;TEST-1&lt;/Subject&gt;&lt;Sensitivity&gt;0&lt;/Sensitivity&gt;&lt;/appointment&gt;



Why not simply use the same code as for the End-Date as this is working as it seams???</description> 
   <pubDate>Wed, 19 Aug 2009 09:57:41 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55414</link> 
  </item> 
   
  <item> 
   <title>&gt; Lead to &quot;Undefined Index: value&quot; and some strange Start Da</title> 
   <description>&gt; Lead to &quot;Undefined Index: value&quot; and some strange Start Date :



What&#039;s the exact error message (line number)?



&gt; Why not simply use the same code as for the End-Date as this is 

&gt; working as it seams???



Because we need the start date at several places.</description> 
   <pubDate>Wed, 19 Aug 2009 10:45:52 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55417</link> 
  </item> 
   
  <item> 
   <title>Undefined index:  value in /var/www/horde/lib/SyncML/Device/</title> 
   <description>Undefined index:  value in /var/www/horde/lib/SyncML/Device/Sync4j.php on line 848

Undefined index:  value in /var/www/horde/lib/SyncML/Device/Sync4j.php on line 849



Which means the following lines ...

+                $hash[&#039;Start&#039;] = Horde_iCalendar::_exportDateTime($start[&#039;value&#039;]);

+                $start = $start[&#039;value&#039;];



</description> 
   <pubDate>Wed, 19 Aug 2009 12:57:07 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55420</link> 
  </item> 
   
  <item> 
   <title>What about the following :

I have included the DTSTART case</title> 
   <description>What about the following :

I have included the DTSTART case in the getAllAttributes() loop again to streamline the code and modified the DTEND case to use the same formating as the DTSTART. The variable &quot;$start&quot; is only used to compare against &quot;$alarm&quot; as far as i can see and this is working. The &quot;$end&quot; is only used to compute &quot;Duration&quot; which is no SIF-E attribute anyway as far as i can see??



--- lib/SyncML/Device/Sync4j.php.orig	2009-08-14 17:01:24.000000000 +0200

+++ lib/SyncML/Device/Sync4j.php	2009-08-19 16:26:18.000000000 +0200

@@ -829,7 +829,8 @@

         $hash = array(&#039;ReminderSet&#039; =&gt; 0,

                       &#039;IsRecurring&#039; =&gt; 0,

                       &#039;BusyStatus&#039; =&gt; 2);

-        $alarm = null;

+        $alarm = $end = null;

+

         foreach ($content-&gt;getAllAttributes() as $item) {

             $GLOBALS[&#039;backend&#039;]-&gt;logMessage(

                 sprintf(&#039;Sync4j for name %s, value %s&#039;,

@@ -843,18 +844,19 @@

                 if (!empty($item[&#039;params&#039;][&#039;VALUE&#039;]) &amp;&amp;

                     $item[&#039;params&#039;][&#039;VALUE&#039;] == &#039;DATE&#039;) {

                     $hash[&#039;AllDayEvent&#039;] = 1;

-                    $hash[&#039;Start&#039;] = sprintf(&#039;%04d-%02d-%02dT00:00:00Z&#039;,

-                                             $item[&#039;value&#039;][&#039;year&#039;],

-                                             $item[&#039;value&#039;][&#039;month&#039;],

-                                             $item[&#039;value&#039;][&#039;mday&#039;]);

+                    $date = new Horde_Date(array(&#039;year&#039; =&gt; $item[&#039;value&#039;][&#039;year&#039;],

+                                                 &#039;month&#039; =&gt; $item[&#039;value&#039;][&#039;month&#039;],

+                                                 &#039;mday&#039; =&gt; $item[&#039;value&#039;][&#039;mday&#039;]));

+                    $date-&gt;correct();

+                    $hash[&#039;Start&#039;] = $date-&gt;format(&#039;Y-m-d&#039;);

                     $start = mktime(0, 0, 0,

                                     $item[&#039;value&#039;][&#039;month&#039;],

                                     $item[&#039;value&#039;][&#039;mday&#039;],

                                     $item[&#039;value&#039;][&#039;year&#039;]);

                 } else {

                     $hash[&#039;AllDayEvent&#039;] = 0;

-                    $hash[&#039;Start&#039;] = Horde_iCalendar::_exportDateTime

-                        ($item[&#039;value&#039;]);

+                    $hash[&#039;Start&#039;] = Horde_iCalendar::_exportDateTime(

+                        $item[&#039;value&#039;]);

                     $start = $item[&#039;value&#039;];

                 }

                 break;

@@ -863,10 +865,12 @@

                 if (!empty($item[&#039;params&#039;][&#039;VALUE&#039;]) &amp;&amp;

                     $item[&#039;params&#039;][&#039;VALUE&#039;] == &#039;DATE&#039;) {

                     $hash[&#039;AllDayEvent&#039;] = 1;

-                    $hash[&#039;End&#039;] = sprintf(&#039;%04d-%02d-%02dT00:00:00Z&#039;,

-                                           $item[&#039;value&#039;][&#039;year&#039;],

-                                           $item[&#039;value&#039;][&#039;month&#039;],

-                                           $item[&#039;value&#039;][&#039;mday&#039;]);

+                    $date = new Horde_Date(array(&#039;year&#039; =&gt; $item[&#039;value&#039;][&#039;year&#039;],

+                                                 &#039;month&#039; =&gt; $item[&#039;value&#039;][&#039;month&#039;],

+                                                 &#039;mday&#039; =&gt; $item[&#039;value&#039;][&#039;mday&#039;]));

+                    $date-&gt;mday--;

+                    $date-&gt;correct();

+                    $hash[&#039;End&#039;] = $date-&gt;format(&#039;Y-m-d&#039;);

                     $end = mktime(0, 0, 0,

                                   $item[&#039;value&#039;][&#039;month&#039;],

                                   $item[&#039;value&#039;][&#039;mday&#039;],

@@ -983,13 +987,7 @@

                         $hash[&#039;DayOfWeekMask&#039;] = $mask;

                     } else {

                         $hash[&#039;RecurrenceType&#039;] = 2;

-                        $start = $content-&gt;getAttribute(&#039;DTSTART&#039;);

-                        if (!empty($start[&#039;params&#039;][&#039;VALUE&#039;]) &amp;&amp;

-                            $start[&#039;params&#039;][&#039;VALUE&#039;] == &#039;DATE&#039;) {

-                            $hash[&#039;DayOfMonth&#039;] = $start[&#039;value&#039;][&#039;mday&#039;];

-                        } else {

-                            $hash[&#039;DayOfMonth&#039;] = date(&#039;j&#039;, $start);

-                        }

+                        $hash[&#039;DayOfMonth&#039;] = date(&#039;j&#039;, $start);

                     }

                     break;

 </description> 
   <pubDate>Wed, 19 Aug 2009 14:30:44 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55422</link> 
  </item> 
   
  <item> 
   <title>Changes have been made in CVS for this ticket:

http://cvs.h</title> 
   <description>Changes have been made in CVS for this ticket:

http://cvs.horde.org/diff.php/framework/SyncML/SyncML/Device/Sync4j.php?rt=horde&amp;r1=1.8.2.28&amp;r2=1.8.2.29&amp;ty=u</description> 
   <pubDate>Thu, 20 Aug 2009 15:42:54 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55473</link> 
  </item> 
   
  <item> 
   <title>&gt; Undefined index:  value in 

&gt; /var/www/horde/lib/SyncML/D</title> 
   <description>&gt; Undefined index:  value in 

&gt; /var/www/horde/lib/SyncML/Device/Sync4j.php on line 848

&gt; Undefined index:  value in 

&gt; /var/www/horde/lib/SyncML/Device/Sync4j.php on line 849



Should be fixed now.</description> 
   <pubDate>Thu, 20 Aug 2009 15:43:08 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55474</link> 
  </item> 
   
  <item> 
   <title>&gt; What about the following :

&gt; I have included the DTSTART </title> 
   <description>&gt; What about the following :

&gt; I have included the DTSTART case in the getAllAttributes() loop again 

&gt; to streamline the code and modified the DTEND case to use the same 

&gt; formating as the DTSTART. The variable &quot;$start&quot; is only used to 

&gt; compare against &quot;$alarm&quot; as far as i can see and this is working. The 

&gt; &quot;$end&quot; is only used to compute &quot;Duration&quot; which is no SIF-E attribute 

&gt; anyway as far as i can see??



No, the $start is also used inside the loop, and we can&#039;t guarantee that the DTSTART attribute is always before the other attributes that depend on it. Beside that, the $start variable had been overwritten inside the loop under certain circumstances.</description> 
   <pubDate>Thu, 20 Aug 2009 15:45:51 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55476</link> 
  </item> 
   
  <item> 
   <title>Works now without crashing Funambol Outlook Plugin :-)

Mayb</title> 
   <description>Works now without crashing Funambol Outlook Plugin :-)

Maybe we should also add some comment in the source code why we do the &quot;mday--&quot; for later readers ot the code?



Many thanks</description> 
   <pubDate>Fri, 21 Aug 2009 11:27:04 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55510</link> 
  </item> 
   
  <item> 
   <title>Finally.</title> 
   <description>Finally.</description> 
   <pubDate>Fri, 21 Aug 2009 14:55:29 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/8474#t55523</link> 
  </item> 
   
   
 
 </channel> 
</rss> 
