misc. changes
This commit is contained in:
parent
7cb159ae13
commit
eef103ae02
|
@ -3099,6 +3099,15 @@ A detailed list of configuration parameters for MMS Services is given below.
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td valign=top >
|
||||||
|
<tt>%k</tt>
|
||||||
|
</td>
|
||||||
|
<td valign=top >
|
||||||
|
Keyword
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td valign=top >
|
<td valign=top >
|
||||||
<tt>%i</tt>
|
<tt>%i</tt>
|
||||||
|
|
|
@ -1214,7 +1214,6 @@ static struct {
|
||||||
{"image/x-up-wpng", "png"},
|
{"image/x-up-wpng", "png"},
|
||||||
{"audio/mpeg", "mp3"},
|
{"audio/mpeg", "mp3"},
|
||||||
{"audio/wav", "wav"},
|
{"audio/wav", "wav"},
|
||||||
{"audio/x-wav", "wav"},
|
|
||||||
{"audio/basic", "au"},
|
{"audio/basic", "au"},
|
||||||
{"audio/amr", "amr"},
|
{"audio/amr", "amr"},
|
||||||
{"audio/x-amr", "amr"},
|
{"audio/x-amr", "amr"},
|
||||||
|
@ -1223,6 +1222,9 @@ static struct {
|
||||||
{"audio/sp-midi", "mid"},
|
{"audio/sp-midi", "mid"},
|
||||||
{"application/smil", "smil"},
|
{"application/smil", "smil"},
|
||||||
{"application/vnd.wap.mms-message", "mms"},
|
{"application/vnd.wap.mms-message", "mms"},
|
||||||
|
{"application/java-archive", "jar"},
|
||||||
|
{"video/3gpp", "3gp"},
|
||||||
|
{"video/3gpp", "3gp2"},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -156,7 +156,9 @@ static MmsService *get_service(Octstr *keyword, Octstr *mmc_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_all_matching_parts(MIMEEntity *plist, MmsServiceUrlParam *pm,
|
static void add_all_matching_parts(MIMEEntity *plist, MmsServiceUrlParam *pm,
|
||||||
MIMEEntity *me, MmsMsg *msg, int lev, int count)
|
Octstr *keyword,
|
||||||
|
MIMEEntity *me,
|
||||||
|
MmsMsg *msg, int lev, int count)
|
||||||
{
|
{
|
||||||
int i, n;
|
int i, n;
|
||||||
List *headers = NULL;
|
List *headers = NULL;
|
||||||
|
@ -170,12 +172,16 @@ static void add_all_matching_parts(MIMEEntity *plist, MmsServiceUrlParam *pm,
|
||||||
} else if (pm->type == NO_PART && lev == 0) {
|
} else if (pm->type == NO_PART && lev == 0) {
|
||||||
data = octstr_create(""); /* We'll add value below. */
|
data = octstr_create(""); /* We'll add value below. */
|
||||||
goto done;
|
goto done;
|
||||||
|
} else if (pm->type == KEYWORD_PART && lev == 0) {
|
||||||
|
data = keyword ? octstr_duplicate(keyword) : octstr_create("");
|
||||||
|
ctype = octstr_create("text/plain");
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((n = mime_entity_num_parts(me)) > 0) { /* Recurse over multi-parts. */
|
if ((n = mime_entity_num_parts(me)) > 0) { /* Recurse over multi-parts. */
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
MIMEEntity *x = mime_entity_get_part(me,i);
|
MIMEEntity *x = mime_entity_get_part(me,i);
|
||||||
add_all_matching_parts(plist, pm, x, msg, lev+1,i);
|
add_all_matching_parts(plist, pm, NULL, x, msg, lev+1,i);
|
||||||
mime_entity_destroy(x);
|
mime_entity_destroy(x);
|
||||||
}
|
}
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -209,7 +215,7 @@ done:
|
||||||
Octstr *cd = octstr_format("form-data; name=\"%S\"", pm->name);
|
Octstr *cd = octstr_format("form-data; name=\"%S\"", pm->name);
|
||||||
List *xh;
|
List *xh;
|
||||||
|
|
||||||
if (ctype) {
|
if (ctype && pm->type != KEYWORD_PART) {
|
||||||
/* If Content-Location header or name (content-type) parameter given, pass it as filename. */
|
/* If Content-Location header or name (content-type) parameter given, pass it as filename. */
|
||||||
Octstr *c = NULL, *q = NULL;
|
Octstr *c = NULL, *q = NULL;
|
||||||
Octstr *cloc = http_header_value(headers,
|
Octstr *cloc = http_header_value(headers,
|
||||||
|
@ -295,9 +301,10 @@ static int make_and_queue_msg(Octstr *data, Octstr *ctype, List *reply_headers,
|
||||||
List *passthro_headers,
|
List *passthro_headers,
|
||||||
Octstr **err);
|
Octstr **err);
|
||||||
static int fetch_serviceurl(MmsEnvelope *e,
|
static int fetch_serviceurl(MmsEnvelope *e,
|
||||||
MmsService *ms, MmsMsg *m,
|
MmsService *ms, MmsMsg *m,
|
||||||
MIMEEntity *msg,
|
MIMEEntity *msg,
|
||||||
Octstr **err)
|
Octstr *keyword,
|
||||||
|
Octstr **err)
|
||||||
{
|
{
|
||||||
List *rh, *rph = NULL;
|
List *rh, *rph = NULL;
|
||||||
Octstr *body = NULL, *rb = NULL;
|
Octstr *body = NULL, *rb = NULL;
|
||||||
|
@ -337,7 +344,7 @@ static int fetch_serviceurl(MmsEnvelope *e,
|
||||||
|
|
||||||
for (i = 0, n = gwlist_len(ms->params); i < n; i++) {
|
for (i = 0, n = gwlist_len(ms->params); i < n; i++) {
|
||||||
MmsServiceUrlParam *p = gwlist_get(ms->params, i);
|
MmsServiceUrlParam *p = gwlist_get(ms->params, i);
|
||||||
add_all_matching_parts(x, p, msg, m, 0, i);
|
add_all_matching_parts(x, p, keyword, msg, m, 0, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
body = mime_entity_body(x);
|
body = mime_entity_body(x);
|
||||||
|
@ -481,7 +488,7 @@ static int mmsbox_service_dispatch(MmsEnvelope *e)
|
||||||
|
|
||||||
e->_x = ms; /* Remember it for later. */
|
e->_x = ms; /* Remember it for later. */
|
||||||
|
|
||||||
res = fetch_serviceurl(e, ms, msg, me, &err);
|
res = fetch_serviceurl(e, ms, msg, me, keyword, &err);
|
||||||
done:
|
done:
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|
|
@ -337,6 +337,8 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func)
|
||||||
p->type = OTHER_PART; break;
|
p->type = OTHER_PART; break;
|
||||||
case 'z':
|
case 'z':
|
||||||
p->type = ANY_PART; break;
|
p->type = ANY_PART; break;
|
||||||
|
case 'k':
|
||||||
|
p->type = KEYWORD_PART; break;
|
||||||
case '%':
|
case '%':
|
||||||
p->type = NO_PART; break;
|
p->type = NO_PART; break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -38,7 +38,7 @@ typedef struct MmsServiceUrlParam {
|
||||||
Octstr *name;
|
Octstr *name;
|
||||||
enum {NO_PART, AUDIO_PART, IMAGE_PART, VIDEO_PART,
|
enum {NO_PART, AUDIO_PART, IMAGE_PART, VIDEO_PART,
|
||||||
TEXT_PART, SMIL_PART , OTHER_PART,
|
TEXT_PART, SMIL_PART , OTHER_PART,
|
||||||
ANY_PART, WHOLE_BINARY} type;
|
ANY_PART, WHOLE_BINARY, KEYWORD_PART} type;
|
||||||
Octstr *value; /* for generic value (type == NO_PART),
|
Octstr *value; /* for generic value (type == NO_PART),
|
||||||
* or for value that follows spec (e.g. %Tisatest is allowed)
|
* or for value that follows spec (e.g. %Tisatest is allowed)
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue