1
0
Fork 0

Message-ID fixup

This commit is contained in:
bagyenda 2008-07-07 06:35:43 +00:00
parent 5b5fa1fd7b
commit 4cdb712d76
9 changed files with 58 additions and 16 deletions

View File

@ -1,3 +1,5 @@
2008-07-07 P. A. Bagyenda <bagyenda@dsmagic.com>
* Message-ID fix -- added '@'
2008-07-04 P. A. Bagyenda <bagyenda@dsmagic.com>
* Minor fixes for PANICs in mms_msg.c
2008-07-01 P. A. Bagyenda <bagyenda@dsmagic.com>

View File

@ -854,7 +854,7 @@ MmsEnvelope *mms_queue_create_envelope(Octstr *from, List *to,
/* Get MsgID, Fixup if not there and needed. */
if ((msgid = mms_get_header_value(m, octstr_imm("Message-ID"))) == NULL &&
xqfname) {
msgid = mms_maketransid(xqfname, mmscname);
msgid = mms_make_msgid(xqfname, mmscname);
if (mtype == MMS_MSGTYPE_SEND_REQ)
mms_replace_header_value(m, "Message-ID", octstr_get_cstr(msgid));
}

View File

@ -158,6 +158,26 @@ Octstr *mms_maketransid(char *qf, Octstr *mmscname)
return res;
}
Octstr *mms_make_msgid(char *qf, Octstr *mmscname)
{/* Message ID is a little differently done. */
Octstr *res;
Octstr *x, *y = NULL;
static int ct;
if (!qf)
x = octstr_format("msg.%ld.x%d.%d.%d",
(long)time(NULL) % 10000, (++ct % 1000), getpid()%100, random()%100);
else
x = octstr_create(qf);
res = octstr_format("%S@%S", x,mmscname);
octstr_destroy(x);
octstr_destroy(y);
return res;
}
extern Octstr *mms_getqf_fromtransid(Octstr *transid)
{
int i;
@ -171,6 +191,18 @@ extern Octstr *mms_getqf_fromtransid(Octstr *transid)
return (i >= 0) ? octstr_copy(transid, i+1, octstr_len(transid)) : octstr_duplicate(transid);
}
extern Octstr *mms_getqf_from_msgid(Octstr *msgid)
{
int i;
if (msgid == NULL)
return NULL;
if ((i = octstr_search_char(msgid, '@', 0)) > 0)
return octstr_copy(msgid, 0, i);
else
return mms_getqf_fromtransid(msgid); /* For older ones where transid = msgid. */
}
Octstr *mms_isodate(time_t t)
{
Octstr *current_time;

View File

@ -69,7 +69,10 @@ extern int mms_load_core_settings(mCfgGrp *cgrp);
extern Octstr *mms_maketransid(char *qf, Octstr *mmscname);
extern Octstr *mms_make_msgid(char *qf, Octstr *mmscname);
extern Octstr *mms_getqf_fromtransid(Octstr *transid);
extern Octstr *mms_getqf_from_msgid(Octstr *msgid);
extern Octstr *mms_isodate(time_t t);
void mms_lib_init(void);

View File

@ -229,7 +229,7 @@ static void mm7soap_receive(MmsHTTPClientInfo *h)
octstr_get_cstr(qdir),
"MM7/SOAP-IN",
octstr_imm(MM_NAME));
msgid = mms_maketransid(octstr_get_cstr(qf), octstr_imm(MM_NAME));
msgid = mms_make_msgid(octstr_get_cstr(qf), octstr_imm(MM_NAME));
mms_log("Received", from, to, -1, msgid, NULL, h->m->id, "MMSBox", h->ua, NULL);
octstr_destroy(linkedid);

View File

