- priority: 5 --> 9
hi all,
if I send serveral messages at the beginning, the msn cannot receive messages. I debugged BasicMessenger#sendText(Email, String) and got what was the matter.
public void sendText(final Email email, final String text) {
if (email == null || text == null)
return;
MsnSwitchboard[] switchboards = getActiveSwitchboards();
for (MsnSwitchboard switchboard1 : switchboards) {
if (switchboard1.containContact(email)
&& switchboard1.getAllContacts().length == 1) {
switchboard1.sendText(text);
return;
}
}
final Object attachment = new Object();
addSwitchboardListener(new MsnSwitchboardAdapter() {
@Override
public void switchboardStarted(MsnSwitchboard switchboard) {
if (switchboard.getAttachment() == attachment) {
switchboard.inviteContact(email);
}
}
@Override
public void contactJoinSwitchboard(MsnSwitchboard switchboard,
MsnContact contact) {
if (switchboard.getAttachment() == attachment
&& email.equals(contact.getEmail())) {
switchboard.setAttachment(null);
removeSwitchboardListener(this);
switchboard.sendText(text);
}
}
});
newSwitchboard(attachment);
}
each time the last line "newSwitchboard(attachment) is called, the attachment of switchboard will changed, so switchboard.getAttachment() == attachment always causes false.
so I removed switchboard.getAttachment() == attachment in switchboardStarted and contactJoinSwitchboard, then the BasicMessenger#sendText(Email, String) works fine.
But I wonder whether this modification will cause another bugs.