Improve subscription update

pull/2447/head
2dust 2022-07-03 09:07:48 +08:00
parent 069d47f01b
commit fd7d688e6b
1 changed files with 41 additions and 6 deletions

View File

@ -4,6 +4,7 @@ using System.IO;
using System.Net; using System.Net;
using System.Net.Http; using System.Net.Http;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Net.Sockets;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -67,6 +68,10 @@ namespace v2rayN.Handler
{ {
//Utils.SaveLog(ex.Message, ex); //Utils.SaveLog(ex.Message, ex);
Error?.Invoke(this, new ErrorEventArgs(ex)); Error?.Invoke(this, new ErrorEventArgs(ex));
if (ex.InnerException != null)
{
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
}
} }
return 0; return 0;
} }
@ -105,6 +110,10 @@ namespace v2rayN.Handler
Utils.SaveLog(ex.Message, ex); Utils.SaveLog(ex.Message, ex);
Error?.Invoke(this, new ErrorEventArgs(ex)); Error?.Invoke(this, new ErrorEventArgs(ex));
if (ex.InnerException != null)
{
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
}
} }
} }
@ -167,6 +176,10 @@ namespace v2rayN.Handler
{ {
Utils.SaveLog(ex.Message, ex); Utils.SaveLog(ex.Message, ex);
Error?.Invoke(this, new ErrorEventArgs(ex)); Error?.Invoke(this, new ErrorEventArgs(ex));
if (ex.InnerException != null)
{
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
}
} }
return null; return null;
} }
@ -239,13 +252,35 @@ namespace v2rayN.Handler
return null; return null;
} }
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp); var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
var webProxy = new WebProxy(Global.Loopback, httpPort); if (!SocketCheck(Global.Loopback, httpPort))
if (RunAvailabilityCheck(webProxy) > 0)
{ {
return webProxy; return null;
} }
return null; return new WebProxy(Global.Loopback, httpPort);
}
private bool SocketCheck(string ip, int port)
{
Socket sock = null;
try
{
IPAddress ipa = IPAddress.Parse(ip);
IPEndPoint point = new IPEndPoint(ipa, port);
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sock.Connect(point);
return true;
}
catch { }
finally
{
if (sock != null)
{
sock.Close();
sock.Dispose();
}
}
return false;
} }
} }
} }