Index: rdp/LayerRDP.java =================================================================== RCS file: /nfs/dart/dartisi/ARP/CVSHOME/Jrsvp/asp/rdp/LayerRDP.java,v retrieving revision 1.32 diff -u -r1.32 LayerRDP.java --- LayerRDP.java 2000/01/28 17:17:36 1.32 +++ LayerRDP.java 2000/04/07 16:54:20 @@ -77,7 +77,7 @@ AddressRDP dst = (AddressRDP) b.getDst(); AddressRDP Src = (AddressRDP) b.getSrc(); if (debug.isDebug(DEBUG_IO)) - debug("dst = " + dst); + debug("dst = " + dst + "netbuffer = " + b); if (Src != null) header.setSrc(Src); else Index: rdp/RDPConnection.java =================================================================== RCS file: /nfs/dart/dartisi/ARP/CVSHOME/Jrsvp/asp/rdp/RDPConnection.java,v retrieving revision 1.68.2.2 diff -u -r1.68.2.2 RDPConnection.java --- RDPConnection.java 2000/03/23 19:55:00 1.68.2.2 +++ RDPConnection.java 2000/04/07 16:54:33 @@ -513,7 +513,6 @@ } timer.unschedule(rr); outstanding.remove(una); - // System.out.println("processAck: unscheduling seqno: "+rr.hBuffer.seqno); //XXX: free NetBuffer before throwing packet away rr.freeNB(); incSendSpace(); @@ -603,6 +602,7 @@ int i; RDPPacket r; + synchronized(gotem) { if ( gotem.size() == 0 ) gotem.addElement((Object) p); @@ -673,6 +673,12 @@ if ( r.hBuffer.seqno == match) return false; } } + // XXX--Added Apr 3 + while (gotem.size() > 0) { + r = (RDPPacket) gotem.elementAt(0); + gotem.removeElementAt(0); + r.freeNB(); + } } } synchronized (openconn) { @@ -929,6 +935,9 @@ if ( sequenced ) { for ( i = 0; i < gotem.size(); i++ ) { r = (RDPPacket) gotem.elementAt(i); + } + for ( i = 0; i < gotem.size(); i++ ) { + r = (RDPPacket) gotem.elementAt(i); // System.out.println("r.hBuffer.len="+r.hBuffer.len+" r.dBuffer.getLength="+r.dBuffer.getLength()); // System.out.println("Got seqno = "+r.hBuffer.seqno+" ldelivered = "+ldelivered); if (r.hBuffer.seqno < incSeqno(ldelivered) ) { @@ -941,7 +950,10 @@ // System.out.println("Removing element at "+i); gotem.removeElementAt(i); ldelivered = incSeqno(ldelivered); - break; + if (ldelivered > rcv_cur) rcv_cur = ldelivered; + } else { + if (r.hBuffer.seqno < ldelivered) gotem.removeElementAt(i); + else break; } } } @@ -1462,12 +1474,16 @@ } else { // Unsequenced delivery is handled in rcv - pktToUser(p); - a = new Long(p.hBuffer.seqno); - if ( useEAKs && !acks.contains(a) ) - acks.addElement(a); - r = new RDPACKPacket(this, snd_nxt,rcv_cur, acks); - r.unreliableSend(this); + if (p.hBuffer.seqno < ldelivered) { + p.freeNB(); + } else { + pktToUser(p); + a = new Long(p.hBuffer.seqno); + if ( useEAKs && !acks.contains(a) ) + acks.addElement(a); + r = new RDPACKPacket(this, snd_nxt,rcv_cur, acks); + r.unreliableSend(this); + } } } else { p.freeNB(); Index: rdp/RDPPacket.java =================================================================== RCS file: /nfs/dart/dartisi/ARP/CVSHOME/Jrsvp/asp/rdp/RDPPacket.java,v retrieving revision 1.30 diff -u -r1.30 RDPPacket.java --- RDPPacket.java 2000/01/27 23:49:08 1.30 +++ RDPPacket.java 2000/04/07 16:54:42 @@ -272,7 +272,6 @@ while (seqs.hasMoreElements()) { str = (Long) seqs.nextElement(); p = (RDPPacket) c.outstanding.get(str); - System.out.println("OUTSTANDING: p.hBuffer.seqno = "+p.hBuffer.seqno+" p.hBuffer.len="+p.hBuffer.len+" p.dBuffer.getLength="+p.dBuffer.getLength()); } } } @@ -290,11 +289,13 @@ RDPConnection c = (RDPConnection) o; RDPPacket p; + // This guarantees that RDPConnection.processAck and .processEAck // don't delete the packet before we send it. synchronized (c.outstanding ) { - if (nBuffer == null) return true; + if (nBuffer == null) return true; + hBuffer.when = 0; c.retrans++; @@ -302,7 +303,6 @@ try { p = (RDPPacket) clone(); } catch (Exception e) { - System.out.println("Exception timeout: seqno: "+hBuffer.seqno+" this:"+this); e.printStackTrace(); return false; } Index: vnet/LayerUI.java =================================================================== RCS file: /nfs/dart/dartisi/ARP/CVSHOME/Jrsvp/asp/vnet/LayerUI.java,v retrieving revision 1.53 diff -u -r1.53 LayerUI.java --- LayerUI.java 2000/01/28 01:43:15 1.53 +++ LayerUI.java 2000/04/07 16:54:07 @@ -199,6 +199,8 @@ packet.setData(b.getByteData()); packet.setLength(b.capacity()); } + // XXX- new stuff + b.free(); } protected void finalize() throws Throwable {