From 869a6d3eed68a61e07bbdc7f7d0e5d1d4d1f3b8c Mon Sep 17 00:00:00 2001 From: bagyenda <> Date: Tue, 30 Jan 2007 17:06:29 +0000 Subject: [PATCH] MM4 incoming message type fix --- mbuni/ChangeLog | 3 +++ mbuni/mmlib/mms_msg.c | 6 +++++- mbuni/mmlib/mms_strings.c | 2 +- mbuni/mmsbox/bearerbox.c | 22 +++++++++++++++++----- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/mbuni/ChangeLog b/mbuni/ChangeLog index b86ef71..8aaf436 100644 --- a/mbuni/ChangeLog +++ b/mbuni/ChangeLog @@ -1,3 +1,6 @@ +2007-01-30 Paul A. Bagyenda + * Fix for MM4 incoming, thanks to Vincent Chavanis (and + Deon van der Merwe for testing) 2007-01-24 Paul A. Bagyenda * Fix crash for missing error code definition (thanks to Vincent Chavanis ) 2006-12-28 Paul A. Bagyenda diff --git a/mbuni/mmlib/mms_msg.c b/mbuni/mmlib/mms_msg.c index 5c4880d..f803cdd 100644 --- a/mbuni/mmlib/mms_msg.c +++ b/mbuni/mmlib/mms_msg.c @@ -1361,10 +1361,14 @@ MmsMsg *mms_frommime(MIMEEntity *mime) m->msgId = http_header_value(m->headers, octstr_imm("Message-ID")); /* Default type is send */ - if ((s = http_header_value(m->headers, octstr_imm("X-Mms-Message-Type"))) == NULL) { + if ((s = http_header_value(m->headers, octstr_imm("X-Mms-Message-Type"))) == NULL || + octstr_compare(s, octstr_imm("MM4_forward.REQ")) == 0) { + http_header_remove_all(m->headers, "X-Mms-Message-Type"); http_header_add(m->headers, "X-Mms-Message-Type", (char *)mms_message_type_to_cstr(MMS_MSGTYPE_SEND_REQ)); m->message_type = MMS_MSGTYPE_SEND_REQ; + if (s) + octstr_destroy(s); } else { m->message_type = mms_string_to_message_type(s); if (m->message_type < 0) { diff --git a/mbuni/mmlib/mms_strings.c b/mbuni/mmlib/mms_strings.c index f7323d5..bd525d0 100644 --- a/mbuni/mmlib/mms_strings.c +++ b/mbuni/mmlib/mms_strings.c @@ -125,7 +125,7 @@ static unsigned char *number_to_cstr(long number, struct table *table) return (unsigned char *)octstr_get_cstr(table->strings[i]); } } - return ""; + return NULL; } /* Case-insensitive string lookup */ diff --git a/mbuni/mmsbox/bearerbox.c b/mbuni/mmsbox/bearerbox.c index a0cd08e..421fd2d 100644 --- a/mbuni/mmsbox/bearerbox.c +++ b/mbuni/mmsbox/bearerbox.c @@ -439,13 +439,14 @@ void mmsc_receive_func(MmscGrp *m) { MmsHTTPClientInfo h = {NULL}; - + Octstr *err = NULL; + h.m = m; while(rstop == 0 && (h.client = http_accept_request(m->incoming.port, &h.ip, &h.url, &h.headers, &h.body, &h.cgivars)) != NULL) - if (is_allowed_ip(m->incoming.deny_ip, m->incoming.allow_ip, h.ip)) { + if (is_allowed_ip(m->incoming.allow_ip, m->incoming.deny_ip, h.ip)) { h.ua = http_header_value(h.headers, octstr_imm("User-Agent")); debug("mmsbox", 0, @@ -466,7 +467,7 @@ void mmsc_receive_func(MmscGrp *m) http_header_add(hh, "WWW-Authenticate", "Basic realm=\"" MM_NAME "\""); http_send_reply(h.client, HTTP_UNAUTHORIZED, hh, - octstr_imm("")); + octstr_imm("Authentication failed")); http_destroy_headers(hh); info(0, "MMSBox: Auth failed, incoming connection, MMC group=%s", m->id ? octstr_get_cstr(m->id) : "(none)"); @@ -475,9 +476,20 @@ void mmsc_receive_func(MmscGrp *m) else mm7eaif_receive(&h); free_clientInfo(&h, 0); - } else { + } else { + h.ua = http_header_value(h.headers, octstr_imm("User-Agent")); + err = octstr_format("HTTP: Incoming IP denied MMSC[%s] ip=[%s], ua=[%s], disconnected", + m->id ? octstr_get_cstr(m->id) : "(none)", + h.ip ? octstr_get_cstr(h.ip) : "(none)", + h.ua ? octstr_get_cstr(h.ua) : "(none)"); + if (err) { + error(0, "%s", octstr_get_cstr(err)); + octstr_destroy(err); + } + http_send_reply(h.client, HTTP_FORBIDDEN, NULL, + octstr_imm("Access denied.")); + free_clientInfo(&h, 0); - http_close_client(h.client); } debug("proxy", 0, "MMSBox: MM7 Shutting down...");