* Gorilla Websocket only allows one concurrent writer. As there are
multiple goroutines that could write concurrently to the websocket,
the websocket write needs to be protected by a Mutext. This is not
particular nice, but a complete rewrite of the connection handling
would be quite a lot of work.
see #556
* some REST API consumers (like the Synology NAS) do not allow
to use an array for the recipients. So, in order to support
those platforms as well, a 'recipient' string parameter is added.
As most users are perfectly fine with the array parameter, the
recipient parameter won't be exposed in the Swagger UI.
see #428
* golang channels are meant to be 1:1 channels, so if multiple
goroutines listen on the same channel for messages, only one will
receive the message and the others are not, which lead to lost
messages.
In order to fix that, we create a dedicated golang channel for every
websocket connection.
see #451
* instead of starting signal-cli in json-rpc mode with the '-u',
we start signal-cli without the '-u' parameter (also known as
multi-account mode). This makes it possible to register a number in
json-rpc mode.
* when multiple accounts are registered, signal-cli expects the account
specified with '-a'. In order to stay backwards compatible, the search
endpoint was extended with an optional number parameter. i.e:
'/search/{number}'. In case only one account is registered, the number
parameter can be omitted.
see #369
* added timeout, ignore_attachments and ignore_stories query parameter
to receive endpoint.
* added AUTO_RECEIVE_SCHEDULE_RECEIVE_TIMEOUT,
AUTO_RECEIVE_SCHEDULE_IGNORE_ATTACHMENTS and
AUTO_RECEIVE_SCHEDULE_IGNORE_STORIES environment variables to the
AUTO_RECEIVE_SCHEDULE functionality.
see #365
* added possibility to trust all known keys. This option doesn't require
the user to provide a safety number, but insted all known keys are
trusted. This option is obviously less secure and should only be used
for testing.
see #237