aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/DB/ConnectionFactory.php13
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/private/DB/ConnectionFactory.php b/lib/private/DB/ConnectionFactory.php
index c841a36bb5a..f5b8a9d3c2f 100644
--- a/lib/private/DB/ConnectionFactory.php
+++ b/lib/private/DB/ConnectionFactory.php
@@ -193,13 +193,14 @@ class ConnectionFactory {
$connectionParams['path'] = $dataDir . '/' . $name . '.db';
} else {
$host = $this->config->getValue('dbhost', '');
- if (strpos($host, ':')) {
- // Host variable may carry a port or socket.
- list($host, $portOrSocket) = explode(':', $host, 2);
- if (ctype_digit($portOrSocket)) {
- $connectionParams['port'] = $portOrSocket;
+ $matches = [];
+ if (preg_match('/^(.*):([^\]:]+)$/', $host, $matches)) {
+ // Host variable carries a port or socket.
+ $host = $matches[1];
+ if (is_numeric($matches[2])) {
+ $connectionParams['port'] = (int) $matches[2];
} else {
- $connectionParams['unix_socket'] = $portOrSocket;
+ $connectionParams['unix_socket'] = $matches[2];
}
}
$connectionParams['host'] = $host;