--- a/src/internet-node/tcp-socket.cc Fri Feb 01 15:16:44 2008 +0000
+++ b/src/internet-node/tcp-socket.cc Tue Feb 05 15:29:17 2008 -0500
@@ -495,7 +495,9 @@
case SYN_TX:
NS_LOG_LOGIC ("TcpSocket " << this <<" Action SYN_TX");
// TCP SYN Flag consumes one byte
- m_nextTxSequence+= 1;
+ // is the above correct? we're SENDING a syn, not acking back -- Raj
+ // commented out for now
+ // m_nextTxSequence+= 1;
SendEmptyPacket (TcpHeader::SYN);
break;
case SYN_ACK_TX:
@@ -537,11 +539,7 @@
NS_LOG_LOGIC ("TcpSocket " << this <<" Action APP_NOTIFY");
break;
case SERV_NOTIFY:
- NS_LOG_LOGIC ("TcpSocket " << this <<" Action SERV_NOTIFY");
- NS_LOG_LOGIC ("TcpSocket " << this << " Connected!");
- NotifyConnectionSucceeded ();
- m_connected = true; // ! This is bogus; fix when we clone the tcp
- m_endPoint->SetPeer (m_defaultAddress, m_defaultPort);
+ NS_ASSERT (false); // This should be processed in ProcessPacketAction
break;
case LAST_ACTION:
NS_LOG_LOGIC ("TcpSocket " << this <<" Action LAST_ACTION");
@@ -571,15 +569,16 @@
m_endPoint->SetLocalAddress (ipv4->GetAddress (localIfIndex));
}
// TCP SYN consumes one byte
- m_nextRxSequence++;
+ m_nextRxSequence = tcpHeader.GetSequenceNumber() + SequenceNumber(1);
SendEmptyPacket (TcpHeader::SYN | TcpHeader::ACK);
break;
case ACK_TX_1:
NS_LOG_LOGIC ("TcpSocket " << this <<" Action ACK_TX_1");
// TCP SYN consumes one byte
- m_nextRxSequence++;
+ m_nextRxSequence = tcpHeader.GetSequenceNumber() + SequenceNumber(1);
SendEmptyPacket (TcpHeader::ACK);
m_rxWindowSize = tcpHeader.GetWindowSize ();
+ m_nextTxSequence = tcpHeader.GetAckNumber ();
if (tcpHeader.GetAckNumber () > m_highestRxAck)
{
m_highestRxAck = tcpHeader.GetAckNumber ();
@@ -653,6 +652,15 @@
}
break;
}
+ case SERV_NOTIFY:
+ NS_LOG_LOGIC ("TcpSocket " << this <<" Action SERV_NOTIFY");
+ NS_LOG_LOGIC ("TcpSocket " << this << " Connected!");
+ NotifyConnectionSucceeded ();
+ m_connected = true; // ! This is bogus; fix when we clone the tcp
+ m_endPoint->SetPeer (m_defaultAddress, m_defaultPort);
+ //treat the connection orientation final ack as a newack
+ CommonNewAck (tcpHeader.GetAckNumber (), true);
+ break;
default:
break;
}
--- a/src/internet-node/tcp-socket.h Fri Feb 01 15:16:44 2008 +0000
+++ b/src/internet-node/tcp-socket.h Tue Feb 05 15:29:17 2008 -0500
@@ -131,7 +131,6 @@
//sequence info, reciever side
SequenceNumber m_nextRxSequence;
- SequenceNumber m_nextAckSequence;
//history data
UnAckData_t m_bufferedData;