Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Basic implementation of backup media store | Erik Johnston | 2017-10-12 | 4 | -126/+131 |
| | |||||
* | log when we get an exception handling replication updates | hera | 2017-10-12 | 1 | -1/+5 |
| | |||||
* | Merge pull request #2531 from matrix-org/dbkr/spamcheck_error_messages | David Baker | 2017-10-12 | 1 | -2/+6 |
|\ | | | | | Allow error strings from spam checker | ||||
| * | fix isinstance | David Baker | 2017-10-11 | 1 | -1/+1 |
| | | |||||
| * | Allow error strings from spam checker | David Baker | 2017-10-11 | 1 | -2/+6 |
| | | |||||
* | | Merge pull request #2532 from matrix-org/rav/fix_linearizer | Richard van der Hoff | 2017-10-11 | 1 | -2/+22 |
|\ \ | | | | | | | Fix stackoverflow and logcontexts from linearizer | ||||
| * | | Fix stackoverflow and logcontexts from linearizer | Richard van der Hoff | 2017-10-11 | 1 | -2/+22 |
| | | | | | | | | | | | | | | | | | | | | | 1. make it not blow out the stack when there are more than 50 things waiting for a lock. Fixes https://github.com/matrix-org/synapse/issues/2505. 2. Make it not mess up the log contexts. | ||||
* | | | Merge pull request #2529 from matrix-org/rav/fix_transaction_failure_handling | Richard van der Hoff | 2017-10-11 | 1 | -2/+3 |
|\ \ \ | | | | | | | | | log pdu_failures from incoming transactions | ||||
| * | | | log pdu_failures from incoming transactions | Richard van der Hoff | 2017-10-11 | 1 | -2/+3 |
| |/ / | | | | | | | | | | | | | | | | | | | ... even if we have no EDUs. This appears to have been introduced in 476899295f5fd6cff64799bcbc84cd4bf9005e33. | ||||
* | | | Merge pull request #2515 from matrix-org/rav/fix_receipt_logcontext | Richard van der Hoff | 2017-10-11 | 1 | -0/+51 |
|\ \ \ | | | | | | | | | | | | | | | | | A logformatter which includes the stack when the exception was caught when logging exceptions. | ||||
| * | | | logformatter: fix AttributeError | Richard van der Hoff | 2017-10-11 | 1 | -3/+11 |
| | | | | | | | | | | | | | | | | make sure we have the relevant fields before we try to log them. | ||||
| * | | | Fancy logformatter to format exceptions better | Richard van der Hoff | 2017-10-09 | 1 | -0/+43 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a bit of an experimental change at this point; the idea is to see if it helps us track down where our stack overflows are coming from by logging the stack when the exception was caught and turned into a Failure. (We'll also need https://github.com/richvdh/twisted/commit/edf27044200e74680ea67c525768e36dc9d9af2b). If we deploy this, we'll be able to enable it via the log config yaml. | ||||
* | | | | Fix fetching remote summaries | Erik Johnston | 2017-10-11 | 1 | -2/+2 |
| | | | | |||||
* | | | | peeeeeeeeep8888888888888888888888888888 | Erik Johnston | 2017-10-11 | 1 | -1/+1 |
| | | | | |||||
* | | | | Fix group stream replication | Erik Johnston | 2017-10-11 | 1 | -7/+7 |
| | | | | | | | | | | | | | | | | | | | | The stream update functions expect the storage function to return a list of tuples. | ||||
* | | | | Merge pull request #2530 from matrix-org/rav/fix_receipt_logcontext | Richard van der Hoff | 2017-10-11 | 1 | -0/+4 |
|\ \ \ \ | | | | | | | | | | | fix a logcontext leak in read receipt handling | ||||
| * | | | | fix a logcontext leak in read receipt handling | Richard van der Hoff | 2017-10-11 | 1 | -0/+4 |
| | |/ / | |/| | | |||||
* | | | | Fix typo in invite to group | Erik Johnston | 2017-10-11 | 1 | -1/+1 |
| | | | | |||||
* | | | | Fix typo | Erik Johnston | 2017-10-11 | 1 | -1/+1 |
| | | | | |||||
* | | | | Fix attestations to check correct server name | Erik Johnston | 2017-10-11 | 1 | -10/+20 |
| |_|/ |/| | | |||||
* | | | Fix schema delta versions | Erik Johnston | 2017-10-11 | 3 | -1/+1 |
| | | | |||||
* | | | Merge pull request #2466 from matrix-org/erikj/groups_merged | Erik Johnston | 2017-10-11 | 31 | -57/+4786 |
|\ \ \ | | | | | | | | | Initial Group Implementation | ||||
| * | | | Validate room ids | Erik Johnston | 2017-10-11 | 1 | -1/+5 |
| | | | | |||||
| * | | | Don't corrupt cache | Erik Johnston | 2017-10-05 | 1 | -0/+1 |
| | | | | |||||
| * | | | Merge branch 'develop' into erikj/groups_merged | David Baker | 2017-10-02 | 26 | -273/+930 |
| |\ \ \ | |||||
| * | | | | Add remove room API | Erik Johnston | 2017-09-26 | 6 | -1/+72 |
| | | | | | |||||
| * | | | | Add unique index to group_rooms table | Erik Johnston | 2017-09-26 | 2 | -3/+1 |
| | | | | | |||||
| * | | | | Add is_publicised to group summary | Erik Johnston | 2017-09-26 | 1 | -25/+31 |
| | | | | | |||||
| * | | | | Remove user from group summary when the leave the group | Erik Johnston | 2017-09-21 | 1 | -0/+8 |
| | | | | | |||||
| * | | | | Revert: Keep room_id's in group summary | Erik Johnston | 2017-09-21 | 1 | -0/+1 |
| | | | | | |||||
| * | | | | Keep room_id's in group summary | Erik Johnston | 2017-09-21 | 1 | -1/+0 |
| | | | | | |||||
| * | | | | Correctly return next token | Erik Johnston | 2017-09-20 | 1 | -1/+2 |
| | | | | | |||||
| * | | | | Fix initial sync | Erik Johnston | 2017-09-20 | 1 | -1/+9 |
| | | | | | |||||
| * | | | | Ensure that creator of group sees group down /sync | Erik Johnston | 2017-09-19 | 2 | -4/+31 |
| | | | | | |||||
| * | | | | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/groups_merged | Erik Johnston | 2017-09-19 | 24 | -546/+580 |
| |\ \ \ \ | |||||
| * | | | | | Add user profiles to summary from group server | Erik Johnston | 2017-08-25 | 3 | -2/+30 |
| | | | | | | |||||
| * | | | | | Fix typos and reinherit | Erik Johnston | 2017-08-25 | 1 | -12/+6 |
| | | | | | | |||||
| * | | | | | Split out profile handler to fix tests | Erik Johnston | 2017-08-25 | 8 | -22/+30 |
| | | | | | | |||||
| * | | | | | Add remote profile cache | Erik Johnston | 2017-08-25 | 5 | -5/+237 |
| | | | | | | |||||
| * | | | | | Add _simple_update | Erik Johnston | 2017-08-25 | 1 | -19/+32 |
| | | | | | | |||||
| * | | | | | Merge pull request #2410 from matrix-org/erikj/groups_publicise | Erik Johnston | 2017-08-21 | 6 | -0/+197 |
| |\ \ \ \ \ | | | | | | | | | | | | | | | Add ability to publicise group membership | ||||
| | * | | | | | Use BOOLEAN rather than TEXT type | Erik Johnston | 2017-08-21 | 1 | -1/+1 |
| | | | | | | | |||||
| | * | | | | | Fixup | Erik Johnston | 2017-08-11 | 2 | -9/+14 |
| | | | | | | | |||||
| | * | | | | | Add bulk group publicised lookup API | Erik Johnston | 2017-08-09 | 5 | -0/+142 |
| | | | | | | | |||||
| | * | | | | | Allow update group publicity | Erik Johnston | 2017-08-08 | 2 | -0/+43 |
| | | | | | | | |||||
| | * | | | | | Store whether the user wants to publicise their membership of a group | Erik Johnston | 2017-08-08 | 3 | -0/+7 |
| | | | | | | | |||||
| * | | | | | | Groups: Fix mising json.load in initial sync | Erik Johnston | 2017-08-21 | 1 | -1/+7 |
| |/ / / / / | |||||
| * | | | | | Remove stale TODO comments | Erik Johnston | 2017-08-04 | 1 | -10/+0 |
| | | | | | | |||||
| * | | | | | Update comment | Erik Johnston | 2017-07-24 | 1 | -2/+2 |
| | | | | | | |||||
| * | | | | | Use join rather than joined, etc. | Erik Johnston | 2017-07-24 | 1 | -2/+2 |
| | | | | | | |||||
| * | | | | | Fix all the typos | Erik Johnston | 2017-07-24 | 1 | -8/+7 |
| | | | | | | |||||
| * | | | | | Include users membership in group in summary API | Erik Johnston | 2017-07-24 | 2 | -0/+60 |
| | | | | | | |||||
| * | | | | | Check users/rooms are in group before adding to summary | Erik Johnston | 2017-07-24 | 1 | -0/+25 |
| | | | | | | |||||
| * | | | | | Correctly add joins to correct segment | Erik Johnston | 2017-07-24 | 1 | -1/+1 |
| | | | | | | |||||
| * | | | | | Merge pull request #2378 from matrix-org/erikj/group_sync_support | Erik Johnston | 2017-07-21 | 11 | -10/+281 |
| |\ \ \ \ \ | | | | | | | | | | | | | | | Add groups to sync stream | ||||
| | * | | | | | Add notifier | Erik Johnston | 2017-07-20 | 1 | -0/+1 |
| | | | | | | | |||||
| | * | | | | | Fix replication. And notify | Erik Johnston | 2017-07-20 | 5 | -4/+119 |
| | | | | | | | |||||
| | * | | | | | Remember to cast to bool | Erik Johnston | 2017-07-20 | 1 | -1/+1 |
| | | | | | | | |||||
| | * | | | | | Fix bug in generating current token | Erik Johnston | 2017-07-20 | 1 | -0/+2 |
| | | | | | | | |||||
| | * | | | | | Add groups to sync stream | Erik Johnston | 2017-07-20 | 7 | -6/+159 |
| | | | | | | | |||||
| * | | | | | | Merge pull request #2377 from matrix-org/erikj/group_profile_update | Erik Johnston | 2017-07-20 | 5 | -0/+55 |
| |\ \ \ \ \ \ | | |/ / / / / | |/| | | | | | Add update group profile API | ||||
| | * | | | | | Remove spurious content param | Erik Johnston | 2017-07-20 | 1 | -1/+1 |
| | | | | | | | |||||
| | * | | | | | Check values are strings | Erik Johnston | 2017-07-20 | 1 | -1/+4 |
| | | | | | | | |||||
| | * | | | | | Fix a storage desc | Erik Johnston | 2017-07-20 | 1 | -1/+1 |
| | | | | | | | |||||
| | * | | | | | Add update group profile API | Erik Johnston | 2017-07-20 | 5 | -0/+52 |
| | | | | | | | |||||
| * | | | | | | Fix typo | Erik Johnston | 2017-07-20 | 1 | -1/+1 |
| |/ / / / / | |||||
| * | | | | | Comments | Erik Johnston | 2017-07-18 | 4 | -13/+24 |
| | | | | | | |||||
| * | | | | | Comments | Erik Johnston | 2017-07-18 | 2 | -103/+88 |
| | | | | | | |||||
| * | | | | | Fix permissions | Erik Johnston | 2017-07-18 | 1 | -2/+6 |
| | | | | | | |||||
| * | | | | | Add DELETE | Erik Johnston | 2017-07-18 | 1 | -0/+46 |
| | | | | | | |||||
| * | | | | | Add 'args' param to post_json | Erik Johnston | 2017-07-18 | 1 | -9/+15 |
| | | | | | | |||||
| * | | | | | Fix typos | Erik Johnston | 2017-07-18 | 3 | -12/+22 |
| | | | | | | |||||
| * | | | | | Correctly parse query params | Erik Johnston | 2017-07-18 | 1 | -19/+19 |
| | | | | | | |||||
| * | | | | | Update federation client pokes | Erik Johnston | 2017-07-18 | 1 | -13/+22 |
| | | | | | | |||||
| * | | | | | Add client apis | Erik Johnston | 2017-07-18 | 2 | -10/+188 |
| | | | | | | |||||
| * | | | | | Comments | Erik Johnston | 2017-07-18 | 2 | -15/+22 |
| | | | | | | |||||
| * | | | | | Use transport client directly | Erik Johnston | 2017-07-18 | 1 | -18/+25 |
| | | | | | | |||||
| * | | | | | Comment | Erik Johnston | 2017-07-18 | 1 | -0/+14 |
| | | | | | | |||||
| * | | | | | Remove sync stuff | Erik Johnston | 2017-07-18 | 2 | -29/+1 |
| | | | | | | |||||
| * | | | | | Add GroupID type | Erik Johnston | 2017-07-18 | 1 | -0/+5 |
| | | | | | | |||||
| * | | | | | Remove unused tables | Erik Johnston | 2017-07-18 | 1 | -7/+0 |
| | | | | | | |||||
| * | | | | | Remove sync stuff | Erik Johnston | 2017-07-18 | 2 | -70/+0 |
| | | | | | | |||||
| * | | | | | Add local group server support | Erik Johnston | 2017-07-17 | 10 | -2/+1248 |
| | | | | | | |||||
| * | | | | | Ensure category and role ids are non-null | Erik Johnston | 2017-07-14 | 1 | -0/+24 |
| | | | | | | |||||
| * | | | | | Add DEFAULT_ROLE_ID | Erik Johnston | 2017-07-14 | 1 | -4/+5 |
| | | | | | | |||||
| * | | | | | Correctly increment orders | Erik Johnston | 2017-07-14 | 1 | -2/+2 |
| | | | | | | |||||
| * | | | | | Remove unused functions | Erik Johnston | 2017-07-13 | 1 | -152/+0 |
| | | | | | | |||||
| * | | | | | Comments | Erik Johnston | 2017-07-13 | 2 | -12/+32 |
| | | | | | | |||||
| * | | | | | Remove TODO | Erik Johnston | 2017-07-13 | 1 | -1/+0 |
| | | | | | | |||||
| * | | | | | Add summary APIs to federation | Erik Johnston | 2017-07-13 | 1 | -11/+223 |
| | | | | | | |||||
| * | | | | | raise NotImplementedError | Erik Johnston | 2017-07-13 | 1 | -5/+2 |
| | | | | | | |||||
| * | | | | | Comments | Erik Johnston | 2017-07-12 | 3 | -5/+79 |
| | | | | | | |||||
| * | | | | | Simplify checking if admin | Erik Johnston | 2017-07-12 | 1 | -53/+19 |
| | | | | | | |||||
| * | | | | | Add group summary APIs | Erik Johnston | 2017-07-12 | 4 | -2/+970 |
| | | | | | | |||||
| * | | | | | Merge pull request #2352 from matrix-org/erikj/group_server_split | Erik Johnston | 2017-07-12 | 11 | -11/+1206 |
| |\ \ \ \ \ | | | | | | | | | | | | | | | Initial Group Server | ||||
| | * | | | | | Comment | Erik Johnston | 2017-07-12 | 1 | -1/+1 |
| | | | | | | | |||||
| | * | | | | | Move comment | Erik Johnston | 2017-07-11 | 1 | -2/+2 |
| | | | | | | | |||||
| | * | | | | | Add federation API for adding room to group | Erik Johnston | 2017-07-11 | 1 | -0/+18 |
| | | | | | | | |||||
| | * | | | | | Comment | Erik Johnston | 2017-07-11 | 1 | -5/+8 |
| | | | | | | | |||||
| | * | | | | | Typo | Erik Johnston | 2017-07-11 | 1 | -1/+1 |
| | | | | | | | |||||
| | * | | | | | Rename column to attestation_json | Erik Johnston | 2017-07-11 | 2 | -5/+5 |
| | | | | | | | |||||
| | * | | | | | Comments | Erik Johnston | 2017-07-11 | 3 | -5/+9 |
| | | | | | | | |||||
| | * | | | | | Comment | Erik Johnston | 2017-07-11 | 2 | -0/+26 |
| | | | | | | | |||||
| | * | | | | | Remove u/ requirement | Erik Johnston | 2017-07-11 | 1 | -2/+3 |
| | | | | | | | |||||
| | * | | | | | Lift out visibility parsing | Erik Johnston | 2017-07-11 | 1 | -20/+21 |
| | | | | | | | |||||
| | * | | | | | Comments | Erik Johnston | 2017-07-11 | 4 | -43/+132 |
| | | | | | | | |||||
| | * | | | | | Initial group server implementation | Erik Johnston | 2017-07-10 | 11 | -11/+1064 |
| | | | | | | | |||||
* | | | | | | | Merge pull request #2501 from matrix-org/dbkr/channel_notifications | Erik Johnston | 2017-10-11 | 3 | -7/+85 |
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | Support for channel notifications | ||||
| * | | | | | | | pep8 | David Baker | 2017-10-10 | 2 | -3/+5 |
| | | | | | | | | |||||
| * | | | | | | | Don't KeyError if no power_levels event | David Baker | 2017-10-10 | 1 | -1/+3 |
| | | | | | | | | |||||
| * | | | | | | | Use notification levels in power_levels | David Baker | 2017-10-10 | 3 | -12/+22 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than making the condition directly require a specific power level. This way the level require to notify a room can be configured per room. | ||||
| * | | | | | | | There was already a constant for this | David Baker | 2017-10-10 | 1 | -3/+4 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | also update copyright | ||||
| * | | | | | | | More optimisation | David Baker | 2017-10-10 | 1 | -6/+9 |
| | | | | | | | | |||||
| * | | | | | | | What year is it!? Who's the president!? | David Baker | 2017-10-10 | 1 | -1/+1 |
| | | | | | | | | |||||
| * | | | | | | | Merge branch 'develop' into dbkr/channel_notifications | David Baker | 2017-10-10 | 7 | -107/+183 |
| |\ \ \ \ \ \ \ | |||||
| * | | | | | | | | Make be faster | David Baker | 2017-10-05 | 1 | -3/+3 |
| | | | | | | | | | |||||
| * | | | | | | | | Add fastpath optimisation | David Baker | 2017-10-05 | 1 | -3/+9 |
| | | | | | | | | | |||||
| * | | | | | | | | pep8 | David Baker | 2017-10-05 | 1 | -0/+3 |
| | | | | | | | | | |||||
| * | | | | | | | | They're called rooms | David Baker | 2017-10-05 | 1 | -4/+4 |
| | | | | | | | | | |||||
| * | | | | | | | | Get rule type right | David Baker | 2017-10-05 | 1 | -1/+1 |
| | | | | | | | | | |||||
| * | | | | | | | | Support for channel notifications | David Baker | 2017-10-05 | 3 | -8/+59 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add condition type to check the sender's power level and add a base rule using it for @channel notifications. | ||||
* | | | | | | | | | Merge pull request #2483 from jeremycline/unfreeze-ujson-dump | Erik Johnston | 2017-10-11 | 1 | -1/+2 |
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | Unfreeze event before serializing with ujson | ||||
| * | | | | | | | | | Unfreeze event before serializing with ujson | Jeremy Cline | 2017-09-30 | 1 | -1/+2 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In newer versions of https://github.com/esnme/ultrajson, ujson does not serialize frozendicts (introduced in esnme/ultrajson@53f85b1). Although the PyPI version is still 1.35, Fedora ships with a build from commit esnme/ultrajson@2f1d487. This causes the serialization to fail if the distribution-provided package is used. This runs the event through the unfreeze utility before serializing it. Thanks to @ignatenkobrain for tracking down the root cause. fixes #2351 Signed-off-by: Jeremy Cline <jeremy@jcline.org> | ||||
* | | | | | | | | | | Merge pull request #2490 from matrix-org/erikj/drop_left_room_events | Erik Johnston | 2017-10-10 | 3 | -0/+65 |
|\ \ \ \ \ \ \ \ \ \ | |_|_|/ / / / / / / |/| | | | | | | | | | Ignore incoming events for rooms that we have left | ||||
| * | | | | | | | | | Fix up comment | Erik Johnston | 2017-10-09 | 1 | -1/+2 |
| | | | | | | | | | | |||||
| * | | | | | | | | | Invalidate cache | Erik Johnston | 2017-10-03 | 1 | -0/+3 |
| | | | | | | | | | | |||||
| * | | | | | | | | | Update comments | Erik Johnston | 2017-10-03 | 2 | -1/+8 |
| | | | | | | | | | | |||||
| * | | | | | | | | | Remove spurious line feed | Erik Johnston | 2017-10-03 | 1 | -1/+0 |
| | | | | | | | | | | |||||
| * | | | | | | | | | Ignore incoming events for rooms that we have left | Erik Johnston | 2017-10-03 | 2 | -0/+55 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When synapse receives an event for a room its not in over federation, it double checks with the remote server to see if it is in fact in the room. This is done so that if the server has forgotten about the room (usually as a result of the database being dropped) it can recover from it. However, in the presence of state resets in large rooms, this can cause a lot of work for servers that have legitimately left. As a hacky solution that supports both cases we drop incoming events for rooms that we have explicitly left. This means that we no longer support the case of servers having forgotten that they've rejoined a room, but that is sufficiently rare that we're not going to support it for now. | ||||
* | | | | | | | | | | fed server: process PDUs for different rooms in parallel | Richard van der Hoff | 2017-10-09 | 1 | -19/+34 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With luck, this will give a real-time improvement when there are many rooms and the server ends up calling out to fetch missing events. | ||||
* | | | | | | | | | | Fed server: use a linearizer for ongoing transactions | Richard van der Hoff | 2017-10-09 | 1 | -1/+29 |
| |_|_|_|_|_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't want to process the same transaction multiple times concurrently, so use a linearizer. | ||||
* | | | | | | | | | fed server: refactor on_incoming_transaction | Richard van der Hoff | 2017-10-09 | 1 | -24/+29 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move as much as possible to after the have_responded check, and reduce the number of times we iterate over the pdu list. | ||||
* | | | | | | | | | Fed server: Move origin-check code to _handle_received_pdu | Richard van der Hoff | 2017-10-09 | 1 | -24/+24 |
| |_|_|_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The response-building code expects there to be an entry in the `results` list for each entry in the pdu_list, so the early `continue` was messing this up. That doesn't really matter, because all that the federation client does is log any errors, but it's pretty poor form. | ||||
* | | | | | | | | Merge pull request #2508 from matrix-org/rav/federation_queue_logcontexts | Richard van der Hoff | 2017-10-09 | 1 | -16/+32 |
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | Fix up logcontext handling in (federation) TransactionQueue | ||||
| * | | | | | | | | Fix up logcontext handling in (federation) TransactionQueue | Richard van der Hoff | 2017-10-06 | 1 | -16/+32 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid using preserve_context_over_function, which has problems with respect to logcontexts. | ||||
* | | | | | | | | | Merge pull request #2507 from matrix-org/rav/execute_concurrently_log_contexts | Richard van der Hoff | 2017-10-09 | 1 | -2/+2 |
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | Fix logcontext handling for concurrently_execute | ||||
| * | | | | | | | | | Fix logcontext handling for concurrently_execute | Richard van der Hoff | 2017-10-06 | 1 | -2/+2 |
| |/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid preserve_context_over_deferred, which is broken. | ||||
* / / / / / / / / | Fix up deferred handling in federation.py | Richard van der Hoff | 2017-10-06 | 1 | -24/+21 |
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Avoid preserve_context_over_deferred, which is broken * set consumeErrors=True on defer.gatherResults, to avoid spurious "unhandled failure" erros | ||||
* | | | | | | | | some comments in the state res code | Richard van der Hoff | 2017-10-05 | 1 | -0/+13 |
| | | | | | | | | |||||
* | | | | | | | | Spam checking: add the invitee to user_may_invite | David Baker | 2017-10-05 | 3 | -8/+10 |
| |_|/ / / / / |/| | | | | | | |||||
* | | | | | | | Use better method for word boundary searching | David Baker | 2017-10-05 | 1 | -11/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | From https://github.com/matrix-org/matrix-js-sdk/commit/ebc95667b8a5777d13e5d3c679972bedae022fd5 | ||||
* | | | | | | | pep8 | David Baker | 2017-10-05 | 1 | -0/+1 |
| | | | | | | | |||||
* | | | | | | | Fix notif kws that start/end with non-word chars | David Baker | 2017-10-05 | 1 | -2/+21 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only prepend / append word bounary characters if the search expression starts or ends with a word character, otherwise they don't work because there's no word bounary between whitespace and a non-word char. | ||||
* | | | | | | | spam check room publishing | David Baker | 2017-10-04 | 2 | -0/+26 |
| | | | | | | | |||||
* | | | | | | | un-double indent | David Baker | 2017-10-04 | 1 | -1/+1 |
| | | | | | | | |||||
* | | | | | | | Add room creation checks to spam checker | David Baker | 2017-10-04 | 3 | -0/+47 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Lets the spam checker deny attempts to create rooms and add aliases to them. | ||||
* | | | | | | | s/roomid/room_id/ | David Baker | 2017-10-03 | 1 | -2/+2 |
| | | | | | | | |||||
* | | | | | | | pass room id too | David Baker | 2017-10-03 | 3 | -4/+6 |
| | | | | | | | |||||
* | | | | | | | Federation was passing strings anyway | David Baker | 2017-10-03 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | so pass string everywhere | ||||
* | | | | | | | this shouldn't be debug | David Baker | 2017-10-03 | 1 | -2/+2 |
| | | | | | | | |||||
* | | | | | | | better logging | David Baker | 2017-10-03 | 1 | -4/+9 |
| | | | | | | | |||||
* | | | | | | | Actually write warpper function | David Baker | 2017-10-03 | 1 | -0/+16 |
| | | | | | | | |||||
* | | | | | | | Skip spam check for admin users | David Baker | 2017-10-03 | 1 | -8/+8 |
| | | | | | | | |||||
* | | | | | | | Fix param name & lint | David Baker | 2017-10-03 | 1 | -2/+4 |
| | | | | | | | |||||
* | | | | | | | Allow spam checker to reject invites too | David Baker | 2017-10-03 | 2 | -6/+18 |
|/ / / / / / | |||||
* | | | | | | Merge branch 'master' of github.com:matrix-org/synapse into develop | Erik Johnston | 2017-10-02 | 4 | -13/+29 |
|\ \ \ \ \ \ | |||||
| * | | | | | | Bump version and changelog v0.23.1 | Erik Johnston | 2017-10-02 | 1 | -1/+1 |
| | | | | | | | |||||
| * | | | | | | Make 'affinity' package optional | Erik Johnston | 2017-10-02 | 2 | -2/+17 |
| | | | | | | | |||||
| * | | | | | | Move quit_with_error | Erik Johnston | 2017-10-02 | 2 | -10/+11 |
| | | | | | | | |||||
* | | | | | | | Merge branch 'master' of github.com:matrix-org/synapse into develop | Erik Johnston | 2017-10-02 | 1 | -1/+1 |
|\| | | | | | | |_|_|_|_|/ |/| | | | | | |||||
| * | | | | | Bump version and change log github/release-v0.23.0 release-v0.23.0 | Erik Johnston | 2017-10-02 | 1 | -1/+1 |
| | | | | | | |||||
* | | | | | | Merge pull request #2480 from matrix-org/rav/federation_client_logging | Richard van der Hoff | 2017-09-29 | 1 | -7/+6 |
|\ \ \ \ \ \ | | | | | | | | | | | | | | | Improve logging of failures in matrixfederationclient | ||||
| * | | | | | | Improve logging of failures in matrixfederationclient | Richard van der Hoff | 2017-09-28 | 1 | -7/+6 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * don't log exception types twice * not all exceptions have a meaningful 'message'. Use the repr rather than attempting to build a string ourselves. | ||||
* | | | | | | | Only log if we've removed media | Erik Johnston | 2017-09-28 | 1 | -2/+4 |
|/ / / / / / | |||||
* | | | | | | Handle SERVFAILs when doing AAAA lookups for federation (#2477) | Richard van der Hoff | 2017-09-28 | 1 | -5/+17 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... to cope with people with broken dnssec setups, mostly | ||||
* | | | | | | Up the limits on number of url cache entries to delete at one time | Erik Johnston | 2017-09-28 | 1 | -2/+2 |
| | | | | | | |||||
* | | | | | | Add old indices | Erik Johnston | 2017-09-28 | 1 | -0/+2 |
| | | | | | | |||||
* | | | | | | Clear up expired url cache every 10s | Erik Johnston | 2017-09-28 | 1 | -1/+1 |
| | | | | | | |||||
* | | | | | | Actually assign result to variable | Erik Johnston | 2017-09-28 | 1 | -1/+1 |
| | | | | | | |||||
* | | | | | | Only pull out local media that were for url cache | Erik Johnston | 2017-09-28 | 1 | -1/+1 |
| | | | | | | |||||
* | | | | | | Fix typo in url cache expiry timer | Erik Johnston | 2017-09-28 | 1 | -1/+1 |
| | | | | | | |||||
* | | | | | | Merge pull request #2479 from matrix-org/erikj/expire_url_cache_thumbnails | Erik Johnston | 2017-09-28 | 1 | -31/+81 |
|\ \ \ \ \ \ | | | | | | | | | | | | | | | Support new and old style media id formats | ||||
| * | | | | | | Support new and old style media id formats | Erik Johnston | 2017-09-28 | 1 | -31/+81 |
| | | | | | | | |||||
* | | | | | | | Fix typo | Erik Johnston | 2017-09-28 | 1 | -3/+3 |
|/ / / / / / | |||||
* | | | | | | Change expires column to expires_ts | Erik Johnston | 2017-09-28 | 3 | -10/+29 |
| | | | | | | |||||
* | | | | | | More brackets | Erik Johnston | 2017-09-28 | 1 | -1/+1 |
| | | | | | | |||||
* | | | | | | Delete expired url cache data | Erik Johnston | 2017-09-28 | 5 | -5/+208 |
| | | | | | | |||||
* | | | | | | Fix /joined_members to work with AS users | Erik Johnston | 2017-09-28 | 2 | -13/+26 |
| | | | | | | |||||
* | | | | | | Fix bug where /joined_members didn't check user was in room | Erik Johnston | 2017-09-27 | 2 | -10/+38 |
| | | | | | | |||||
* | | | | | | Don't test is spam_checker not None | David Baker | 2017-09-27 | 1 | -1/+7 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sometimes it's a Mock object which is not none but is still not what we're after | ||||
* | | | | | | Remove unintentional debugging | David Baker | 2017-09-27 | 1 | -1/+0 |
| | | | | | | |||||
* | | | | | | pep8 | David Baker | 2017-09-27 | 2 | -0/+2 |
| | | | | | | |||||
* | | | | | | Forgot the new file again :( | David Baker | 2017-09-27 | 1 | -0/+35 |
| | | | | | | |||||
* | | | | | | Make the spam checker a module | David Baker | 2017-09-26 | 5 | -23/+33 |
| | | | | | | |||||
* | | | | | | unnecessary parens | David Baker | 2017-09-26 | 1 | -1/+1 |
| | | | | | | |||||
* | | | | | | Add module_loader.py | David Baker | 2017-09-26 | 1 | -0/+41 |
| | | | | | | |||||
* | | | | | | Factor out module loading to a separate place | David Baker | 2017-09-26 | 1 | -12/+10 |
|/ / / / / | | | | | | | | | | | | | | | | So it can be reused | ||||
* | | | | | Merge branch 'develop' of github.com:matrix-org/synapse into release-v0.23.0 v0.23.0-rc2 | Erik Johnston | 2017-09-26 | 2 | -6/+19 |
|\ \ \ \ \ | |||||
| * | | | | | Refactor to speed up incremental syncs | Erik Johnston | 2017-09-25 | 1 | -5/+18 |
| | | | | | | |||||
| * | | | | | Merge branch 'release-v0.23.0' of github.com:matrix-org/synapse into develop | Erik Johnston | 2017-09-25 | 1 | -1/+1 |
| |\ \ \ \ \ | |||||
| * \ \ \ \ \ | Merge branch 'develop' into develop | Richard van der Hoff | 2017-09-25 | 32 | -755/+963 |
| |\ \ \ \ \ \ | |||||
| * | | | | | | | Fix iteration of requests_missing_keys; list doesn't have .values() | Kenny Keslar | 2017-07-26 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Kenny Keslar <r3dey3@r3dey3.com> | ||||
* | | | | | | | | Bump changelog and version | Erik Johnston | 2017-09-26 | 1 | -1/+1 |
| |_|/ / / / / |/| | | | | | | |||||
* | | | | | | | Bump version and changes | Erik Johnston | 2017-09-25 | 1 | -1/+1 |
| |/ / / / / |/| | | | | | |||||
* | | | | | | Fix logcontxt leak in keyclient (#2465) | Richard van der Hoff | 2017-09-25 | 1 | -12/+5 |
| | | | | | | | | | | | | | | | | | | preserve_context_over_function doesn't do what you want it to do. | ||||
* | | | | | | Do an AAAA lookup on SRV record targets (#2462) | Richard van der Hoff | 2017-09-22 | 1 | -20/+96 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Support SRV records which point at AAAA records, as well as A records. Fixes https://github.com/matrix-org/synapse/issues/2405 | ||||
* | | | | | | fix thinko'd docstring | Matthew Hodgson | 2017-09-22 | 1 | -1/+1 |
| | | | | | | |||||
* | | | | | | Fix device list when rejoining room (#2461) | Erik Johnston | 2017-09-22 | 1 | -2/+14 |
| | | | | | | |||||
* | | | | | | Fix logcontexts in _check_sigs_and_hashes | Richard van der Hoff | 2017-09-20 | 2 | -60/+62 |
| | | | | | | |||||
* | | | | | | Fix logcontext handling in verify_json_objects_for_server | Richard van der Hoff | 2017-09-20 | 1 | -8/+12 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | preserve_context_over_fn is essentially broken, because (a) it pointlessly drops the current logcontext before calling its wrapped function, which means we don't get any useful logcontexts for _handle_key_deferred; (b) it wraps the resulting deferred in a _PreservingContextDeferred, which is very dangerous because you then can't yield on it without leaking context back into the reactor. Instead, let's specify that the resultant deferreds call their callbacks with no logcontext. | ||||
* | | | | | | Turn _start_key_lookups into an inlineCallbacks function | Richard van der Hoff | 2017-09-20 | 1 | -40/+37 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... which means that logcontexts can be correctly preserved for the stuff it does. get_server_verify_keys is now called with the logcontext, so needs to preserve_fn when it fires off its nested inlineCallbacks function. Also renames get_server_verify_keys to reflect the fact it's meant to be private. | ||||
* | | | | | | Fix potential race in _start_key_lookups | Richard van der Hoff | 2017-09-20 | 1 | -5/+8 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the verify_request.deferred has already completed, then `remove_deferreds` will be called immediately. It therefore might resolve the server_to_deferred deferred while there are still other requests for that server in flight. To avoid that, we should build the complete list of requests, and *then* add the callbacks. | ||||
* | | | | | | Add some comments to _start_key_lookups | Richard van der Hoff | 2017-09-20 | 1 | -0/+8 |
| | | | | | | |||||
* | | | | | | Consistency for how verify_request.deferred is called | Richard van der Hoff | 2017-09-20 | 1 | -13/+17 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Define that it is run with no log context, and make sure that happens. If we aren't careful to reset the logcontext, we can't bung the deferreds into defer.gatherResults etc. We don't actually do that directly, but we *do* resolve other deferreds from affected callbacks (notably the server_to_deferred map in _start_key_lookups), and those *do* get passed into defer.gatherResults. It turns out that this way ends up being least confusing. | ||||
* | | | | | | Factor out _start_key_lookups | Richard van der Hoff | 2017-09-20 | 1 | -7/+17 |
| | | | | | | | | | | | | | | | | | | | | | | | | ... to make it easier to see what's going on. | ||||
* | | | | | | Replace `server_and_json` with `verify_requests` | Richard van der Hoff | 2017-09-20 | 1 | -3/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | This is a precursor to factoring some of this code out. | ||||
* | | | | | | pull out handle_key_deferred to top level | Richard van der Hoff | 2017-09-20 | 1 | -43/+44 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's no need for this to be a nested definition; pulling it out not only makes it more efficient, but makes it easier to check that it's not accessing any local variables it shouldn't be. | ||||
* | | | | | | Fix incorrect key_ids in error message | Richard van der Hoff | 2017-09-20 | 1 | -1/+1 |
| | | | | | | |||||
* | | | | | | Invalidate signing key cache when we gat an update | Richard van der Hoff | 2017-09-20 | 1 | -17/+24 |
| | | | | | | | | | | | | | | | | | | | | | | | | This might make the cache slightly more efficient. | ||||
* | | | | | | Remove redundant `preserve_fn` | Richard van der Hoff | 2017-09-20 | 1 | -2/+2 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | preserve_fn is a no-op unless the wrapped function returns a Deferred. verify_json_objects_for_server returns a list, so this is doing nothing. | ||||
* | | | | | | Fix concurrent server_key requests (#2458) | Richard van der Hoff | 2017-09-19 | 1 | -1/+3 |
| | | | | | | | | | | | | | | | | | | | | | | | | Fix a bug where we could end up firing off multiple requests for server_keys for the same server at the same time. | ||||
* | | | | | | Add a config option to block all room invites (#2457) | Richard van der Hoff | 2017-09-19 | 4 | -0/+43 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - allows sysadmins the ability to lock down their servers so that people can't send their users room invites. | ||||
* | | | | | | add some comments to on_exchange_third_party_invite_request | Richard van der Hoff | 2017-09-19 | 1 | -0/+11 |
| | | | | | | |||||
* | | | | | | PoC for filtering spammy events (#2456) | Richard van der Hoff | 2017-09-19 | 3 | -17/+69 |
| |_|_|_|/ |/| | | | | | | | | | Demonstration of how you might add some hooks to filter out spammy events. | ||||
* | | | | | Fix overzealous kicking of guest users (#2453) | Richard van der Hoff | 2017-09-19 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | We should only kick guest users if the guest access event is authorised. | ||||
* | | | | | Clean up and document handling of logcontexts in Keyring (#2452) | Richard van der Hoff | 2017-09-18 | 1 | -28/+36 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I'm still unclear on what the intended behaviour for `verify_json_objects_for_server` is, but at least I now understand the behaviour of most of the things it calls... | ||||
* | | | | | Merge pull request #2451 from matrix-org/erikj/add_state_to_timeline | Erik Johnston | 2017-09-18 | 2 | -3/+18 |
|\ \ \ \ \ | | | | | | | | | | | | | Don't filter out current state events from timeline | ||||
| * | | | | | Don't filter out current state events from timeline | Erik Johnston | 2017-09-18 | 2 | -3/+18 |
| | | | | | | |||||
* | | | | | | Merge pull request #2450 from matrix-org/dbkr/push_event_id_only | David Baker | 2017-09-18 | 1 | -0/+20 |
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | Add support for event_id_only push format | ||||
| * | | | | | Also include the room_id | David Baker | 2017-09-18 | 1 | -0/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | as really it's part of the event ID | ||||
| * | | | | | Use .get - it's much shorter | David Baker | 2017-09-18 | 1 | -1/+1 |
| | | | | | | |||||
| * | | | | | Add support for event_id_only push format | David Baker | 2017-09-18 | 1 | -0/+19 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Param in the data dict of a pusher that tells an HTTP pusher to send just the event_id of the event it's notifying about and the notification counts. For clients that want to go & fetch the body of the event themselves anyway. | ||||
* | | | | | | Correctly handle leaving room in /key/changes | Erik Johnston | 2017-09-18 | 1 | -13/+12 |
|/ / / / / | |||||
* | | | | | Fix typo | Erik Johnston | 2017-09-15 | 1 | -1/+1 |
| | | | | | |||||
* | | | | | Actually hook leave notifs up | Erik Johnston | 2017-09-14 | 1 | -2/+3 |
| | | | | | |||||
* | | | | | Handle joining/leaving rooms in /keys/changes | Erik Johnston | 2017-09-13 | 1 | -1/+38 |
| | | | | | |||||
* | | | | | Get left rooms | Erik Johnston | 2017-09-13 | 1 | -3/+32 |
| | | | | | |||||
* | | | | | In sync handle device lists for newly joined/left rooms | Erik Johnston | 2017-09-12 | 1 | -2/+10 |
| | | | | | |||||
* | | | | | Add left section to /keys/changes | Erik Johnston | 2017-09-08 | 3 | -11/+19 |
| | | | | | |||||
* | | | | | Send down device list change notif when member leaves/rejoins room | Erik Johnston | 2017-09-07 | 3 | -14/+55 |
| | | | | | |||||
* | | | | | Merge pull request #2288 from kyrias/bcrypt | Richard van der Hoff | 2017-08-23 | 1 | -1/+1 |
|\ \ \ \ \ | | | | | | | | | | | | | python_dependencies: Use bcrypt module instead of py-bcrypt | ||||
| * | | | | | python_dependencies: Use bcrypt module instead of py-bcrypt | Johannes Löthberg | 2017-06-17 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | py-bcrypt has been unmaintained for a long while, while bcrypt is actively maintained. And since ff8b87118dcfb153d972e29c2b77b195244d5ddc we're compatible with the bcrypt anyway. Signed-off-by: Johannes Löthberg <johannes@kyriasis.com> | ||||
* | | | | | | Fix user_dir startup | Richard van der Hoff | 2017-08-16 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | Add missing parameter to _base.start_worker_reactor | ||||
* | | | | | | Fix process startup | Richard van der Hoff | 2017-08-16 | 1 | -10/+13 |
| | | | | | | | | | | | | | | | | | | | | | | | | escape the % that got added in 92168cb so that the process starts up ok. | ||||
* | | | | | | explain why CPU affinity is a good idea | Matthew Hodgson | 2017-08-15 | 1 | -0/+8 |
| | | | | | | |||||
* | | | | | | Allow configuration of CPU affinity | Richard van der Hoff | 2017-08-15 | 5 | -1/+23 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make it possible to set the CPU affinity in the config file, so that we don't need to remember to do it manually every time. | ||||
* | | | | | | Factor out common application start | Richard van der Hoff | 2017-08-15 | 11 | -464/+248 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have 10 copies of this code, and I don't really want to update each one separately. | ||||
* | | | | | | fix english | hera | 2017-08-04 | 1 | -7/+7 |
| | | | | | | |||||
* | | | | | | typo | hera | 2017-08-04 | 1 | -1/+1 |
| | | | | | | |||||
* | | | | | | Reduce spammy log line in synchrotrons | Erik Johnston | 2017-08-02 | 1 | -1/+1 |
| |/ / / / |/| | | | | |||||
* | | | | | Increase cache hit ratio for push | Erik Johnston | 2017-07-14 | 1 | -0/+8 |
| | | | | | | | | | | | | | | | | | | | | | | | | | We don't update the cache in all code paths, which causes subsequent calls to miss the cache | ||||
* | | | | | Add more metrics to push rule evaluation | Erik Johnston | 2017-07-13 | 1 | -2/+42 |
| | | | | | |||||
* | | | | | Push: Don't acquire lock unless necessary | Erik Johnston | 2017-07-13 | 1 | -0/+4 |
| | | | | | |||||
* | | | | | Use less DB for device list handling in sync | Erik Johnston | 2017-07-12 | 1 | -8/+7 |
| |_|/ / |/| | | | |||||
* | | | | Merge pull request #2354 from krombel/reduce_static_sync_reply | Erik Johnston | 2017-07-11 | 1 | -16/+25 |
|\ \ \ \ | | | | | | | | | | | encode sync-response statically | ||||
| * | | | | split out reducing stuff; just make encode_* static | Krombel | 2017-07-11 | 1 | -35/+27 |
| | | | | | |||||
| * | | | | fix test | Krombel | 2017-07-10 | 1 | -1/+3 |
| | | | | | |||||
| * | | | | encode sync-response statically; omit empty objects from sync-response | Krombel | 2017-07-10 | 1 | -33/+48 |
| | | | | | |||||
* | | | | | Merge pull request #2357 from matrix-org/erikj/push | Erik Johnston | 2017-07-11 | 1 | -1/+1 |
|\ \ \ \ \ | | | | | | | | | | | | | Don't compute push actions for backfilled events | ||||
| * | | | | | Don't compute push actions for backfilled events | Erik Johnston | 2017-07-11 | 1 | -1/+1 |
| | |_|_|/ | |/| | | |