4

SMTP サーバーは、クライアントがコマンドの送信を開始するための合図である接続 (220 サービス準備完了) の確立時にウェルカム メッセージを表示する必要があります。これは、tokio-proto の要求応答パラダイムと矛盾しているようです。

サーバーが要求を送信し、クライアントが応答する (非推奨の TURN) など、プロトコルが完全に逆になる可能性があると想像できますが、現時点では、接続時のウェルカム メッセージ、つまりバナーのみに関心があります。その後、クライアントのリクエスト => サーバーのレスポンスが維持されます。

私はこれをどこに接続するかを考え続けていますが、私bind_serverbind_transportは非常に不可解です。トランスポートを実装する必要がありますか?

これはdecodeコーデックのメソッドにあります。問題は、decode意味のある種​​類のデコードに使用できるデータがない限り、メソッドが呼び出されないことです。フックする接続初期化メソッドがあると思いますが、何も見つかりませんでした。

fn decode(&mut self, buf: &mut BytesMut) -> Result {

    if !self.initialized {
        println!(
            "new connection from {:?} to {:?}",
            self.peer_addr,
            self.local_addr
        );

        self.requests.push(SmtpCommand::Connect {
            local_addr: self.local_addr,
            peer_addr: self.peer_addr,
        });

        self.initialized = true;
    }
    //... snip
    match self.requests.is_empty() {
        true => Ok(None),
        false => Ok(Some(self.requests.remove(0))),
    }
}

の進行中の研究プロジェクトは GitHubにあり、 tokio-proto の問題も開いています。

4

1 に答える 1