@ -1205,8 +1205,10 @@ static void sendmms_func(void *unused)
username = http_cgi_variable(cgivars, "username");
password = http_cgi_variable(cgivars, "password");
octstr_strip_blanks(username);
octstr_strip_blanks(password);
if (username)
octstr_strip_blanks(username);
if (password)
octstr_strip_blanks(password);
if ((u = auth_user(username, password)) != NULL &&
is_allowed_ip(sendmms_port.allow_ip, sendmms_port.deny_ip, ip)) {
Octstr *data, *ctype = NULL, *mmc, *to, *from, *dlr_url;

View File

@ -54,8 +54,14 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays)
mms_load_core_settings(cgrp);
m->hostname = _mms_cfg_getx(grp, octstr_imm("hostname"));
m->hostname = mms_cfg_get(grp, octstr_imm("hostname"));
if (octstr_len(m->hostname) == 0)
m->hostname = octstr_create("localhost");
if ((m->host_alias = mms_cfg_get(grp, octstr_imm("host-alias"))) == NULL)
m->host_alias = octstr_duplicate(m->hostname);
if (proxyrelays)
*proxyrelays = mms_proxy_relays(cfg, m->hostname);
@ -71,11 +77,8 @@ MmscSettings *mms_load_mmsc_settings(mCfg *cfg, List **proxyrelays)
} else
m->strip_prefixes = NULL;
if (m->hostname == NULL || octstr_len(m->hostname) == 0)
m->hostname = octstr_create("localhost");
m->name = _mms_cfg_getx(grp, octstr_imm("name"));
m->host_alias = _mms_cfg_getx(grp, octstr_imm("host-alias"));
m->sendmail = _mms_cfg_getx(grp, octstr_imm("send-mail-prog"));

View File

@ -288,8 +288,8 @@ int main(int argc, char *argv[])
mm4_type ? "MM4" : "MM3",
settings->host_alias);
if (qf) {
newmsgid = mms_maketransid(octstr_get_cstr(qf),
settings->host_alias);
newmsgid = mms_make_msgid(octstr_get_cstr(qf),
settings->host_alias);
info(0, "%s Queued message to %s from %s (via %s) => %s",
mm4_type ? "MM4 Incoming" : "Email2MMS",
octstr_get_cstr(xto), octstr_get_cstr(xfrom),

View File

@ -627,7 +627,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
mresp = mms_sendconf("Error-transient-failure", "None", octstr_get_cstr(otransid),0,
menc);
else {
msgid = mms_maketransid(octstr_get_cstr(qf),
msgid = mms_make_msgid(octstr_get_cstr(qf),
settings->host_alias);
mresp = mms_sendconf("Ok", octstr_get_cstr(msgid), octstr_get_cstr(otransid),0,
menc);
@ -849,7 +849,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
mresp = mms_sendconf("Error-transient-failure",
"None", octstr_get_cstr(otransid),1,menc);
else {
msgid = mms_maketransid(octstr_get_cstr(qf2), settings->host_alias);
msgid = mms_make_msgid(octstr_get_cstr(qf2), settings->host_alias);
mresp = mms_sendconf("Ok",
octstr_get_cstr(msgid),
octstr_get_cstr(otransid),1,menc);
@ -1620,7 +1620,7 @@ static void mm7soap_dispatch(MmsHTTPClientInfo *h)
octstr_get_cstr(settings->global_queuedir),
"MM7",
settings->host_alias);
msgid = mms_maketransid(octstr_get_cstr(qf), settings->host_alias);
msgid = mms_make_msgid(octstr_get_cstr(qf), settings->host_alias);
mms_log("Received", from ? from : sender, to, -1, msgid, h->vasp->id, NULL, "MM7",
h->ua, NULL);
octstr_destroy(value);
@ -1634,7 +1634,7 @@ static void mm7soap_dispatch(MmsHTTPClientInfo *h)
case MM7_TAG_ReplaceReq:
msgid = mm7_soap_header_value(mreq, octstr_imm("MessageID"));
if (msgid && (qf = mms_getqf_fromtransid(msgid)) != NULL &&
if (msgid && (qf = mms_getqf_from_msgid(msgid)) != NULL &&
(e = settings->qfs->mms_queue_readenvelope(octstr_get_cstr(qf),
octstr_get_cstr(settings->global_queuedir),
1)) != NULL) {
@ -1693,7 +1693,7 @@ static void mm7soap_dispatch(MmsHTTPClientInfo *h)
case MM7_TAG_CancelReq:
msgid = mm7_soap_header_value(mreq, octstr_imm("MessageID"));
if (msgid && (qf = mms_getqf_fromtransid(msgid)) != NULL &&
if (msgid && (qf = mms_getqf_from_msgid(msgid)) != NULL &&
(e = settings->qfs->mms_queue_readenvelope(octstr_get_cstr(qf),
octstr_get_cstr(settings->global_queuedir),
1)) != NULL) {
@ -1858,7 +1858,7 @@ static void mm7eaif_dispatch(MmsHTTPClientInfo *h)
settings->host_alias);
if (qf) {
msgid = mms_maketransid(octstr_get_cstr(qf),
msgid = mms_make_msgid(octstr_get_cstr(qf),
settings->host_alias);
/* Log to access log */