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
|