diff --git a/mbuni/ChangeLog b/mbuni/ChangeLog
index 652e4f4..5aa0e56 100644
--- a/mbuni/ChangeLog
+++ b/mbuni/ChangeLog
@@ -1,3 +1,6 @@
+2009-02-25 P. A. Bagyenda
+ * Added ChargedParty MM7/SOAP param to mmsbox
+ * Fixed: Improper setting of log level
2009-02-24 P. A. Bagyenda
* Pass MM7/SOAP LinkedID to service url in mmsbox
* Minor improvements in pgsql-queue error reporting
diff --git a/mbuni/doc/userguide.shtml b/mbuni/doc/userguide.shtml
index caf9a9a..fbfb99b 100644
--- a/mbuni/doc/userguide.shtml
+++ b/mbuni/doc/userguide.shtml
@@ -3080,6 +3080,15 @@ faked-sender = 100
+
+
+ charged-party
+ |
+
+ Optional. Set to the MM7/SOAP ChargedParty parameter.
+ |
+
+
@@ -3735,6 +3744,29 @@ Strings
+
+
+ X-Mbuni-DistributionIndicator
+ |
+
+
+ Should be set to the DistributionIndicator value to be
+ passed to the MMSC in the MM7/SOAP message submission.
+ |
+
+
+
+
+
+ X-Mbuni-Charged-Party
+ |
+
+
+ Should be set to the ChargedParty value to be
+ passed to the MMSC in the MM7/SOAP message submission.
+ |
+
+
diff --git a/mbuni/mmlib/mms_cfg.h b/mbuni/mmlib/mms_cfg.h
index 906bcc0..ff7ef9f 100644
--- a/mbuni/mmlib/mms_cfg.h
+++ b/mbuni/mmlib/mms_cfg.h
@@ -53,7 +53,7 @@ int mms_cfg_get_int(mCfg *cfg, mCfgGrp *grp, Octstr *name, long *n);
/* Get a boolean field value from a group.
* returns 0 on success, -1 on error
*/
-int mms_cfg_get_bool(mCfg *cfg, mCfgGrp *grp, Octstr *name, int *bool);
+int mms_cfg_get_bool(mCfg *cfg, mCfgGrp *grp, Octstr *name, int *val);
/* Get a field value from a group. */
List *mms_cfg_get_list(mCfg *cfg, mCfgGrp *grp, Octstr *name);
diff --git a/mbuni/mmlib/mms_mm7soap.c b/mbuni/mmlib/mms_mm7soap.c
index 31e77c7..7f7b33c 100644
--- a/mbuni/mmlib/mms_mm7soap.c
+++ b/mbuni/mmlib/mms_mm7soap.c
@@ -1017,13 +1017,13 @@ MSoapMsg_t *mm7_mmsmsg_to_soap(MmsMsg *msg, Octstr *from, List *xto,
char *vaspid, char *vasid,
Octstr *uaprof,
time_t uaprof_tstamp,
- Octstr *distrib_indicator)
+ List *hdrs)
{
int i, n, mtype = mms_messagetype(msg);
MSoapMsg_t *m = NULL;
Octstr *xfrom = (from != NULL) ? octstr_format("+ %S", from) : NULL, *s;
Octstr *xuaprof_val = (uaprof) ? octstr_format("%S,%ld", uaprof, uaprof_tstamp) : NULL;
-
+
switch(mtype) {
case MMS_MSGTYPE_SEND_REQ:
case MMS_MSGTYPE_RETRIEVE_CONF:
@@ -1054,6 +1054,8 @@ MSoapMsg_t *mm7_mmsmsg_to_soap(MmsMsg *msg, Octstr *from, List *xto,
if (isclientside) {
+ Octstr *distrib_indicator = hdrs ? http_header_value(hdrs, octstr_imm("X-Mbuni-DistributionIndicator")) : NULL;
+ Octstr *cparty = hdrs ? http_header_value(hdrs, octstr_imm("X-Mbuni-Charged-Party")) : NULL;
if (vaspid)
http_header_add(m->envelope, "VASPID", vaspid);
if (vasid)
@@ -1075,6 +1077,12 @@ MSoapMsg_t *mm7_mmsmsg_to_soap(MmsMsg *msg, Octstr *from, List *xto,
if (distrib_indicator)
http_header_add(m->envelope, "DistributionIndicator",
octstr_str_case_compare(distrib_indicator, "true") == 0 ? "true" : "false");
+ if (cparty)
+ http_header_add(m->envelope, "ChargedParty",
+ octstr_get_cstr(cparty));
+
+ octstr_destroy(distrib_indicator);
+ octstr_destroy(cparty);
} else { /* not clientside. */
if (xuaprof_val) /* only on DeliverReq. */
http_header_add(m->envelope, "UACapabilities", octstr_get_cstr(xuaprof_val));
@@ -1182,7 +1190,8 @@ MSoapMsg_t *mm7_mmsmsg_to_soap(MmsMsg *msg, Octstr *from, List *xto,
octstr_destroy(xfrom);
octstr_destroy(xuaprof_val);
-
+
+
return m;
}
diff --git a/mbuni/mmlib/mms_mm7soap.h b/mbuni/mmlib/mms_mm7soap.h
index a087559..b591a28 100644
--- a/mbuni/mmlib/mms_mm7soap.h
+++ b/mbuni/mmlib/mms_mm7soap.h
@@ -73,7 +73,7 @@ MSoapMsg_t *mm7_mmsmsg_to_soap(MmsMsg *msg, Octstr *from, List *xto,
char *vaspid, char *vasid,
Octstr *uaprof,
time_t uaprof_tstamp,
- Octstr *distrib_indicator);
+ List *extra_hdrs);
MSoapMsg_t *mm7_make_resp(MSoapMsg_t *mreq, int status, Octstr *msgid, int isclientside);
/* Return the header value for some header. */
Octstr *mm7_soap_header_value(MSoapMsg_t *m, Octstr *header);
diff --git a/mbuni/mmlib/mms_util.c b/mbuni/mmlib/mms_util.c
index ad13c7a..5db7ed5 100644
--- a/mbuni/mmlib/mms_util.c
+++ b/mbuni/mmlib/mms_util.c
@@ -56,7 +56,6 @@ int mms_load_core_settings(mCfg *cfg, mCfgGrp *cgrp)
if (mms_cfg_get_int(cfg, cgrp, octstr_imm("log-level"), &loglevel) == -1)
loglevel = 0;
log_open(octstr_get_cstr(log), loglevel, GW_NON_EXCL);
- log_set_log_level(GW_INFO);
octstr_destroy(log);
}
diff --git a/mbuni/mmsbox/bearerbox.c b/mbuni/mmsbox/bearerbox.c
index e80e27c..d2f5657 100644
--- a/mbuni/mmsbox/bearerbox.c
+++ b/mbuni/mmsbox/bearerbox.c
@@ -1041,7 +1041,7 @@ static Octstr *mm7soap_send(MmscGrp *mmc, Octstr *from, Octstr *to,
MSoapMsg_t *mreq = NULL, *mresp = NULL;
List *rh = NULL, *ph = NULL;
Octstr *body = NULL, *rbody = NULL, *url = NULL;
- Octstr *s, *distrib = NULL;
+ Octstr *s;
char *xvasid = vasid ? vasid : (mmc->default_vasid ? octstr_get_cstr(mmc->default_vasid) : NULL);
mms_info(0, "MM7", mmc->id, "MMSBox: Send[soap] to MMSC[%s], msg type [%s], from %s, to %s",
@@ -1051,14 +1051,12 @@ static Octstr *mm7soap_send(MmscGrp *mmc, Octstr *from, Octstr *to,
gwlist_append(xto, to);
- if (hdrs)
- distrib = http_header_value(hdrs, octstr_imm("X-Mbuni-DistributionIndicator"));
if ((mreq = mm7_mmsmsg_to_soap(m, (mmc == NULL || mmc->no_senderaddress == 0) ? from : NULL,
xto, transid,
service_code,
linkedid,
1, octstr_get_cstr(mmc->vasp_id), xvasid, NULL, 0,/* UA N/A on this side. */
- distrib)) == NULL) {
+ hdrs)) == NULL) {
*error = octstr_format("Failed to convert Msg[%S] 2 SOAP message!",
mms_message_type_to_string(mtype));
goto done1;
@@ -1146,7 +1144,7 @@ done1:
http_destroy_headers(ph);
octstr_destroy(rbody);
octstr_destroy(url);
- octstr_destroy(distrib);
+
gwlist_destroy(xto, NULL);
return ret;
diff --git a/mbuni/mmsbox/mmsbox.c b/mbuni/mmsbox/mmsbox.c
index f80ba5b..250c601 100644
--- a/mbuni/mmsbox/mmsbox.c
+++ b/mbuni/mmsbox/mmsbox.c
@@ -1026,7 +1026,7 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
{
Octstr *from = NULL, *xfrom = NULL, *subject = NULL, *turl = get_toplevel_url(base_url);
Octstr *dlr_url = NULL, *rr_url = NULL, *mmc = NULL, *xservice_code = NULL, *hsvc_code = NULL;
- Octstr *allow_adaptations = NULL, *mclass = NULL, *prio = NULL, *distro = NULL;
+ Octstr *allow_adaptations = NULL, *mclass = NULL, *prio = NULL, *distro = NULL, *chargedparty = NULL;
MmsMsg *m = NULL;
MIMEEntity *me = mime_entity_create();
List *xheaders = NULL;
@@ -1083,6 +1083,7 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
mclass = http_header_value(reply_headers, octstr_imm("X-Mbuni-MessageClass"));
prio = http_header_value(reply_headers, octstr_imm("X-Mbuni-Priority"));
hsvc_code = http_header_value(reply_headers, octstr_imm("X-Mbuni-ServiceCode"));
+ chargedparty = http_header_value(reply_headers, octstr_imm("X-Mbuni-Charged-Party"));
}
if (reply_headers) {
@@ -1308,6 +1309,9 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
if (distro) /* always add distrib */
http_header_add(hdrs, "X-Mbuni-DistributionIndicator",
(octstr_str_case_compare(distro, "true") == 0) ? "true" : "false");
+
+ if (chargedparty)
+ http_header_add(hdrs, "X-Mbuni-Charged-Party", octstr_get_cstr(chargedparty));
if (passthro_headers && reply_headers) { /* if user wants passthro headers, get them and add them. */
int n = gwlist_len(reply_headers);
int i;
@@ -1364,7 +1368,8 @@ done:
octstr_destroy(subject);
octstr_destroy(otransid);
octstr_destroy(turl);
-
+ octstr_destroy(chargedparty);
+
octstr_destroy(xmhdr);
octstr_destroy(xmhdr_val);
if (me)
@@ -1431,6 +1436,7 @@ static void dispatch_sendmms_recv(List *rl)
Octstr *send_type = http_cgi_variable(h->cgivars, "mms-direction");
Octstr *sheader = http_cgi_variable(h->cgivars, "extra-content-header");
Octstr *validity = http_cgi_variable(h->cgivars, "validityperiod");
+ Octstr *chargedparty = http_cgi_variable(h->cgivars, "charged-party");
Octstr *data_url = NULL;
dlr_url = http_cgi_variable(h->cgivars, "dlr-url");
@@ -1549,6 +1555,9 @@ static void dispatch_sendmms_recv(List *rl)
if (sheader)
HTTP_REPLACE_HEADER(rh, "X-Mbuni-Content-Header", octstr_get_cstr(sheader));
+
+ if (chargedparty)
+ HTTP_REPLACE_HEADER(rh, "X-Mbuni-Charged-Party", octstr_get_cstr(chargedparty));
if (validity) {
int diff = atoi(octstr_get_cstr(validity));