- 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:
@ -50,6 +50,8 @@ public class BEncoder
|
|||||||
public static void bencode(Object o, OutputStream out)
|
public static void bencode(Object o, OutputStream out)
|
||||||
throws IOException, IllegalArgumentException
|
throws IOException, IllegalArgumentException
|
||||||
{
|
{
|
||||||
|
if (o == null)
|
||||||
|
throw new NullPointerException("Cannot bencode null");
|
||||||
if (o instanceof String)
|
if (o instanceof String)
|
||||||
bencode((String)o, out);
|
bencode((String)o, out);
|
||||||
else if (o instanceof byte[])
|
else if (o instanceof byte[])
|
||||||
|
@ -35,6 +35,7 @@ import net.i2p.util.I2PAppThread;
|
|||||||
import net.i2p.util.Log;
|
import net.i2p.util.Log;
|
||||||
import net.i2p.util.SecureFileOutputStream;
|
import net.i2p.util.SecureFileOutputStream;
|
||||||
|
|
||||||
|
import org.klomp.snark.I2PSnarkUtil;
|
||||||
import org.klomp.snark.MetaInfo;
|
import org.klomp.snark.MetaInfo;
|
||||||
import org.klomp.snark.Peer;
|
import org.klomp.snark.Peer;
|
||||||
import org.klomp.snark.Snark;
|
import org.klomp.snark.Snark;
|
||||||
@ -1389,7 +1390,7 @@ public class I2PSnarkServlet extends Default {
|
|||||||
_manager.addMessage(_("Invalid info hash in magnet URL {0}", url));
|
_manager.addMessage(_("Invalid info hash in magnet URL {0}", url));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_manager.addMagnet(name, ih);
|
_manager.addMagnet(name, ih, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** copied from ConfigTunnelsHelper */
|
/** copied from ConfigTunnelsHelper */
|
||||||
@ -1574,7 +1575,7 @@ public class I2PSnarkServlet extends Default {
|
|||||||
}
|
}
|
||||||
buf.append("<br>").append(_("Pieces")).append(": ").append(pieces);
|
buf.append("<br>").append(_("Pieces")).append(": ").append(pieces);
|
||||||
buf.append("<br>").append(_("Piece size")).append(": ").append(formatSize(snark.getPieceLength(0)));
|
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("\">")
|
buf.append("<br>").append(_("Magnet link")).append(": <a href=\"").append(MAGNET).append(hex).append("\">")
|
||||||
.append(MAGNET).append(hex).append("</a>");
|
.append(MAGNET).append(hex).append("</a>");
|
||||||
// We don't have the hash of the torrent file
|
// 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\">";
|
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 */
|
/** @since 0.8.1 */
|
||||||
private void savePriorities(Snark snark, Map postParams) {
|
private void savePriorities(Snark snark, Map postParams) {
|
||||||
Storage storage = snark.getStorage();
|
Storage storage = snark.getStorage();
|
||||||
|
Reference in New Issue
Block a user