irkerd: Pull request-parsing out into Irker._parse_request
authorW. Trevor King <wking@tremily.us>
Fri, 7 Mar 2014 04:21:04 +0000 (20:21 -0800)
committerEric S. Raymond <esr@thyrsus.com>
Tue, 11 Mar 2014 04:42:19 +0000 (00:42 -0400)
commit8468af97bdd1e4ceaad9a68204565cfd808564fd
tree8b5e2eaa46297bd554254b8d2df1222593333d8f
parentaae700b19db564d1ef37cdfa60dcb032a6cee166
irkerd: Pull request-parsing out into Irker._parse_request

There is a lot of error checking here, which is good, but it distracts
from the core logic of Irker.handle.  By pulling the parsing out into
a private helper function, we isolate the code focused on parsing and
error checking from the code focused on dispatching and connection
management, making both easier to read.

I've also changed the Target-validation logic.  The old Target.valid
returned True if the Target URL was valid, and False otherwise.  The
new Target.validate returns None, and raises an InvalidRequest
exception with an error message describing exactly why the URL is
invalid.  We print these messages when dropping server URLs in
Irker._parse_request, while the old Irker.handle code silently dropped
invalid targets.  We also continue processing other server URLs after
an invalid Target, while the old Irker.handle code bailed out after
the first invalid Target.  Besides making the invalid URLs more
obvious in the logs and increasing resiliency to invalid URLs, these
changes allow us to pull the URL-to-Target conversion out of
Irker.handle entirely, so it can focus more strongly on dispatch and
connection management.
irkerd