Skip to content

Commit 104a6d4

Browse files
committed
Improve InitNetwork handling
1 parent 66b02e7 commit 104a6d4

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

Signal-Windows.Lib/SignalLibHandle.cs

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,8 @@ public async Task<bool> Acquire(CoreDispatcher d, ISignalFrontend w) //TODO wrap
197197
{
198198
return false;
199199
}
200-
else
201-
{
202-
LikelyHasValidStore = true;
203-
}
204-
var initNetwork = Task.Run(async () =>
205-
{
206-
await InitNetwork();
207-
});
200+
LikelyHasValidStore = true;
201+
InitNetwork();
208202
var recoverDownloadsTask = Task.Run(() =>
209203
{
210204
RecoverDownloads().Wait();
@@ -281,7 +275,7 @@ await f.Key.RunAsync(CoreDispatcherPriority.Normal, () =>
281275
});
282276
if (LikelyHasValidStore)
283277
{
284-
await InitNetwork();
278+
InitNetwork();
285279
}
286280
Running = true;
287281
}
@@ -892,20 +886,31 @@ private List<SignalConversation> GetConversations()
892886
/// <summary>
893887
/// Initializes the websocket connection handling. Must not not be called on a UI thread. Must not be called on a task which holds the handle lock.
894888
/// </summary>
895-
private async Task InitNetwork()
889+
private void InitNetwork()
896890
{
897891
try
898892
{
899893
MessageReceiver = new SignalServiceMessageReceiver(LibUtils.ServiceConfiguration, new StaticCredentialsProvider(Store.Username, Store.Password, Store.SignalingKey, (int)Store.DeviceId), LibUtils.USER_AGENT);
900-
var pipeTask = MessageReceiver.CreateMessagePipe(CancelSource.Token, new SignalWebSocketFactory());
894+
var pipeTask = Task.Run(async () =>
895+
{
896+
try
897+
{
898+
return await MessageReceiver.CreateMessagePipe(CancelSource.Token, new SignalWebSocketFactory());
899+
}
900+
catch(Exception e)
901+
{
902+
Logger.LogError("InitNetwork failed: {0}\n{1}", e.Message, e.StackTrace);
903+
await HandleAuthFailure();
904+
throw e;
905+
}
906+
});
901907
OutgoingMessages = new OutgoingMessages(CancelSource.Token, pipeTask, Store, this);
902908
IncomingMessagesTask = Task.Factory.StartNew(async () => await new IncomingMessages(CancelSource.Token, pipeTask, MessageReceiver).HandleIncomingMessages(), TaskCreationOptions.LongRunning);
903909
OutgoingMessagesTask = Task.Factory.StartNew(async () => await OutgoingMessages.HandleOutgoingMessages(), TaskCreationOptions.LongRunning);
904910
}
905911
catch(Exception e)
906912
{
907-
Logger.LogError("InitNetwork failed: {0}\n{1}", e.Message, e.StackTrace);
908-
await HandleAuthFailure();
913+
Logger.LogError($"InitNetwork() failed: {e.Message}\n{e.StackTrace}");
909914
}
910915
}
911916

0 commit comments

Comments
 (0)