From 78c43c2560b8df73de22db20ec11e3e26f31ca51 Mon Sep 17 00:00:00 2001
From: Andreas Jung <yet@gmx.de>
Date: Fri, 24 Mar 2006 12:52:47 +0000
Subject: [PATCH] - Collector #2037: fixed broken ACTUAL_URL for '/'

---
 doc/CHANGES.txt                                       |  2 ++
 lib/python/Products/SiteAccess/VirtualHostMonster.py  |  2 +-
 .../SiteAccess/tests/testVirtualHostMonster.py        | 11 +++++++++++
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt
index 555b91e1c..b5b9c3deb 100644
--- a/doc/CHANGES.txt
+++ b/doc/CHANGES.txt
@@ -20,6 +20,8 @@ Zope Changes
 
       - Missing import of NotFound in webdav.Resource.
 
+      - Collector #2037: fixed broken ACTUAL_URL for '/'
+
   Zope 2.9.1  (2006/02/25)
 
     Bugs fixed
diff --git a/lib/python/Products/SiteAccess/VirtualHostMonster.py b/lib/python/Products/SiteAccess/VirtualHostMonster.py
index 2323082fa..80cfbaf47 100644
--- a/lib/python/Products/SiteAccess/VirtualHostMonster.py
+++ b/lib/python/Products/SiteAccess/VirtualHostMonster.py
@@ -193,7 +193,7 @@ class VirtualHostMonster(Persistent, Item, Implicit):
                     request['VIRTUAL_URL'] = '/'.join(vup)
 
                     # new ACTUAL_URL
-                    add = request['ACTUAL_URL'].endswith('/') and '/' or ''
+                    add = (path and request['ACTUAL_URL'].endswith('/')) and '/' or ''
                     request['ACTUAL_URL'] = request['VIRTUAL_URL']+add
 
                 return
diff --git a/lib/python/Products/SiteAccess/tests/testVirtualHostMonster.py b/lib/python/Products/SiteAccess/tests/testVirtualHostMonster.py
index c12af10de..7ed9b3d63 100644
--- a/lib/python/Products/SiteAccess/tests/testVirtualHostMonster.py
+++ b/lib/python/Products/SiteAccess/tests/testVirtualHostMonster.py
@@ -59,6 +59,17 @@ class VHMRegressions(unittest.TestCase):
         m = self.app.folder.doc.getPhysicalPath
         self.assertEqual(m(), ('', 'folder', 'doc'))
 
+    def test_actual_url(self):
+        self.app.folder.manage_addDTMLMethod('index_html', '')
+        ob = self.traverse('/VirtualHostBase/http/www.mysite.com:80/folder/VirtualHostRoot/doc/')
+        self.assertEqual(self.app.REQUEST['ACTUAL_URL'], 'http://www.mysite.com/doc/')
+        ob = self.traverse('/VirtualHostBase/http/www.mysite.com:80/folder/VirtualHostRoot/doc')
+        self.assertEqual(self.app.REQUEST['ACTUAL_URL'], 'http://www.mysite.com/doc')
+        ob = self.traverse('/VirtualHostBase/http/www.mysite.com:80/folder/VirtualHostRoot/')
+        self.assertEqual(self.app.REQUEST['ACTUAL_URL'], 'http://www.mysite.com/')
+        ob = self.traverse('/VirtualHostBase/http/www.mysite.com:80/folder/VirtualHostRoot')
+        self.assertEqual(self.app.REQUEST['ACTUAL_URL'], 'http://www.mysite.com/') 
+
 def gen_cases():
     for vbase, ubase in (
         ('', 'http://foo'),
-- 
2.30.9