2

IRC クライアントを構築しており、現在 SASL サポートを追加しようとしています。私はそれをうまく動作させました(認証は機能します)が、厄介な「グリッチ」があります:

私が理解しているように、SASL リクエストは登録前に行う必要があります。

if (sasl) {
    send("CAP REQ :sasl");
}
send("NICK: " + nick);
send("USER ....");

ここで厄介なのは、SASL 要求によって IRC サーバーが ERR_NOTREGISTERED (451) 応答を送り返すことです。もちろん、SASL が有効になっている場合は、最初の 451 応答を無視することもできますが、それは少し厄介なようです。ここで何か不足していますか?

4

1 に答える 1

1

さて、IRC の SASL はClient CAPability Negotiationに基づいています。

この仕様によればCAP LS、最初に a を送信し、その後に and を送信しUSERますNICKCAPmotd/motd missing が終了する前に応答を受け取った場合、サーバーは CAP をサポートしています。SASL がサポートされている拡張機能のリストにあるかどうかを確認し、要求してください。最初に motd/motd の末尾が見つからない場合、サーバーは CAP をサポートしていないため、SASL をサポートしていません。

于 2013-08-21T14:02:50.503 に答える