1
0
Fork 0

misc. changes

This commit is contained in:
bagyenda 2007-07-09 16:43:42 +00:00
parent 7cb159ae13
commit eef103ae02
5 changed files with 30 additions and 10 deletions

View File

@ -3099,6 +3099,15 @@ A detailed list of configuration parameters for MMS Services is given below.
</td>
</tr>
<tr>
<td valign=top >
<tt>%k</tt>
</td>
<td valign=top >
Keyword
</td>
</tr>
<tr>
<td valign=top >
<tt>%i</tt>

View File

@ -1214,7 +1214,6 @@ static struct {
{"image/x-up-wpng", "png"},
{"audio/mpeg", "mp3"},
{"audio/wav", "wav"},
{"audio/x-wav", "wav"},
{"audio/basic", "au"},
{"audio/amr", "amr"},
{"audio/x-amr", "amr"},
@ -1223,6 +1222,9 @@ static struct {
{"audio/sp-midi", "mid"},
{"application/smil", "smil"},
{"application/vnd.wap.mms-message", "mms"},
{"application/java-archive", "jar"},
{"video/3gpp", "3gp"},
{"video/3gpp", "3gp2"},
{NULL, NULL}
};

View File

@ -156,7 +156,9 @@ static MmsService *get_service(Octstr *keyword, Octstr *mmc_id)
}
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;
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) {
data = octstr_create(""); /* We'll add value below. */
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. */
for (i = 0; i < n; 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);
}
goto done;
@ -209,7 +215,7 @@ done:
Octstr *cd = octstr_format("form-data; name=\"%S\"", pm->name);
List *xh;
if (ctype) {
if (ctype && pm->type != KEYWORD_PART) {
/* If Content-Location header or name (content-type) parameter given, pass it as filename. */
Octstr *c = NULL, *q = NULL;
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,
Octstr **err);
static int fetch_serviceurl(MmsEnvelope *e,
MmsService *ms, MmsMsg *m,
MIMEEntity *msg,
Octstr **err)
MmsService *ms, MmsMsg *m,
MIMEEntity *msg,
Octstr *keyword,
Octstr **err)
{
List *rh, *rph = 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++) {
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);
@ -481,7 +488,7 @@ static int mmsbox_service_dispatch(MmsEnvelope *e)
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:
if (err) {

View File

@ -337,6 +337,8 @@ int mms_load_mmsbox_settings(mCfg *cfg, gwthread_func_t *mmsc_handler_func)
p->type = OTHER_PART; break;
case 'z':
p->type = ANY_PART; break;
case 'k':
p->type = KEYWORD_PART; break;
case '%':
p->type = NO_PART; break;
default:

View File

@ -38,7 +38,7 @@ typedef struct MmsServiceUrlParam {
Octstr *name;
enum {NO_PART, AUDIO_PART, IMAGE_PART, VIDEO_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),
* or for value that follows spec (e.g. %Tisatest is allowed)
*/