aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorglkrlos <glkrlos@hotmail.com>2015-05-27 18:45:16 +0200
committerNaios <naios-dev@live.de>2015-05-28 18:30:03 +0200
commitfd660d725d62f56ab20e5bd170dc2614e202d050 (patch)
tree38c0d99dd344a021a2c65d5cd07b1677cd3d7e4c /src
parent170794a0298364b13312a65abd8738ea298723dc (diff)
Core/Updater: Fix issues when connecting through unix sockets.
* closes #14766 * closes #14759 Signed-off-by: Naios <naios-dev@live.de>
Diffstat (limited to 'src')
-rw-r--r--src/server/shared/Updater/DBUpdater.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/server/shared/Updater/DBUpdater.cpp b/src/server/shared/Updater/DBUpdater.cpp
index e5c571e4517..20ded669cec 100644
--- a/src/server/shared/Updater/DBUpdater.cpp
+++ b/src/server/shared/Updater/DBUpdater.cpp
@@ -349,8 +349,27 @@ void DBUpdater<T>::ApplyFile(DatabaseWorkerPool<T>& pool, std::string const& hos
args.push_back("-h" + host);
args.push_back("-u" + user);
args.push_back("-p" + password);
+
+ // Check if we want to connect through ip or socket (Unix only)
+#ifdef _WIN32
+
args.push_back("-P" + port_or_socket);
+#else
+
+ if (!std::isdigit(port_or_socket[0]))
+ {
+ // We can't check here if host == "." because is named localhost if socket option is enabled
+ args.push_back("-P0");
+ args.push_back("--protocol=SOCKET");
+ args.push_back("-S" + port_or_socket);
+ }
+ else
+ // generic case
+ args.push_back("-P" + port_or_socket);
+
+#endif
+
// Set the default charset to utf8
args.push_back("--default-character-set=utf8");