我正在构建一个IRC客户端,目前正在尝试添加SASL支持。我已经让它工作得很好(身份验证工作),但是,有一个恼人的“小故障”:
据我所知,SASL请求必须在注册前完成,如下所示:
if (sasl) {
send("CAP REQ :sasl");
}
send("NICK: " + nick);
send("USER ....");现在,恼人的小问题是,SASL请求导致IRC服务器返回一个ERR_NOTREGISTERED (451)应答。现在,如果启用了SASL,我当然可以忽略第451个回复,但这似乎有点麻烦。我是不是漏掉了什么?
发布于 2013-08-21 14:02:50
嗯,IRC上的SASL是基于客户端CAPability协商的。
根据这个规范,您在开始时发送一个CAP LS,然后发送USER和NICK。如果在motd/motd丢失之前恢复了一个CAP响应,则服务器支持CAP。检查SASL是否在支持的扩展列表中,并请求它。如果首先丢失motd/motd的结尾,则服务器不支持CAP,因此不支持SASL。
https://stackoverflow.com/questions/18315285
复制相似问题