added mms-direction cgi param to send-mms interface
This commit is contained in:
parent
d973e24c53
commit
67cdf0f387
|
@ -1,3 +1,5 @@
|
|||
2007-08-03 P. A. Bagyenda <bagyenda@dsmagic.com>
|
||||
* added mms-direction CGI param to send-mms interface (see doc for additional info)
|
||||
2007-07-27 P. A. Bagyenda <bagyenda@dsmagic.com>
|
||||
* Misc. fixes for DLR reporting, VAS GW
|
||||
2007-07-13 P. A. Bagyenda <bagyenda@dsmagic.com>
|
||||
|
|
|
@ -2588,6 +2588,18 @@ faked-sender = 100<br>
|
|||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign=top >
|
||||
<tt>mms-direction</tt>
|
||||
</td>
|
||||
<td valign=top>
|
||||
MT (mobile terminating) or MO (mobile orginating). When set to MO,
|
||||
the MMS is queued as if it came from the
|
||||
operator MMSC side. This is useful for testing service
|
||||
configurations as it mimics receiving an MO MMS. Default is MT.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</p>
|
||||
|
|
|
@ -142,11 +142,21 @@ static int parse_header(xmlNodePtr node, List *headers, int *sigparent)
|
|||
case MM7_TAG_To:
|
||||
case MM7_TAG_Cc:
|
||||
case MM7_TAG_Bcc:
|
||||
case MM7_TAG_Sender:
|
||||
case MM7_TAG_Sender:
|
||||
case MM7_TAG_SenderAddress:
|
||||
skip = 1;
|
||||
|
||||
*sigparent = tag; /* We wait for number and stuff below. */
|
||||
if (has_node_children(node)) { /* account for buggy senders! XXX */
|
||||
skip = 1;
|
||||
*sigparent = tag; /* wait for number. */
|
||||
} else {
|
||||
char *sx;
|
||||
char *s = (void *)xmlGetProp(node, (unsigned char *)"displayOnly");
|
||||
if (s && strcasecmp((char *)s, "true") == 0) /* a '-' indicates don't use this to send. */
|
||||
sx = "-";
|
||||
else
|
||||
sx = "+";
|
||||
value = octstr_format("%s %s", sx, nvalue);
|
||||
if (s) xmlFree(s);
|
||||
}
|
||||
break;
|
||||
case MM7_TAG_Content:
|
||||
if ((s = xmlGetProp(node, (unsigned char *)"href")) != NULL) {
|
||||
|
@ -250,6 +260,7 @@ MSoapMsg_t *mm7_parse_soap(List *headers, Octstr *body)
|
|||
|
||||
if (!xml)
|
||||
goto done;
|
||||
octstr_strip_blanks(xml);
|
||||
#if 1
|
||||
info(0, "XML sent is: %s!", octstr_get_cstr(xml));
|
||||
#endif
|
||||
|
|
|
@ -779,8 +779,7 @@ static int free_envelope(MmsEnvelope *e, int removefromqueue)
|
|||
{
|
||||
int i, n;
|
||||
|
||||
if (e->msgId)
|
||||
octstr_destroy(e->msgId);
|
||||
octstr_destroy(e->msgId);
|
||||
|
||||
for (i = 0, n = gwlist_len(e->to); i < n; i++) {
|
||||
MmsEnvelopeTo *x = gwlist_get(e->to, i);
|
||||
|
@ -790,35 +789,17 @@ static int free_envelope(MmsEnvelope *e, int removefromqueue)
|
|||
}
|
||||
gwlist_destroy(e->to, NULL);
|
||||
|
||||
if (e->from)
|
||||
octstr_destroy(e->from);
|
||||
|
||||
if (e->fromproxy)
|
||||
octstr_destroy(e->fromproxy);
|
||||
if (e->mdata)
|
||||
octstr_destroy(e->mdata);
|
||||
if (e->viaproxy)
|
||||
octstr_destroy(e->viaproxy);
|
||||
if (e->token)
|
||||
octstr_destroy(e->token);
|
||||
|
||||
if (e->subject)
|
||||
octstr_destroy(e->subject);
|
||||
|
||||
if (e->vaspid)
|
||||
octstr_destroy(e->vaspid);
|
||||
|
||||
if (e->vasid)
|
||||
octstr_destroy(e->vasid);
|
||||
|
||||
if (e->url1)
|
||||
octstr_destroy(e->url1);
|
||||
|
||||
if (e->url2)
|
||||
octstr_destroy(e->url2);
|
||||
|
||||
if (e->hdrs)
|
||||
http_destroy_headers(e->hdrs);
|
||||
octstr_destroy(e->from);
|
||||
octstr_destroy(e->fromproxy);
|
||||
octstr_destroy(e->mdata);
|
||||
octstr_destroy(e->viaproxy);
|
||||
octstr_destroy(e->token);
|
||||
octstr_destroy(e->subject);
|
||||
octstr_destroy(e->vaspid);
|
||||
octstr_destroy(e->vasid);
|
||||
octstr_destroy(e->url1);
|
||||
octstr_destroy(e->url2);
|
||||
http_destroy_headers(e->hdrs);
|
||||
|
||||
if (removefromqueue) {
|
||||
char fname[2*QFNAMEMAX];
|
||||
|
|
|
@ -1640,3 +1640,13 @@ int mms_is_token(Octstr *token)
|
|||
octstr_check_range(token, 0, octstr_len(token), is_token_char);
|
||||
}
|
||||
|
||||
|
||||
int has_node_children(xmlNodePtr node)
|
||||
{
|
||||
xmlNodePtr x;
|
||||
|
||||
for (x = node->xmlChildrenNode; x; x = x->next)
|
||||
if (x->type == XML_ELEMENT_NODE)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -192,6 +192,8 @@ Octstr *filename2content_type(char *fname);
|
|||
/* try to give a good extension name based on the url or content type. */
|
||||
char *make_file_ext(Octstr *url, Octstr *ctype, char fext[5]);
|
||||
|
||||
/* return true if node has a child... */
|
||||
int has_node_children(xmlNodePtr node);
|
||||
#define MAXQTRIES 100
|
||||
#define BACKOFF_FACTOR 5*60 /* In seconds */
|
||||
#define QUEUERUN_INTERVAL 1*60 /* 1 minutes. */
|
||||
|
|
|
@ -275,7 +275,6 @@ done:
|
|||
mime_entity_destroy(p);
|
||||
|
||||
octstr_destroy(cd);
|
||||
|
||||
}
|
||||
|
||||
if (xctype)
|
||||
|
@ -300,6 +299,7 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
|
|||
Octstr *svc_name, Octstr *faked_sender, Octstr *service_code,
|
||||
int accept_x_headers,
|
||||
List *passthro_headers,
|
||||
Octstr *qdir,
|
||||
Octstr **err);
|
||||
static int fetch_serviceurl(MmsEnvelope *e,
|
||||
MmsService *ms, MmsMsg *m,
|
||||
|
@ -427,6 +427,7 @@ static int fetch_serviceurl(MmsEnvelope *e,
|
|||
base_url,
|
||||
typ, e, ms->name, ms->faked_sender, ms->service_code,
|
||||
ms->accept_x_headers, ms->passthro_headers,
|
||||
outgoing_qdir,
|
||||
err);
|
||||
|
||||
octstr_destroy(base_url);
|
||||
|
@ -471,6 +472,9 @@ static int mmsbox_service_dispatch(MmsEnvelope *e)
|
|||
mmsbox_maxsendattempts);
|
||||
res = -1;
|
||||
goto done;
|
||||
} else if (gwlist_len(e->to) == 0) { /* nothing to do. odd XXX */
|
||||
res = 0;
|
||||
goto done;
|
||||
}
|
||||
|
||||
me = mms_tomime(msg, 0);
|
||||
|
@ -791,6 +795,7 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
|
|||
Octstr *base_url, int type, MmsEnvelope *e,
|
||||
Octstr *svc_name, Octstr *faked_sender, Octstr *service_code,
|
||||
int accept_x_headers, List *passthro_headers,
|
||||
Octstr *qdir,
|
||||
Octstr **err)
|
||||
{
|
||||
Octstr *from = NULL, *xfrom = NULL, *subject = NULL, *turl = get_toplevel_url(base_url);
|
||||
|
@ -1065,9 +1070,9 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
|
|||
dlr_url, rr_url,
|
||||
hdrs,
|
||||
(dlr_url != NULL),
|
||||
octstr_get_cstr(outgoing_qdir),
|
||||
octstr_get_cstr(qdir),
|
||||
octstr_imm(MM_NAME));
|
||||
info(0, "MMSBox: Queued message from service [%s] to outgoing: %s",
|
||||
info(0, "MMSBox: Queued message from service [%s]: %s",
|
||||
octstr_get_cstr(svc_name), octstr_get_cstr(x));
|
||||
*err = x;
|
||||
res = 0;
|
||||
|
@ -1143,6 +1148,7 @@ static void sendmms_func(void *unused)
|
|||
Octstr *mclass = http_cgi_variable(cgivars, "mclass");
|
||||
Octstr *prio = http_cgi_variable(cgivars, "priority");
|
||||
Octstr *distro = http_cgi_variable(cgivars, "distribution");
|
||||
Octstr *send_type = http_cgi_variable(cgivars, "mms-direction");
|
||||
Octstr *data_url = NULL;
|
||||
|
||||
dlr_url = http_cgi_variable(cgivars, "dlr-url");
|
||||
|
@ -1258,6 +1264,9 @@ static void sendmms_func(void *unused)
|
|||
vasid ? vasid : octstr_imm("sendmms-user"),
|
||||
u->faked_sender, service_code,
|
||||
1, NULL,
|
||||
(send_type &&
|
||||
octstr_str_case_compare(send_type, "mo") == 0) ?
|
||||
incoming_qdir : outgoing_qdir,
|
||||
&err);
|
||||
if (res < 0)
|
||||
rb = octstr_format("Error in message conversion: %S", err);
|
||||
|
|
Loading…
Reference in New Issue