diff --git a/mbuni/mmlib/mms_mm7soap.c b/mbuni/mmlib/mms_mm7soap.c index 6f14b0d..71a8b56 100644 --- a/mbuni/mmlib/mms_mm7soap.c +++ b/mbuni/mmlib/mms_mm7soap.c @@ -485,6 +485,7 @@ Octstr *headers_to_soapxml(List *hdrs) case MM7_TAG_StatusText: case MM7_TAG_Details: case MM7_TAG_SenderAddress: + case MM7_TAG_allowAdaptations: skip = 1; break; case MM7_TAG_Sender: diff --git a/mbuni/mmlib/mms_strings.def b/mbuni/mmlib/mms_strings.def index 25b258a..2a89130 100644 --- a/mbuni/mmlib/mms_strings.def +++ b/mbuni/mmlib/mms_strings.def @@ -307,6 +307,7 @@ VNSTRING(MM7_5, "MessageType",MM7_TAG_MessageType) VNSTRING(MM7_5, "replyChargingSize", MM7_TAG_replyChargingSize) VNSTRING(MM7_5, "replyDeadline", MM7_TAG_replyDeadline) VNSTRING(MM7_5, "DeliveryReport", MM7_TAG_DeliveryReport) +VNSTRING(MM7_5, "allowAdaptations", MM7_TAG_allowAdaptations) ) NUMBERED(soap_status, diff --git a/mbuni/mmlib/mms_util.c b/mbuni/mmlib/mms_util.c index e4eb2d8..afdaf49 100644 --- a/mbuni/mmlib/mms_util.c +++ b/mbuni/mmlib/mms_util.c @@ -465,10 +465,9 @@ static void addmmscname(Octstr *s, Octstr *myhostname) return; /* Nothing to do. */ j = octstr_case_search(s, octstr_imm("/TYPE=PLMN"), 0); - if (j > 0 && j - 1 + sizeof "/TYPE=PLMN" == len) { /* A proper number. */ - octstr_delete(s, j, -1 + sizeof "/TYPE=PLMN"); /* XXX We strip off /TYPE=PLMN, should we ? */ + if (j > 0 && j - 1 + sizeof "/TYPE=PLMN" == len) /* A proper number. */ octstr_format_append(s, "@%S", myhostname); - } + } static int send2email(Octstr *to, Octstr *from, Octstr *subject, @@ -483,11 +482,8 @@ static int send2email(Octstr *to, Octstr *from, Octstr *subject, List *headers = mime_entity_headers(m); /* we don't want the mime version header removed. */ if (append_hostname) { /* Add our hostname to all phone numbers. */ - int i, n; List *l = http_create_empty_headers(); Octstr *xfrom = http_header_value(headers, octstr_imm("From")); - List *lto = http_header_find_all(headers, "To"); - List *lcc = http_header_find_all(headers, "Cc"); if (xfrom) { addmmscname(xfrom, myhostname); @@ -495,44 +491,6 @@ static int send2email(Octstr *to, Octstr *from, Octstr *subject, octstr_destroy(xfrom); } http_header_remove_all(headers, "From"); - - for (i = 0, n = gwlist_len(lto); i < n; i++) { - Octstr *name, *value; - - http_header_get(lto, i, &name, &value); - - if (!value || !name || - octstr_case_compare(name, octstr_imm("To")) != 0) - goto loop; - - addmmscname(value, myhostname); - http_header_add(l, "To", octstr_get_cstr(value)); - loop: - if (value) octstr_destroy(value); - if (name) octstr_destroy(name); - } - - http_destroy_headers(lto); - http_header_remove_all(headers, "To"); - - for (i = 0, n = gwlist_len(lcc); i < n; i++) { - Octstr *name, *value; - - http_header_get(lcc, i, &name, &value); - - if (!value || !name || - octstr_case_compare(name, octstr_imm("Cc")) != 0) - goto loop2; - - addmmscname(value, myhostname); - http_header_add(l, "Cc", octstr_get_cstr(value)); - loop2: - if (value) octstr_destroy(value); - if (name) octstr_destroy(name); - } - - http_destroy_headers(lcc); - http_header_remove_all(headers, "Cc"); http_append_headers(headers, l); /* combine old with new. */ http_destroy_headers(l); @@ -674,15 +632,23 @@ int mms_sendtoemail(Octstr *from, Octstr *to, base64_mimeparts(m); /* make sure parts are base64 formatted. */ + headers = mime_entity_headers(m); + /* Before we send it, we insert some email friendly headers if they are missing. */ http_header_add(newhdrs, "Subject", subject ? octstr_get_cstr(subject) : "MMS Message"); + http_header_remove_all(headers, "From"); http_header_add(newhdrs, "From", octstr_get_cstr(from)); + http_header_remove_all(headers, "To"); http_header_add(newhdrs, "To", octstr_get_cstr(to)); http_header_add(newhdrs, "Message-ID", msgid ? octstr_get_cstr(msgid) : ""); + http_header_add(newhdrs, "X-Mms-Message-ID", msgid ? octstr_get_cstr(msgid) : ""); http_header_add(newhdrs, "MIME-Version", "1.0"); - - headers = mime_entity_headers(m); + http_header_add(newhdrs, "X-Mms-3GPP-MMS-Version", "5.5.0"); + http_header_add(newhdrs, "X-Mms-Originator-System", myhostname ? octstr_get_cstr(myhostname) : "none"); + http_header_remove_all(headers, "X-Mms-Message-Type"); + http_header_add(newhdrs, "X-Mms-Message-Type", "MM4_forward.REQ"); + http_header_combine(headers, newhdrs); mime_replace_headers(m, headers); diff --git a/mbuni/mmsc/mmsglobalsender.c b/mbuni/mmsc/mmsglobalsender.c index f4a3dd3..81b5572 100644 --- a/mbuni/mmsc/mmsglobalsender.c +++ b/mbuni/mmsc/mmsglobalsender.c @@ -461,12 +461,9 @@ static int mms_sendtoproxy(Octstr *from, Octstr *to, Octstr *msgid, time_t expires, MmsMsg *msg, int dlr, Octstr **error) { - Octstr *pto; - - + Octstr *pto; int x; - if (!to || octstr_search_char(to, '@', 0) >= 0) { *error = octstr_format("Bad recipient address sent to MM4 interface, addresss is %S!", to); @@ -492,21 +489,17 @@ static int mms_sendtoproxy(Octstr *from, Octstr *to, octstr_destroy(ret); } - pto = octstr_format("%S@%S", to, proxy); - - x = mms_sendtoemail(from, pto, subject ? subject : settings->mms_email_subject, msgid, msg, 0, error, sendmail_cmd, settings->hostname, 0, 0,NULL,NULL,0); - mms_log2("Sent", from, to, - -1, msgid, NULL, proxy, "MM4", NULL,NULL); - - octstr_destroy(pto); + mms_log2("Sent", from, pto, + -1, msgid, NULL, proxy, "MM4", NULL,NULL); + octstr_destroy(pto); return x; }