//Returns false if successful public static bool DownloadFile(string Local, string Remote) { bool Result = false; try { if (Client.IsConnected) { Result = !Client.DownloadFile(Local, Remote, true); } else { return(true); //error } } catch (Exception e) { if (e.InnerException is FtpCommandException) { FtpCommandException err = e.InnerException as FtpCommandException; HandleError(err.CompletionCode, err.Message); } Result = true; } return(Result); }
private static bool IsMaxThreads(FtpCommandException ftpCommandException) { List <Regex> regexes = new List <Regex> { RegexMaxThreadsSpecific01, RegexMaxThreadsSpecific02, RegexMaxThreadsSpecific03, RegexMaxThreadsSpecific04, // General needs to be check the latest RegexMaxThreadsGeneral01, RegexMaxThreadsGeneral02, RegexMaxThreadsGeneral03, RegexMaxThreadsGeneral05, RegexMaxThreadsGeneral06 }; foreach (Regex regex in regexes) { if (regex.IsMatch(ftpCommandException.Message)) { Match regexMatch = regex.Match(ftpCommandException.Message); int newThreads = OpenDirectoryIndexer.Session.MaxThreads; if (regexMatch.Groups.ContainsKey("MaxThreads")) { // Should be one less than.. if (regex == RegexMaxThreadsSpecific01) { OpenDirectoryIndexer.Session.MaxThreads = int.Parse(regexMatch.Groups["MaxThreads"].Value) - 1; } else { OpenDirectoryIndexer.Session.MaxThreads = int.Parse(regexMatch.Groups["MaxThreads"].Value); } } else { OpenDirectoryIndexer.Session.MaxThreads = Math.Max(1, Interlocked.Decrement(ref OpenDirectoryIndexer.Session.MaxThreads)); } if (newThreads != OpenDirectoryIndexer.Session.MaxThreads) { Logger.Warn($"Max threads reduced to {OpenDirectoryIndexer.Session.MaxThreads}"); } return(true); } } // This one is not specific to threads if (RegexMaxThreadsGeneral04.IsMatch(ftpCommandException.Message)) { throw ftpCommandException; } return(false); }
public static bool IsTransient(this FtpCommandException ex) { if (ex.CompletionCode == "530") // Authentication error { return(false); } return(true); }
//Returns false if successful public static bool DownloadFile(string Local, string Remote) { try { return(!Client.DownloadFile(Local, Remote, true)); } catch (Exception e) { if (e.InnerException is FtpCommandException) { FtpCommandException err = e.InnerException as FtpCommandException; HandleError(err.CompletionCode, err.Message); } return(true); } }