Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Add newline to EOF | Kegan Dougal | 2015-02-11 | 1 | -0/+1 |
| | |||||
* | Notify ASes for events sent by other users in a room which an AS user is a ↵ | Kegan Dougal | 2015-02-11 | 3 | -11/+31 |
| | | | | part of. | ||||
* | Merge branch 'develop' into application-services | Kegan Dougal | 2015-02-11 | 24 | -79/+214 |
|\ | |||||
| * | Merge branch 'develop' into single_source_version_and_dependencies | Mark Haines | 2015-02-10 | 7 | -12/+12 |
| |\ | |||||
| | * | Fix code-style | Mark Haines | 2015-02-10 | 7 | -12/+12 |
| | | | |||||
| * | | Single source version and python dependencies, prevent people accidentally ↵ | Mark Haines | 2015-02-10 | 1 | -3/+3 |
| |/ | | | | | | | installing with easy_install, use scripts rather than entry_points to install synctl | ||||
| * | Log all the exits from _attempt_new_transaction | Erik Johnston | 2015-02-10 | 1 | -2/+7 |
| | | |||||
| * | Code-style fixes | Mark Haines | 2015-02-10 | 11 | -36/+57 |
| | | |||||
| * | Sign auth_chains when returned by /state/ requests | Erik Johnston | 2015-02-10 | 1 | -0/+11 |
| | | |||||
| * | Merge pull request #58 from matrix-org/get_event_counters | Mark Haines | 2015-02-10 | 1 | -26/+62 |
| |\ | | | | | | | Add performance counters for different stages of loading events | ||||
| | * | Fix pyflakes | Mark Haines | 2015-02-10 | 1 | -3/+3 |
| | | | |||||
| | * | Add performance counters for different stages of loading events | Mark Haines | 2015-02-10 | 1 | -24/+60 |
| | | | |||||
| * | | yaml.load expects strings to be a yaml rather than file | Erik Johnston | 2015-02-10 | 1 | -1/+2 |
| | | | |||||
| * | | Use yaml logging config format because it is much nicer | Erik Johnston | 2015-02-10 | 1 | -1/+2 |
| | | | |||||
| * | | Merge branch 'release-v0.6.2' of github.com:matrix-org/synapse into develop | Erik Johnston | 2015-02-10 | 1 | -1/+6 |
| |\ \ | | |/ | |/| | |||||
| | * | SYN-258: get_recent_events_for_room only accepts stream tokens, convert the ↵ | Mark Haines | 2015-02-06 | 1 | -1/+3 |
| | | | | | | | | | | | | topological token to a stream token before passing it to get_recent_events_for_room | ||||
| | * | Explicitly list the RejectedReasons that we can prove | Erik Johnston | 2015-02-06 | 1 | -1/+6 |
| | | | |||||
| * | | Convert directory paths to absolute paths before daemonizing | Mark Haines | 2015-02-09 | 1 | -2/+3 |
| | | | |||||
| * | | Merge pull request #56 from matrix-org/room_initial_sync_perf | Mark Haines | 2015-02-09 | 4 | -21/+43 |
| |\ \ | | | | | | | | | During room intial sync, only calculate current state once. | ||||
| | * | | During room intial sync, only calculate current state once. | Erik Johnston | 2015-02-09 | 4 | -21/+43 |
| | | | | |||||
| * | | | Merge pull request #57 from matrix-org/transaction_counters | Erik Johnston | 2015-02-09 | 1 | -2/+31 |
| |\ \ \ | | | | | | | | | | | Transaction counters | ||||
| | * | | | Use the transaction 'desc' rather than 'name', increment the txn_ids in | Mark Haines | 2015-02-09 | 1 | -3/+3 |
| | | | | | | | | | | | | | | | | | | | | txn names | ||||
| | * | | | Formatting | Mark Haines | 2015-02-09 | 1 | -1/+0 |
| | | | | | |||||
| | * | | | Performance counters for database transaction names | Mark Haines | 2015-02-09 | 1 | -1/+31 |
| | |/ / | |||||
| * | | | Need to use re.search if looking for matches not at the start of the string. ↵ | David Baker | 2015-02-09 | 1 | -3/+3 |
| | | | | | | | | | | | | | | | | Also comparisons with None should be 'is'. | ||||
| * | | | oops | Matthew Hodgson | 2015-02-09 | 1 | -1/+1 |
| | | | | |||||
| * | | | oops | Matthew Hodgson | 2015-02-09 | 1 | -1/+1 |
| | | | | |||||
| * | | | only do word-boundary patches on bodies for now | Matthew Hodgson | 2015-02-09 | 2 | -2/+5 |
| |/ / | |||||
* | | | Merge branch 'develop' into application-services | Kegan Dougal | 2015-02-09 | 17 | -137/+238 |
|\| | | |||||
| * | | Merge pull request #55 from matrix-org/profiling | Erik Johnston | 2015-02-09 | 6 | -6/+60 |
| |\ \ | | | | | | | | | Profiling | ||||
| | * | | Fix typo | Erik Johnston | 2015-02-09 | 1 | -1/+1 |
| | | | | |||||
| | * | | Add looping_call to Clock | Erik Johnston | 2015-02-09 | 1 | -1/+9 |
| | | | | |||||
| | * | | Log database time every 10s and log as percentage | Erik Johnston | 2015-02-09 | 1 | -2/+2 |
| | | | | |||||
| | * | | Time how long we're spending on the database thread | Erik Johnston | 2015-02-09 | 2 | -0/+27 |
| | | | | |||||
| | * | | Log when we receive a request, when we send a response and how long it took ↵ | Erik Johnston | 2015-02-09 | 4 | -5/+24 |
| | | | | | | | | | | | | | | | | to process it. | ||||
| * | | | Fix server default rule injection (downwards, not upwards!) | David Baker | 2015-02-09 | 1 | -6/+6 |
| |/ / | |||||
| * | | glob *s should probably be non-greedy | Matthew Hodgson | 2015-02-08 | 1 | -1/+1 |
| | | | |||||
| * | | oops | Matthew Hodgson | 2015-02-08 | 1 | -1/+1 |
| | | | |||||
| * | | kill off fnmatch in favour of word-boundary based push alerts (untested) | Matthew Hodgson | 2015-02-08 | 1 | -12/+20 |
| | | | |||||
| * | | don't give up if we can't create default avatars during tests | Matthew Hodgson | 2015-02-07 | 1 | -9/+12 |
| | | | |||||
| * | | ...and here's the actual impl. git fail. | Matthew Hodgson | 2015-02-07 | 2 | -25/+46 |
| | | | |||||
| * | | thou shalt specify a content-length | Matthew Hodgson | 2015-02-07 | 1 | -0/+1 |
| | | | |||||
| * | | i hate weakly typed languages | Matthew Hodgson | 2015-02-07 | 1 | -1/+1 |
| | | | |||||
| * | | SYN-258: get_recent_events_for_room only accepts stream tokens, convert the ↵ | Mark Haines | 2015-02-06 | 1 | -1/+3 |
| |/ | | | | | | | topological token to a stream token before passing it to get_recent_events_for_room | ||||
| * | Move delta/v13.sql to delta/v12.sql | Erik Johnston | 2015-02-06 | 2 | -24/+11 |
| | | |||||
| * | Don't query auth if the only difference is events that were rejected due to ↵ | Erik Johnston | 2015-02-06 | 1 | -56/+72 |
| | | | | | | | | auth. | ||||
| * | Make seen_ids a set | Erik Johnston | 2015-02-06 | 1 | -1/+3 |
| | | |||||
| * | Return body of response in HttpResponseException | Erik Johnston | 2015-02-06 | 1 | -1/+2 |
| | | |||||
| * | Handle the fact the list.remove raises if element doesn't exist | Erik Johnston | 2015-02-06 | 1 | -4/+10 |
| | | |||||
* | | Fix bugs so lazy room joining works as intended. | Kegan Dougal | 2015-02-09 | 3 | -12/+23 |
| | | |||||
* | | Modify auth.get_user_by_req for authing appservices directly. | Kegan Dougal | 2015-02-09 | 2 | -19/+19 |
| | | | | | | | | | | | | Add logic to map the appservice token to the autogenned appservice user ID. Add unit tests for all forms of get_user_by_req (user/appservice, valid/bad/missing tokens) | ||||
* | | Register a user account for the AS when the AS registers. Add 'sender' ↵ | Kegan Dougal | 2015-02-09 | 5 | -4/+14 |
| | | | | | | | | column to AS table. | ||||
* | | Add errcodes for appservice registrations. | Kegan Dougal | 2015-02-06 | 1 | -4/+7 |
| | | |||||
* | | Pyflakes: unused variable. | Kegan Dougal | 2015-02-06 | 1 | -1/+1 |
| | | |||||
* | | Grant ASes the ability to delete aliases in their own namespace. | Kegan Dougal | 2015-02-06 | 2 | -7/+52 |
| | | |||||
* | | Grant ASes the ability to create alias in their own namespace. | Kegan Dougal | 2015-02-06 | 4 | -24/+63 |
| | | | | | | | | | | | | Add a new errcode type M_EXCLUSIVE when users try to create aliases inside AS namespaces, and when ASes try to create aliases outside their own namespace. | ||||
* | | Add m.login.application_service registration procedure. | Kegan Dougal | 2015-02-05 | 3 | -1/+44 |
| | | | | | | | | | | This allows known application services to register any user ID under their own user namespace(s). | ||||
* | | Dependency inject ApplicationServiceApi when creating ↵ | Kegan Dougal | 2015-02-05 | 2 | -4/+6 |
| | | | | | | | | ApplicationServicesHandler. | ||||
* | | Add delta sql file. | Kegan Dougal | 2015-02-05 | 1 | -0/+33 |
| | | |||||
* | | Prevent user IDs in AS namespaces being created/deleted by humans. | Kegan Dougal | 2015-02-05 | 1 | -0/+16 |
| | | |||||
* | | Prevent aliases in AS namespaces being created/deleted by users. Check with ↵ | Kegan Dougal | 2015-02-05 | 1 | -9/+33 |
| | | | | | | | | ASes when queried for room aliases via federation. | ||||
* | | Merge branch 'develop' into application-services | Kegan Dougal | 2015-02-05 | 1 | -4/+0 |
|\| | |||||
| * | priority class now dealt with in namespaced rule_id | David Baker | 2015-02-05 | 1 | -4/+0 |
| | | |||||
* | | Merge branch 'develop' into application-services | Kegan Dougal | 2015-02-05 | 5 | -163/+222 |
|\| | |||||
| * | Give server default rules the 'default' attribute and fix various brokenness. | David Baker | 2015-02-05 | 3 | -3/+9 |
| | | |||||
| * | Server default rules now of all kinds rather than all being at lowest prio. | David Baker | 2015-02-05 | 4 | -51/+98 |
| | | |||||
| * | namespace rule IDs to be unique within their scope and rule type. | David Baker | 2015-02-05 | 1 | -123/+129 |
| | | |||||
* | | Fix unit tests. | Kegan Dougal | 2015-02-05 | 1 | -0/+6 |
| | | |||||
* | | Add CS extension for masquerading as users within the namespaces specified ↵ | Kegan Dougal | 2015-02-05 | 1 | -0/+23 |
| | | | | | | | | by the AS. | ||||
* | | Merge branch 'develop' into application-services | Kegan Dougal | 2015-02-05 | 24 | -400/+642 |
|\| | |||||
| * | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2015-02-05 | 1 | -5/+12 |
| |\ | | | | | | | | | | federation_client_retries | ||||
| | * | SYN-202: Log as WARN the 404 'Presence information not visible' errors ↵ | Erik Johnston | 2015-02-05 | 1 | -5/+12 |
| | | | | | | | | | | | | instead of as ERROR since they were spamming the logs | ||||
| * | | Connection errors in twisted aren't RuntimeErrors | Erik Johnston | 2015-02-05 | 1 | -2/+2 |
| | | | |||||
| * | | Pass through list of room hosts from room alias query to federation so that ↵ | Erik Johnston | 2015-02-05 | 3 | -15/+22 |
| | | | | | | | | | | | | it can retry against different room hosts | ||||
| * | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2015-02-04 | 13 | -45/+141 |
| |\| | | | | | | | | | | federation_client_retries | ||||
| | * | More s/instance_handle/profile_tag/ | David Baker | 2015-02-04 | 1 | -5/+5 |
| | | | |||||
| | * | s/instance_handle/profile_tag/ | David Baker | 2015-02-03 | 8 | -37/+37 |
| | | | |||||
| | * | Use set_tweak instead of set_sound | David Baker | 2015-02-03 | 2 | -3/+4 |
| | | | |||||
| * | | Merge branch 'signature_failures' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2015-02-04 | 3 | -9/+15 |
| |\ \ | | | | | | | | | | | | | federation_client_retries | ||||
| | * | | Change context.auth_events to what the auth_events would be bases on ↵ | Erik Johnston | 2015-02-04 | 3 | -9/+15 |
| | | | | | | | | | | | | | | | | context.current_state, rather than based on the auth_events from the event. | ||||
| * | | | Apply sanity to the transport client interface. Convert 'make_join' and ↵ | Erik Johnston | 2015-02-04 | 6 | -71/+130 |
| | | | | | | | | | | | | | | | | 'send_join' to accept iterables of destinations | ||||
| * | | | When returning lists of servers from alias lookups, put the current server ↵ | Erik Johnston | 2015-02-04 | 1 | -1/+10 |
| | | | | | | | | | | | | | | | | first in the list | ||||
| * | | | Retry make_join | Erik Johnston | 2015-02-04 | 1 | -7/+12 |
| |/ / | |||||
| * | | Brief comment on why we do some things on every call to persist_event and ↵ | Erik Johnston | 2015-02-04 | 1 | -0/+6 |
| | | | | | | | | | | | | not others | ||||
| * | | Fix state resolution to remember join_rules is a type of auth event. | Erik Johnston | 2015-02-04 | 1 | -1/+13 |
| | | | |||||
| * | | Rearrange persist_event so that do all the queries that need to be done ↵ | Erik Johnston | 2015-02-04 | 3 | -72/+77 |
| | | | | | | | | | | | | before returning early if we have already persisted that event. | ||||
| * | | Add doc to get_event | Erik Johnston | 2015-02-03 | 1 | -0/+15 |
| | | | |||||
| * | | New line | Erik Johnston | 2015-02-03 | 1 | -1/+1 |
| | | | |||||
| * | | Neaten the handling of state and auth_chain up a bit | Erik Johnston | 2015-02-03 | 1 | -27/+30 |
| | | | |||||
| * | | Actually, the old prune_event function was non-deterministic, so no point ↵ | Erik Johnston | 2015-02-03 | 2 | -91/+4 |
| | | | | | | | | | | | | keeping it around :( | ||||
| * | | Remove unused imports | Erik Johnston | 2015-02-03 | 1 | -5/+0 |
| | | | |||||
| * | | Add new FederationBase | Erik Johnston | 2015-02-03 | 1 | -0/+126 |
| | | | |||||
| * | | Keep around the old (buggy) version of the prune_event function so that we ↵ | Erik Johnston | 2015-02-03 | 4 | -137/+92 |
| | | | | | | | | | | | | can use it to check signatures for events on old servers | ||||
| * | | Don't completely die if get auth_chain or querying auth_chain requests fail | Erik Johnston | 2015-02-03 | 1 | -63/+72 |
| | | | |||||
| * | | Set combinations is | and not + | Erik Johnston | 2015-02-03 | 1 | -2/+2 |
| | | | |||||
| * | | Spelling | Erik Johnston | 2015-02-03 | 1 | -1/+1 |
| | | | |||||
| * | | Give exception better message | Erik Johnston | 2015-02-03 | 1 | -1/+1 |
| | | | |||||
| * | | Add FIXME note. | Erik Johnston | 2015-02-03 | 1 | -0/+2 |
| | | | |||||
| * | | PEP8 | Erik Johnston | 2015-02-03 | 1 | -1/+0 |
| | | | |||||
| * | | Return rejected events if asked for it over federation. | Erik Johnston | 2015-02-03 | 1 | -0/+1 |
| | | | |||||
| * | | Try to ensure we don't persist an event we have already persisted. In ↵ | Erik Johnston | 2015-02-03 | 2 | -18/+64 |
| | | | | | | | | | | | | persist_event check if we already have the event, if so then update instead of replacing so that we don't cause a bump of the stream_ordering. | ||||
| * | | Don't bother requesting PDUs with bad signatures from the same server | Erik Johnston | 2015-02-02 | 1 | -16/+17 |
| | | | |||||
| * | | Don't fail an entire request if one of the returned events fails a signature ↵ | Erik Johnston | 2015-02-02 | 2 | -34/+94 |
| | | | | | | | | | | | | check. If an event does fail a signature check, look in the local database and request it from the originator. | ||||
* | | | Fix user query checks. HS>AS pushing now works. | Kegan Dougal | 2015-02-05 | 2 | -21/+44 |
| | | | |||||
* | | | Serialize events before sending to ASes | Kegan Dougal | 2015-02-05 | 1 | -0/+10 |
| | | | |||||
* | | | Glue AS work to general event notifications. Add more exception handling ↵ | Kegan Dougal | 2015-02-05 | 4 | -16/+42 |
| | | | | | | | | | | | | when poking ASes. | ||||
* | | | Add unknown room alias check. Call it from directory_handler.get_association | Kegan Dougal | 2015-02-05 | 2 | -43/+61 |
| | | | |||||
* | | | Add unknown user ID check. Use store.get_aliases_for_room(room_id) when ↵ | Kegan Dougal | 2015-02-05 | 1 | -5/+19 |
| | | | | | | | | | | | | searching for services by alias. | ||||
* | | | Add hs_token column and generate a different token f.e application service. | Kegan Dougal | 2015-02-05 | 6 | -16/+29 |
| | | | |||||
* | | | Impl push_bulk function | Kegan Dougal | 2015-02-05 | 2 | -2/+19 |
| | | | |||||
* | | | Add SimpleHttpClient.put_json with the same semantics as get_json. | Kegan Dougal | 2015-02-04 | 1 | -2/+46 |
| | | | |||||
* | | | Update user/alias query APIs to use new format of SimpleHttpClient.get_json | Kegan Dougal | 2015-02-04 | 2 | -8/+10 |
| | | | |||||
* | | | Modify API for SimpleHttpClient.get_json and update usages. | Kegan Dougal | 2015-02-04 | 3 | -47/+61 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, this would only return the HTTP body as JSON, and discard other response information (e.g. the HTTP response code). This has now been changed to throw a CodeMessageException on a non-2xx response, with the response code and body, which can then be parsed as JSON. Affected modules include: - Registration/Login (when using an email for IS auth) | ||||
* | | | Add query_user/alias APIs. | Kegan Dougal | 2015-02-04 | 2 | -14/+59 |
| | | | |||||
* | | | Merge branch 'develop' into application-services | Kegan Dougal | 2015-02-04 | 4 | -1/+96 |
|\ \ \ | | |/ | |/| | |||||
| * | | Merge pull request #46 from matrix-org/identicons | Mark Haines | 2015-02-02 | 3 | -0/+54 |
| |\ \ | | | | | | | | | Add a media/v1/identicon resource for generating identicons | ||||
| | * | | Add pydenticon to python_dependencies | Mark Haines | 2015-02-02 | 1 | -0/+1 |
| | | | | |||||
| | * | | Add Cache-Control header to identicon | Mark Haines | 2015-02-02 | 1 | -0/+3 |
| | | | | |||||
| | * | | Fix setting identicon width and height | Mark Haines | 2015-02-02 | 1 | -2/+2 |
| | | | | |||||
| | * | | Spell height more correctly | Mark Haines | 2015-02-02 | 1 | -1/+1 |
| | | | | |||||
| | * | | Add a media/v1/identicon resource for generating identicons using pydenticon | Mark Haines | 2015-02-02 | 2 | -0/+50 |
| | | | | |||||
| * | | | Generate a list of dependencies from synapse/python_dependencies.py | Mark Haines | 2015-02-02 | 1 | -0/+41 |
| |/ / | |||||
| * | | Merge master into develop | Mark Haines | 2015-02-02 | 1 | -1/+1 |
| |\ \ | | |/ | |/| | | | | | | | | | | Conflicts: README.rst setup.py | ||||
| | * | Bump version to 0.6.1d | Mark Haines | 2015-02-02 | 1 | -1/+1 |
| | | | |||||
| | * | Bump version | Erik Johnston | 2015-02-02 | 1 | -1/+1 |
| | | | |||||
* | | | Fix bug in store defer. Add more unit tests. | Kegan Dougal | 2015-02-04 | 1 | -4/+14 |
| | | | |||||
* | | | Begin to add unit tests for appservice glue and regex testing. | Kegan Dougal | 2015-02-04 | 2 | -4/+18 |
| | | | |||||
* | | | Add stub ApplicationServiceApi and glue it with the handler. | Kegan Dougal | 2015-02-04 | 4 | -4/+39 |
| | | | |||||
* | | | Add appservice package and move ApplicationService into it. | Kegan Dougal | 2015-02-03 | 4 | -105/+138 |
| | | | |||||
* | | | Implement restricted namespace checks. Begin fleshing out the main hook for ↵ | Kegan Dougal | 2015-02-03 | 2 | -5/+35 |
| | | | | | | | | | | | | notifying application services. | ||||
* | | | Add namespace constants. Add restrict_to option to limit namespace checks. | Kegan Dougal | 2015-02-03 | 2 | -27/+39 |
| | | | |||||
* | | | Everyone loves SQL typos | Kegan Dougal | 2015-02-03 | 1 | -1/+1 |
| | | | |||||
* | | | Implement regex checks for app services. | Kegan Dougal | 2015-02-03 | 2 | -29/+67 |
| | | | | | | | | | | | | | | | Expose handler.get_services_for_event which manages the checks for all services. | ||||
* | | | Add defers in the right places. | Kegan Dougal | 2015-02-02 | 1 | -0/+2 |
| | | | |||||
* | | | Implement txns for AS (un)registration. | Kegan Dougal | 2015-02-02 | 3 | -23/+102 |
| | | | |||||
* | | | Actually merge into develop. | Kegan Dougal | 2015-02-02 | 1 | -8/+1 |
| | | | |||||
* | | | Merge branch 'develop' into application-services | Kegan Dougal | 2015-02-02 | 64 | -1233/+5153 |
|\| | | | | | | | | | | | | | | | | | Conflicts: synapse/handlers/__init__.py synapse/storage/__init__.py | ||||
| * | | Ignore empty strings for display names & room names in notifications | David Baker | 2015-01-31 | 1 | -2/+2 |
| | | | |||||
| * | | Again, don't assume all member events have displayname. | David Baker | 2015-01-30 | 1 | -1/+1 |
| | | | |||||
| * | | Don't assume all member events have a display nme. | David Baker | 2015-01-30 | 1 | -4/+5 |
| | | | |||||
| * | | Resign events when we return them via /query_auth/ | Erik Johnston | 2015-01-30 | 1 | -0/+9 |
| | | | |||||
| * | | Return empty list rather than None when there are no emphemeral events for a ↵ | Mark Haines | 2015-01-30 | 1 | -1/+1 |
| | | | | | | | | | | | | room | ||||
| * | | Fix bug where accepting invite over federation didn't work. Add logging. | Erik Johnston | 2015-01-30 | 1 | -8/+49 |
| | | | |||||
| * | | Merge pull request #43 from matrix-org/rejections | Erik Johnston | 2015-01-30 | 15 | -172/+706 |
| |\ \ | | | | | | | | | Rejections | ||||
| | * | | Briefly doc structure of query_auth API. | Erik Johnston | 2015-01-30 | 1 | -0/+18 |
| | | | | |||||
| | * | | Only auth_events with event if event in event.auth_events | Erik Johnston | 2015-01-30 | 1 | -1/+3 |
| | | | | |||||
| | * | | Remove debug logging | Erik Johnston | 2015-01-30 | 1 | -9/+0 |
| | | | | |||||
| | * | | Merge branch 'develop' of github.com:matrix-org/synapse into rejections | Erik Johnston | 2015-01-30 | 16 | -22/+552 |
| | |\ \ | | | | | | | | | | | | | | | | | | | | | Conflicts: synapse/storage/schema/im.sql | ||||
| | * \ \ | Merge branch 'replication_split' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2015-01-30 | 3 | -9/+6 |
| | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rejections Conflicts: synapse/storage/schema/delta/v12.sql | ||||
| | * | | | | Fix bug where we superfluously asked for current state. Change API of ↵ | Erik Johnston | 2015-01-30 | 5 | -49/+43 |
| | | | | | | | | | | | | | | | | | | | | | | | | /query_auth/ so that we don't duplicate events in the response. | ||||
| | * | | | | Fix bad merge fo python_dependencies.py | Erik Johnston | 2015-01-30 | 1 | -1/+0 |
| | | | | | | |||||
| | * | | | | Merge branch 'develop' of github.com:matrix-org/synapse into rejections | Erik Johnston | 2015-01-30 | 43 | -115/+2105 |
| | |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: synapse/storage/__init__.py synapse/storage/schema/delta/v12.sql | ||||
| | * | | | | | Update the current state of an event if we update auth events. | Erik Johnston | 2015-01-30 | 1 | -1/+3 |
| | | | | | | | |||||
| | * | | | | | Fix bug in timeout handling in keyclient | Erik Johnston | 2015-01-30 | 1 | -3/+4 |
| | | | | | | | |||||
| | * | | | | | Fix regression where we no longer correctly handled the case of gaps in our ↵ | Erik Johnston | 2015-01-30 | 2 | -2/+9 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | event graph | ||||
| | * | | | | | Fix bug where we changes in outlier in metadata dict propogated to other events | Erik Johnston | 2015-01-30 | 3 | -4/+8 |
| | | | | | | | |||||
| | * | | | | | Initial implementation of auth conflict resolution | Erik Johnston | 2015-01-29 | 7 | -81/+208 |
| | | | | | | | |||||
| | * | | | | | Make post_json(...) actually send data. | Erik Johnston | 2015-01-29 | 1 | -1/+1 |
| | | | | | | | |||||
| | * | | | | | Add post_json(...) method to federation client | Erik Johnston | 2015-01-29 | 1 | -0/+37 |
| | | | | | | | |||||
| | * | | | | | Start implementing auth conflict res | Erik Johnston | 2015-01-28 | 6 | -52/+253 |
| | | | | | | | |||||
| | * | | | | | Make it the responsibility of the replication layer to check signature and ↵ | Erik Johnston | 2015-01-26 | 3 | -26/+173 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | hashes. | ||||
| * | | | | | | Spit out server default rules too. | David Baker | 2015-01-30 | 2 | -10/+17 |
| | | | | | | | |||||
| * | | | | | | Merge pull request #41 from matrix-org/client_v2_sync | Mark Haines | 2015-01-30 | 7 | -46/+794 |
| |\ \ \ \ \ \ | | |_|_|_|/ / | |/| | | | | | Client v2 sync | ||||
| | * | | | | | Add doc string for __nonzero__ overrides for sync results, raise not ↵ | Mark Haines | 2015-01-30 | 1 | -1/+8 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | implemented if the client attempts to do a gapless sync | ||||
| | * | | | | | Merge branch 'client_v2_filter' into client_v2_sync | Mark Haines | 2015-01-30 | 2 | -10/+2 |
| | |\ \ \ \ \ | |||||
| | * | | | | | | Check if the user has joined the room between incremental syncs | Mark Haines | 2015-01-30 | 1 | -4/+27 |
| | | | | | | | | |||||
| | * | | | | | | Pass client info to the sync_config | Mark Haines | 2015-01-30 | 2 | -3/+4 |
| | | | | | | | | |||||
| | * | | | | | | Fix token formatting | Mark Haines | 2015-01-30 | 2 | -5/+5 |
| | | | | | | | | |||||
| | * | | | | | | Filter the recent events before applying the limit when doing an initial sync | Mark Haines | 2015-01-30 | 1 | -11/+10 |
| | | | | | | | | |||||
| | * | | | | | | Filter the recent events before applying the limit when doing an incremental ↵ | Mark Haines | 2015-01-30 | 4 | -24/+54 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sync with a gap | ||||
| | * | | | | | | Update todo for the filtering on sync | Mark Haines | 2015-01-29 | 1 | -1/+2 |
| | | | | | | | | |||||
| | * | | | | | | Add basic filtering support | Mark Haines | 2015-01-29 | 1 | -5/+14 |
| | | | | | | | | |||||
| | * | | | | | | Merge branch 'client_v2_filter' into client_v2_sync | Mark Haines | 2015-01-29 | 2 | -113/+109 |
| | |\ \ \ \ \ \ | |||||
| | * | | | | | | | Fix indent | Mark Haines | 2015-01-29 | 1 | -1/+1 |
| | | | | | | | | | |||||
| | * | | | | | | | Move typing notifs to an "emphermal" event list on the room object | Mark Haines | 2015-01-29 | 2 | -7/+9 |
| | | | | | | | | | |||||
| | * | | | | | | | Fix check for empty room update | Mark Haines | 2015-01-29 | 1 | -1/+1 |
| | | | | | | | | | |||||
| | * | | | | | | | Fix v2 initial sync | Mark Haines | 2015-01-29 | 1 | -1/+2 |
| | | | | | | | | | |||||
| | * | | | | | | | Merge branch 'client_v2_filter' into client_v2_sync | Mark Haines | 2015-01-29 | 9 | -40/+54 |
| | |\ \ \ \ \ \ \ | |||||
| | * \ \ \ \ \ \ \ | Merge branch 'client_v2_filter' into client_v2_sync | Mark Haines | 2015-01-29 | 1 | -2/+2 |
| | |\ \ \ \ \ \ \ \ | |||||
| | * \ \ \ \ \ \ \ \ | Merge branch 'client_v2_filter' into client_v2_sync | Mark Haines | 2015-01-29 | 12 | -17/+493 |
| | |\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: synapse/rest/client/v2_alpha/__init__.py | ||||
| | * | | | | | | | | | | Use get_room_events_stream to get changes to the rooms if the number of ↵ | Mark Haines | 2015-01-29 | 2 | -11/+52 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | changes is small | ||||
| | * | | | | | | | | | | Remove typing TODO | Mark Haines | 2015-01-29 | 1 | -1/+0 |
| | | | | | | | | | | | | |||||
| | * | | | | | | | | | | Add typing notifications to sync | Mark Haines | 2015-01-29 | 2 | -19/+29 |
| | | | | | | | | | | | | |||||
| | * | | | | | | | | | | Include transaction ids in unsigned section of events in the sync results ↵ | Mark Haines | 2015-01-29 | 2 | -12/+22 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for the clients that made those requests | ||||
| | * | | | | | | | | | | Add support for formatting events in the way a v2 client expects | Mark Haines | 2015-01-29 | 1 | -39/+52 |
| | | | | | | | | | | | | |||||
| | * | | | | | | | | | | Add ports back to demo/start.sh | Mark Haines | 2015-01-28 | 1 | -1/+1 |
| | | | | | | | | | | | | |||||
| | * | | | | | | | | | | Merge branch 'develop' into client_v2_sync | Mark Haines | 2015-01-28 | 35 | -91/+1822 |
| | |\ \ \ \ \ \ \ \ \ \ | |||||
| | * | | | | | | | | | | | Fix Formatting | Mark Haines | 2015-01-27 | 4 | -14/+9 |
| | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | Wait for events if the incremental sync is empty and a timeout is given | Mark Haines | 2015-01-27 | 2 | -7/+60 |
| | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | Start implementing incremental initial sync | Mark Haines | 2015-01-27 | 3 | -34/+241 |
| | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | Start implementing the non-incremental sync portion of the v2 /sync API | Mark Haines | 2015-01-26 | 4 | -54/+146 |
| | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | Merge branch 'develop' into client_v2_sync | Mark Haines | 2015-01-26 | 7 | -21/+45 |
| | |\ \ \ \ \ \ \ \ \ \ \ | |||||
| | * | | | | | | | | | | | | Add handler for /sync API | Mark Haines | 2015-01-26 | 1 | -0/+110 |
| | | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | | Merge branch 'develop' into client_v2_sync | Mark Haines | 2015-01-26 | 1 | -1/+1 |
| | |\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: synapse/rest/client/v2_alpha/__init__.py | ||||
| | * | | | | | | | | | | | | | Add client v2_alpha resource to synapse server resource tree | Mark Haines | 2015-01-23 | 2 | -1/+7 |
| | | | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | | | Start implementing the v2_alpha sync API | Mark Haines | 2015-01-23 | 5 | -0/+272 |
| | | | | | | | | | | | | | | | |||||
| * | | | | | | | | | | | | | | Merge pull request #42 from matrix-org/replication_split | Mark Haines | 2015-01-30 | 5 | -886/+993 |
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | |_|_|_|_|_|_|_|_|_|_|/ / | | |/| | | | | | | | | | | | | Replication split | ||||
| | * | | | | | | | | | | | | | Merge branch 'rejections_storage' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2015-01-30 | 44 | -123/+2104 |
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ | | | |_|_|_|_|_|_|_|_|_|/ / / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | replication_split | ||||
| | * | | | | | | | | | | | | | Split up replication_layer module into client, server and transaction queue | Erik Johnston | 2015-01-26 | 5 | -603/+654 |
| | | | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | | | Merge branch 'develop' of github.com:matrix-org/synapse into rejections | Erik Johnston | 2015-01-23 | 40 | -199/+229 |
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ | | | | |/ / / / / / / / / / / | | | |/| | | | | | | | | | | | |||||
| | * | | | | | | | | | | | | | Add storage method have_events | Erik Johnston | 2015-01-23 | 1 | -0/+29 |
| | | | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | | | Split out TransactionQueue from replication layer | Erik Johnston | 2015-01-22 | 2 | -289/+316 |
| | | | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | | | Merge branch 'new_state_resolution' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2015-01-22 | 1 | -1/+1 |
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rejections | ||||
| * | | | | | | | | | | | | | | | Add glob asterisks when running rules. | David Baker | 2015-01-30 | 2 | -4/+6 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Means that now you can't do exact matches even in override rules, but I think we can live with that. Advantage is that you'll now always get back what was put in to the API. | ||||
| * | | | | | | | | | | | | | | | Remove merge conflict | Erik Johnston | 2015-01-30 | 1 | -3/+0 |
| | | | | | | | | | | | | | | | | |||||
| * | | | | | | | | | | | | | | | Remember to add schema file to list | Erik Johnston | 2015-01-30 | 1 | -0/+1 |
| | | | | | | | | | | | | | | | | |||||
| * | | | | | | | | | | | | | | | Merge branch 'develop' of github.com:matrix-org/synapse into rejections_storage | Erik Johnston | 2015-01-30 | 11 | -8/+526 |
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: synapse/storage/__init__.py | ||||
| | * \ \ \ \ \ \ \ \ \ \ \ \ \ \ | Merge pull request #37 from matrix-org/client_v2_filter | Erik Johnston | 2015-01-30 | 8 | -2/+458 |
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | |_|_|_|_|_|_|_|_|_|_|/ / / | | | |/| | | | | | | | | | | | | | Client v2 filter | ||||
| | | * | | | | | | | | | | | | | | Use 'in' to test if the key exists, remove unused _filters_for_user | Mark Haines | 2015-01-30 | 2 | -10/+2 |
| | | | | | | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | | | Unused import | Mark Haines | 2015-01-30 | 1 | -2/+0 |
| | | | |_|_|_|_|_|_|_|_|_|/ / / | | | |/| | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | | Create a separate filter object to do the actual filtering, so that we can | Mark Haines | 2015-01-29 | 2 | -113/+109 |
| | | | |_|_|_|_|_|_|_|_|/ / / | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | split the storage and management of filters from the actual filter code and don't have to load a filter from the db each time we filter an event | ||||
| | | * | | | | | | | | | | | | Merge branch 'develop' into client_v2_filter | Mark Haines | 2015-01-29 | 8 | -27/+48 |
| | | |\ \ \ \ \ \ \ \ \ \ \ \ | |||||
| | | * | | | | | | | | | | | | | Fix code-style | Mark Haines | 2015-01-29 | 1 | -13/+6 |
| | | | |_|_|_|_|_|_|_|_|/ / / | | | |/| | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | Merge in auth changes from develop | Mark Haines | 2015-01-29 | 1 | -2/+2 |
| | | | |_|_|_|_|_|_|_|/ / / | | | |/| | | | | | | | | | | |||||
| | | * | | | | | | | | | | | Merge changes from develop | Mark Haines | 2015-01-29 | 36 | -93/+1827 |
| | | |\ \ \ \ \ \ \ \ \ \ \ | |||||
| | | * | | | | | | | | | | | | Move bump schema delta | Mark Haines | 2015-01-29 | 1 | -0/+0 |
| | | | | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | Add basic filtering public API unit tests. Use defers in the right places. | Kegan Dougal | 2015-01-29 | 1 | -4/+7 |
| | | | | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | Implement filter algorithm. Add basic event type unit tests to assert it works. | Kegan Dougal | 2015-01-29 | 1 | -0/+49 |
| | | | | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | Add filtering public API; outline filtering algorithm. | Kegan Dougal | 2015-01-29 | 1 | -8/+52 |
| | | | | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | Add filtering.filter_events function, with stub passes_filter function. | Kegan Dougal | 2015-01-29 | 1 | -0/+15 |
| | | | | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | Also edit the filter column on the delta SQL | Kegan Dougal | 2015-01-29 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | s/definition/filter_json/ since definition is now used to mean a component ↵ | Kegan Dougal | 2015-01-28 | 2 | -3/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of the filter, rather than the complete json | ||||
| | | * | | | | | | | | | | | | Add filter JSON sanity checks. | Kegan Dougal | 2015-01-28 | 3 | -7/+108 |
| | | | | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | Created schema delta | Paul "LeoNerd" Evans | 2015-01-27 | 2 | -1/+25 |
| | | | | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | Initial stab at real SQL storage implementation of user filter definitions | Paul "LeoNerd" Evans | 2015-01-27 | 3 | -14/+60 |
| | | | | | | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | Move storage of user filters into real datastore layer; now have to mock it ↵ | Paul "LeoNerd" Evans | 2015-01-27 | 3 | -24/+52 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | out in the REST-level tests | ||||
| | | * | | | | | | | | | | | | Have the Filtering API return Deferreds, so we can do the Datastore ↵ | Paul "LeoNerd" Evans | 2015-01-27 | 2 | -5/+19 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | implementation nicely | ||||
| | | * | | | | | | | | | | | | Initial trivial implementation of an actual 'Filtering' object; move storage ↵ | Paul "LeoNerd" Evans | 2015-01-27 | 3 | -13/+58 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of user filters into there | ||||
| | | * | | | | | | | | | | | | Merge branch 'develop' into client_v2_filter | Paul "LeoNerd" Evans | 2015-01-27 | 7 | -21/+45 |
| | | |\ \ \ \ \ \ \ \ \ \ \ \ | | | | | |_|_|_|_|_|_|/ / / / | | | | |/| | | | | | | | | | | |||||
| | | * | | | | | | | | | | | | Initial minimal attempt at /user/:user_id/filter API - in-memory storage, no ↵ | Paul "LeoNerd" Evans | 2015-01-26 | 2 | -1/+109 |
| | | | |_|_|_|_|_|_|/ / / / | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | actual filter implementation | ||||
| | * | | | | | | | | | | | | Add room member count condition and default rule to make a noise on rooms of ↵ | David Baker | 2015-01-30 | 3 | -6/+63 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | only 2 people. | ||||
| | * | | | | | | | | | | | | Add a slightly more helpful comment | Erik Johnston | 2015-01-30 | 1 | -1/+2 |
| | | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2015-01-30 | 65 | -368/+2394 |
| | |\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | new_state_resolution | ||||
| * | | | | | | | | | | | | | | Be more specific in naming columns in selects. | Erik Johnston | 2015-01-30 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | |||||
| * | | | | | | | | | | | | | | Put CREATE rejections into seperate .sql | Erik Johnston | 2015-01-30 | 2 | -7/+21 |
| | |_|_|_|_|_|_|_|_|/ / / / | |/| | | | | | | | | | | | | |||||
| * | | | | | | | | | | | | | Merge branch 'develop' of github.com:matrix-org/synapse into rejections_storage | Erik Johnston | 2015-01-30 | 65 | -367/+2380 |
| |\ \ \ \ \ \ \ \ \ \ \ \ \ | | | |/ / / / / / / / / / / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: synapse/storage/__init__.py synapse/storage/schema/delta/v12.sql | ||||
| | * | | | | | | | | | | | | We do need Twisted 14, not 15: we use internal Twisted things that have been ↵ | David Baker | 2015-01-30 | 1 | -1/+1 |
| | | |_|_|_|_|_|_|_|_|/ / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | removed in 15. | ||||
| | * | | | | | | | | | | | Include content in notification pokes | David Baker | 2015-01-29 | 1 | -0/+2 |
| | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | Change 'from' in notification pokes to 'sender' to match client API v2. Send ↵ | David Baker | 2015-01-29 | 2 | -5/+14 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sender display names where they exist. | ||||
| | * | | | | | | | | | | | Add default push rules including setting a sound for messages mentioning ↵ | David Baker | 2015-01-29 | 2 | -8/+74 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | your username / display name | ||||
| | * | | | | | | | | | | | Renumber priority classes so we can use 0 for defaults. | David Baker | 2015-01-29 | 1 | -5/+5 |
| | | | | | | | | | | | | | |||||
| | * | | | | | | | | | | | Allow kind to be set to null to delete a pusher. | David Baker | 2015-01-29 | 1 | -1/+10 |
| | | |_|_|_|/ / / / / / | | |/| | | | | | | | | | |||||
| | * | | | | | | | | | | Code style fixes. | Mark Haines | 2015-01-29 | 8 | -26/+42 |
| | | | | | | | | | | | | |||||
| | * | | | | | | | | | | Only send a badge-reset if the user actually has unread notifications. | David Baker | 2015-01-29 | 1 | -2/+7 |
| | | |_|_|/ / / / / / | | |/| | | | | | | | | |||||
| | * | | | | | | | | | SYN-252: Supply the stream and topological parts in the correct order to the ↵ | Mark Haines | 2015-01-29 | 1 | -3/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | constructor | ||||
| | * | | | | | | | | | Allow the push rule delete method to take more specifiers. | David Baker | 2015-01-28 | 1 | -8/+11 |
| | | | | | | | | | | | |||||
| | * | | | | | | | | | Change uses of get_user_by_req because it returns a tuple now. | David Baker | 2015-01-28 | 2 | -4/+4 |
| | | |_|_|_|_|_|/ / | | |/| | | | | | | | |||||
| | * | | | | | | | | Merge pull request #36 from matrix-org/device_id_from_access_token | Mark Haines | 2015-01-28 | 14 | -46/+77 |
| | |\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | Extract the device id and token id from the access token when autheniticating users | ||||
| | | * | | | | | | | | Rename ClientID to ClientInfo since it is a pair of IDs rather than a single ↵ | Mark Haines | 2015-01-28 | 2 | -3/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | identifier | ||||
| | | * | | | | | | | | Add a : to the doc string after the type of the return value | Mark Haines | 2015-01-28 | 1 | -1/+1 |
| | | | | | | | | | | |