Fix deamon restart bugs.

This commit is contained in:
Captain ALM 2021-03-19 11:17:39 +00:00
parent 123dd0541d
commit 08f652522a
2 changed files with 24 additions and 7 deletions

View File

@ -4,9 +4,8 @@
<images-root-path>..</images-root-path>
</configuration>
<import>
<widget-library name="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<widget-library name="../net-libs/appindicator3-sharp.dll" />
<widget-library name="../bin/Release/MelonVPNClient.exe" internal="true" />
<widget-library name="../bin/Debug/MelonVPNClient.exe" internal="true" />
</import>
<widget class="Gtk.Window" id="MainWindow" design-size="204 86">
<property name="MemberName" />

View File

@ -44,7 +44,7 @@ namespace MelonVPNCore
if (data.IndexOf(Messages.EOF, StringComparison.CurrentCulture) > -1) break;
}
if (data.StartsWith(Messages.ClientListStartMsg, StringComparison.CurrentCulture))
if (data.StartsWith(Messages.ClientListStartMsg, StringComparison.CurrentCulture) && shouldBeRunning)
{
lastClientUpdate = data;
Client.SendCustomMessage(lastClientUpdate, true);
@ -91,6 +91,13 @@ namespace MelonVPNCore
{
Console.WriteLine("Sending online reply");
Client.SendDataMessage(DataMessage.Online, true);
currentVpnProcess.EnableRaisingEvents = true;
}
else
{
shouldBeRunning = false;
Client.SendDataMessage(DataMessage.Offline, true);
Client.SendCustomMessage(Messages.ClientListEmptyMsg, true);
}
}
catch (Exception e)
@ -178,12 +185,12 @@ namespace MelonVPNCore
static void CurrentVpnProcess_Exited(object sender, EventArgs e)
{
Client.SendDataMessage(DataMessage.Restarting, true);
Console.WriteLine("Restarting embedded process");
currentVpnProcess.Dispose();
currentVpnProcess = null;
Thread.Sleep(restartDelay);
if (shouldRestart)
bool imonline = false;
while (shouldRestart && shouldBeRunning)
{
Console.WriteLine("Sending restarting reply");
Client.SendDataMessage(DataMessage.Restarting, true);
@ -191,10 +198,21 @@ namespace MelonVPNCore
{
Console.WriteLine("Sending online reply");
Client.SendDataMessage(DataMessage.Online, true);
}
currentVpnProcess.EnableRaisingEvents = true;
imonline = true;
break;
}
else
{
currentVpnProcess.Dispose();
currentVpnProcess = null;
Thread.Sleep(restartDelay);
}
}
if (! imonline)
{
shouldBeRunning = false;
Console.WriteLine("Sending offline reply");
Client.SendDataMessage(DataMessage.Offline, true);
Client.SendCustomMessage(Messages.ClientListEmptyMsg, true);
}
@ -209,7 +227,7 @@ namespace MelonVPNCore
currentVpnProcess = new Process
{
StartInfo = new ProcessStartInfo("simple-vpn", "client /etc/melon-vpn/client.cfg"),
EnableRaisingEvents = true
EnableRaisingEvents = false
};
currentVpnProcess.Exited += CurrentVpnProcess_Exited;
currentVpnProcess.Start();