2009-04-09 5 views
1

Я читаю исходный код АНИ Смак и метод 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 внутри класса Session. Отдельный поток выполнения попытается закрыть мой экземпляр XMPPConnection, вызвав Session # shutdown(). Как я вижу, мне придется совместно сказать Session, чтобы закрыть XMPPConnection, приобретя мьютекс или что-то в этом роде. Верный?

ответ

4

Похоже, что это known bug.

+0

Спасибо за указание на ошибку. Тогда неизбежно, что я синхронизируюсь извне, прежде чем позвонить ему. Мир. –

Смежные вопросы