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

(-)a/src/internet-stack/tcp-socket-impl.cc (-17 / +7 lines)
 Lines 657-672    Link Here 
657
  TcpHeader tcpHeader;
657
  TcpHeader tcpHeader;
658
  packet->RemoveHeader (tcpHeader);
658
  packet->RemoveHeader (tcpHeader);
659
659
660
  if (tcpHeader.GetFlags () & TcpHeader::RST)
661
    { // Got an RST, just shut everything down
662
      NotifyErrorClose();
663
      CancelAllTimers();
664
      m_endPoint->SetDestroyCallback(MakeNullCallback<void>());
665
      m_tcp->DeAllocate (m_endPoint);
666
      m_endPoint = 0;
667
      return;
668
    }
669
      
670
  if (tcpHeader.GetFlags () & TcpHeader::ACK)
660
  if (tcpHeader.GetFlags () & TcpHeader::ACK)
671
    {
661
    {
672
      Time m = m_rtt->AckSeq (tcpHeader.GetAckNumber () );
662
      Time m = m_rtt->AckSeq (tcpHeader.GetAckNumber () );
 Lines 702-714    Link Here 
702
  SA stateAction = SimulationSingleton<TcpStateMachine>::Get ()->Lookup (m_state,e);
692
  SA stateAction = SimulationSingleton<TcpStateMachine>::Get ()->Lookup (m_state,e);
703
  NS_LOG_LOGIC ("TcpSocketImpl::ProcessEvent stateAction " << stateAction.action);
693
  NS_LOG_LOGIC ("TcpSocketImpl::ProcessEvent stateAction " << stateAction.action);
704
  // debug
694
  // debug
705
  if (stateAction.action == RST_TX)
695
706
    {
707
      NS_LOG_LOGIC ("TcpSocketImpl " << this << " sending RST from state "
708
              << saveState << " event " << e);
709
      SendRST();
710
      return NO_ACT;
711
    }
712
  bool needCloseNotify = (stateAction.state == CLOSED && m_state != CLOSED 
696
  bool needCloseNotify = (stateAction.state == CLOSED && m_state != CLOSED 
713
    && e != TIMEOUT);
697
    && e != TIMEOUT);
714
  m_state = stateAction.state;
698
  m_state = stateAction.state;
 Lines 905-910    Link Here 
905
889
906
  switch (a)
890
  switch (a)
907
  {
891
  {
892
    case RST_TX:
893
    {
894
      NS_LOG_LOGIC ("TcpSocketImpl " << this << " Action RST_TX");
895
      SendRST();
896
      return NO_ACT;
897
    }
908
    case ACK_TX:
898
    case ACK_TX:
909
      NS_LOG_LOGIC ("TcpSocketImpl " << this <<" Action ACK_TX");
899
      NS_LOG_LOGIC ("TcpSocketImpl " << this <<" Action ACK_TX");
910
      if(tcpHeader.GetFlags() & TcpHeader::FIN)
900
      if(tcpHeader.GetFlags() & TcpHeader::FIN)

Return to bug 747