Update of /cvsroot/freenet/freenet/src/freenet
In directory sc8-pr-cvs1:/tmp/cvs-serv26912/src/freenet

Modified Files:
        ConnectionHandler.java Version.java 
Log Message:
6253:
Fix corruption bug with trailer sends, introduced in previous build.


Index: ConnectionHandler.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/ConnectionHandler.java,v
retrieving revision 1.186
retrieving revision 1.187
diff -u -w -r1.186 -r1.187
--- ConnectionHandler.java      17 Oct 2003 01:43:28 -0000      1.186
+++ ConnectionHandler.java      17 Oct 2003 02:02:48 -0000      1.187
@@ -418,7 +418,7 @@
                        logDEBUG("Caught "+e+" in getPacket in registerOCM");
                }
                if(sentPacket != null)
-                       innerSendPacket(sentPacket.priority(), sentPacket);
+                       innerSendPacket(sentPacket.priority());
                if(receiveClosed.state() && receivingCount <= 0 &&
                   sendClosed.state() && trailerSendID == -1) {
                        logDEBUG("terminating at end of registerOCM");
@@ -1176,7 +1176,7 @@
                                                                        ", but 
sentPacket = "+sentPacket+" ("+
                                                                        this+")", 
Logger.ERROR);
                        } else {
-                               innerSendPacket(sentPacket.priority(), sentPacket);
+                               innerSendPacket(sentPacket.priority());
                                int sentPacketLength = mySentPacket.getLength();
                                int sentPacketMessages = mySentPacket.countMessages();
                                if(!sendClosed.state()) {
@@ -1988,9 +1988,20 @@
         * Called by PeerHandler.innerSendMessageAsync
         */
        public final boolean forceSendPacket(PeerPacketMessage ppm) {
+               if(sendClosed.state()) {
+                       Core.logger.log(this, "forceSendPacket("+ppm+
+                                                       ") when already closed: 
"+this, Logger.MINOR);
+                       return false;
+               }
                try {
                        synchronized(sentPacketLock) {
                                if(sentPacket != null) return false;
+                               if(trailerSendID != -1) {
+                                       if(logDEBUG) 
+                                               logDEBUG("forceSendPacket("+ppm+
+                                                                ") called but sending 
a trailer!");
+                                       return false;
+                               }
                                sentPacket = peerHandler.getPacket(link, p, identity, 
ppm, 
                                                                                       
            false);
                                if(logDEBUG)
@@ -1998,7 +2009,7 @@
                                                                        
".forceSendPacket()", Logger.DEBUG);
                        }
                        if(sentPacket != null)
-                               return innerSendPacket(sentPacket.priority(), 
sentPacket);
+                               return innerSendPacket(sentPacket.priority());
                        else return false;
                } catch (Throwable t) {
                        Core.logger.log(this, "Caught "+t+" in forceSendPacket", t,
@@ -2034,7 +2045,7 @@
                                Core.logger.log(this, "sendPacket sending 
"+sentPacket+" on "+
                                                                this, Logger.DEBUG);
                }
-               innerSendPacket(prio, sentPacket);
+               innerSendPacket(prio);
                return true;
        }
        
@@ -2045,10 +2056,17 @@
         * Do NOT call while synchronized on sentPacketLock - hence the argument
         * @param sentPacket the packet to send
         */
-       protected boolean innerSendPacket(int prio, PeerPacket sentPacket) {
+       protected boolean innerSendPacket(int prio) {
                lastActiveTime = System.currentTimeMillis();
                PeerPacket sp = sentPacket;
                byte[] toSend = sp.getBytes();
+               // extra paranoia
+               if(trailerSendID != -1) {
+                       if(logDEBUG) 
+                               logDEBUG("innerSendPacket("+prio+","+sentPacket+
+                                                " called but sending a trailer!");
+                       return false;
+               }
                try {
                        sendBytes(toSend, 0, toSend.length, prio);
                } catch (IOException e) {
@@ -2137,7 +2155,7 @@
                                sendingCloseMessage = false;
                        }
                }
-               innerSendPacket(sentPacket.priority(), sentPacket);
+               innerSendPacket(sentPacket.priority());
                if(logDEBUG)
                        logDEBUG("Sent close packet");
     }

Index: Version.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/Version.java,v
retrieving revision 1.445
retrieving revision 1.446
diff -u -w -r1.445 -r1.446
--- Version.java        17 Oct 2003 01:43:28 -0000      1.445
+++ Version.java        17 Oct 2003 02:02:48 -0000      1.446
@@ -18,7 +18,7 @@
     public static String protocolVersion = "1.46";
     
     /** The build number of the current revision */
-    public static final int buildNumber = 6252;
+    public static final int buildNumber = 6253;
     // 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

Reply via email to