2005-12-18 jrandom
* Added a standalone runner for the I2PSnark web ui (build with the command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/). * Further I2PSnark error handling
This commit is contained in:
@ -4,8 +4,8 @@
|
|||||||
<target name="build" depends="builddep, jar, war" />
|
<target name="build" depends="builddep, jar, war" />
|
||||||
<target name="builddep">
|
<target name="builddep">
|
||||||
<ant dir="../../jetty/" target="build" />
|
<ant dir="../../jetty/" target="build" />
|
||||||
<ant dir="../../ministreaming/java/" target="build" />
|
<ant dir="../../streaming/java/" target="build" />
|
||||||
<!-- ministreaming will build core -->
|
<!-- streaming will build ministreaming and core -->
|
||||||
</target>
|
</target>
|
||||||
<target name="compile">
|
<target name="compile">
|
||||||
<mkdir dir="./build" />
|
<mkdir dir="./build" />
|
||||||
@ -29,9 +29,59 @@
|
|||||||
<classes dir="./build/obj" includes="**/*" />
|
<classes dir="./build/obj" includes="**/*" />
|
||||||
</war>
|
</war>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
<target name="standalone" depends="standalone_prep">
|
||||||
|
<zip destfile="i2psnark-standalone.zip">
|
||||||
|
<zipfileset dir="./dist/" prefix="i2psnark/" />
|
||||||
|
</zip>
|
||||||
|
</target>
|
||||||
|
<target name="standalone_prep" depends="war">
|
||||||
|
<javac debug="true" deprecation="on" source="1.3" target="1.3"
|
||||||
|
destdir="./build" srcdir="src/" includes="org/klomp/snark/web/RunStandalone.java" >
|
||||||
|
<classpath>
|
||||||
|
<pathelement location="../../jetty/jettylib/commons-logging.jar" />
|
||||||
|
<pathelement location="../../jetty/jettylib/commons-el.jar" />
|
||||||
|
<pathelement location="../../jetty/jettylib/org.mortbay.jetty.jar" />
|
||||||
|
<pathelement location="../../jetty/jettylib/javax.servlet.jar" />
|
||||||
|
<pathelement location="../../../core/java/build/i2p.jar" />
|
||||||
|
</classpath>
|
||||||
|
</javac>
|
||||||
|
|
||||||
|
<jar destfile="./build/launch-i2psnark.jar" basedir="./build/" includes="org/klomp/snark/web/RunStandalone.class">
|
||||||
|
<manifest>
|
||||||
|
<attribute name="Main-Class" value="org.klomp.snark.web.RunStandalone" />
|
||||||
|
<attribute name="Class-Path" value="lib/i2p.jar lib/mstreaming.jar lib/streaming.jar lib/commons-el.jar lib/commons-logging.jar lib/jasper-compiler.jar lib/jasper-runtime.jar lib/javax.servlet.jar lib/org.mortbay.jetty.jar" />
|
||||||
|
</manifest>
|
||||||
|
</jar>
|
||||||
|
|
||||||
|
<delete dir="./dist" />
|
||||||
|
<mkdir dir="./dist" />
|
||||||
|
<copy file="./build/launch-i2psnark.jar" tofile="./dist/launch-i2psnark.jar" />
|
||||||
|
<copy file="../i2psnark.war" tofile="./dist/i2psnark.war" />
|
||||||
|
<mkdir dir="./dist/lib" />
|
||||||
|
<copy file="../../../core/java/build/i2p.jar" tofile="./dist/lib/i2p.jar" />
|
||||||
|
<copy file="../../jetty/jettylib/commons-el.jar" tofile="./dist/lib/commons-el.jar" />
|
||||||
|
<copy file="../../jetty/jettylib/commons-logging.jar" tofile="./dist/lib/commons-logging.jar" />
|
||||||
|
<copy file="../../jetty/jettylib/javax.servlet.jar" tofile="./dist/lib/javax.servlet.jar" />
|
||||||
|
<copy file="../../jetty/jettylib/org.mortbay.jetty.jar" tofile="./dist/lib/org.mortbay.jetty.jar" />
|
||||||
|
<copy file="../../jetty/jettylib/jasper-compiler.jar" tofile="./dist/lib/jasper-compiler.jar" />
|
||||||
|
<copy file="../../jetty/jettylib/jasper-runtime.jar" tofile="./dist/lib/jasper-runtime.jar" />
|
||||||
|
<copy file="../../ministreaming/java/build/mstreaming.jar" tofile="./dist/lib/mstreaming.jar" />
|
||||||
|
<copy file="../../streaming/java/build/streaming.jar" tofile="./dist/lib/streaming.jar" />
|
||||||
|
<copy file="../jetty-i2psnark.xml" tofile="./dist/jetty-i2psnark.xml" />
|
||||||
|
<copy file="../readme-standalone.txt" tofile="./dist/readme.txt" />
|
||||||
|
<mkdir dir="./dist/work" />
|
||||||
|
<mkdir dir="./dist/logs" />
|
||||||
|
|
||||||
|
<zip destfile="i2psnark-standalone.zip">
|
||||||
|
<zipfileset dir="./dist/" prefix="i2psnark/" />
|
||||||
|
</zip>
|
||||||
|
</target>
|
||||||
|
|
||||||
<target name="clean">
|
<target name="clean">
|
||||||
<delete dir="./build" />
|
<delete dir="./build" />
|
||||||
<delete file="../i2psnark.war" />
|
<delete file="../i2psnark.war" />
|
||||||
|
<delete file="./i2psnark-standalone.zip" />
|
||||||
</target>
|
</target>
|
||||||
<target name="cleandep" depends="clean">
|
<target name="cleandep" depends="clean">
|
||||||
<ant dir="../../ministreaming/java/" target="distclean" />
|
<ant dir="../../ministreaming/java/" target="distclean" />
|
||||||
|
@ -192,6 +192,15 @@ public class I2PSnarkUtil {
|
|||||||
|
|
||||||
/** hook between snark's logger and an i2p log */
|
/** hook between snark's logger and an i2p log */
|
||||||
void debug(String msg, int snarkDebugLevel, Throwable t) {
|
void debug(String msg, int snarkDebugLevel, Throwable t) {
|
||||||
|
if (t instanceof OutOfMemoryError) {
|
||||||
|
try { Thread.sleep(100); } catch (InterruptedException ie) {}
|
||||||
|
try {
|
||||||
|
t.printStackTrace();
|
||||||
|
} catch (Throwable tt) {}
|
||||||
|
try {
|
||||||
|
System.out.println("OOM thread: " + Thread.currentThread().getName());
|
||||||
|
} catch (Throwable tt) {}
|
||||||
|
}
|
||||||
switch (snarkDebugLevel) {
|
switch (snarkDebugLevel) {
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -283,6 +283,9 @@ public class Peer implements Comparable
|
|||||||
PeerConnectionOut out = s.out;
|
PeerConnectionOut out = s.out;
|
||||||
if (out != null)
|
if (out != null)
|
||||||
out.disconnect();
|
out.disconnect();
|
||||||
|
PeerListener pl = s.listener;
|
||||||
|
if (pl != null)
|
||||||
|
pl.disconnected(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,8 +172,9 @@ class PeerConnectionIn implements Runnable
|
|||||||
}
|
}
|
||||||
catch (Throwable t)
|
catch (Throwable t)
|
||||||
{
|
{
|
||||||
Snark.debug(peer + ": " + t, Snark.ERROR);
|
I2PSnarkUtil.instance().debug(peer.toString(), Snark.ERROR, t);
|
||||||
t.printStackTrace();
|
if (t instanceof OutOfMemoryError)
|
||||||
|
throw (OutOfMemoryError)t;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
@ -62,13 +62,13 @@ class PeerConnectionOut implements Runnable
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
while (!quit)
|
while (!quit && peer.isConnected())
|
||||||
{
|
{
|
||||||
Message m = null;
|
Message m = null;
|
||||||
PeerState state = null;
|
PeerState state = null;
|
||||||
synchronized(sendQueue)
|
synchronized(sendQueue)
|
||||||
{
|
{
|
||||||
while (!quit && sendQueue.isEmpty())
|
while (!quit && peer.isConnected() && sendQueue.isEmpty())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -86,7 +86,7 @@ class PeerConnectionOut implements Runnable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
state = peer.state;
|
state = peer.state;
|
||||||
if (!quit && state != null)
|
if (!quit && state != null && peer.isConnected())
|
||||||
{
|
{
|
||||||
// Piece messages are big. So if there are other
|
// Piece messages are big. So if there are other
|
||||||
// (control) messages make sure they are send first.
|
// (control) messages make sure they are send first.
|
||||||
@ -149,8 +149,9 @@ class PeerConnectionOut implements Runnable
|
|||||||
}
|
}
|
||||||
catch (Throwable t)
|
catch (Throwable t)
|
||||||
{
|
{
|
||||||
Snark.debug(peer + ": " + t, Snark.ERROR);
|
I2PSnarkUtil.instance().debug(peer.toString(), Snark.ERROR, t);
|
||||||
t.printStackTrace();
|
if (t instanceof OutOfMemoryError)
|
||||||
|
throw (OutOfMemoryError)t;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
@ -536,8 +536,8 @@ public class PeerCoordinator implements PeerListener
|
|||||||
|
|
||||||
public void disconnected(Peer peer)
|
public void disconnected(Peer peer)
|
||||||
{
|
{
|
||||||
if (Snark.debug >= Snark.INFO)
|
if (_log.shouldLog(Log.INFO))
|
||||||
Snark.debug("Disconnected " + peer, Snark.INFO);
|
_log.info("Disconnected " + peer);
|
||||||
|
|
||||||
synchronized(peers)
|
synchronized(peers)
|
||||||
{
|
{
|
||||||
|
@ -231,8 +231,9 @@ public class TrackerClient extends I2PThread
|
|||||||
}
|
}
|
||||||
catch (Throwable t)
|
catch (Throwable t)
|
||||||
{
|
{
|
||||||
Snark.debug("TrackerClient: " + t, Snark.ERROR);
|
I2PSnarkUtil.instance().debug("TrackerClient: " + t, Snark.ERROR, t);
|
||||||
t.printStackTrace();
|
if (t instanceof OutOfMemoryError)
|
||||||
|
throw (OutOfMemoryError)t;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
package org.klomp.snark.web;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import net.i2p.util.FileUtil;
|
||||||
|
import org.mortbay.jetty.Server;
|
||||||
|
|
||||||
|
public class RunStandalone {
|
||||||
|
private Server _server;
|
||||||
|
|
||||||
|
static {
|
||||||
|
System.setProperty("org.mortbay.http.Version.paranoid", "true");
|
||||||
|
System.setProperty("org.mortbay.xml.XmlParser.NotValidating", "true");
|
||||||
|
}
|
||||||
|
|
||||||
|
private RunStandalone(String args[]) {}
|
||||||
|
|
||||||
|
public static void main(String args[]) {
|
||||||
|
RunStandalone runner = new RunStandalone(args);
|
||||||
|
runner.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start() {
|
||||||
|
File workDir = new File("work");
|
||||||
|
boolean workDirRemoved = FileUtil.rmdir(workDir, false);
|
||||||
|
if (!workDirRemoved)
|
||||||
|
System.err.println("ERROR: Unable to remove Jetty temporary work directory");
|
||||||
|
boolean workDirCreated = workDir.mkdirs();
|
||||||
|
if (!workDirCreated)
|
||||||
|
System.err.println("ERROR: Unable to create Jetty temporary work directory");
|
||||||
|
|
||||||
|
try {
|
||||||
|
_server = new Server("jetty-i2psnark.xml");
|
||||||
|
_server.start();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stop() {
|
||||||
|
try {
|
||||||
|
_server.stop();
|
||||||
|
} catch (InterruptedException ie) {
|
||||||
|
ie.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
114
apps/i2psnark/jetty-i2psnark.xml
Normal file
114
apps/i2psnark/jetty-i2psnark.xml
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||||
|
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure 1.2//EN" "http://jetty.mortbay.org/configure_1_2.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- =============================================================== -->
|
||||||
|
<!-- Configure the Jetty Server -->
|
||||||
|
<!-- =============================================================== -->
|
||||||
|
<Configure class="org.mortbay.jetty.Server">
|
||||||
|
|
||||||
|
<!-- =============================================================== -->
|
||||||
|
<!-- Configure the Request Listeners -->
|
||||||
|
<!-- =============================================================== -->
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<!-- Add and configure a HTTP listener to port 8080 -->
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<Call name="addListener">
|
||||||
|
<Arg>
|
||||||
|
<New class="org.mortbay.http.SocketListener">
|
||||||
|
<Arg>
|
||||||
|
<New class="org.mortbay.util.InetAddrPort">
|
||||||
|
<Set name="host">0.0.0.0</Set>
|
||||||
|
<Set name="port">8002</Set>
|
||||||
|
</New>
|
||||||
|
</Arg>
|
||||||
|
<Set name="MinThreads">3</Set>
|
||||||
|
<Set name="MaxThreads">10</Set>
|
||||||
|
<Set name="MaxIdleTimeMs">30000</Set>
|
||||||
|
<Set name="LowResourcePersistTimeMs">1000</Set>
|
||||||
|
<Set name="ConfidentialPort">8443</Set>
|
||||||
|
<Set name="IntegralPort">8443</Set>
|
||||||
|
<Set name="PoolName">main</Set>
|
||||||
|
</New>
|
||||||
|
</Arg>
|
||||||
|
</Call>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<!-- Add a HTTPS SSL listener on port 8443 -->
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<!-- UNCOMMENT TO ACTIVATE
|
||||||
|
<Call name="addListener">
|
||||||
|
<Arg>
|
||||||
|
<New class="org.mortbay.http.SunJsseListener">
|
||||||
|
<Set name="Port">8443</Set>
|
||||||
|
<Set name="PoolName">main</Set>
|
||||||
|
<Set name="Keystore"><SystemProperty name="jetty.home" default="."/>/etc/demokeystore</Set>
|
||||||
|
<Set name="Password">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
|
||||||
|
<Set name="KeyPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set>
|
||||||
|
<Set name="NonPersistentUserAgent">MSIE 5</Set>
|
||||||
|
</New>
|
||||||
|
</Arg>
|
||||||
|
</Call>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<!-- Add a AJP13 listener on port 8009 -->
|
||||||
|
<!-- This protocol can be used with mod_jk in apache, IIS etc. -->
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<!--
|
||||||
|
<Call name="addListener">
|
||||||
|
<Arg>
|
||||||
|
<New class="org.mortbay.http.ajp.AJP13Listener">
|
||||||
|
<Set name="PoolName">ajp</Set>
|
||||||
|
<Set name="Port">8009</Set>
|
||||||
|
<Set name="MinThreads">3</Set>
|
||||||
|
<Set name="MaxThreads">20</Set>
|
||||||
|
<Set name="MaxIdleTimeMs">0</Set>
|
||||||
|
<Set name="confidentialPort">443</Set>
|
||||||
|
</New>
|
||||||
|
</Arg>
|
||||||
|
</Call>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- =============================================================== -->
|
||||||
|
<!-- Configure the Contexts -->
|
||||||
|
<!-- =============================================================== -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<!-- Add a all web application within the webapps directory. -->
|
||||||
|
<!-- + No virtual host specified -->
|
||||||
|
<!-- + Look in the webapps directory relative to jetty.home or . -->
|
||||||
|
<!-- + Use the default webdefault.xml in jetty's install -->
|
||||||
|
<!-- + Upack the war file -->
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<Set name="rootWebApp">i2psnark</Set>
|
||||||
|
<Call name="addWebApplication">
|
||||||
|
<Arg>/</Arg>
|
||||||
|
<Arg>i2psnark.war</Arg>
|
||||||
|
</Call>
|
||||||
|
|
||||||
|
<!-- =============================================================== -->
|
||||||
|
<!-- Configure the Request Log -->
|
||||||
|
<!-- =============================================================== -->
|
||||||
|
<Set name="RequestLog">
|
||||||
|
<New class="org.mortbay.http.NCSARequestLog">
|
||||||
|
<Arg>./logs/yyyy_mm_dd.i2psnark-request.log</Arg>
|
||||||
|
<Set name="retainDays">90</Set>
|
||||||
|
<Set name="append">true</Set>
|
||||||
|
<Set name="extended">false</Set>
|
||||||
|
<Set name="buffered">false</Set>
|
||||||
|
<Set name="LogTimeZone">GMT</Set>
|
||||||
|
</New>
|
||||||
|
</Set>
|
||||||
|
|
||||||
|
<!-- =============================================================== -->
|
||||||
|
<!-- Configure the Other Server Options -->
|
||||||
|
<!-- =============================================================== -->
|
||||||
|
<Set name="requestsPerGC">2000</Set>
|
||||||
|
<Set name="statsOn">false</Set>
|
||||||
|
|
||||||
|
</Configure>
|
6
apps/i2psnark/readme-standalone.txt
Normal file
6
apps/i2psnark/readme-standalone.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
To run I2PSnark from the command line, run "java -jar lib/i2psnark.jar", but
|
||||||
|
to run it with the web UI, run "java -jar launch-i2psnark.jar". I2PSnark is
|
||||||
|
GPL'ed software, based on Snark (http://www.klomp.org/) to run on top of I2P
|
||||||
|
(http://www.i2p.net/) within a webserver (such as the bundled Jetty from
|
||||||
|
http://jetty.mortbay.org/). For more information about I2PSnark, get in touch
|
||||||
|
with the folks at http://forum.i2p.net/
|
@ -10,6 +10,7 @@ public class RunStandalone {
|
|||||||
|
|
||||||
static {
|
static {
|
||||||
System.setProperty("org.mortbay.http.Version.paranoid", "true");
|
System.setProperty("org.mortbay.http.Version.paranoid", "true");
|
||||||
|
System.setProperty("org.mortbay.xml.XmlParser.NotValidating", "true");
|
||||||
System.setProperty("syndie.rootDir", ".");
|
System.setProperty("syndie.rootDir", ".");
|
||||||
System.setProperty("syndie.defaultSingleUserArchives", "http://syndiemedia.i2p.net:8000/archive/archive.txt");
|
System.setProperty("syndie.defaultSingleUserArchives", "http://syndiemedia.i2p.net:8000/archive/archive.txt");
|
||||||
System.setProperty("syndie.defaultProxyHost", "");
|
System.setProperty("syndie.defaultProxyHost", "");
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
<echo message=" updater: tar the built i2p specific files into an i2pupdate.zip (extracts safely over existing installs)" />
|
<echo message=" updater: tar the built i2p specific files into an i2pupdate.zip (extracts safely over existing installs)" />
|
||||||
<echo message=" distclean: clean up all derived files" />
|
<echo message=" distclean: clean up all derived files" />
|
||||||
<echo message=" syndie: generate a standalone syndie install" />
|
<echo message=" syndie: generate a standalone syndie install" />
|
||||||
|
<echo message=" i2psnark: generate a standalone i2psnark install" />
|
||||||
<echo message=" javadoc: generate javadoc for the entire project into ./build/javadoc" />
|
<echo message=" javadoc: generate javadoc for the entire project into ./build/javadoc" />
|
||||||
</target>
|
</target>
|
||||||
<target name="dist" depends="pkg, javadoc">
|
<target name="dist" depends="pkg, javadoc">
|
||||||
@ -152,6 +153,7 @@
|
|||||||
<delete file="i2pinstall.exe" failonerror="false" quiet="true" />
|
<delete file="i2pinstall.exe" failonerror="false" quiet="true" />
|
||||||
<delete file="i2p.exe" failonerror="false" quiet="true" />
|
<delete file="i2p.exe" failonerror="false" quiet="true" />
|
||||||
<delete file="syndie-standalone.zip" failonerror="false" quiet="true" />
|
<delete file="syndie-standalone.zip" failonerror="false" quiet="true" />
|
||||||
|
<delete file="i2psnark-standalone.zip" failonerror="false" quiet="true" />
|
||||||
</target>
|
</target>
|
||||||
<target name="distclean" depends="clean">
|
<target name="distclean" depends="clean">
|
||||||
<ant dir="core/java/" target="distclean" />
|
<ant dir="core/java/" target="distclean" />
|
||||||
@ -453,4 +455,8 @@
|
|||||||
<ant dir="apps/syndie/java/" target="standalone" />
|
<ant dir="apps/syndie/java/" target="standalone" />
|
||||||
<copy file="apps/syndie/java/syndie-standalone.zip" todir="." />
|
<copy file="apps/syndie/java/syndie-standalone.zip" todir="." />
|
||||||
</target>
|
</target>
|
||||||
|
<target name="i2psnark">
|
||||||
|
<ant dir="apps/i2psnark/java" target="standalone" />
|
||||||
|
<copy file="apps/i2psnark/java/i2psnark-standalone.zip" todir="." />
|
||||||
|
</target>
|
||||||
</project>
|
</project>
|
||||||
|
17
history.txt
17
history.txt
@ -1,4 +1,19 @@
|
|||||||
$Id: history.txt,v 1.361 2005/12/16 22:47:04 jrandom Exp $
|
$Id: history.txt,v 1.362 2005/12/17 04:22:07 jrandom Exp $
|
||||||
|
|
||||||
|
2005-12-18 jrandom
|
||||||
|
* Added a standalone runner for the I2PSnark web ui (build with the
|
||||||
|
command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
|
||||||
|
with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
|
||||||
|
* Further I2PSnark error handling
|
||||||
|
|
||||||
|
2005-12-17 jrandom
|
||||||
|
* Let multiuser accounts authorize themselves to access the remote
|
||||||
|
functionality again (thanks Ch0Hag!)
|
||||||
|
* Adjust the JVM heap size to 128MB for new installs (existing users can
|
||||||
|
accomplish this by editing wrapper.config, adding the line
|
||||||
|
"wrapper.java.maxmemory=128", and then doing a full shutdown and startup
|
||||||
|
of the router). This is relevent for heavy usage of I2PSnark in the
|
||||||
|
router console.
|
||||||
|
|
||||||
2005-12-17 jrandom
|
2005-12-17 jrandom
|
||||||
* Use our faster SHA1, rather than the JVM's within I2PSnark, and let
|
* Use our faster SHA1, rather than the JVM's within I2PSnark, and let
|
||||||
|
Reference in New Issue
Block a user