Index: access.php
===================================================================
--- access.php  (revision 22861)
+++ access.php  (working copy)
@@ -307,6 +307,21 @@

     $ini->loadCache();

+    if( eZExpiryHandler::hasInstance() )
+    {
+        eZDebug::writeDebug( "Reloading eZExpiryHandler!", 'access.php' );
+
+        $expiryHandler = eZExpiryHandler::instance();
+        if(!$expiryHandler->isModified())
+        {
+            eZExpiryHandler::reset();
+        }
+        else
+        {
+            eZDebug::writeWarning( "Access changed after eZExpiryHandler was modified!", 'access.php' );
+        }
+    }
+
     eZUpdateDebugSettings();
     if ( accessDebugEnabled() )
     {
Index: lib/ezutils/classes/ezexpiryhandler.php
===================================================================
--- lib/ezutils/classes/ezexpiryhandler.php     (revision 22861)
+++ lib/ezutils/classes/ezexpiryhandler.php     (working copy)
@@ -198,6 +198,21 @@
         }
     }

+    /*!
+     Reset/reload the eZExpiryHandler.
+     Useful when access changes after eZExpiryHandler was initialized (i.e. webdav)
+     Should probably only be used if eZExpiryHandler is not modified.
+     \static
+    */
+    static function reset()
+    {
+        if ( eZExpiryHandler::hasInstance() )
+        {
+            unset($GLOBALS['eZExpiryHandlerInstance']);
+        }
+        $GLOBALS['eZExpiryHandlerInstance'] = new eZExpiryHandler();
+    }
+
     /// \privatesection
     private static $isShutdownFunctionRegistered = false;