fix for dlr and rr
This commit is contained in:
parent
80682bbcb3
commit
3f4df1cdc7
|
@ -1,5 +1,6 @@
|
||||||
2008-08-06 P. A. Bagyenda <bagyenda@dsmagic.com>
|
2008-08-06 P. A. Bagyenda <bagyenda@dsmagic.com>
|
||||||
* Additional fixes for bad message formats causing crash
|
* Additional fixes for bad message formats causing crash
|
||||||
|
* Fix for incorrect From and To headers in DLR and RR messages
|
||||||
2008-08-05 P. A. Bagyenda <bagyenda@dsmagic.com>
|
2008-08-05 P. A. Bagyenda <bagyenda@dsmagic.com>
|
||||||
* Minor fix for crash in mmsproxy with bad message type
|
* Minor fix for crash in mmsproxy with bad message type
|
||||||
2008-07-18 P. A. Bagyenda <bagyenda@dsmagic.com>
|
2008-07-18 P. A. Bagyenda <bagyenda@dsmagic.com>
|
||||||
|
|
|
@ -969,7 +969,7 @@ MmsMsg *mm7_soap_to_mmsmsg(MSoapMsg_t *m, Octstr *from)
|
||||||
|
|
||||||
if (msgtype == MM7_TAG_DeliveryReportReq &&
|
if (msgtype == MM7_TAG_DeliveryReportReq &&
|
||||||
p && r && mms_string_to_status(r) >= 0)
|
p && r && mms_string_to_status(r) >= 0)
|
||||||
msg = mms_deliveryreport(s ? s : octstr_imm("0000"), p, t, r);
|
msg = mms_deliveryreport(s ? s : octstr_imm("0000"), from, p, t, r);
|
||||||
else if (msgtype == MM7_TAG_ReadReplyReq &&
|
else if (msgtype == MM7_TAG_ReadReplyReq &&
|
||||||
f && p && r && mms_string_to_read_status(r) >= 0)
|
f && p && r && mms_string_to_read_status(r) >= 0)
|
||||||
msg = mms_readreport(s ? s : octstr_imm("0000"),
|
msg = mms_readreport(s ? s : octstr_imm("0000"),
|
||||||
|
|
|
@ -1573,7 +1573,7 @@ MmsMsg *mms_readreport(Octstr *msgid, Octstr *from, Octstr *to, time_t date, Oct
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
MmsMsg *mms_deliveryreport(Octstr *msgid, Octstr *to, time_t date, Octstr *status)
|
MmsMsg *mms_deliveryreport(Octstr *msgid, Octstr *from, Octstr *to, time_t date, Octstr *status)
|
||||||
{
|
{
|
||||||
|
|
||||||
MmsMsg *m = gw_malloc(sizeof *m);
|
MmsMsg *m = gw_malloc(sizeof *m);
|
||||||
|
@ -1593,8 +1593,10 @@ MmsMsg *mms_deliveryreport(Octstr *msgid, Octstr *to, time_t date, Octstr *statu
|
||||||
http_header_add(m->headers, "X-Mms-MMS-Version", MMS_DEFAULT_VERSION);
|
http_header_add(m->headers, "X-Mms-MMS-Version", MMS_DEFAULT_VERSION);
|
||||||
|
|
||||||
http_header_add(m->headers, "Message-ID", msgid ? octstr_get_cstr(msgid) : "none");
|
http_header_add(m->headers, "Message-ID", msgid ? octstr_get_cstr(msgid) : "none");
|
||||||
http_header_add(m->headers, "To", octstr_get_cstr(to));
|
if (to)
|
||||||
|
http_header_add(m->headers, "To", octstr_get_cstr(to));
|
||||||
|
if (from)
|
||||||
|
http_header_add(m->headers, "From", octstr_get_cstr(from));
|
||||||
s = date_format_http(date);
|
s = date_format_http(date);
|
||||||
http_header_add(m->headers, "Date", octstr_get_cstr(s));
|
http_header_add(m->headers, "Date", octstr_get_cstr(s));
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,8 @@ extern void mms_msgdump(MmsMsg *m, int headers_only);
|
||||||
extern void mms_destroy(MmsMsg *msg);
|
extern void mms_destroy(MmsMsg *msg);
|
||||||
|
|
||||||
/* Make a delivery report message. */
|
/* Make a delivery report message. */
|
||||||
extern MmsMsg *mms_deliveryreport(Octstr *msgid, Octstr *to, time_t date, Octstr *status);
|
extern MmsMsg *mms_deliveryreport(Octstr *msgid, Octstr *from,
|
||||||
|
Octstr *to, time_t date, Octstr *status);
|
||||||
|
|
||||||
MmsMsg *mms_readreport(Octstr *msgid, Octstr *from, Octstr *to, time_t date, Octstr *status);
|
MmsMsg *mms_readreport(Octstr *msgid, Octstr *from, Octstr *to, time_t date, Octstr *status);
|
||||||
|
|
||||||
|
|
|
@ -828,7 +828,7 @@ static int modify_msg(MIMEEntity *msg, MmsUaProfile *prof)
|
||||||
if (prof->ccppaccept.all) /* Check if it accepts all content types. */
|
if (prof->ccppaccept.all) /* Check if it accepts all content types. */
|
||||||
supported = 1;
|
supported = 1;
|
||||||
else
|
else
|
||||||
for (i = 0, n = prof->ccppaccept.content ? gwlist_len(prof->ccppaccept.content) : 0;
|
for (i = 0, n = gwlist_len(prof->ccppaccept.content);
|
||||||
i<n; i++)
|
i<n; i++)
|
||||||
if ((unsigned long)gwlist_get(prof->ccppaccept._hash,i) == chash &&
|
if ((unsigned long)gwlist_get(prof->ccppaccept._hash,i) == chash &&
|
||||||
octstr_case_compare(gwlist_get(prof->ccppaccept.content,i),content_type) == 0) {
|
octstr_case_compare(gwlist_get(prof->ccppaccept.content,i),content_type) == 0) {
|
||||||
|
|
|
@ -786,9 +786,12 @@ int mms_sendtoemail(Octstr *from, Octstr *to,
|
||||||
else if (mtype == MMS_MSGTYPE_DELIVERY_IND) {
|
else if (mtype == MMS_MSGTYPE_DELIVERY_IND) {
|
||||||
Octstr *s = http_header_value(headers, octstr_imm("X-Mms-Status"));
|
Octstr *s = http_header_value(headers, octstr_imm("X-Mms-Status"));
|
||||||
x = "MM4_delivery_report.REQ";
|
x = "MM4_delivery_report.REQ";
|
||||||
|
#if 0
|
||||||
/* insert FROM address as recipient as per spec */
|
/* insert FROM address as recipient as per spec */
|
||||||
http_header_add(newhdrs, "From", octstr_get_cstr(to));
|
http_header_add(newhdrs, "From", octstr_get_cstr(to));
|
||||||
|
#else
|
||||||
|
http_header_add(newhdrs, "To", octstr_get_cstr(to));
|
||||||
|
#endif
|
||||||
/* rename status header. */
|
/* rename status header. */
|
||||||
http_header_remove_all(headers, "X-Mms-Status");
|
http_header_remove_all(headers, "X-Mms-Status");
|
||||||
http_header_add(newhdrs, "X-Mms-MM-Status-Code",
|
http_header_add(newhdrs, "X-Mms-MM-Status-Code",
|
||||||
|
@ -798,8 +801,12 @@ int mms_sendtoemail(Octstr *from, Octstr *to,
|
||||||
octstr_destroy(s);
|
octstr_destroy(s);
|
||||||
} else if (mtype == MMS_MSGTYPE_READ_REC_IND) {
|
} else if (mtype == MMS_MSGTYPE_READ_REC_IND) {
|
||||||
x = "MM4_read_reply_report.REQ";
|
x = "MM4_read_reply_report.REQ";
|
||||||
|
#if 0
|
||||||
/* insert FROM address as recipient as per spec */
|
/* insert FROM address as recipient as per spec */
|
||||||
http_header_add(newhdrs, "From", octstr_get_cstr(to));
|
http_header_add(newhdrs, "From", octstr_get_cstr(to));
|
||||||
|
#else
|
||||||
|
http_header_add(newhdrs, "To", octstr_get_cstr(to));
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
*error = octstr_format("Invalid message type %s on MM4 outgoing interface!",
|
*error = octstr_format("Invalid message type %s on MM4 outgoing interface!",
|
||||||
mms_message_type_to_cstr(mtype));
|
mms_message_type_to_cstr(mtype));
|
||||||
|
|
|
@ -363,7 +363,7 @@ static int sendMsg(MmsEnvelope *e)
|
||||||
mstatus = "Expired";
|
mstatus = "Expired";
|
||||||
else
|
else
|
||||||
mstatus = "Rejected";
|
mstatus = "Rejected";
|
||||||
m = mms_deliveryreport(e->msgId, to->rcpt, tnow, octstr_imm(mstatus));
|
m = mms_deliveryreport(e->msgId, to->rcpt, e->from, tnow, octstr_imm(mstatus));
|
||||||
|
|
||||||
l = gwlist_create();
|
l = gwlist_create();
|
||||||
|
|
||||||
|
|
|
@ -416,7 +416,7 @@ static int sendNotify(MmsEnvelope *e)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (dlr) {
|
if (dlr) {
|
||||||
MmsMsg *m = mms_deliveryreport(msgId, to, tnow,
|
MmsMsg *m = mms_deliveryreport(msgId, to, e->from, tnow,
|
||||||
rtype ? octstr_imm(rtype) :
|
rtype ? octstr_imm(rtype) :
|
||||||
octstr_imm("Indeterminate"));
|
octstr_imm("Indeterminate"));
|
||||||
|
|
||||||
|
|
|
@ -389,7 +389,8 @@ void fetchmms_proxy(MmsHTTPClientInfo *h)
|
||||||
char tbuf[64];
|
char tbuf[64];
|
||||||
Octstr *x, *from = h->client_addr ? h->client_addr : settings->system_user;
|
Octstr *x, *from = h->client_addr ? h->client_addr : settings->system_user;
|
||||||
List *l = gwlist_create(), *qh = gwlist_create();
|
List *l = gwlist_create(), *qh = gwlist_create();
|
||||||
MmsMsg *mrpt = mms_deliveryreport(e->msgId, h->client_addr, time(NULL), octstr_imm("Retrieved"));
|
MmsMsg *mrpt = mms_deliveryreport(e->msgId, from, e->from,
|
||||||
|
time(NULL), octstr_imm("Retrieved"));
|
||||||
|
|
||||||
gwlist_append(l, octstr_duplicate(e->from));
|
gwlist_append(l, octstr_duplicate(e->from));
|
||||||
|
|
||||||
|
@ -845,11 +846,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x)
|
octstr_destroy(x);
|
||||||
octstr_destroy(x);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!qf2)
|
if (!qf2)
|
||||||
mresp = mms_sendconf("Error-transient-failure",
|
mresp = mms_sendconf("Error-transient-failure",
|
||||||
"None", octstr_get_cstr(otransid),1,menc);
|
"None", octstr_get_cstr(otransid),1,menc);
|
||||||
|
@ -884,7 +881,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
||||||
(pdelivery_report && octstr_case_compare(pdelivery_report,
|
(pdelivery_report && octstr_case_compare(pdelivery_report,
|
||||||
octstr_imm("Yes")))) {
|
octstr_imm("Yes")))) {
|
||||||
Octstr *from = h->client_addr ? h->client_addr : settings->system_user;
|
Octstr *from = h->client_addr ? h->client_addr : settings->system_user;
|
||||||
MmsMsg *mrep = mms_deliveryreport(pmsgid, h->client_addr, time(NULL),
|
MmsMsg *mrep = mms_deliveryreport(pmsgid, from, e ? e->from : NULL, time(NULL),
|
||||||
octstr_imm("Forwarded"));
|
octstr_imm("Forwarded"));
|
||||||
Octstr *x;
|
Octstr *x;
|
||||||
List *l = gwlist_create();
|
List *l = gwlist_create();
|
||||||
|
@ -900,8 +897,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
||||||
octstr_get_cstr(settings->global_queuedir),
|
octstr_get_cstr(settings->global_queuedir),
|
||||||
"MM1",
|
"MM1",
|
||||||
settings->host_alias);
|
settings->host_alias);
|
||||||
if (x)
|
octstr_destroy(x);
|
||||||
octstr_destroy(x);
|
|
||||||
|
|
||||||
gwlist_destroy(l, NULL);
|
gwlist_destroy(l, NULL);
|
||||||
mms_destroy(mrep);
|
mms_destroy(mrep);
|
||||||
|
@ -991,7 +987,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
|
||||||
Octstr *from = h->client_addr ? h->client_addr : settings->system_user;
|
Octstr *from = h->client_addr ? h->client_addr : settings->system_user;
|
||||||
List *l = gwlist_create();
|
List *l = gwlist_create();
|
||||||
|
|
||||||
mrpt = mms_deliveryreport(e->msgId, h->client_addr, time(NULL), status);
|
mrpt = mms_deliveryreport(e->msgId, from, e->from, time(NULL), status);
|
||||||
gwlist_append(l, octstr_duplicate(e->from));
|
gwlist_append(l, octstr_duplicate(e->from));
|
||||||
|
|
||||||
x = settings->qfs->mms_queue_add(from, l, NULL, NULL, NULL, 0,
|
x = settings->qfs->mms_queue_add(from, l, NULL, NULL, NULL, 0,
|
||||||
|
|
Loading…
Reference in New Issue