diff --git a/mbuni/mmsc/mmsglobalsender.c b/mbuni/mmsc/mmsglobalsender.c index c101ee3..0286f5f 100644 --- a/mbuni/mmsc/mmsglobalsender.c +++ b/mbuni/mmsc/mmsglobalsender.c @@ -263,13 +263,15 @@ static int sendMsg(MmsEnvelope *e) e->msgId, e->expiryt, msg, e->dlr, &err); sent = 1; - } else if (proxyrelays && gwlist_len(proxyrelays) > 0) + } else { + /* else, step through proxies, look for one that matches. */ - for (j = 0, m = gwlist_len(proxyrelays); jhost, mmsc)) { - Octstr *xtransid = mms_maketransid(e->xqfname, settings->host_alias); + if (octstr_compare(mp->host, mmsc) == 0) { + Octstr *xtransid = mms_maketransid(e->xqfname, + settings->host_alias); res = mms_sendtoproxy(e->from, to->rcpt, e->subject, mp->host, octstr_get_cstr(xtransid), @@ -280,6 +282,20 @@ static int sendMsg(MmsEnvelope *e) break; } } + + if (sent != 1) /* try mm7 delivery. Again. */ + for (j = 0, m = gwlist_len(settings->vasp_list); j < m; j++) + if ((vasp = gwlist_get(settings->vasp_list, j)) != NULL && + vasp->id && + octstr_compare(vasp->id, mmsc) == 0) { + res = mms_sendtovasp(vasp, e->from, to->rcpt, + e->msgId, + e->hdrs, + msg, &err); + sent = 1; + break; + } + } octstr_destroy(mmsc); } } @@ -288,7 +304,7 @@ static int sendMsg(MmsEnvelope *e) err = octstr_format("MMSC error: Don't know how to deliver to %S !", to->rcpt); } - if (phonenum) octstr_destroy(phonenum); + octstr_destroy(phonenum); } done: @@ -362,8 +378,8 @@ static int sendMsg(MmsEnvelope *e) } done2: - if (msg) - mms_destroy(msg); + + mms_destroy(msg); if (e) { /* Update the queue if it is still valid (e.g. recipients not handled) XXX can this happen here??... */ e->lasttry = time(NULL); @@ -693,16 +709,12 @@ static int mm7eaif_send(MmsVasp *vasp, Octstr *from, Octstr *to, Octstr *msgid, ret = MMS_SEND_OK; } - if (rh) - http_destroy_headers(rh); - if (body) - octstr_destroy(body); - if (ph) - http_destroy_headers(ph); - if (rbody) - octstr_destroy(rbody); - if (url) - octstr_destroy(url); + + http_destroy_headers(rh); + octstr_destroy(body); + http_destroy_headers(ph); + octstr_destroy(rbody); + octstr_destroy(url); return ret; }