// Command handlers int CFileZillaEnginePrivate::Connect(const CConnectCommand &command) { if (IsConnected()) return FZ_REPLY_ALREADYCONNECTED; if (IsBusy()) return FZ_REPLY_BUSY; m_retryCount = 0; if (m_pControlSocket) { // Need to delete before setting m_pCurrentCommand. // The destructor can call CFileZillaEnginePrivate::ResetOperation // which would delete m_pCurrentCommand delete m_pControlSocket; m_pControlSocket = 0; m_nControlSocketError = 0; } m_pCurrentCommand = command.Clone(); if (command.GetServer().GetPort() != CServer::GetDefaultPort(command.GetServer().GetProtocol())) { ServerProtocol protocol = CServer::GetProtocolFromPort(command.GetServer().GetPort(), true); if (protocol != UNKNOWN && protocol != command.GetServer().GetProtocol()) m_pLogging->LogMessage(Status, _("Selected port usually in use by a different protocol.")); } return ContinueConnect(); }
void CFileZillaEnginePrivate::OnTimer(wxTimerEvent&) { if (!m_pCurrentCommand || m_pCurrentCommand->GetId() != Command::connect) { wxFAIL_MSG(_T("CFileZillaEnginePrivate::OnTimer called without pending Command::connect")); return; } wxASSERT(!IsConnected()); delete m_pControlSocket; m_pControlSocket = 0; ContinueConnect(); }
int CRealControlSocket::Connect(const CServer &server) { SetWait(true); if (server.GetEncodingType() == ENCODING_CUSTOM) m_pCSConv = new wxCSConv(server.GetCustomEncoding()); if (m_pCurrentServer) delete m_pCurrentServer; m_pCurrentServer = new CServer(server); // International domain names m_pCurrentServer->SetHost(ConvertDomainName(server.GetHost()), server.GetPort()); return ContinueConnect(); }
int CRealControlSocket::Connect(const CServer &server) { SetWait(true); if (server.GetEncodingType() == ENCODING_CUSTOM) { LogMessage(MessageType::Debug_Info, _T("Using custom encoding: %s"), server.GetCustomEncoding()); m_pCSConv = new wxCSConv(server.GetCustomEncoding()); } delete m_pCurrentServer; m_pCurrentServer = new CServer(server); // International domain names m_pCurrentServer->SetHost(ConvertDomainName(server.GetHost()), server.GetPort()); return ContinueConnect(); }
void CFileZillaEnginePrivate::OnTimer(wxTimerEvent& event) { if (!m_pCurrentCommand || m_pCurrentCommand->GetId() != cmd_connect) { wxFAIL_MSG(_T("CFileZillaEnginePrivate::OnTimer called without pending cmd_connect")); return; } wxASSERT(!IsConnected()); #if 0//__WXDEBUG__ const CConnectCommand *pConnectCommand = (CConnectCommand *)m_pCurrentCommand; wxASSERT(!GetRemainingReconnectDelay(pConnectCommand->GetServer())); #endif delete m_pControlSocket; m_pControlSocket = 0; ContinueConnect(); }
int CRealControlSocket::Connect(const CServer &server) { SetWait(true); if (server.GetEncodingType() == ENCODING_CUSTOM) m_pCSConv = new wxCSConv(server.GetCustomEncoding()); if (m_pCurrentServer) delete m_pCurrentServer; m_pCurrentServer = new CServer(server); CConnectOpData* pData; if (!m_pCurOpData || m_pCurOpData->opId != cmd_connect) pData = 0; else pData = static_cast<CConnectOpData *>(m_pCurOpData); const wxString& host = pData ? pData->host : server.GetHost(); if (!IsIpAddress(host)) { LogMessage(Status, _("Resolving IP-Address for %s"), host.c_str()); CAsyncHostResolver *resolver = new CAsyncHostResolver(m_pEngine, ConvertDomainName(host)); m_pEngine->AddNewAsyncHostResolver(resolver); resolver->Create(); resolver->Run(); } else { wxIPV4address addr; addr.Hostname(host); return ContinueConnect(&addr); } return FZ_REPLY_WOULDBLOCK; }