code updates for feed support of old and new feeds
diff --git a/app.js b/app.js
index 0f6d776..18a6ddb 100644
--- a/app.js
+++ b/app.js
@@ -8,6 +8,7 @@
 var request = require('request');
 var bodyParser = require('body-parser');
 var logger = require('./Logger');
+var RequestAgent = require('agentkeepalive');
 
 var ProviderUtils = require('./lib/utils.js');
 var ProviderHealth = require('./lib/health.js');
@@ -38,6 +39,10 @@
 // before deleting the associated trigger
 var retriesBeforeDelete = 5;
 
+// The maxSockets determines how many concurrent sockets the agent can have open per
+// host, is present in an agent by default with value ??.
+var maximumDbConnections = 50;
+
 // Allow invoking servers with self-signed certificates.
 process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
 
@@ -80,13 +85,17 @@
 
   var nanop = null;
 
+  var connectionAgent = new RequestAgent({
+    maxSockets: maximumDbConnections
+  });
+
   // no need for a promise here, but leaving code inplace until we prove out the question of cookie usage
   var promise = new Promise(function(resolve, reject) {
 
     logger.info('url is ' +  dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost);
     nanop = require('nano')(dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost);
     resolve(createDatabase (nanop));
-    
+
   });
 
   return promise;
diff --git a/lib/health.js b/lib/health.js
index bec14ab..ea417c9 100644
--- a/lib/health.js
+++ b/lib/health.js
@@ -7,5 +7,5 @@
   this.health = function (req, res) {
       res.send({triggerCount: Object.keys(providerUtils.triggers).length});
   };
-  
-}
\ No newline at end of file
+
+};
diff --git a/lib/utils.js b/lib/utils.js
index d84ccc3..af24b85 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -1,6 +1,6 @@
 var _ = require('lodash');
 var request = require('request');
-var Agent = require('agentkeepalive');
+var RequestAgent = require('agentkeepalive');
 
 module.exports = function(
   tid,
@@ -38,6 +38,10 @@
 
       var method = 'createTrigger';
 
+      // The maxSockets determines how many concurrent sockets the agent can have open per
+      // host, is present in an agent by default with value ??.
+      var maximumDbConnections = 50;
+
       // Cleanup connection when trigger is deleted.
       var sinceToUse = dataTrigger.since ? dataTrigger.since : "now";
       var nanoConnection;
@@ -47,21 +51,29 @@
         dbProtocol = dataTrigger.protocol;
       }
 
-      // this needs to be updated since users might not have cloudant.com in there host name
-      if (dataTrigger.host.indexOf('cloudant.com') !== -1) {
-        // construct cloudant URL
-        dbURL = dbProtocol + '://' + dataTrigger.user + ':' + dataTrigger.pass + '@' + dataTrigger.host;
+      // input["accounturl"] = "https://" + host;
+      // unless specified host will default to accounturl without the https:// in front
+      var dbHost;
+      if (dataTrigger.host) {
+    	  dbHost = dataTrigger.host;
       } else {
-        // construct couchDB URL
-        dbURL = dbProtocol + '://' + dataTrigger.host;
+    	  dbHost = dataTrigger.accounturl;
+    	  dbHost = dbHost.replace('https://','');
       }
 
+      var connectionAgent = new RequestAgent({
+    	  maxSockets: maximumDbConnections
+      });
+
+      // both couch and cloudant should have their URLs in the username:password@host format
+      dbURL = dbProtocol + '://' + dataTrigger.user + ':' + dataTrigger.pass + '@' + dbHost;
+
       // add port if specified
       if (dataTrigger.port) {
         dbURL = dbURL + ':' + dataTrigger.port;
       }
 
-      logger.info(tid, method,'found trigger accounturl: ', dbURL);
+      logger.info(tid, method,'found trigger url: ', dbURL);
       nanoConnection = require('nano')(dbURL);
 
       // no need for a promise here, but leaving code inplace until we prove out the question of cookie usage
@@ -258,7 +270,11 @@
         var triggerName = dataTrigger.callback.action.name;
         var triggerObj = that.parseQName(triggerName);
         logger.info(tid, method, 'invokeWhiskAction: change =', change);
+
         var form = change.hasOwnProperty('doc') ? change.doc : change;
+        // always store changes
+        //var form = change;
+
         logger.info(tid, method, 'invokeWhiskAction: form =', form);
         logger.info(tid, method, 'for trigger', id, 'invoking action', triggerName, 'with db update', JSON.stringify(form));