From a4ce95c84dca904abb57d30efa2a9d5d68eeda1b Mon Sep 17 00:00:00 2001
From: Dominik Eckelmann <eckelmann@cosmocode.de>
Date: Wed, 20 Feb 2013 10:44:25 +0100
Subject: [PATCH] fixed auth_browseruid on IE9

IE9 send different HTTP_ACCEPT_LANGUAGE header on ajax request. This causes different results from auth_browseruid. This patch removes the HTTP_ACCEPT_LANGUAGE from the browser id calculation.
---
 _test/tests/inc/auth_browseruid.test.php | 30 ++++++++++++++++++++++++
 inc/auth.php                             |  1 -
 2 files changed, 30 insertions(+), 1 deletion(-)
 create mode 100644 _test/tests/inc/auth_browseruid.test.php

diff --git a/_test/tests/inc/auth_browseruid.test.php b/_test/tests/inc/auth_browseruid.test.php
new file mode 100644
index 000000000..d33552582
--- /dev/null
+++ b/_test/tests/inc/auth_browseruid.test.php
@@ -0,0 +1,30 @@
+<?php
+
+class auth_browseruid_test extends DokuWikiTest {
+
+
+    /**
+     * regression test to ensure correct browser id on IE9.
+     *
+     * IE9 send different HTTP_ACCEPT_LANGUAGE header on ajax request.
+     */
+    function testIE9JsVsDefault() {
+
+        // javascript request
+        $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)';
+        $_SERVER['HTTP_ACCEPT_ENCODING'] = 'gzip, deflate';
+        $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'de';
+        unset($_SERVER['HTTP_ACCEPT_CHARSET']);
+        $javascriptId = auth_browseruid();
+
+        // default request
+        $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)';
+        $_SERVER['HTTP_ACCEPT_ENCODING'] = 'gzip, deflate';
+        $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'de-DE';
+        $normalId = auth_browseruid();
+
+        $this->assertEquals($normalId, $javascriptId);
+
+    }
+
+}
\ No newline at end of file
diff --git a/inc/auth.php b/inc/auth.php
index 9566a2615..d82b8b5dd 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -311,7 +311,6 @@ function auth_browseruid() {
     $uid = '';
     $uid .= $_SERVER['HTTP_USER_AGENT'];
     $uid .= $_SERVER['HTTP_ACCEPT_ENCODING'];
-    $uid .= $_SERVER['HTTP_ACCEPT_LANGUAGE'];
     $uid .= $_SERVER['HTTP_ACCEPT_CHARSET'];
     $uid .= substr($ip, 0, strpos($ip, '.'));
     $uid = strtolower($uid);
-- 
GitLab