1.1 --- a/src/internet-node/tcp-socket.cc Fri Feb 01 15:16:44 2008 +0000
1.2 +++ b/src/internet-node/tcp-socket.cc Tue Feb 05 15:29:17 2008 -0500
1.3 @@ -495,7 +495,9 @@
1.4 case SYN_TX:
1.5 NS_LOG_LOGIC ("TcpSocket " << this <<" Action SYN_TX");
1.6 // TCP SYN Flag consumes one byte
1.7 - m_nextTxSequence+= 1;
1.8 + // is the above correct? we're SENDING a syn, not acking back -- Raj
1.9 + // commented out for now
1.10 + // m_nextTxSequence+= 1;
1.11 SendEmptyPacket (TcpHeader::SYN);
1.12 break;
1.13 case SYN_ACK_TX:
1.14 @@ -537,11 +539,7 @@
1.15 NS_LOG_LOGIC ("TcpSocket " << this <<" Action APP_NOTIFY");
1.16 break;
1.17 case SERV_NOTIFY:
1.18 - NS_LOG_LOGIC ("TcpSocket " << this <<" Action SERV_NOTIFY");
1.19 - NS_LOG_LOGIC ("TcpSocket " << this << " Connected!");
1.20 - NotifyConnectionSucceeded ();
1.21 - m_connected = true; // ! This is bogus; fix when we clone the tcp
1.22 - m_endPoint->SetPeer (m_defaultAddress, m_defaultPort);
1.23 + NS_ASSERT (false); // This should be processed in ProcessPacketAction
1.24 break;
1.25 case LAST_ACTION:
1.26 NS_LOG_LOGIC ("TcpSocket " << this <<" Action LAST_ACTION");
1.27 @@ -571,15 +569,16 @@
1.28 m_endPoint->SetLocalAddress (ipv4->GetAddress (localIfIndex));
1.29 }
1.30 // TCP SYN consumes one byte
1.31 - m_nextRxSequence++;
1.32 + m_nextRxSequence = tcpHeader.GetSequenceNumber() + SequenceNumber(1);
1.33 SendEmptyPacket (TcpHeader::SYN | TcpHeader::ACK);
1.34 break;
1.35 case ACK_TX_1:
1.36 NS_LOG_LOGIC ("TcpSocket " << this <<" Action ACK_TX_1");
1.37 // TCP SYN consumes one byte
1.38 - m_nextRxSequence++;
1.39 + m_nextRxSequence = tcpHeader.GetSequenceNumber() + SequenceNumber(1);
1.40 SendEmptyPacket (TcpHeader::ACK);
1.41 m_rxWindowSize = tcpHeader.GetWindowSize ();
1.42 + m_nextTxSequence = tcpHeader.GetAckNumber ();
1.43 if (tcpHeader.GetAckNumber () > m_highestRxAck)
1.44 {
1.45 m_highestRxAck = tcpHeader.GetAckNumber ();
1.46 @@ -653,6 +652,15 @@
1.47 }
1.48 break;
1.49 }
1.50 + case SERV_NOTIFY:
1.51 + NS_LOG_LOGIC ("TcpSocket " << this <<" Action SERV_NOTIFY");
1.52 + NS_LOG_LOGIC ("TcpSocket " << this << " Connected!");
1.53 + NotifyConnectionSucceeded ();
1.54 + m_connected = true; // ! This is bogus; fix when we clone the tcp
1.55 + m_endPoint->SetPeer (m_defaultAddress, m_defaultPort);
1.56 + //treat the connection orientation final ack as a newack
1.57 + CommonNewAck (tcpHeader.GetAckNumber (), true);
1.58 + break;
1.59 default:
1.60 break;
1.61 }
2.1 --- a/src/internet-node/tcp-socket.h Fri Feb 01 15:16:44 2008 +0000
2.2 +++ b/src/internet-node/tcp-socket.h Tue Feb 05 15:29:17 2008 -0500
2.3 @@ -131,7 +131,6 @@
2.4
2.5 //sequence info, reciever side
2.6 SequenceNumber m_nextRxSequence;
2.7 - SequenceNumber m_nextAckSequence;
2.8
2.9 //history data
2.10 UnAckData_t m_bufferedData;