From d8a63bc2cddc005d8de3a38747abe219722e1112 Mon Sep 17 00:00:00 2001
From: "Fedor A. Fetisov" <faf@ossg.ru>
Date: Tue, 23 May 2017 16:16:00 +0300
Subject: [PATCH] Fix invalid algorithm in setting the value for a visitor's IP

---
 src/mibew/libs/chat.php | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/mibew/libs/chat.php b/src/mibew/libs/chat.php
index 85c3183f..ab480919 100644
--- a/src/mibew/libs/chat.php
+++ b/src/mibew/libs/chat.php
@@ -580,11 +580,10 @@ function get_remote_host()
     $has_proxy = isset($_SERVER['HTTP_X_FORWARDED_FOR'])
         && $_SERVER['HTTP_X_FORWARDED_FOR'] != $_SERVER['REMOTE_ADDR'];
     if ($has_proxy) {
-        $count = 0;
-        $ext_addr = preg_replace('/^([^,]+)(,\s.+)?/', '\\1', $_SERVER['HTTP_X_FORWARDED_FOR'], -1, $count);
-        if ($count > 1) {
-            $ext_addr = $ext_addr . ' (' . $_SERVER['HTTP_X_FORWARDED_FOR'] . ')';
-        }
+        $ips = explode(' ', $_SERVER['HTTP_X_FORWARDED_FOR'], 2);
+        $ext_addr = (count($ips) > 1)
+            ? $ips[0] . ' (' . $_SERVER['HTTP_X_FORWARDED_FOR'] . ')'
+            : $ips[0];
     }
 
     return isset($_SERVER['REMOTE_HOST']) ? $_SERVER['REMOTE_HOST'] : $ext_addr;