public static bool LogSocketException(string remarks, string server, Exception e) { if (DateTime.Now.ToString("yyyy-MM") != date) { OpenLogFile(); } // just log useful exceptions, not all of them if (e is ObfsException) { ObfsException oe = (ObfsException)e; Error("Proxy server [" + remarks + "(" + server + ")] " + oe.Message); return(true); } else if (e is NullReferenceException) { return(true); } else if (e is ObjectDisposedException) { // ignore return(true); } else if (e is SocketException) { SocketException se = (SocketException)e; if (se.SocketErrorCode == SocketError.ConnectionAborted) { // closed by browser when sending // normally happens when download is canceled or a tab is closed before page is loaded } else if (se.SocketErrorCode == SocketError.ConnectionReset) { // received rst } else if (se.SocketErrorCode == SocketError.NotConnected) { // close when not connected } else if ((uint)se.SocketErrorCode == 0x80004005) { // already closed return(true); } else if (se.ErrorCode == 11004) { Logging.Log(LogLevel.Warn, "Proxy server [" + remarks + "(" + server + ")] " + "DNS lookup failed"); return(true); } else if (se.SocketErrorCode == SocketError.HostNotFound) { Logging.Log(LogLevel.Warn, "Proxy server [" + remarks + "(" + server + ")] " + "Host not found"); return(true); } else if (se.SocketErrorCode == SocketError.ConnectionRefused) { Logging.Log(LogLevel.Warn, "Proxy server [" + remarks + "(" + server + ")] " + "connection refused"); return(true); } else if (se.SocketErrorCode == SocketError.NetworkUnreachable) { Logging.Log(LogLevel.Warn, "Proxy server [" + remarks + "(" + server + ")] " + "network unreachable"); return(true); } else if (se.SocketErrorCode == SocketError.TimedOut) { //Logging.Log(LogLevel.Warn, "Proxy server [" + remarks + "(" + server + ")] " // + "connection timeout"); return(true); } else if (se.SocketErrorCode == SocketError.Shutdown) { return(true); } else { Logging.Log(LogLevel.Info, "Proxy server [" + remarks + "(" + server + ")] " + Convert.ToString(se.SocketErrorCode) + ":" + se.Message); Debug(ToString(new StackTrace().GetFrames())); return(true); } } return(false); }
public static bool LogSocketException(string remarks, string server, Exception e) { UpdateLogFile(); // just log useful exceptions, not all of them if (e is ObfsException) { ObfsException oe = (ObfsException)e; Error("Proxy server [" + remarks + "(" + server + ")] " + oe.Message); return(true); } else if (e is NullReferenceException) { return(true); } else if (e is ObjectDisposedException) { // ignore return(true); } else if (e is SocketException) { SocketException se = (SocketException)e; if ((uint)se.SocketErrorCode == 0x80004005) { // already closed return(true); } else if (se.ErrorCode == 11004) { Logging.Log(LogLevel.Warn, "Proxy server [" + remarks + "(" + server + ")] " + "DNS lookup failed"); return(true); } else if (se.SocketErrorCode == SocketError.HostNotFound) { Logging.Log(LogLevel.Warn, "Proxy server [" + remarks + "(" + server + ")] " + "Host not found"); return(true); } else if (se.SocketErrorCode == SocketError.ConnectionRefused) { Logging.Log(LogLevel.Warn, "Proxy server [" + remarks + "(" + server + ")] " + "connection refused"); return(true); } else if (se.SocketErrorCode == SocketError.NetworkUnreachable) { Logging.Log(LogLevel.Warn, "Proxy server [" + remarks + "(" + server + ")] " + "network unreachable"); return(true); } else if (se.SocketErrorCode == SocketError.TimedOut) { //Logging.Log(LogLevel.Warn, "Proxy server [" + remarks + "(" + server + ")] " // + "connection timeout"); return(true); } else if (se.SocketErrorCode == SocketError.Shutdown) { return(true); } else { Logging.Log(LogLevel.Info, "Proxy server [" + remarks + "(" + server + ")] " + Convert.ToString(se.SocketErrorCode) + ":" + se.Message); Debug(ToString(new StackTrace().GetFrames())); return(true); } } return(false); }