Skip to content

Commit

Permalink
dialog: dlg_cell, always check for a to-tag match
Browse files Browse the repository at this point in the history
  • Loading branch information
jchavanton committed Sep 28, 2020
1 parent 60f04b6 commit 498aa35
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions src/modules/dialog/dlg_hash.c
Expand Up @@ -865,6 +865,7 @@ static inline struct dlg_cell* internal_get_dlg(unsigned int h_entry,
unsigned int *dir, int mode)
{
struct dlg_cell *dlg;
struct dlg_cell *dlg_no_totag=NULL;
struct dlg_entry *d_entry;

d_entry = &(d_table->entries[h_entry]);
Expand All @@ -876,13 +877,24 @@ static inline struct dlg_cell* internal_get_dlg(unsigned int h_entry,
if (match_dialog( dlg, callid, ftag, ttag, dir)==1) {
ref_dlg_unsafe(dlg, 1);
if(likely(mode==0)) dlg_unlock( d_table, d_entry);
LM_DBG("dialog callid='%.*s' found on entry %u, dir=%d\n",
callid->len, callid->s,h_entry,*dir);

/* If to-tag is empty continue to search in case another dialog is found with a matching to-tag. */
if (dlg->tag[1].len == 0) {
dlg_no_totag=dlg;
LM_DBG("dialog callid='%.*s' found on entry %u, dir=%d\n",
callid->len, callid->s,h_entry,*dir);
continue;
}
LM_DBG("dialog callid='%.*s' found on entry %u, dir=%d to-tag='%.*s'\n",
callid->len, callid->s,h_entry,*dir, dlg->tag[1].len, dlg->tag[1].s);

return dlg;
}
}

if(likely(mode==0)) dlg_unlock( d_table, d_entry);
if (dlg_no_totag) return dlg_no_totag;

LM_DBG("no dialog callid='%.*s' found\n", callid->len, callid->s);
return 0;
}
Expand Down

0 comments on commit 498aa35

Please sign in to comment.