From e77c9bb97ed56d30c08f7d7ea9c06dd80ac9467b Mon Sep 17 00:00:00 2001
From: josh4trunks <joshruehlig@gmail.com>
Date: Wed, 4 Jun 2014 22:50:23 -0700
Subject: [PATCH] Work with MySQL Sockets

This passes anything that is not a valid port (0<int<65535) as a unix socket.
I tested this with unix sockets; this needs to be tested with a non-standard mysql port as well but I don't foresee any issues.

To use a unix socket, even one different than PHP's mysql.default_socket..
* Database Host = localhost:/path/to/socket
---
 lib/private/db.php | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/private/db.php b/lib/private/db.php
index 422f783c745..16030a20f89 100644
--- a/lib/private/db.php
+++ b/lib/private/db.php
@@ -65,6 +65,9 @@ class OC_DB {
 		$type = OC_Config::getValue( "dbtype", "sqlite" );
 		if(strpos($host, ':')) {
 			list($host, $port)=explode(':', $host, 2);
+			if(!is_int($port)||$port<1||$port>65535) {
+				$socket=true;
+			}
 		} else {
 			$port=false;
 		}
@@ -89,7 +92,11 @@ class OC_DB {
 				'dbname' => $name,
 			);
 			if (!empty($port)) {
-				$connectionParams['port'] = $port;
+				if ($socket) {
+					$connectionParams['unix_socket'] = $port;
+				} else {
+					$connectionParams['port'] = $port;
+				}
 			}
 		}
 
-- 
GitLab