View | Details | Raw Unified | Return to bug 2258
Collapse All | Expand All

(-)i/src/internet/model/tcp-socket-base.cc (-13 / +12 lines)
 Lines 1157-1181   TcpSocketBase::DoForwardUp (Ptr<Packet> packet, const Address &fromAddress, Link Here 
1157
  // Peel off TCP header and do validity checking
1157
  // Peel off TCP header and do validity checking
1158
  TcpHeader tcpHeader;
1158
  TcpHeader tcpHeader;
1159
  uint32_t bytesRemoved = packet->RemoveHeader (tcpHeader);
1159
  uint32_t bytesRemoved = packet->RemoveHeader (tcpHeader);
1160
  SequenceNumber32 seq = tcpHeader.GetSequenceNumber ();
1160
  if (bytesRemoved == 0 || bytesRemoved > 60)
1161
  if (bytesRemoved == 0 || bytesRemoved > 60)
1161
    {
1162
    {
1162
      NS_LOG_ERROR ("Bytes removed: " << bytesRemoved << " invalid");
1163
      NS_LOG_ERROR ("Bytes removed: " << bytesRemoved << " invalid");
1163
      return; // Discard invalid packet
1164
      return; // Discard invalid packet
1164
    }
1165
    }
1165
1166
  else if (packet->GetSize () > 0 && OutOfRange (seq, seq + packet->GetSize ()))
1166
  m_rxTrace (packet, tcpHeader, this);
1167
1168
  ReadOptions (tcpHeader);
1169
1170
  if (tcpHeader.GetFlags () & TcpHeader::ACK)
1171
    {
1172
      EstimateRtt (tcpHeader);
1173
    }
1174
1175
  // Discard fully out of range data packets
1176
  if (packet->GetSize ()
1177
      && OutOfRange (tcpHeader.GetSequenceNumber (), tcpHeader.GetSequenceNumber () + packet->GetSize ()))
1178
    {
1167
    {
1168
      // Discard fully out of range data packets
1179
      NS_LOG_LOGIC ("At state " << TcpStateName[m_state] <<
1169
      NS_LOG_LOGIC ("At state " << TcpStateName[m_state] <<
1180
                    " received packet of seq [" << tcpHeader.GetSequenceNumber () <<
1170
                    " received packet of seq [" << tcpHeader.GetSequenceNumber () <<
1181
                    ":" << tcpHeader.GetSequenceNumber () + packet->GetSize () <<
1171
                    ":" << tcpHeader.GetSequenceNumber () + packet->GetSize () <<
 Lines 1189-1194   TcpSocketBase::DoForwardUp (Ptr<Packet> packet, const Address &fromAddress, Link Here 
1189
      return;
1179
      return;
1190
    }
1180
    }
1191
1181
1182
  m_rxTrace (packet, tcpHeader, this);
1183
1184
  ReadOptions (tcpHeader);
1185
1186
  if (tcpHeader.GetFlags () & TcpHeader::ACK)
1187
    {
1188
      EstimateRtt (tcpHeader);
1189
    }
1190
1192
  // Update Rx window size, i.e. the flow control window
1191
  // Update Rx window size, i.e. the flow control window
1193
  if (tcpHeader.GetFlags () & TcpHeader::ACK)
1192
  if (tcpHeader.GetFlags () & TcpHeader::ACK)
1194
    {
1193
    {

Return to bug 2258