minor bug fix in mmsbox message routing
This commit is contained in:
parent
a49d02b4e8
commit
5d01704548
|
@ -919,9 +919,10 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
|
||||||
if (!subject && e && e->subject)
|
if (!subject && e && e->subject)
|
||||||
subject = octstr_duplicate(e->subject);
|
subject = octstr_duplicate(e->subject);
|
||||||
|
|
||||||
|
#if 0 /* don't route via sender, instead use allow/deny settings. */
|
||||||
if (!mmc && e)
|
if (!mmc && e)
|
||||||
mmc = e->fromproxy;
|
mmc = e->fromproxy;
|
||||||
|
#endif
|
||||||
/* Get the from address. */
|
/* Get the from address. */
|
||||||
if (faked_sender)
|
if (faked_sender)
|
||||||
from = octstr_duplicate(faked_sender);
|
from = octstr_duplicate(faked_sender);
|
||||||
|
@ -1119,10 +1120,8 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
loop:
|
loop:
|
||||||
if (h)
|
octstr_destroy(h);
|
||||||
octstr_destroy(h);
|
octstr_destroy(v);
|
||||||
if (v)
|
|
||||||
octstr_destroy(v);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -457,12 +457,18 @@ MmscGrp *get_handler_mmc(Octstr *id, Octstr *to, Octstr *from)
|
||||||
MmscGrp *mmc = NULL, *res = NULL;
|
MmscGrp *mmc = NULL, *res = NULL;
|
||||||
int i, n;
|
int i, n;
|
||||||
Octstr *phonenum = NULL, *xfrom = NULL;
|
Octstr *phonenum = NULL, *xfrom = NULL;
|
||||||
int has_criteria = 0;
|
|
||||||
|
if (id) /* If ID is set, use it. */
|
||||||
|
for (i = 0, n = gwlist_len(mmscs); i < n; i++)
|
||||||
|
if ((mmc = gwlist_get(mmscs, i)) != NULL &&
|
||||||
|
mmc->id && octstr_compare(mmc->id, id) == 0)
|
||||||
|
return mmc;
|
||||||
|
|
||||||
if (octstr_search_char(to, '@', 0) > 0 ||
|
if (octstr_search_char(to, '@', 0) > 0 ||
|
||||||
octstr_case_search(to, octstr_imm("/TYPE=IPv"), 0) > 0) /* For emails, or ip take first mmsc. */
|
octstr_case_search(to, octstr_imm("/TYPE=IPv"), 0) > 0) /* For emails, or ip take first mmsc. */
|
||||||
return gwlist_get(mmscs, 0);
|
return gwlist_get(mmscs, 0);
|
||||||
|
|
||||||
|
/* now try allow/deny stuff. */
|
||||||
phonenum = extract_phonenum(to, unified_prefix);
|
phonenum = extract_phonenum(to, unified_prefix);
|
||||||
xfrom = extract_phonenum(from, NULL);
|
xfrom = extract_phonenum(from, NULL);
|
||||||
|
|
||||||
|
@ -486,24 +492,14 @@ MmscGrp *get_handler_mmc(Octstr *id, Octstr *to, Octstr *from)
|
||||||
does_prefix_match(mmc->denied_sender_prefix, xfrom) != 0)
|
does_prefix_match(mmc->denied_sender_prefix, xfrom) != 0)
|
||||||
continue; /* matches. */
|
continue; /* matches. */
|
||||||
|
|
||||||
has_criteria = has_criteria || mmc->denied_prefix ||
|
|
||||||
mmc->allowed_prefix || mmc->denied_sender_prefix || mmc->allowed_sender_prefix;
|
|
||||||
res = mmc; /* otherwise it matches, so go away. */
|
res = mmc; /* otherwise it matches, so go away. */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
octstr_destroy(phonenum);
|
octstr_destroy(phonenum);
|
||||||
octstr_destroy(xfrom);
|
octstr_destroy(xfrom);
|
||||||
|
|
||||||
if (res && has_criteria) /* choice driven by allowed/denied settings */
|
return res;
|
||||||
return res;
|
|
||||||
else if (res == NULL && id) /* try sending it back the way it came. */
|
|
||||||
for (i = 0, n = gwlist_len(mmscs); i < n; i++)
|
|
||||||
if ((mmc = gwlist_get(mmscs, i)) != NULL &&
|
|
||||||
mmc->id && octstr_compare(mmc->id, id) == 0)
|
|
||||||
return mmc;
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* handle message routing. */
|
/* handle message routing. */
|
||||||
|
|
Loading…
Reference in New Issue