Update of /cvsroot/freenet/freenet/src/freenet
In directory sc8-pr-cvs1:/tmp/cvs-serv15065/src/freenet
Modified Files:
Tag: ngrouting
ConnectionHandler.java Version.java
Log Message:
7040: fix deadlock in ConnectionHandler. technically this should be on the unstable
branch, but since we're gonna merge soon anyway...
Index: ConnectionHandler.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/ConnectionHandler.java,v
retrieving revision 1.85.2.16
retrieving revision 1.85.2.17
diff -u -r1.85.2.16 -r1.85.2.17
--- ConnectionHandler.java 26 Aug 2003 01:57:19 -0000 1.85.2.16
+++ ConnectionHandler.java 28 Aug 2003 00:35:17 -0000 1.85.2.17
@@ -949,7 +949,9 @@
if (logDEBUG)Core.logger.log(this, "sendingQueue empty,
trailingPresent "+trailingPresent,Logger.DEBUG);
currentSender=null;
}*/
- if (sendingQueue.size() >0) { // while because if one sfe's we need to
go to next
+ boolean needTerminate = false; // don't terminate while holding locks!
+ if (sendingQueue.size() >0) {
+ // while because if one sfe's we need to go to next
int curPacketLength = 0;
synchronized(sentMessages) {
sentMessages.clear();
@@ -1036,26 +1038,31 @@
}
sendingCount = 0;
if(receiveClosed.state() && receivingCount ==
0) {
- terminate();
+ needTerminate = true;
}
} catch (Throwable e) {
Core.logger.log(this, "Caught "+e+" sending
block", e,
Logger.ERROR);
- terminate();
+ needTerminate = true;
+ }
+ if(!needTerminate) {
+ // We have sent a packet. Yay.
+ Core.logger.log(this, "Sent packet of size "+
+
curPacketLength+" containing "+
+
sentMessages.size()+" messages on "+
+ this,
Logger.MINOR);
}
- // We have sent a packet. Yay.
- Core.logger.log(this, "Sent packet of size
"+curPacketLength+
- " containing
"+sentMessages.size()+" messages on "+
- this, Logger.MINOR);
-
Core.diagnostics.occurrenceContinuous("messagePacketSizeSent",
-
curPacketLength);
-
Core.diagnostics.occurrenceContinuous("messagesInPacketSent",
-
sentMessages.size());
}
+ Core.diagnostics.occurrenceContinuous("messagePacketSizeSent",
+
curPacketLength);
+ Core.diagnostics.occurrenceContinuous("messagesInPacketSent",
+
sentMessages.size());
}
-
- if (logDEBUG) Core.logger.log(this,"exiting CH.jobDone(), size of
sendQueue "+sendingQueue.size()+
- " trailingPresent
"+trailingPresent,Logger.DEBUG);
+ if(needTerminate) terminate();
+ if (logDEBUG) Core.logger.log(this,"exiting CH.jobDone(), size "+
+ "of
sendQueue "+sendingQueue.size()+
+ "
trailingPresent "+trailingPresent,
+
Logger.DEBUG);
}
Index: Version.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/Version.java,v
retrieving revision 1.307.2.39
retrieving revision 1.307.2.40
diff -u -r1.307.2.39 -r1.307.2.40
--- Version.java 27 Aug 2003 15:54:35 -0000 1.307.2.39
+++ Version.java 28 Aug 2003 00:35:18 -0000 1.307.2.40
@@ -18,7 +18,7 @@
public static String protocolVersion = "1.46";
/** The build number of the current revision */
- public static final int buildNumber = 7039;
+ public static final int buildNumber = 7040;
// 6028: may 3; ARK retrieval fix
public static final int ignoreBuildsAfter = 6500;
_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs