Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Remove a bunch of dead event_auth code. #6214

Merged
merged 5 commits into from
Oct 18, 2019
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/6214.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove some unused event-auth code.
58 changes: 0 additions & 58 deletions scripts-dev/check_auth.py

This file was deleted.

2 changes: 0 additions & 2 deletions synapse/api/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,6 @@ class EventTypes(object):

class RejectedReason(object):
AUTH_ERROR = "auth_error"
REPLACED = "replaced"
NOT_ANCESTOR = "not_ancestor"


class RoomCreationPreset(object):
Expand Down
38 changes: 0 additions & 38 deletions synapse/federation/federation_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -878,44 +878,6 @@ def get_public_rooms(
third_party_instance_id=third_party_instance_id,
)

@defer.inlineCallbacks
def query_auth(self, destination, room_id, event_id, local_auth):
"""
Params:
destination (str)
event_it (str)
local_auth (list)
"""
time_now = self._clock.time_msec()

send_content = {"auth_chain": [e.get_pdu_json(time_now) for e in local_auth]}

code, content = yield self.transport_layer.send_query_auth(
destination=destination,
room_id=room_id,
event_id=event_id,
content=send_content,
)

room_version = yield self.store.get_room_version(room_id)
format_ver = room_version_to_event_format(room_version)

auth_chain = [event_from_pdu_json(e, format_ver) for e in content["auth_chain"]]

signed_auth = yield self._check_sigs_and_hash_and_fetch(
destination, auth_chain, outlier=True, room_version=room_version
)

signed_auth.sort(key=lambda e: e.depth)

ret = {
"auth_chain": signed_auth,
"rejects": content.get("rejects", []),
"missing": content.get("missing", []),
}

return ret

@defer.inlineCallbacks
def get_missing_events(
self,
Expand Down
11 changes: 0 additions & 11 deletions synapse/federation/transport/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -381,17 +381,6 @@ def get_event_auth(self, destination, room_id, event_id):

return content

@defer.inlineCallbacks
@log_function
def send_query_auth(self, destination, room_id, event_id, content):
path = _create_v1_path("/query_auth/%s/%s", room_id, event_id)

content = yield self.client.post_json(
destination=destination, path=path, data=content
)

return content

@defer.inlineCallbacks
@log_function
def query_client_keys(self, destination, query_content, timeout):
Expand Down
102 changes: 0 additions & 102 deletions synapse/handlers/federation.py
Original file line number Diff line number Diff line change
Expand Up @@ -2181,103 +2181,10 @@ def _update_auth_events_and_context_for_auth(

auth_events.update(new_state)

different_auth = event_auth_events.difference(
e.event_id for e in auth_events.values()
)

yield self._update_context_for_auth_events(
event, context, auth_events, event_key
)

if not different_auth:
# we're done
return

logger.info(
"auth_events still refers to events which are not in the calculated auth "
"chain after state resolution: %s",
different_auth,
)

# Only do auth resolution if we have something new to say.
# We can't prove an auth failure.
do_resolution = False

for e_id in different_auth:
if e_id in have_events:
if have_events[e_id] == RejectedReason.NOT_ANCESTOR:
do_resolution = True
break

if not do_resolution:
logger.info(
"Skipping auth resolution due to lack of provable rejection reasons"
)
return

logger.info("Doing auth resolution")

prev_state_ids = yield context.get_prev_state_ids(self.store)

# 1. Get what we think is the auth chain.
auth_ids = yield self.auth.compute_auth_events(event, prev_state_ids)
local_auth_chain = yield self.store.get_auth_chain(auth_ids, include_given=True)

try:
# 2. Get remote difference.
try:
result = yield self.federation_client.query_auth(
origin, event.room_id, event.event_id, local_auth_chain
)
except RequestSendFailed as e:
# The other side isn't around or doesn't implement the
# endpoint, so lets just bail out.
logger.info("Failed to query auth from remote: %s", e)
return

seen_remotes = yield self.store.have_seen_events(
[e.event_id for e in result["auth_chain"]]
)

# 3. Process any remote auth chain events we haven't seen.
for ev in result["auth_chain"]:
if ev.event_id in seen_remotes:
continue

if ev.event_id == event.event_id:
continue

try:
auth_ids = ev.auth_event_ids()
auth = {
(e.type, e.state_key): e
for e in result["auth_chain"]
if e.event_id in auth_ids or event.type == EventTypes.Create
}
ev.internal_metadata.outlier = True

logger.debug(
"do_auth %s different_auth: %s", event.event_id, e.event_id
)

yield self._handle_new_event(origin, ev, auth_events=auth)

if ev.event_id in event_auth_events:
auth_events[(ev.type, ev.state_key)] = ev
except AuthError:
pass

except Exception:
# FIXME:
logger.exception("Failed to query auth chain")

# 4. Look at rejects and their proofs.
# TODO.

yield self._update_context_for_auth_events(
event, context, auth_events, event_key
)

@defer.inlineCallbacks
def _update_context_for_auth_events(self, event, context, auth_events, event_key):
"""Update the state_ids in an event context after auth event resolution,
Expand Down Expand Up @@ -2444,15 +2351,6 @@ def get_next(it, opt=None):

reason_map[e.event_id] = reason

if reason == RejectedReason.AUTH_ERROR:
pass
elif reason == RejectedReason.REPLACED:
# TODO: Get proof
pass
elif reason == RejectedReason.NOT_ANCESTOR:
# TODO: Get proof.
pass

logger.debug("construct_auth_difference returning")

return {
Expand Down