From f63015e4c47db04fe1683cb1568661e8c798dc8e Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 29 Jul 2016 14:40:53 +0100 Subject: [PATCH] Fix email registration This would cause the request to 400 in the new vector that opens after you clicked the link in the email, as per the comment. --- lib/client.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/client.js b/lib/client.js index 888976f7c..b994272f4 100644 --- a/lib/client.js +++ b/lib/client.js @@ -2423,11 +2423,20 @@ MatrixClient.prototype.register = function(username, password, * @return {module:http-api.MatrixError} Rejects: with an error response. */ MatrixClient.prototype.registerRequest = function(data, kind, callback) { - var request_data = { - device_id: this.deviceId, - initial_device_display_name: this.defaultDeviceDisplayName, - }; + var request_data = {}; + // only add these if the app is sending something other than auth data + // subsequent calls to register with the same session will + // overwrite the parameters if any are passed, so it's important + // that if the app give no data, we send no data. + var number_of_params = Object.keys(data).length; + if (data.auth) --number_of_params; + if (number_of_params > 0) { + request_data = { + device_id: this.deviceId, + initial_device_display_name: this.defaultDeviceDisplayName, + }; + } // merge data into request_data for (var k in data) { if (data.hasOwnProperty(k)) { request_data[k] = data[k]; }