2009-04-09 3 views
1

をスレッドセーフされていないことを確認してください、私はスマックAPIにソースコードを読んでいると、メソッドXMPPConnection#切断は次のようになります。私は保存しています、私のシナリオではこのXMPPコードが

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; 
} 

セッションと呼ばれるクラス内のライブXMPPConnection 個別の実行スレッドは、セッション#shutdown()を呼び出して、XMPPConnectionのインスタンスを閉じることを試みます。私が見ているように、私はmutexなどを取得してXMPPConnectionを閉じるためにSessionに協力して伝える必要があります。正しい?

答えて

4

known bugのように見えます。

+0

バグを指摘してくれてありがとう。私はそれを呼び出す前に外部と同期することは避けられません。平和。 –