internal void SendRequest(FtpRequest request) { if (_commandConn == null || _commandConn.Connected == false) { throw new FtpConnectionClosedException("Connection is closed."); } DontWaitForHappyCodes(); if (ClientRequest != null) { ClientRequest(this, new FtpRequestEventArgs(request)); } byte[] buffer = request.GetBytes(); try { _commandStream.Write(buffer, 0, buffer.Length); } catch (IOException ex) { throw new FtpConnectionBrokenException("Connection is broken. Failed to send command.", ex); } if (request.HasHappyCodes) { WaitForHappyCodes(request.GetHappyCodes()); } else { if (request.Command != FtpCmd.Quit) { Thread.Sleep(2000); } DontWaitForHappyCodes(); } }