Author: toad
Date: 2006-01-27 16:34:08 +0000 (Fri, 27 Jan 2006)
New Revision: 7951
Modified:
trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
trunk/freenet/src/freenet/node/Version.java
Log:
402:
Chasing impossible cosmic-ray random exit bug.
Modified: trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/UdpSocketManager.java 2006-01-27
16:08:49 UTC (rev 7950)
+++ trunk/freenet/src/freenet/io/comm/UdpSocketManager.java 2006-01-27
16:34:08 UTC (rev 7951)
@@ -94,44 +94,11 @@
public void run() { // Listen for packets
try {
- while (/*_active*/true) {
- try {
- DatagramPacket packet = getPacket();
- // Check for timedout _filters
- removeTimedOutFilters();
- // Check for matched _filters
- if (packet != null) {
- Peer peer = new
Peer(packet.getAddress(), packet.getPort());
- byte[] data = packet.getData();
- int offset = packet.getOffset();
- int length = packet.getLength();
- if (lowLevelFilter != null) {
- try {
-
lowLevelFilter.process(data, offset, length, peer);
-
Logger.minor(this,
-
"Successfully handled packet length " + length);
- } catch (Throwable t) {
-
Logger.error(this, "Caught " + t + " from "
-
+ lowLevelFilter, t);
- }
- } else {
- // Create a bogus
context since no filter
- Message m =
decodePacket(data, offset, length,
- new
DummyPeerContext(peer));
- if (m != null)
- checkFilters(m);
- }
- } else
- Logger.minor(this, "Null
packet");
- } catch (Throwable t) {
- Logger.error(this, "Caught " + t, t);
- System.err.println("Caught "+t);
- t.printStackTrace(System.err);
- }
- }
+ runLoop();
} catch (Throwable t) {
- System.err.println("Caught "+t);
- t.printStackTrace(System.err);
+ // Impossible? It keeps on exiting. We get the below,
+ // but not this...
+ System.err.println(t.getMessage());
} finally {
System.err.println("run() exiting");
Logger.error(this, "run() exiting");
@@ -142,6 +109,48 @@
}
}
+ private void runLoop() {
+ while (/*_active*/true) {
+ try {
+ realRun();
+ } catch (Throwable t) {
+ Logger.error(this, "Caught " + t, t);
+ System.err.println("Caught "+t);
+ t.printStackTrace(System.err);
+ }
+ }
+ }
+
+ private void realRun() {
+ DatagramPacket packet = getPacket();
+ // Check for timedout _filters
+ removeTimedOutFilters();
+ // Check for matched _filters
+ if (packet != null) {
+ Peer peer = new Peer(packet.getAddress(),
packet.getPort());
+ byte[] data = packet.getData();
+ int offset = packet.getOffset();
+ int length = packet.getLength();
+ if (lowLevelFilter != null) {
+ try {
+ lowLevelFilter.process(data, offset,
length, peer);
+ Logger.minor(this,
+ "Successfully handled
packet length " + length);
+ } catch (Throwable t) {
+ Logger.error(this, "Caught " + t + "
from "
+ + lowLevelFilter, t);
+ }
+ } else {
+ // Create a bogus context since no filter
+ Message m = decodePacket(data, offset, length,
+ new DummyPeerContext(peer));
+ if (m != null)
+ checkFilters(m);
+ }
+ } else
+ Logger.minor(this, "Null packet");
+ }
+
/**
* Decode a packet from data and a peer.
* Can be called by LowLevelFilter's.
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-01-27 16:08:49 UTC (rev
7950)
+++ trunk/freenet/src/freenet/node/Version.java 2006-01-27 16:34:08 UTC (rev
7951)
@@ -20,7 +20,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- public static final int buildNumber = 401;
+ public static final int buildNumber = 402;
/** Oldest build of Fred we will talk to */
public static final int lastGoodBuild = 400;