if (connectionState != STATE_ADDR) {
error("We weren't waiting for M_ADR");
}
for (String addr : arg.replace("^[ ]*", "").split(" ")) {
try {
FtnAddress a = new FtnAddress(addr);
Link link = FtnTools.getLinkByFtnAddress(a);
boolean nodelist = NodelistScanner.getInstance().isExists(a) != null;
if (link != null || nodelist) {
foreignAddress.add(a);
}
} catch (NumberFormatException e) {
logger.l4("Invalid address " + addr);
}
}
if (foreignAddress.isEmpty()) {
error("No valid address specified");
return;
}
Link link = FtnTools.getLinkByFtnAddress(foreignAddress);
if (link != null) {
String ourAka = FtnTools.getOptionString(link,
LinkOption.STRING_OUR_AKA);
if (ourAka != null) {
try {
FtnAddress addr = new FtnAddress(ourAka);
if (ourAddress.contains(addr)) {
ourAddress.clear();
ourAddress.add(addr);
}
} catch (NumberFormatException e) {
}
}
foreignLink = link;
secure = true;
} else {
boolean nodelist = false;
for (FtnAddress a : foreignAddress) {
if (NodelistScanner.getInstance().isExists(a) != null) {
nodelist = true;
break;
}
}
if (!nodelist) {
error("No one address you specified exists in Nodelist");
return;
}
}
for (FtnAddress addr : foreignAddress) {
if (!PollQueue.getSelf().isActive(addr)) {
PollQueue.getSelf().start(addr);
} else {
busy("Already connected with " + addr.toString());
}
}
if (clientConnection) {
frames.addLast(new BinkpFrame(BinkpCommand.M_PWD, getAuthPassword(
foreignLink, secure, cramAlgo, cramText)));