}
continue;
}
if ((m1 != null) && m1.getSpec().equals(DMT.sendAborted)) {
_prb.abort(m1.getInt(DMT.REASON), m1.getString(DMT.DESCRIPTION));
throw new RetrievalException(m1.getInt(DMT.REASON), m1.getString(DMT.DESCRIPTION));
}
if ((m1 == null) || (m1.getSpec().equals(DMT.allSent))) {
if (consecutiveMissingPacketReports >= MAX_CONSECUTIVE_MISSING_PACKET_REPORTS) {
_prb.abort(RetrievalException.SENDER_DIED, "Sender unresponsive to resend requests");
LinkedList rem = new LinkedList();
rem.add(_sender);
// TODO: This is a stupid work around for BlockTransferTest and needs to be fixed
if (RoutingTable.getRoutingTable() != null)
RoutingTable.getRoutingTable().removePeers(rem, "Failed to send data after acking request");
throw new RetrievalException(RetrievalException.SENDER_DIED,
"Sender unresponsive to resend requests");
}
LinkedList missing = new LinkedList();
for (int x = 0; x < _prb.getNumPackets(); x++) {
if (!_prb.isReceived(x)) {