diff --git a/mbuni/ChangeLog b/mbuni/ChangeLog index 928e922..1184ae3 100644 --- a/mbuni/ChangeLog +++ b/mbuni/ChangeLog @@ -1,3 +1,5 @@ +2011-01-04 P. A. Bagyenda + * mm1 mmsbox plugin fix Thanks to Piotr Isajew (pki at ex.com.pl) 2011-01-03 P. A. Bagyenda * Don't forget to call dlr URL even for failed transmit (with no retry). Thanks to Piotr Isajew (pki at ex.com.pl) 2010-12-09 P. A. Bagyenda diff --git a/mbuni/extras/mmsbox-mm1/mmsbox_mm1.c b/mbuni/extras/mmsbox-mm1/mmsbox_mm1.c index 450e3f3..b01dc6d 100644 --- a/mbuni/extras/mmsbox-mm1/mmsbox_mm1.c +++ b/mbuni/extras/mmsbox-mm1/mmsbox_mm1.c @@ -344,11 +344,15 @@ static Octstr *send_msg(void *data, Octstr *from, Octstr *to, mms_info(0, "mmsbox-mm1", NULL, "sent message, type=%s, result=%s", mms_message_type_to_cstr(mms_messagetype(m)), r->error ? octstr_get_cstr(r->error) : "(none)"); /* destroy the structure. */ + if(r->error && (octstr_compare(r->error, octstr_imm("Error-service-denied")) == 0 || + octstr_compare(r->error, octstr_imm("Error-permanent-failure")) == 0)) + *retry = 0; + else + *retry = 1; pthread_cond_destroy(&r->cond); pthread_mutex_destroy(&r->mutex); gw_free(r); - *retry = 1; /* always retry ?? */ return id; } @@ -491,9 +495,17 @@ static void handle_mm1(MM1Settings *mm1) mms_warning(0, "mmsbox-mm1", NULL,"No send-conf returned by operator"); if (m == NULL || - (r->result = mms_get_header_value(m, octstr_imm("Message-ID"))) == NULL) { + (r->result = mms_get_header_value(m, octstr_imm("Message-ID"))) == NULL || + octstr_compare(mms_get_header_value(m, octstr_imm("X-Mms-Response-Status")), + octstr_imm("Ok")) != 0 + ) { Octstr *err = m ? mms_get_header_value(m, octstr_imm("X-Mms-Response-Text")) : NULL; Octstr *status = m ? mms_get_header_value(m, octstr_imm("X-Mms-Response-Status")) : NULL; + if(status && (octstr_compare(status, octstr_imm("Error-service-denied")) == 0 || + octstr_compare(status, octstr_imm("Error-permanent-failure")) == 0)) { + r->error = octstr_duplicate(status); + } + r->result = NULL; /* indicate failure to bearerbox */ mms_error(0, "mmsbox-mm1", NULL, "Sending failed: %s, %s!", err ? octstr_get_cstr(err) : "(none)", status ? octstr_get_cstr(status) : "(none)");