while (list)
{
tmp_listinfo=list->data;
- if ( (tmp_listinfo->setup_frame_number == pi->info_setup_frame_num) && (tmp_listinfo->ssrc == pi->info_sync_src) ){
+ if ( (tmp_listinfo->setup_frame_number == pi->info_setup_frame_num)
+ && (tmp_listinfo->ssrc == pi->info_sync_src) && (tmp_listinfo->end_stream == FALSE)){
+ /* if the payload type has changed, we mark the stream as finished to create a new one
+ this is to show multiple payload changes in the Graph for example for DTMF RFC2833 */
+ if ( tmp_listinfo->pt != pi->info_payload_type )
+ tmp_listinfo->end_stream = TRUE;
+ else {
strinfo = (voip_rtp_stream_info_t*)(list->data);
break;
+ }
}
list = g_list_next (list);
}
COPY_ADDRESS(&(strinfo->dest_addr), &(pinfo->dst));
strinfo->dest_port = pinfo->destport;
strinfo->ssrc = pi->info_sync_src;
+ strinfo->end_stream = FALSE;
strinfo->pt = pi->info_payload_type;
strinfo->npackets = 0;
strinfo->first_frame_num = pinfo->fd->num;
static guint16 isup_cic;
static guint8 isup_message_type;
static guint8 isup_cause_value;
+static guint32 isup_frame_num;
/****************************************************************************/
/* whenever a isup_ packet is seen by the tap listener */
isup_cause_value = pi->cause_value;
isup_cic = pinfo->circuit_id;
+ isup_frame_num = pinfo->fd->num;
+
return 0;
}
const mtp3_tap_rec_t *pi = mtp3_info;
+ /* check if the upper layer is ISUP matching the frame number */
+ if (isup_frame_num != pinfo->fd->num) return 0;
+
/* check wether we already have a call with these parameters in the list */
list = g_list_first(tapinfo->strinfo_list);
while (list)