Skip to content

Commit bdd1eda

Browse files
committed
1 parent 104a6d4 commit bdd1eda

File tree

3 files changed

+55
-42
lines changed

3 files changed

+55
-42
lines changed

Signal-Windows.Lib/IncomingMessages.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public async Task HandleIncomingMessages()
4040
{
4141
Logger.LogDebug("HandleIncomingMessages()");
4242
var pipe = await PipeTask;
43+
await Task.Delay(1);
4344
while (!Token.IsCancellationRequested)
4445
{
4546
try

Signal-Windows.Lib/OutgoingMessages.cs

Lines changed: 51 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -159,58 +159,68 @@ public OutgoingMessages(CancellationToken token, Task<SignalServiceMessagePipe>
159159
public async Task HandleOutgoingMessages()
160160
{
161161
Logger.LogDebug("HandleOutgoingMessages()");
162-
var messageSender = new SignalServiceMessageSender(Token, LibUtils.ServiceConfiguration, Store.Username, Store.Password, (int)Store.DeviceId, new Store(), await CreatePipeTask, null, LibUtils.USER_AGENT);
163-
while (!Token.IsCancellationRequested)
162+
try
164163
{
165-
ISendable sendable = null;
166-
try
164+
var pipe = await CreatePipeTask;
165+
await Task.Delay(1);
166+
var messageSender = new SignalServiceMessageSender(Token, LibUtils.ServiceConfiguration, Store.Username, Store.Password, (int)Store.DeviceId, new Store(), pipe, null, LibUtils.USER_AGENT);
167+
while (!Token.IsCancellationRequested)
167168
{
168-
sendable = Handle.OutgoingQueue.Take(Token);
169-
await sendable.Send(messageSender, Token);
170-
}
171-
catch (OperationCanceledException)
172-
{
173-
Logger.LogInformation("HandleOutgoingMessages() finished");
174-
return;
175-
}
176-
catch (EncapsulatedExceptions exceptions)
177-
{
178-
sendable.Status = SignalMessageStatus.Confirmed;
179-
Logger.LogError("HandleOutgoingMessages() encountered libsignal exceptions");
180-
IList<UntrustedIdentityException> identityExceptions = exceptions.UntrustedIdentityExceptions;
181-
if (exceptions.NetworkExceptions.Count > 0)
169+
ISendable sendable = null;
170+
try
182171
{
183-
sendable.Status = SignalMessageStatus.Failed_Network;
172+
sendable = Handle.OutgoingQueue.Take(Token);
173+
Logger.LogTrace($"Sending {sendable.GetType()}");
174+
await sendable.Send(messageSender, Token);
184175
}
185-
if (identityExceptions.Count > 0)
176+
catch (OperationCanceledException) { return; }
177+
catch (EncapsulatedExceptions exceptions)
186178
{
187-
sendable.Status = SignalMessageStatus.Failed_Identity;
179+
sendable.Status = SignalMessageStatus.Confirmed;
180+
Logger.LogError("HandleOutgoingMessages() encountered libsignal exceptions");
181+
IList<UntrustedIdentityException> identityExceptions = exceptions.UntrustedIdentityExceptions;
182+
if (exceptions.NetworkExceptions.Count > 0)
183+
{
184+
sendable.Status = SignalMessageStatus.Failed_Network;
185+
}
186+
if (identityExceptions.Count > 0)
187+
{
188+
sendable.Status = SignalMessageStatus.Failed_Identity;
189+
}
190+
foreach (UntrustedIdentityException e in identityExceptions)
191+
{
192+
await Handle.HandleOutgoingKeyChangeLocked(e.E164number, Base64.EncodeBytes(e.IdentityKey.serialize()));
193+
}
188194
}
189-
foreach (UntrustedIdentityException e in identityExceptions)
195+
catch (RateLimitException)
190196
{
197+
Logger.LogError("HandleOutgoingMessages() could not send due to rate limits");
198+
sendable.Status = SignalMessageStatus.Failed_Ratelimit;
199+
}
200+
catch (UntrustedIdentityException e)
201+
{
202+
Logger.LogError("HandleOutgoingMessages() could not send due to untrusted identities");
203+
sendable.Status = SignalMessageStatus.Failed_Identity;
191204
await Handle.HandleOutgoingKeyChangeLocked(e.E164number, Base64.EncodeBytes(e.IdentityKey.serialize()));
192205
}
206+
catch (Exception e)
207+
{
208+
var line = new StackTrace(e, true).GetFrames()[0].GetFileLineNumber();
209+
Logger.LogError("HandleOutgoingMessages() failed in line {0}: {1}\n{2}", line, e.Message, e.StackTrace);
210+
sendable.Status = SignalMessageStatus.Failed_Unknown;
211+
}
212+
await Handle.HandleMessageSentLocked(sendable);
193213
}
194-
catch (RateLimitException)
195-
{
196-
Logger.LogError("HandleOutgoingMessages() could not send due to rate limits");
197-
sendable.Status = SignalMessageStatus.Failed_Ratelimit;
198-
}
199-
catch (UntrustedIdentityException e)
200-
{
201-
Logger.LogError("HandleOutgoingMessages() could not send due to untrusted identities");
202-
sendable.Status = SignalMessageStatus.Failed_Identity;
203-
await Handle.HandleOutgoingKeyChangeLocked(e.E164number, Base64.EncodeBytes(e.IdentityKey.serialize()));
204-
}
205-
catch (Exception e)
206-
{
207-
var line = new StackTrace(e, true).GetFrames()[0].GetFileLineNumber();
208-
Logger.LogError("HandleOutgoingMessages() failed in line {0}: {1}\n{2}", line, e.Message, e.StackTrace);
209-
sendable.Status = SignalMessageStatus.Failed_Unknown;
210-
}
211-
await Handle.HandleMessageSentLocked(sendable);
212214
}
213-
Logger.LogInformation("HandleOutgoingMessages() finished");
215+
catch (OperationCanceledException) { }
216+
catch (Exception e)
217+
{
218+
Logger.LogError($"HandleOutgoingMessages() failed: {e.Message}\n{e.StackTrace}");
219+
}
220+
finally
221+
{
222+
Logger.LogInformation("HandleOutgoingMessages() finished");
223+
}
214224
}
215225
}
216226
}

Signal-Windows.Lib/SignalLibHandle.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -895,7 +895,9 @@ private void InitNetwork()
895895
{
896896
try
897897
{
898-
return await MessageReceiver.CreateMessagePipe(CancelSource.Token, new SignalWebSocketFactory());
898+
var pipe = await MessageReceiver.CreateMessagePipe(CancelSource.Token, new SignalWebSocketFactory());
899+
Logger.LogTrace("Messagepipe created");
900+
return pipe;
899901
}
900902
catch(Exception e)
901903
{

0 commit comments

Comments
 (0)