From ec6c6187512286aecb27b269b28148a11222371e Mon Sep 17 00:00:00 2001
From: Ryan Wilson <syndicated.life@gmail.com>
Date: Sat, 25 Apr 2015 08:05:33 -0700
Subject: [PATCH 1/3] use replicaset if configured

Signed-off-by: Ryan Wilson <syndicated.life@gmail.com>
---
 src/database/mongo.js       | 11 ++++++++++-
 tests/mocks/databasemock.js |  8 ++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/database/mongo.js b/src/database/mongo.js
index be473e616c..1632d41334 100644
--- a/src/database/mongo.js
+++ b/src/database/mongo.js
@@ -73,7 +73,16 @@
 			nconf.set('mongo:database', '0');
 		}
 
-		var connString = 'mongodb://' + usernamePassword + nconf.get('mongo:host') + ':' + nconf.get('mongo:port') + '/' + nconf.get('mongo:database');
+		var hosts = nconf.get('mongo:host').split(',');
+		var ports = nconf.get('mongo:port').split(',');
+		var servers = [];
+
+        for (var i = 0; i < hosts.length; i++) {
+            servers.push(hosts[i] + ':' + ports[i]);
+        }
+
+		var connString = 'mongodb://' + usernamePassword + servers.join() + '/' + nconf.get('mongo:database');
+
 		var connOptions = {
 			server: {
 				poolSize: parseInt(nconf.get('mongo:poolSize'), 10) || 10
diff --git a/tests/mocks/databasemock.js b/tests/mocks/databasemock.js
index d3dea94a8c..a895d25c8a 100644
--- a/tests/mocks/databasemock.js
+++ b/tests/mocks/databasemock.js
@@ -45,6 +45,14 @@
 				'    "password": "",' + '\n' +
 				'    "database": "1"' + '\n' +
 			'}\n'+
+			' or (mongo) in a replicaset' + '\n' +
+			'"test_database": {' + '\n' +
+		    '    "host": "127.0.0.1,127.0.0.1,127.0.0.1",' + '\n' +
+		    '    "port": "27017,27018,27019",' + '\n' +
+		    '    "username": "",' + '\n' +
+		    '    "password": "",' + '\n' +
+		    '    "database": "nodebb_test"' + '\n' +
+		    '}\n'+
 			'==========================================================='
 		);
 		winston.error(errorText);

From c354929569c21b5656ad88a803dd69f0dbe362af Mon Sep 17 00:00:00 2001
From: Ryan Wilson <syndicated.life@gmail.com>
Date: Sat, 25 Apr 2015 08:16:27 -0700
Subject: [PATCH 2/3] handled port as int with toString()

Signed-off-by: Ryan Wilson <syndicated.life@gmail.com>
---
 src/database/mongo.js | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/database/mongo.js b/src/database/mongo.js
index 1632d41334..adcb0a44e0 100644
--- a/src/database/mongo.js
+++ b/src/database/mongo.js
@@ -74,7 +74,7 @@
 		}
 
 		var hosts = nconf.get('mongo:host').split(',');
-		var ports = nconf.get('mongo:port').split(',');
+		var ports = nconf.get('mongo:port').toString().split(',');
 		var servers = [];
 
         for (var i = 0; i < hosts.length; i++) {
@@ -161,4 +161,3 @@
 	};
 
 }(exports));
-

From 6f66209428a627ae3c30cc0a372b87acbf65e2cf Mon Sep 17 00:00:00 2001
From: Ryan Wilson <syndicated.life@gmail.com>
Date: Mon, 27 Apr 2015 11:08:58 -0700
Subject: [PATCH 3/3] use tabs per barisusakli

---
 src/database/mongo.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/database/mongo.js b/src/database/mongo.js
index adcb0a44e0..a9ada1d424 100644
--- a/src/database/mongo.js
+++ b/src/database/mongo.js
@@ -77,9 +77,9 @@
 		var ports = nconf.get('mongo:port').toString().split(',');
 		var servers = [];
 
-        for (var i = 0; i < hosts.length; i++) {
-            servers.push(hosts[i] + ':' + ports[i]);
-        }
+		for (var i = 0; i < hosts.length; i++) {
+			servers.push(hosts[i] + ':' + ports[i]);
+		}
 
 		var connString = 'mongodb://' + usernamePassword + servers.join() + '/' + nconf.get('mongo:database');