--- filezilla-3.0.0-beta5.2/src/engine/transfersocket.cpp 2007-01-12 03:35:36.000000000 +1030 +++ filezilla-3.0.0-beta5.2/src/engine/transfersocket.cpp 2007-01-27 08:13:30.000000000 +1030 @@ -168,6 +168,9 @@ int value = 65536 * 2; m_pSocket->SetOption(SOL_SOCKET, SO_SNDBUF, &value, sizeof(value)); + + if (m_bActive) + TriggerPostponedEvents(); } void CTransferSocket::OnReceive() @@ -175,11 +178,15 @@ m_pControlSocket->LogMessage(::Debug_Debug, _T("CTransferSocket::OnReceive(), m_transferMode=%d"), m_transferMode); if (!m_pBackend) + { + m_pControlSocket->LogMessage(::Debug_Verbose, _T("Postponing receive, m_pBackend was false.")); + m_postponedReceive = true; return; + } if (!m_bActive) { - m_pControlSocket->LogMessage(::Debug_Verbose, _T("Postponing receive")); + m_pControlSocket->LogMessage(::Debug_Verbose, _T("Postponing receive, m_bActive was false.")); m_postponedReceive = true; return; } @@ -332,7 +339,7 @@ if (m_transferMode == upload) { - if (m_shutdown) + if (m_shutdown && m_pTlsSocket) { m_pTlsSocket->Shutdown(); if (m_pTlsSocket->Error()) @@ -426,20 +433,7 @@ m_bActive = true; if (m_pSocket && m_pSocket->IsConnected()) - { - if (m_postponedReceive) - { - m_pControlSocket->LogMessage(::Debug_Verbose, _T("Executing postponed receive")); - m_postponedReceive = false; - OnReceive(); - } - if (m_postponedSend) - { - m_pControlSocket->LogMessage(::Debug_Verbose, _T("Executing postponed send")); - m_postponedSend = false; - OnSend(); - } - } + TriggerPostponedEvents(); } void CTransferSocket::TransferEnd(int reason) @@ -656,3 +650,21 @@ return true; } + +void CTransferSocket::TriggerPostponedEvents() +{ + wxASSERT(m_bActive); + + if (m_postponedReceive) + { + m_pControlSocket->LogMessage(::Debug_Verbose, _T("Executing postponed receive")); + m_postponedReceive = false; + OnReceive(); + } + if (m_postponedSend) + { + m_pControlSocket->LogMessage(::Debug_Verbose, _T("Executing postponed send")); + m_postponedSend = false; + OnSend(); + } +} --- filezilla-3.0.0-beta5.2/src/engine/transfersocket.h 2007-01-12 03:35:36.000000000 +1030 +++ filezilla-3.0.0-beta5.2/src/engine/transfersocket.h 2007-01-27 08:13:47.000000000 +1030 @@ -78,6 +78,7 @@ bool m_postponedReceive; bool m_postponedSend; + void TriggerPostponedEvents(); CBackend* m_pBackend;