[Javanetsim-cvs] javaNetSim/core/protocolsuite/tcp_ip Tcp.java, 1.81, 1.82
Status: Beta
Brought to you by:
darkkey
From: gift <gi...@us...> - 2006-09-08 15:40:04
|
Update of /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv21451/core/protocolsuite/tcp_ip Modified Files: Tcp.java Log Message: more... Index: Tcp.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Tcp.java,v retrieving revision 1.81 retrieving revision 1.82 diff -C2 -d -r1.81 -r1.82 *** Tcp.java 8 Sep 2006 12:30:52 -0000 1.81 --- Tcp.java 8 Sep 2006 15:39:44 -0000 1.82 *************** *** 993,996 **** --- 993,1028 ---- //now we decompose TCP segment //everything is OK + + //MAYBE A DUPLICATE? + + if ((Elm.ReceivedSegments.contains((Integer)inPacket.get_sequence_number()))) { + try { + if (Elm.isServer) { + //init ServerTask + TCPsetServerTimer(Elm,inPacket.get_destPort(), 60); + } else TCPsetTimer(Elm, 50); + Elm.received_duplicates++; + if (!inPacket.get_ACK_flag()) { + Elm.sent_ACK++; + //Create Layer info + LayerInfo TCP_Info = new LayerInfo(getClass().getName()); + TCP_Info.setObjectName(mParentStack.getParentNodeName()); + TCP_Info.setDataType("TCP Protocol"); + //System.out.println("[*** TCP ***] At the beginnig of case 2, line 1009"); + TCP_Info.setLayer("Transport"); + TCP_packet to_resend = (TCP_packet) Elm.SentACKs.get((Integer)inPacket.get_sequence_number()); + + TCP_Info.setDescription("Resending ACK packet (SEQ = " + to_resend.get_sequence_number() + " ACK = " + to_resend.get_acknowledgment_number()+ ") due to duplicate (SEQ = " + inPacket.get_sequence_number() + " ACK = " + inPacket.get_acknowledgment_number()+ ") arrival. Total duplicates received: " + Elm.received_duplicates + "."); + Simulation.addLayerInfo(TCP_Info); + //now we have to resend our ACK again + mParentStack.sendPacket(to_resend); + } + } catch(NullPointerException e){ + System.out.println(mParentStack.getHostName() + ":" + "TCP.java: duplicate at the beginnig of case 2, line 1017 " + e.toString()); + break; + } + break; + } + //Check for SYN if (inPacket.get_SYN_flag()) { *************** *** 1007,1011 **** //we have received an answer for our SYN-segment //a little test ! // if (!(inPacket.get_ACK_flag())) throw new TransportLayerPortException("TCP Error: No ACK flag in answer for SYN packet is set in the segment!"); //in case this is not duplicate --- 1039,1043 ---- //we have received an answer for our SYN-segment //a little test ! if (!(inPacket.get_ACK_flag())) throw new TransportLayerPortException("TCP Error: No ACK flag in answer for SYN packet is set in the segment!"); //in case this is not duplicate |