diff --git a/mbuni/mmsbox/bearerbox.c b/mbuni/mmsbox/bearerbox.c index 56812ad..282f5b2 100644 --- a/mbuni/mmsbox/bearerbox.c +++ b/mbuni/mmsbox/bearerbox.c @@ -1598,16 +1598,18 @@ static void process_send_res(MmsEnvelope *e, MmsMsg *msg, { Octstr *rcpt = to->_x ? to->_x : to->rcpt; /* Might have a cleaned up recipient address */ time_t tnow = time(NULL); + Octstr *xfrom = octstr_duplicate(e->from); /* Because it might change below */ + if (res == MMS_SEND_OK || res == MMS_SEND_QUEUED) { to->process = 0; if (e->msgtype == MMS_MSGTYPE_SEND_REQ || e->msgtype == MMS_MSGTYPE_RETRIEVE_CONF) /* queue dlr as needed. */ - queue_dlr(mmc, e->from, rcpt, new_msgid, octstr_imm("Forwarded"), "MM7-Out", errl); + queue_dlr(mmc, xfrom, rcpt, new_msgid, octstr_imm("Forwarded"), "MM7-Out", errl); } else if (res == MMS_SEND_ERROR_FATAL && mmc) { if (e->msgtype == MMS_MSGTYPE_SEND_REQ || e->msgtype == MMS_MSGTYPE_RETRIEVE_CONF) /* queue dlr as needed. */ - queue_dlr(mmc, e->from, rcpt, e->msgId, + queue_dlr(mmc, xfrom, rcpt, e->msgId, (e->expiryt != 0 && e->expiryt < tnow) ? octstr_imm("Expired") : octstr_imm("Rejected"), "MM7-Out", errl); @@ -1636,7 +1638,7 @@ static void process_send_res(MmsEnvelope *e, MmsMsg *msg, /* Do CDR */ cdrfs->logcdr(e->created, - octstr_get_cstr(e->from), + octstr_get_cstr(xfrom), octstr_get_cstr(rcpt), octstr_get_cstr(e->msgId), mmc ? octstr_get_cstr(mmc->id) : NULL, /* Should we touch mmc here? XXX */ @@ -1659,14 +1661,15 @@ static void process_send_res(MmsEnvelope *e, MmsMsg *msg, if (err == NULL) mms_info(0, "MM7", NULL, "%s MMSBox Outgoing Queue MMS Send: From %s, to %s, msgsize=%ld: msgid=[%s]", SEND_ERROR_STR(res), - octstr_get_cstr(e->from), octstr_get_cstr(rcpt), e->msize, + octstr_get_cstr(xfrom), octstr_get_cstr(rcpt), e->msize, new_msgid ? octstr_get_cstr(new_msgid) : "N/A"); else mms_error_ex("MT", 0, "MM7", NULL, "%s MMSBox Outgoing Queue MMS Send: From %s, to %s, msgsize=%ld: %s", SEND_ERROR_STR(res), - octstr_get_cstr(e->from), octstr_get_cstr(rcpt), e->msize, octstr_get_cstr(err)); + octstr_get_cstr(xfrom), octstr_get_cstr(rcpt), e->msize, octstr_get_cstr(err)); + octstr_destroy(xfrom); } /* Make a list of recpients up to max_rcpt */