@@ -675,12 +675,11 @@ static int keep_extra_dissection(struct ndpi_detection_module_struct *ndpi_struc
675
675
/* We want extra dissection for:
676
676
* sub-classification
677
677
* metadata extraction (*-ADDRESS) or looking for RTP
678
- At the moment:
678
+ * At the moment:
679
679
* it seems ZOOM doens't have any meaningful attributes
680
680
* we want (all) XOR-PEER-ADDRESS only for Telegram.
681
681
* for the other protocols, we stop after we have all metadata (if enabled)
682
- * for some specific protocol, we might know that some attributes
683
- are never used
682
+ * for some specific protocol, we might know that some attributes are never used
684
683
* if monitoring is enabled, keep looking for (S)RTP anyway
685
684
686
685
**After** extra dissection is ended, we might move to monitoring. Note that:
@@ -698,7 +697,21 @@ static int keep_extra_dissection(struct ndpi_detection_module_struct *ndpi_struc
698
697
if (flow -> stun .num_non_stun_pkt == 2 )
699
698
printf ("%d %d\n" , flow -> stun .non_stun_pkt_len [0 ], flow -> stun .non_stun_pkt_len [1 ]);
700
699
#endif
701
- }
700
+ }
701
+ }
702
+
703
+ if (packet -> payload_packet_len > 699 ) {
704
+ if (flow -> detected_protocol_stack [0 ] == NDPI_PROTOCOL_TELEGRAM_VOIP ) {
705
+ if ((packet -> payload [0 ] == 0x16 ) && (packet -> payload [1 ] == 0xfe )
706
+ && ((packet -> payload [2 ] == 0xff ) /* DTLS 1.0 */
707
+ || (packet -> payload [2 ] == 0xfd ) /* DTLS 1.2 */ ))
708
+ ; /* Skip DTLS */
709
+ else {
710
+ /* STUN or RTP */
711
+ /* This packet is too big to be audio: add video */
712
+ flow -> flow_multimedia_types |= ndpi_multimedia_video_flow ;
713
+ }
714
+ }
702
715
}
703
716
704
717
if (flow -> monitoring )
0 commit comments