+ elif code == 'KNOCK':
+ try: p = Peer(rest[0])
+ except KeyError:
+ S.warn(['connect', 'knock-unknown-peer', rest[0]])
+ return
+ if p.get('peer') != 'PASSIVE':
+ S.warn(['connect', 'knock-active-peer', p.name])
+ return
+ dot = p.name.find('.')
+ if dot >= 0: kname = p.name[dot + 1:]
+ else: kname = p.name
+ ktag = p.get('key', p.name)
+ if kname != ktag:
+ S.warn(['connect', 'knock-tag-mismatch',
+ 'peer', pname, 'public-key-tag', ktag])
+ return
+ T.spawn(addpeer, p, rest[1:], True)