irkerd: Handle missing usernames asyncio
authorW. Trevor King <wking@tremily.us>
Sat, 31 May 2014 00:09:48 +0000 (17:09 -0700)
committerW. Trevor King <wking@tremily.us>
Sat, 31 May 2014 00:28:04 +0000 (17:28 -0700)
commit057cdd54e61877de30e472ee76686439b00335bc
treed525c2de477f5c4dc786653056678846c431ccd8
parent2d1afefb1d1e773f48fbcfa142340036b9c0dec2
irkerd: Handle missing usernames

Restore the default 'irker' username from the pre-asyncio code:

  username=target.username or username or 'irker',

We don't have a username argument, so it's currently either
target.username or the default.  This avoids a handshake with
ircs://:********@irc.example.net/chan that looks like:

  client: PASS ********
  client: NICK irker123
  client: USER  0 * :irker relaying client
               ^ empty, string
  server: :irc.example.net 461 irker123 USER :Syntax error

To make extra sure we don't have problems, we only submit PASS when we
have both a password and username [1], and only submit USER when we
have a username.  There's no sense in trying to authenticate yourself
with PASS if you don't have a username, although with the new code
it's impossibe to not have a username.

[1]: http://tools.ietf.org/html/rfc2812#section-3.1
irkerd