- Fix about 9 NPEs

- Fix numwant in magnet mode
- Send metadata size in extension handshake
- Open trackers are primary if we don't have primary trackers
- Add missing break in port message handling
- Increase max msg size to account for metadata msg
- Remember magnets across restarts
- Drop peers w/o extensions if we need metainfo
- Fix DATA messages
- Fix tracker transition to non-magnet
- Fix infohash for non-magnet
- Fix up peer transition to non-magnet
- More logging
This commit is contained in:
zzz
2010-12-26 12:27:40 +00:00
parent b97ad6c5f0
commit 12fae66948
2 changed files with 5 additions and 17 deletions

View File

@ -50,6 +50,8 @@ public class BEncoder
public static void bencode(Object o, OutputStream out)
throws IOException, IllegalArgumentException
{
if (o == null)
throw new NullPointerException("Cannot bencode null");
if (o instanceof String)
bencode((String)o, out);
else if (o instanceof byte[])

View File

@ -35,6 +35,7 @@ import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
import net.i2p.util.SecureFileOutputStream;
import org.klomp.snark.I2PSnarkUtil;
import org.klomp.snark.MetaInfo;
import org.klomp.snark.Peer;
import org.klomp.snark.Snark;
@ -1389,7 +1390,7 @@ public class I2PSnarkServlet extends Default {
_manager.addMessage(_("Invalid info hash in magnet URL {0}", url));
return;
}
_manager.addMagnet(name, ih);
_manager.addMagnet(name, ih, true);
}
/** copied from ConfigTunnelsHelper */
@ -1574,7 +1575,7 @@ public class I2PSnarkServlet extends Default {
}
buf.append("<br>").append(_("Pieces")).append(": ").append(pieces);
buf.append("<br>").append(_("Piece size")).append(": ").append(formatSize(snark.getPieceLength(0)));
String hex = toHex(snark.getInfoHash());
String hex = I2PSnarkUtil.toHex(snark.getInfoHash());
buf.append("<br>").append(_("Magnet link")).append(": <a href=\"").append(MAGNET).append(hex).append("\">")
.append(MAGNET).append(hex).append("</a>");
// We don't have the hash of the torrent file
@ -1799,21 +1800,6 @@ public class I2PSnarkServlet extends Default {
return "<img alt=\"" + altText + "\" height=\"16\" width=\"16\" src=\"/i2psnark/_icons/" + icon + ".png\">";
}
/**
* Like DataHelper.toHexString but ensures no loss of leading zero bytes
* @since 0.8.4
*/
private static String toHex(byte[] b) {
StringBuilder buf = new StringBuilder(40);
for (int i = 0; i < b.length; i++) {
int bi = b[i] & 0xff;
if (bi < 16)
buf.append('0');
buf.append(Integer.toHexString(bi));
}
return buf.toString();
}
/** @since 0.8.1 */
private void savePriorities(Snark snark, Map postParams) {
Storage storage = snark.getStorage();