diff --git a/CHANGES.rst b/CHANGES.rst index fc6385cb1..caad193b6 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,38 @@ +Changes in synapse 0.1.2 (2014-08-29) +===================================== + +Webclient: + * Add basic call state UI for VoIP calls. + +Changes in synapse 0.1.1 (2014-08-29) +===================================== + +Homeserver: + * Fix bug that caused the event stream to not notify some clients about + changes. + +Changes in synapse 0.1.0 (2014-08-29) +===================================== +Presence has been reenabled in this release. + +Homeserver: + * Update client to server API, including: + - Use a more consistent url scheme. + - Provide more useful information in the initial sync api. + * Change the presence handling to be much more efficient. + * Change the presence server to server API to not require explicit polling of + all users who share a room with a user. + * Fix races in the event streaming logic. + +Webclient: + * Update to use new client to server API. + * Add basic VOIP support. + * Add idle timers that change your status to away. + * Add recent rooms column when viewing a room. + * Various network efficiency improvements. + * Add basic mobile browser support. + * Add a settings page. + Changes in synapse 0.0.1 (2014-08-22) ===================================== Presence has been disabled in this release due to a bug that caused the diff --git a/VERSION b/VERSION index 8acdd82b7..d917d3e26 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.1 +0.1.2 diff --git a/synapse/__init__.py b/synapse/__init__.py index 47fc1b2ea..04200060b 100644 --- a/synapse/__init__.py +++ b/synapse/__init__.py @@ -16,4 +16,4 @@ """ This is a reference implementation of a synapse home server. """ -__version__ = "0.0.1" +__version__ = "0.1.2" diff --git a/synapse/notifier.py b/synapse/notifier.py index cb544e988..3260aa744 100644 --- a/synapse/notifier.py +++ b/synapse/notifier.py @@ -106,7 +106,9 @@ class Notifier(object): # TODO (erikj): Can we make this more efficient by hitting the # db once? - for listener in listeners: + + @defer.inlineCallbacks + def notify(listener): events, end_key = yield room_source.get_new_events_for_user( listener.user, listener.from_token.room_key, @@ -122,6 +124,13 @@ class Notifier(object): self, events, listener.from_token, end_token ) + def eb(failure): + logger.exception("Failed to notify listener", failure) + + yield defer.DeferredList( + [notify(l).addErrback(eb) for l in listeners] + ) + @defer.inlineCallbacks @log_function def on_new_user_event(self, users=[], rooms=[]): @@ -140,7 +149,8 @@ class Notifier(object): for room in rooms: listeners |= self.rooms_to_listeners.get(room, set()).copy() - for listener in listeners: + @defer.inlineCallbacks + def notify(listener): events, end_key = yield presence_source.get_new_events_for_user( listener.user, listener.from_token.presence_key, @@ -156,6 +166,13 @@ class Notifier(object): self, events, listener.from_token, end_token ) + def eb(failure): + logger.exception("Failed to notify listener", failure) + + yield defer.DeferredList( + [notify(l).addErrback(eb) for l in listeners] + ) + def get_events_for(self, user, rooms, pagination_config, timeout): """ For the given user and rooms, return any new events for them. If there are no new events wait for up to `timeout` milliseconds for any