diff --git a/mbuni/doc/userguide.shtml b/mbuni/doc/userguide.shtml
index d800dcd..e58dbd3 100644
--- a/mbuni/doc/userguide.shtml
+++ b/mbuni/doc/userguide.shtml
@@ -1376,9 +1376,12 @@ lists all the configuration directives. The column Mode
database interface script 1: This script will be called by the gateway to
notify the subscriber database of per-subscriber events such as when a
subscriber sends a message, successfully fetches a message, etc. This script
- is called with 2-3 arguments. Argument 1 is one of fetched, sent,
+ is called with 4 arguments. Argument 1 is one of fetched, sent,
failedfetch; argument 2 is the subscriber MSISDN; argument 3, in case of a
- failed fetch provides a description of the error (e.g. message expired).
+ failed fetch provides a description of the error (e.g. message
+ expired); argument 4 is the message ID (if any). NOTE: Any missing
+ argument is passed as a quoted empty string for ease of parsing in
+ the script.
diff --git a/mbuni/mmsc/mmsc_cfg.c b/mbuni/mmsc/mmsc_cfg.c
index 60d7790..ab56238 100644
--- a/mbuni/mmsc/mmsc_cfg.c
+++ b/mbuni/mmsc/mmsc_cfg.c
@@ -532,17 +532,23 @@ int mms_ind_send(Octstr *prov_cmd, Octstr *to)
return res;
}
-void notify_prov_server(char *cmd, char *from, char *event, char *arg)
+void notify_prov_server(char *cmd, char *from, char *event, char *arg, Octstr *msgid)
{
Octstr *s;
- Octstr *tmp;
+ Octstr *tmp, *tmp2;
if (cmd == NULL || cmd[0] == '\0')
return;
tmp = octstr_create(from);
escape_shell_chars(tmp);
- s = octstr_format("%s '%s' '%s' '%s'", cmd, event, octstr_get_cstr(tmp), arg);
+
+ tmp2 = msgid ? octstr_duplicate(msgid) : octstr_create("");
+ escape_shell_chars(tmp2);
+
+ s = octstr_format("%s '%s' '%s' '%s' '%s'", cmd, event,
+ octstr_get_cstr(tmp), arg, octstr_get_cstr(tmp2));
octstr_destroy(tmp);
+ octstr_destroy(tmp2);
if (s) {
system(octstr_get_cstr(s));
diff --git a/mbuni/mmsc/mmsc_cfg.h b/mbuni/mmsc/mmsc_cfg.h
index faa7544..eab6f40 100644
--- a/mbuni/mmsc/mmsc_cfg.h
+++ b/mbuni/mmsc/mmsc_cfg.h
@@ -117,7 +117,7 @@ extern int mms_decodefetchurl(Octstr *fetch_url,
Octstr **qf, Octstr **token, int *loc);
Octstr *mms_find_sender_ip(List *request_hdrs, Octstr *ip_header, Octstr *ip, int *isv6);
-void notify_prov_server(char *cmd, char *from, char *event, char *arg);
+void notify_prov_server(char *cmd, char *from, char *event, char *arg, Octstr *msgid);
int mms_ind_send(Octstr *prov_cmd, Octstr *to);
#endif
diff --git a/mbuni/mmsc/mmsmobilesender.c b/mbuni/mmsc/mmsmobilesender.c
index d5b180a..611f19e 100644
--- a/mbuni/mmsc/mmsmobilesender.c
+++ b/mbuni/mmsc/mmsmobilesender.c
@@ -332,7 +332,7 @@ static int sendNotify(MmsEnvelope *e)
} else if (send_ind == 0) { /* provisioned but does not support */
Octstr *s = octstr_format(octstr_get_cstr(settings->mms_notify_txt),
from);
- if (s && octstr_len(s) > 0) { /* Only send if the string was set. */
+ if (settings->notify_unprovisioned && s && octstr_len(s) > 0) { /* Only send if the string was set. */
List *pheaders;
Octstr *sto = octstr_duplicate(phonenum);
@@ -449,7 +449,8 @@ static int sendNotify(MmsEnvelope *e)
notify_prov_server(octstr_get_cstr(settings->prov_notify),
to ? octstr_get_cstr(to) : "unknown",
prov_notify_event,
- rtype ? rtype : "");
+ rtype ? rtype : "",
+ e ? e->msgId : NULL);
if (msg) mms_destroy(msg);
if (phonenum)
diff --git a/mbuni/mmsc/mmsproxy.c b/mbuni/mmsc/mmsproxy.c
index 5cd9231..8c16b68 100644
--- a/mbuni/mmsc/mmsproxy.c
+++ b/mbuni/mmsc/mmsproxy.c
@@ -325,10 +325,10 @@ void fetchmms_proxy(MmsHTTPClientInfo *h)
settings->system_user,MS_1_1);
octstr_destroy(xx);
- s = mms_tobinary(mr);
- notify_cmd = "fetchfailed";
- notify_arg = "message-too-large-for-device";
- goto failed;
+ s = mms_tobinary(mr);
+ notify_cmd = "fetchfailed";
+ notify_arg = "message-too-large-for-device";
+ goto failed;
} else {
mms_destroy(m);
m = outmsg;
@@ -409,7 +409,7 @@ void fetchmms_proxy(MmsHTTPClientInfo *h)
if (notify_cmd) /* Inform provisioning server */
notify_prov_server(octstr_get_cstr(settings->prov_notify),
h->base_client_addr ? octstr_get_cstr(h->base_client_addr) : "unknown",
- notify_cmd, notify_arg ? notify_arg : "");
+ notify_cmd, notify_arg ? notify_arg : "", e ? e->msgId : NULL);
http_destroy_headers(rh);
@@ -1497,7 +1497,7 @@ static void sendmms_proxy(MmsHTTPClientInfo *h)
notify_prov_server(octstr_get_cstr(settings->prov_notify),
h->base_client_addr ? octstr_get_cstr(h->base_client_addr) : "unknown",
notify_cmd,
- "");
+ "", NULL);
mms_destroy(m);
/* Send reply. */