summary refs log tree commit diff
Commit message (Expand)AuthorAgeFilesLines
* Need a defer.inlineCallbacks here as we yield in it: otherwise nothing in the...David Baker2015-01-271-0/+1
* Unbreak bad presence merge - don't add these blocks together with an and: the...David Baker2015-01-271-12/+14
* Support membership events and more camelcase/underscoresDavid Baker2015-01-262-4/+8
* Add brackets to make get room name / alias workDavid Baker2015-01-261-2/+2
* Pushers should only try & look for rejected devices in something that's a lis...David Baker2015-01-261-1/+1
* Add API to delete push rules.David Baker2015-01-232-1/+49
* Use push settings!David Baker2015-01-233-26/+117
* more pep8 suggestionsDavid Baker2015-01-231-2/+1
* more pep8David Baker2015-01-231-2/+4
* Make string format tuple an actual tupleDavid Baker2015-01-231-1/+1
* redundant parensDavid Baker2015-01-231-1/+1
* stray spaceDavid Baker2015-01-231-1/+1
* make per-device rules workDavid Baker2015-01-231-5/+15
* Add slightly pedantic trailing slash error.David Baker2015-01-232-3/+19
* right super() paramDavid Baker2015-01-231-1/+1
* Fix adding rules without before/after & add the rule that we couldn't find to...David Baker2015-01-232-5/+7
* This really serves me right for ever making a map called 'map'.David Baker2015-01-231-1/+1
* Merge branch 'develop' into pushersDavid Baker2015-01-231-273/+193
|\
| * Rename MockedDatastoreTestCase to MockedDatastorePresenceTestCase since it is...Paul "LeoNerd" Evans2015-01-221-3/+3
| * Much merging of test case setUp() methods to make them much morePaul "LeoNerd" Evans2015-01-221-273/+193
* | As yet fairly untested GET API for push rulesDavid Baker2015-01-223-15/+145
* | oops, this is not its own schema fileDavid Baker2015-01-221-1/+0
* | Insufficient newlinesDavid Baker2015-01-221-0/+1
* | Merge branch 'develop' into pushersDavid Baker2015-01-2291-1712/+645
|\|
| * Merge pull request #30 from matrix-org/client_api_restructureMark Haines2015-01-2237-62/+118
| |\
| | * Move client rest tests back under restMark Haines2015-01-229-5/+19
| | * Move rest APIs back under the rest directoryMark Haines2015-01-2231-19/+33
| | * Move client v1 api rest servlets into a "client/v1" directoryMark Haines2015-01-2223-24/+52
| |/
| * Fix manifest. Ignore contrib and docs directories when checking manifest agai...Mark Haines2015-01-223-5/+9
| * Add demo and scripts to python manifestMark Haines2015-01-221-2/+11
| * update .gitignore, set media-store-path in demoMark Haines2015-01-222-9/+5
| * Move experiments, graph and cmdclient into contribMark Haines2015-01-226-0/+0
| * Remove jsfiddlesMark Haines2015-01-2216-1079/+0
| * Move scripts into scriptsMark Haines2015-01-226-2/+2
| * Abstract out the room ID from presence tests, so it's stored in selfPaul "LeoNerd" Evans2015-01-211-8/+10
| * Use common base class for two Presence unit-tests, avoiding boilerplate copyp...Paul "LeoNerd" Evans2015-01-211-54/+25
| * Only start the notifier timeout once we've had a chance to check for updates....Mark Haines2015-01-191-2/+2
| * Fix pyflakes errorsMark Haines2015-01-191-1/+1
| * Fix syntaxMark Haines2015-01-191-2/+3
| * Allow ':memory:' as the database path for sqlite3Mark Haines2015-01-192-2/+11
| * Finish renaming "context" to "room_id" in federation codebaseMark Haines2015-01-167-99/+62
| * Fold _do_request_for_transaction into the methods that called it since it was...Mark Haines2015-01-161-44/+11
| * Split transport layer into client and server partsMark Haines2015-01-163-272/+321
| * Remove temporary debug logging that was accidentally committedMark Haines2015-01-161-2/+0
| * Have /join/:room_id return the room ID in response anyway, for consistency of...Paul "LeoNerd" Evans2015-01-131-1/+1
| * Have MockClock detect attempts to cancel expired timers, to prevent a repeat ...Paul "LeoNerd" Evans2015-01-131-4/+16
| * Don't try to cancel already-expired timers - SYN-230Paul "LeoNerd" Evans2015-01-131-2/+8
| * Remove unused functionsMark Haines2015-01-134-30/+0
| * get_room_events isn't called anywhereMark Haines2015-01-131-30/+0
| * Fix stream token orderingMark Haines2015-01-131-72/+101
* | Oops: second part of commit dc938606David Baker2015-01-226-7/+45
* | Add rest API & store for creating push rulesDavid Baker2015-01-222-0/+391
* | use underscores everywhere, not camelcase.David Baker2015-01-201-3/+3
* | add instance_handles to pushers so we have a way to refer to them even if the...David Baker2015-01-207-27/+39
* | Require device language when adding a pusher.David Baker2015-01-165-5/+11
* | Send room name and first alias in notification poke.David Baker2015-01-153-3/+61
* | Don't make the pushers' event streams cause people to appear onlineDavid Baker2015-01-152-22/+25
* | Honour the 'rejected' return from push gatewaysDavid Baker2015-01-136-19/+81
* | Merge branch 'develop' into pushersDavid Baker2015-01-13150-438/+1097
|\|
| * Merge branch 'hotfixes-v0.6.1b' of github.com:matrix-org/synapse into developErik Johnston2015-01-133-3/+3
| |\
| | * Bump versionErik Johnston2015-01-132-2/+2
| | * Insert 'age' into top level when returning events to clientsErik Johnston2015-01-131-1/+1
| * | Use float rather than integer divisions to turn msec into sec - so timeouts u...Paul "LeoNerd" Evans2015-01-121-1/+1
| * | Check that setting typing notification still works after explicit timeout at ...Paul "LeoNerd" Evans2015-01-121-1/+50
| * | Make typing notification timeouts print a (debug) logging messagePaul "LeoNerd" Evans2015-01-121-1/+7
| * | Don't make @unittest.DEBUG print the huge amount of verbosity generated by th...Paul "LeoNerd" Evans2015-01-121-0/+2
| * | Check that setting typing notification still works after explicit timeout - S...Paul "LeoNerd" Evans2015-01-121-0/+26
| * | SYN-178: Fix off by one.Kegan Dougal2015-01-121-2/+6
| * | Add copyrighter script for sqlMark Haines2015-01-121-0/+33
| * | don't clobber pythonpathMatthew Hodgson2015-01-091-2/+2
| * | oopsMatthew Hodgson2015-01-081-1/+1
| * | spell out that local libs may need to be explicitly given priorityMatthew Hodgson2015-01-081-0/+9
| * | Check the existance and versions of necessary modules when starting synapse, ...Mark Haines2015-01-082-0/+85
| * | SYN-142: Rotate logs if logging to file. Fixed to a 4 file rotate with 100MB/...Kegan Dougal2015-01-081-1/+4
| * | make our JPEG thumbnail quality less horrifically uglyMatthew Hodgson2015-01-081-1/+1
| * | Add raw query param for scrollback.Kegan Dougal2015-01-082-3/+9
| * | Add better help message for --server-name config option.Erik Johnston2015-01-081-2/+6
| * | Return the raw federation event rather than adding extra keys for federation ...Kegan Dougal2015-01-086-19/+27
| * | Add missing continuation indent.Erik Johnston2015-01-081-1/+2
| * | Add 'raw' query parameter to expose the event graph and signatures to savvy c...Kegan Dougal2015-01-086-16/+28
| * | Add optional limit to graph scriptErik Johnston2015-01-081-6/+24
| * | Merge branch 'master' into developMark Haines2015-01-083-5/+5
| |\|
| | * Merge branch 'hotfixes-v0.6.1' v0.6.1aMark Haines2015-01-083-5/+5
| | |\
| | | * Bump versionMark Haines2015-01-082-2/+2
| | | * SYN-231: User agent header brokenMark Haines2015-01-081-3/+3
| | |/
| | * Merge branch 'release-v0.6.1' of github.com:matrix-org/synapse v0.6.1Erik Johnston2015-01-07137-310/+601
| | |\
| * | | Log server version on startupErik Johnston2015-01-071-0/+3
| * | | Change error message for missing pillow libs.Kegan Dougal2015-01-071-2/+4
| * | | PEP8 and pyflakes warningsKegan Dougal2015-01-072-2/+4
| * | | Update testsKegan Dougal2015-01-071-1/+1
| * | | SYN-154: Tweak how the m.room.create check is done.Kegan Dougal2015-01-072-12/+12
| * | | SYN-154: Better error messages when joining an unknown room by ID.Kegan Dougal2015-01-073-6/+17
| * | | *cough*Matthew Hodgson2015-01-071-1/+1
| * | | Merge branch 'release-v0.6.1' of github.com:matrix-org/synapse into developErik Johnston2015-01-073-2/+10
| |\ \ \ | | | |/ | | |/|
| | * | Improve change logErik Johnston2015-01-071-2/+2
| | * | Bump version and changelogErik Johnston2015-01-073-2/+10
| |/ /
| * | Remove unused importErik Johnston2015-01-071-2/+0
| * | Merge branch 'erikj-perf' of github.com:matrix-org/synapse into developErik Johnston2015-01-072-9/+16
| |\ \
| | * \ Merge branch 'develop' of github.com:matrix-org/synapse into erikj-perfErik Johnston2015-01-072-1/+2
| | |\ \ | | |/ / | |/| |
| * | | Merge branch 'master' into developMark Haines2015-01-062-1/+2
| |\ \ \ | | | |/ | | |/|
| | * | Merge branch 'hotfixes-v0.6.0a' v0.6.0bMark Haines2014-12-291-0/+1
| | |\ \
| | | * | Return the argument passed to the callback in a deferred callback, otherwise ...Mark Haines2014-12-291-0/+1
| | * | | improve error msgMatthew Hodgson2014-12-241-1/+1
| | |/ /
| | | * Optimize FrozenEvent creationErik Johnston2015-01-062-9/+16
| | |/ | |/|
| * | Use time.time() instead of time.clock()Erik Johnston2015-01-061-4/+4
| * | Fix typo where we used wrong var.Erik Johnston2015-01-061-2/+2
| * | Only fetch the columns we need.Erik Johnston2015-01-061-1/+1
| * | RoomsForUser now has sender instead of user_idErik Johnston2015-01-061-1/+1
| * | Add delta and bump DB versionErik Johnston2015-01-062-1/+17
| * | Add index on transaction_id to sent_transcationsErik Johnston2015-01-062-4/+1
| * | Actually time that functionErik Johnston2015-01-061-0/+1
| * | Time how long calls to _get_destination_retry_timings takeErik Johnston2015-01-062-12/+64
| * | Don't include None's in _get_events_txnErik Johnston2015-01-061-1/+3
| * | Merge branch 'erikj-perf' of github.com:matrix-org/synapse into developErik Johnston2015-01-062-26/+54
| |\ \
| | * | Name 'user_rooms_intersect' transactionErik Johnston2015-01-061-16/+18
| | * | We don't need the full events for get_rooms_for_user_where_membership_isErik Johnston2015-01-062-10/+36
| * | | SYN-32 Use the ANTIALIAS resize method for thumbnailing imagesMark Haines2015-01-061-3/+3
| * | | Add some logging for when we are sending transactions.Matrix2015-01-061-0/+6
| * | | Increase default maximum attachment size to 10MMark Haines2015-01-061-1/+1
| * | | Merge pull request #28 from matrix-org/erikj-perfMark Haines2015-01-065-111/+118
| |\| |
| | * | PEP8Erik Johnston2015-01-062-3/+4
| | * | Remove debug linesErik Johnston2015-01-061-7/+0
| | * | Don't do batching when getting events.Erik Johnston2015-01-061-35/+4
| | * | Only fetch prev_content when a client is streaming/paginating. Use transactio...Erik Johnston2015-01-062-86/+92
| | * | Temporarily turn off 'redacted_because' and 'prev_content' keysErik Johnston2015-01-061-0/+2
| | * | More debug loggingErik Johnston2015-01-061-0/+4
| | * | Add some debug loggingErik Johnston2015-01-061-0/+12
| | * | ReformatErik Johnston2015-01-061-13/+14
| | * | Add RoomMemberStore.get_users_in_room, so that we can get the list of joined ...Erik Johnston2015-01-062-8/+18
| | * | Merge branch 'develop' of github.com:matrix-org/synapse into erikj-perfErik Johnston2015-01-066-7/+46
| | |\ \
| | * \ \ Merge branch 'master' of github.com:matrix-org/synapse into erikj-perfErik Johnston2014-12-214-6/+26
| | |\ \ \ | | | | |/ | | | |/|
| | * | | Merge branch 'hotfixes-v0.6.0' of github.com:matrix-org/synapse into erikj-perfErik Johnston2014-12-198-15/+72
| | |\ \ \
| | * \ \ \ Merge branch 'release-v0.6.0' of github.com:matrix-org/synapse into erikj-perfErik Johnston2014-12-185-44/+79
| | |\ \ \ \
| | * | | | | Test some ideas that might help performance a bitErik Johnston2014-12-174-23/+32
| * | | | | | Update copyright noticesMark Haines2015-01-06132-128/+212
| * | | | | | Set a content-length for JSON responsesMark Haines2015-01-061-0/+1
| * | | | | | SYN-208/SYN-228: Add runtime checks on startup to enforce that JPEG/PNG suppo...Kegan Dougal2015-01-061-0/+29
| * | | | | | SYN-229: Include Content-Length when downloading filesMark Haines2015-01-063-7/+23
| | |_|_|_|/ | |/| | | |
| * | | | | spell out that VoIP needs TURNMatthew Hodgson2014-12-241-0/+3
| * | | | | clarify these instructions a media-repo specificMatthew Hodgson2014-12-241-1/+3
| * | | | | spell out that upgrading is just installing over the topMatthew Hodgson2014-12-241-0/+5
| * | | | | Include version in User-Agent and Server headersMark Haines2014-12-224-6/+35
| | |_|_|/ | |/| | |
| * | | | Merge branch 'hotfixes-v0.6.0' v0.6.0aMark Haines2014-12-198-13/+42
| |\ \ \ \
| | * | | | Mock ratelimiter to make tests pass.Kegan Dougal2014-12-192-4/+16
| | * | | | more changelogsMatthew Hodgson2014-12-191-0/+6
| | * | | | Rate limit display names and avatar urls per request rather than per event.Kegan Dougal2014-12-191-2/+4
| | | |_|/ | | |/| |
| | * | | Set a state_key for the topic and room name, otherwise they won't be treated ...Mark Haines2014-12-191-0/+2
| | * | | Look for name, topic in the event content rather than the event itself when p...Mark Haines2014-12-191-4/+4
| | * | | bump_presence_active_time when sending a message eventMark Haines2014-12-191-0/+6
| | * | | Don't ratelimit room create eventsMark Haines2014-12-192-3/+4
| |/ / /
| * | | Merge branch 'release-v0.6.0' v0.6.0Mark Haines2014-12-19101-2219/+4746
| |\ \ \
| | * | | Bump web sdk version to 0.6.0Mark Haines2014-12-191-2/+2
| | * | | Set display name when joining via aliasMark Haines2014-12-191-0/+5
| | * | | Remove unneeded federation keys from eventsMark Haines2014-12-191-0/+3
| | * | | SYN-203: Handle requests for thunbnails for images that are smallMark Haines2014-12-191-5/+14
| | * | | s/user_id/sender/Mark Haines2014-12-191-1/+1
| | * | | Merge branch 'develop' into release-v0.6.0Mark Haines2014-12-191-0/+31
| | |\ \ \ | | | |_|/ | | |/| |
| | * | | Supply auth_chain along with current state in '/state/', fetch auth events fr...Mark Haines2014-12-184-31/+55
| | * | | Replace distributor deferred list, with a simple for loop until I understand ...Mark Haines2014-12-182-14/+25
| | * | | Don't yield on sending the event accross federation.Mark Haines2014-12-181-2/+2
| | | |/ | | |/|
| | * | Use _get_events_txn instead of _parse_events_txnErik Johnston2014-12-161-7/+1
| | * | Fix where we pulled in event.state_events from hotfixes branchErik Johnston2014-12-161-1/+1
| | * | Merge branch 'hotfixes-v0.5.4a' of github.com:matrix-org/synapse into release...Erik Johnston2014-12-162-10/+14
| | |\ \
| | | * | Add FIXMEErik Johnston2014-12-161-0/+1
| | | * | Fix bug where we did not send the full auth chain to people that joined over ...Erik Johnston2014-12-162-10/+13
| | |/ / | |/| |
| | * | Make error messages slightly more helpfulErik Johnston2014-12-161-5/+5
| | * | Merge branch 'develop' of github.com:matrix-org/synapse into release-v0.6.0Erik Johnston2014-12-1615-322/+99
| | |\ \
| | * | | Use is_outlier() so that we don't get AttributeErrorErik Johnston2014-12-163-7/+5
| | * | | Don't assume an event existsErik Johnston2014-12-161-2/+4
| | * | | Mention that we should pull in new deps before running upgrade scriptErik Johnston2014-12-161-0/+4
* | | | | Split out function to decide whether to notify or a given eventDavid Baker2015-01-131-2/+17
* | | | | If we didn't get any events, advance the token or we'll just keep not getting...David Baker2014-12-181-0/+1
* | | | | Merge branch 'develop' into pushersDavid Baker2014-12-1899-2160/+4634
|\ \ \ \ \ | | |_|_|/ | |/| | |
| * | | | Update README.rstKegsay2014-12-181-0/+9
| * | | | Update README.rstKegsay2014-12-181-0/+22
| | |_|/ | |/| |
| * | | Merge branch 'release-v0.6.0' into developMark Haines2014-12-1610-53/+194
| |\ \ \ | | | |/ | | |/|
| | * | Change upgrade script to not check hashes or signaturesErik Johnston2014-12-161-46/+53
| | * | Enable rate limiting for all eventsErik Johnston2014-12-161-0/+5
| | * | Fix typo where we thought a list was a dictErik Johnston2014-12-161-3/+4
| | * | Fix upgrade script to run all the missing deltas.Erik Johnston2014-12-162-1/+77
| | * | Do run all deltas up to missing delta 10Erik Johnston2014-12-161-4/+4
| | * | Bump UPGRADES and CHANGESErik Johnston2014-12-163-0/+27
| | * | Make failure to run appropraite upgrade scripts more helpful.Erik Johnston2014-12-162-3/+22
| | * | Fix bugs in upgrade script.Erik Johnston2014-12-161-1/+5
| | * | Rename upgrade scriptErik Johnston2014-12-161-0/+0
| | * | Include database bump in upgrade scriptErik Johnston2014-12-161-0/+2
| | * | Bump database versionErik Johnston2014-12-161-1/+1
| | * | Bump versionErik Johnston2014-12-162-2/+2
| * | | SYN-142: Use a default log file 'homeserver.log' so people get logging by def...Kegan Dougal2014-12-161-1/+1
| * | | Remove send_message since nothing was calling it. Remove Snapshot because onl...Mark Haines2014-12-162-118/+0
| * | | Construct the EventContext in the state handler rather than constructing one ...Mark Haines2014-12-166-59/+50
| * | | clean up coding style a bitMark Haines2014-12-168-26/+26
| * | | Remove annotate_event_with_state as nothing was using it. Update state tests ...Mark Haines2014-12-162-135/+39
| |/ /
| * | Merge pull request #25 from matrix-org/events_refactorMark Haines2014-12-1660-1812/+2114
| |\ \
| | * | Fix pyflakesErik Johnston2014-12-161-2/+0
| | * | Remove FrozenEncoderErik Johnston2014-12-161-8/+0
| | * | Better english in docstrings are helpful.Erik Johnston2014-12-161-2/+2
| | * | Update upgrade scriptErik Johnston2014-12-162-3/+12
| | * | Persist internal_metadataErik Johnston2014-12-164-5/+13
| | * | Add basic docstring to annotate_context_with_stateErik Johnston2014-12-161-0/+11
| | * | Kill off synapse.api.events.*Erik Johnston2014-12-1626-925/+74
| | * | Add fixme to raising of AuthError in federation landErik Johnston2014-12-161-0/+1
| | * | Fix pyflakesErik Johnston2014-12-151-2/+0
| | * | Merge branch 'develop' of github.com:matrix-org/synapse into events_refactorErik Johnston2014-12-152-8/+26
| | |\ \
| | * | | Use frozenutilsErik Johnston2014-12-152-34/+5
| | * | | User.is_mine is no longer a thing. Use hs.is_mine instead.Erik Johnston2014-12-151-1/+1
| | * | | Rename MessageHandler.handle_event. Add a few comments.Erik Johnston2014-12-157-14/+32
| | * | | Remove unused functionsErik Johnston2014-12-151-42/+0
| | * | | Finish up upgrade scriptErik Johnston2014-12-152-31/+95
| | * | | Get current member state from current_state snapshot. Fix leave test.Erik Johnston2014-12-152-4/+15
| | * | | Merge branch 'develop' of github.com:matrix-org/synapse into events_refactorErik Johnston2014-12-1513-56/+449
| | |\ \ \
| | * | | | Add beginnings of upgrade scriptErik Johnston2014-12-151-0/+223
| | * | | | Fix bug where we ignored event_edge_hashes tableErik Johnston2014-12-155-7/+10
| | * | | | Remove unused importsErik Johnston2014-12-123-3/+0
| | * | | | Make auth module use EventTypes constantsErik Johnston2014-12-121-27/+23
| | * | | | Fix tests and remove debug loggingErik Johnston2014-12-122-6/+7
| | * | | | Consistently url decode and decode as utf 8 the URL partsErik Johnston2014-12-125-43/+35
| | * | | | Store json as UTF-8 and not bytesErik Johnston2014-12-121-1/+1
| | * | | | PyflakesErik Johnston2014-12-121-1/+0
| | * | | | Fix membership handler testErik Johnston2014-12-121-82/+97
| | * | | | Fix test.Erik Johnston2014-12-121-1/+1
| | * | | | Validate message, topic and name event contentsErik Johnston2014-12-123-1/+27
| | * | | | Fix stream test. Make sure we add join to auth_events for invitiationsErik Johnston2014-12-122-4/+6
| | * | | | Merge branch 'develop' of github.com:matrix-org/synapse into events_refactorErik Johnston2014-12-1127-20/+1422
| | |\ \ \ \
| | * | | | | Fix replication testsErik Johnston2014-12-111-12/+6
| | * | | | | Fix federation testErik Johnston2014-12-112-19/+25
| | * | | | | Fix room creation testErik Johnston2014-12-111-34/+34
| | * | | | | Fix public room joining by making sure replaces_state never points to itself.Erik Johnston2014-12-113-10/+13
| | * | | | | Fix prev_contentErik Johnston2014-12-113-3/+16
| | * | | | | Fix redaction testsErik Johnston2014-12-111-6/+8
| | * | | | | Fix redactions. Fix 'age' keyErik Johnston2014-12-116-30/+83
| | * | | | | Fix some testsErik Johnston2014-12-105-130/+120
| | * | | | | .from_string() no longer takes a HSErik Johnston2014-12-101-2/+2
| | * | | | | Remove dead codeErik Johnston2014-12-102-27/+0
| | * | | | | Add some basic event validationErik Johnston2014-12-102-10/+27
| | * | | | | Add new event graphing toolErik Johnston2014-12-101-0/+138
| | * | | | | Fix bug where we clobbered old state group valuesErik Johnston2014-12-103-2/+13
| | * | | | | Actually fix bug when uploading state with empty state_keyErik Johnston2014-12-102-2/+3
| | * | | | | Fix bug when uploading state with empty state_keyErik Johnston2014-12-106-88/+29
| | * | | | | Merge branch 'develop' of github.com:matrix-org/synapse into events_refactorErik Johnston2014-12-1015-27/+311
| | |\ \ \ \ \
| | * | | | | | Fix AttributeErrorErik Johnston2014-12-102-1/+4
| | * | | | | | Make depth increase.Erik Johnston2014-12-101-1/+1
| | * | | | | | Add __str__ to FrozenEventErik Johnston2014-12-101-0/+5
| | * | | | | | Try and figure out how and why signatures are being changed.Erik Johnston2014-12-109-34/+86
| | * | | | | | This is to test jenkinsErik Johnston2014-12-091-1/+0
| | * | | | | | This is to test jenkinsErik Johnston2014-12-091-1/+1
| | * | | | | | This is to test jenkinsErik Johnston2014-12-091-0/+1
| | * | | | | | This is to test jenkinsErik Johnston2014-12-091-0/+0
| | * | | | | | Merge branch 'develop' of github.com:matrix-org/synapse into events_refactorErik Johnston2014-12-091-3/+3
| | |\ \ \ \ \ \
| | * | | | | | | PEP8Erik Johnston2014-12-092-2/+2