diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
index 817117611e..82bed01c66 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -900,13 +900,14 @@ public class I2PSnarkServlet extends Default {
out.write(trackerLink);
}
+ String encodedBaseName = urlEncode(snark.getBaseName());
// File type icon column
out.write("\n
");
if (isValid) {
// Link to local details page - note that trailing slash on a single-file torrent
// gets us to the details page instead of the file.
StringBuilder buf = new StringBuilder(128);
- buf.append("");
out.write(buf.toString());
@@ -929,7 +930,7 @@ public class I2PSnarkServlet extends Default {
out.write(" | ");
if (remaining == 0 || isMultiFile) {
StringBuilder buf = new StringBuilder(128);
- buf.append("").append(link).append("");
return buf.toString();
}
+
+ /** @since 0.8.13 */
+ private static String urlEncode(String s) {
+ return s.replace("&", "&").replace(" ", "%20").replace(":", "%3A").replace("/", "%2F").replace(";", "%3B");
+ }
private static final String DOCTYPE = "\n";
private static final String HEADER_A = "");
buf.append(" ").append(_("Torrent file")).append(": ").append(snark.getName());
buf.append("");
+ } else {
+ // shouldn't happen
+ buf.append(" | Not found resource=\"").append(r.toString())
+ .append("\" base=\"").append(base)
+ .append("\" torrent=\"").append(torrentName)
+ .append("\" |
");
}
if (ls == null) {
// We are only showing the torrent info section
@@ -2068,7 +2080,7 @@ private static class FetchAndAdd implements Runnable {
//if (peerParam != null)
// buf.append("\n");
buf.append(_("Torrent was not retrieved from {0}", urlify(_url)));
- String link = _url.replace("&", "&").replace(" ", "%20").replace(":", "%3A").replace("/", "%2F");
+ String link = urlEncode(_url);
/**** FIXME ticket #575
buf.append(" - [");
buf.append(_("Retry"));