1

ソースコードを Smack api に読み込んでいます。メソッド XMPPConnection# disconnectは次のようになります。

public void disconnect(Presence unavailablePresence) {
    // If not connected, ignore this request.
    if (packetReader == null || packetWriter == null) {
        return;
    }

    shutdown(unavailablePresence);

    if (roster != null) {
        roster.cleanup();
        roster = null;
    }

    wasAuthenticated = false;

    packetWriter.cleanup();
    packetWriter = null;
    packetReader.cleanup();
    packetReader = null;
}

私のシナリオでは、Session というクラス内にライブ XMPPConnection を格納しています。別の実行スレッドが、Session# shutdown()を呼び出して XMPPConnection のインスタンスを閉じようとします。私が見ているように、ミューテックスなどを取得して XMPPConnection を閉じるように Session に協調的に指示する必要があります。正しい?

4

1 に答える 1

4

既知のバグのようです。

于 2009-04-09T04:02:31.753 に答える