@@ -76,20 +76,24 @@ public async Task OnMessage(SignalServiceMessagePipeMessage message)
76
76
await SignalLibHandle . Instance . DispatchMessageUpdate ( update ) ;
77
77
}
78
78
}
79
- else if ( envelope . IsPreKeySignalMessage ( ) || envelope . IsSignalMessage ( ) )
80
- {
81
- await HandleMessage ( envelope ) ;
82
- }
83
79
else
84
80
{
85
- Logger . LogWarning ( "OnMessage() could not handle unknown message type {0}" , envelope . GetEnvelopeType ( ) ) ;
81
+ await HandleMessage ( envelope ) ;
86
82
}
87
83
}
88
84
else if ( message is SignalServiceMessagePipeEmptyMessage )
89
85
{
90
86
SignalLibHandle . Instance . DispatchPipeEmptyMessage ( ) ;
91
87
}
92
88
}
89
+ catch ( Exception e )
90
+ {
91
+ Logger . LogError ( "OnMessage failed: {0}\n {1}" , e . Message , e . StackTrace ) ;
92
+ if ( e . InnerException != null )
93
+ {
94
+ Logger . LogError ( "InnerException: {0}\n {1}" , e . InnerException . Message , e . InnerException . StackTrace ) ;
95
+ }
96
+ }
93
97
finally
94
98
{
95
99
SignalLibHandle . Instance . SemaphoreSlim . Release ( ) ;
@@ -99,7 +103,7 @@ public async Task OnMessage(SignalServiceMessagePipeMessage message)
99
103
100
104
private async Task HandleMessage ( SignalServiceEnvelope envelope )
101
105
{
102
- var cipher = new SignalServiceCipher ( new SignalServiceAddress ( SignalLibHandle . Instance . Store . Username ) , new Store ( ) ) ;
106
+ var cipher = new SignalServiceCipher ( new SignalServiceAddress ( SignalLibHandle . Instance . Store . Username ) , new Store ( ) , LibUtils . GetCertificateValidator ( ) ) ;
103
107
var content = cipher . Decrypt ( envelope ) ;
104
108
long timestamp = Util . CurrentTimeMillis ( ) ;
105
109
@@ -276,8 +280,8 @@ private async Task HandleMessage(SignalServiceEnvelope envelope)
276
280
277
281
private async Task HandleSyncedReadMessage ( ReadMessage readMessage )
278
282
{
279
- var conv = await SignalDBContext . UpdateMessageRead ( readMessage ) ;
280
- await SignalLibHandle . Instance . DispatchMessageRead ( conv . LastSeenMessageIndex , conv ) ;
283
+ var updatedConversation = SignalDBContext . UpdateMessageRead ( readMessage . Timestamp ) ;
284
+ await SignalLibHandle . Instance . DispatchMessageRead ( updatedConversation ) ;
281
285
}
282
286
283
287
private async Task HandleExpirationUpdateMessage ( SignalServiceEnvelope envelope , SignalServiceContent content , SignalServiceDataMessage message , bool isSync , long timestamp )
@@ -310,7 +314,7 @@ private async Task HandleExpirationUpdateMessage(SignalServiceEnvelope envelope,
310
314
{
311
315
status = 0 ;
312
316
type = SignalMessageDirection . Incoming ;
313
- author = await SignalDBContext . GetOrCreateContactLocked ( envelope . GetSource ( ) , timestamp ) ;
317
+ author = await SignalDBContext . GetOrCreateContactLocked ( content . Sender , timestamp ) ;
314
318
prefix = $ "{ author . ThreadDisplayName } has";
315
319
composedTimestamp = envelope . GetTimestamp ( ) ;
316
320
if ( message . Group != null )
@@ -319,7 +323,7 @@ private async Task HandleExpirationUpdateMessage(SignalServiceEnvelope envelope,
319
323
}
320
324
else
321
325
{
322
- conversation = await SignalDBContext . GetOrCreateContactLocked ( envelope . GetSource ( ) , 0 ) ;
326
+ conversation = await SignalDBContext . GetOrCreateContactLocked ( content . Sender , 0 ) ;
323
327
}
324
328
}
325
329
conversation . ExpiresInSeconds = ( uint ) message . ExpiresInSeconds ;
@@ -348,7 +352,7 @@ private async Task HandleExpirationUpdateMessage(SignalServiceEnvelope envelope,
348
352
ComposedTimestamp = composedTimestamp ,
349
353
ReceivedTimestamp = timestamp ,
350
354
} ;
351
- await SignalLibHandle . Instance . SaveAndDispatchSignalMessage ( sm , conversation ) ;
355
+ await SignalLibHandle . Instance . SaveAndDispatchSignalMessage ( sm , null , conversation ) ;
352
356
}
353
357
354
358
private async Task HandleSessionResetMessage ( SignalServiceEnvelope envelope , SignalServiceContent content , SignalServiceDataMessage dataMessage , bool isSync , long timestamp )
@@ -375,10 +379,10 @@ private async Task HandleSessionResetMessage(SignalServiceEnvelope envelope, Sig
375
379
{
376
380
status = 0 ;
377
381
type = SignalMessageDirection . Incoming ;
378
- author = await SignalDBContext . GetOrCreateContactLocked ( envelope . GetSource ( ) , timestamp ) ;
382
+ author = await SignalDBContext . GetOrCreateContactLocked ( content . Sender , timestamp ) ;
379
383
prefix = $ "{ author . ThreadDisplayName } has";
380
384
composedTimestamp = envelope . GetTimestamp ( ) ;
381
- conversationId = envelope . GetSource ( ) ;
385
+ conversationId = content . Sender ;
382
386
}
383
387
LibsignalDBContext . DeleteAllSessions ( conversationId ) ;
384
388
conversation = await SignalDBContext . GetOrCreateContactLocked ( conversationId , 0 ) ;
@@ -396,7 +400,7 @@ private async Task HandleSessionResetMessage(SignalServiceEnvelope envelope, Sig
396
400
ComposedTimestamp = composedTimestamp ,
397
401
ReceivedTimestamp = timestamp ,
398
402
} ;
399
- await SignalLibHandle . Instance . SaveAndDispatchSignalMessage ( sm , conversation ) ;
403
+ await SignalLibHandle . Instance . SaveAndDispatchSignalMessage ( sm , null , conversation ) ;
400
404
}
401
405
402
406
/// <summary>
@@ -440,7 +444,7 @@ private async Task HandleGroupLeaveMessage(SignalServiceEnvelope envelope, Signa
440
444
SignalGroup group = await SignalDBContext . GetOrCreateGroupLocked ( groupid , 0 ) ;
441
445
if ( isSync )
442
446
{
443
- SignalContact author = await SignalDBContext . GetOrCreateContactLocked ( envelope . GetSource ( ) , 0 ) ;
447
+ SignalContact author = await SignalDBContext . GetOrCreateContactLocked ( content . Sender , 0 ) ;
444
448
SignalMessage sm = new SignalMessage ( )
445
449
{
446
450
Direction = SignalMessageDirection . Incoming ,
@@ -459,7 +463,7 @@ private async Task HandleGroupLeaveMessage(SignalServiceEnvelope envelope, Signa
459
463
}
460
464
else
461
465
{
462
- SignalContact author = await SignalDBContext . GetOrCreateContactLocked ( envelope . GetSource ( ) , 0 ) ;
466
+ SignalContact author = await SignalDBContext . GetOrCreateContactLocked ( content . Sender , 0 ) ;
463
467
SignalMessage sm = new SignalMessage ( )
464
468
{
465
469
Direction = SignalMessageDirection . Incoming ,
@@ -496,7 +500,7 @@ private async Task HandleGroupUpdateMessage(SignalServiceEnvelope envelope, Sign
496
500
{
497
501
displayname = group . Name ;
498
502
}
499
- var dbgroup = SignalDBContext . InsertOrUpdateGroupLocked ( groupid , displayname , avatarfile , true , 0 , timestamp ) ;
503
+ var dbgroup = SignalDBContext . InsertOrUpdateGroupLocked ( groupid , displayname , avatarfile , true , timestamp ) ;
500
504
if ( group . Members != null )
501
505
{
502
506
foreach ( var member in group . Members )
@@ -525,7 +529,7 @@ private async Task HandleGroupUpdateMessage(SignalServiceEnvelope envelope, Sign
525
529
{
526
530
status = 0 ;
527
531
type = SignalMessageDirection . Incoming ;
528
- author = await SignalDBContext . GetOrCreateContactLocked ( envelope . GetSource ( ) , timestamp ) ;
532
+ author = await SignalDBContext . GetOrCreateContactLocked ( content . Sender , timestamp ) ;
529
533
prefix = $ "{ author . ThreadDisplayName } has";
530
534
composedTimestamp = envelope . GetTimestamp ( ) ;
531
535
}
@@ -589,7 +593,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
589
593
Group = group ,
590
594
Timestamp = Util . CurrentTimeMillis ( )
591
595
} ;
592
- await SignalLibHandle . Instance . OutgoingMessages . SendMessage ( envelope . GetSourceAddress ( ) , requestInfoMessage ) ;
596
+ SignalLibHandle . Instance . OutgoingQueue . Add ( new SignalServiceDataMessageSendable ( requestInfoMessage , envelope . GetSourceAddress ( ) ) ) ;
593
597
}
594
598
composedTimestamp = envelope . GetTimestamp ( ) ;
595
599
}
@@ -603,7 +607,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
603
607
}
604
608
else
605
609
{
606
- conversation = await SignalDBContext . GetOrCreateContactLocked ( envelope . GetSource ( ) , timestamp ) ;
610
+ conversation = await SignalDBContext . GetOrCreateContactLocked ( content . Sender , timestamp ) ;
607
611
composedTimestamp = envelope . GetTimestamp ( ) ;
608
612
}
609
613
}
@@ -618,7 +622,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
618
622
{
619
623
status = 0 ;
620
624
type = SignalMessageDirection . Incoming ;
621
- author = await SignalDBContext . GetOrCreateContactLocked ( envelope . GetSource ( ) , timestamp ) ;
625
+ author = await SignalDBContext . GetOrCreateContactLocked ( content . Sender , timestamp ) ;
622
626
}
623
627
624
628
if ( author != null && author . Blocked )
@@ -633,7 +637,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
633
637
Direction = type ,
634
638
Status = status ,
635
639
Author = author ,
636
- Content = new SignalMessageContent ( ) { Content = body } ,
640
+ Content = new SignalMessageContent ( ) { Content = body . Truncate ( 2000 ) } ,
637
641
ThreadId = conversation . ThreadId ,
638
642
DeviceId = ( uint ) envelope . GetSourceDevice ( ) ,
639
643
Receipts = 0 ,
@@ -655,7 +659,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
655
659
SentFileName = pointer . FileName ,
656
660
ContentType = receivedAttachment . ContentType ,
657
661
Key = pointer . Key ,
658
- Relay = pointer . Relay ,
662
+ Relay = null ,
659
663
StorageId = pointer . Id ,
660
664
Size = ( long ) pointer . Size ,
661
665
Digest = pointer . Digest
@@ -666,7 +670,7 @@ private async Task HandleSignalMessage(SignalServiceEnvelope envelope, SignalSer
666
670
// Make sure to update attachments count
667
671
message . AttachmentsCount = ( uint ) attachments . Count ;
668
672
}
669
- await SignalLibHandle . Instance . SaveAndDispatchSignalMessage ( message , conversation ) ;
673
+ await SignalLibHandle . Instance . SaveAndDispatchSignalMessage ( message , null , conversation ) ;
670
674
}
671
675
}
672
676
}
0 commit comments