Wed Feb 25 13:10:24 CST 2009 Pekka Pessi <first.last@nokia.com>

* sres_sip.c: be more robust if the DNS fails badly
  Ignore-this: 1922836529de164a842ab88e848066a0



git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12285 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Michael Jerris 2009-02-25 19:39:24 +00:00
parent d5b2e2d2ab
commit 733062be3a
2 changed files with 21 additions and 12 deletions

View File

@ -1 +1 @@
Wed Feb 25 13:37:49 CST 2009 Wed Feb 25 13:39:07 CST 2009

View File

@ -767,24 +767,26 @@ sres_sip_send_steps(sres_sip_t *srs)
(void *)srs, sres_record_type(type, NULL), domain, (void *)srs, sres_record_type(type, NULL), domain,
answers ? " (cached)" : "")); answers ? " (cached)" : ""));
if (answers) { if (answers)
sres_sip_answer(step, NULL, answers); ;
return process = 1;
}
else if (srs->srs_blocking) { else if (srs->srs_blocking) {
sres_blocking_query(srs->srs_resolver, type, domain, 0, &answers); sres_blocking_query(srs->srs_resolver, type, domain, 0, &answers);
sres_sip_answer(step, NULL, answers);
return process = 1;
} }
else { else {
step->sp_query = sres_query(srs->srs_resolver, step->sp_query = sres_query(srs->srs_resolver,
sres_sip_answer, step, sres_sip_answer, step,
type, domain); type, domain);
/* Query all self-generated SRV records at the same time */ if (step->sp_query) {
parallel = step->sp_trace == NULL && type == sres_type_srv; /* Query all self-generated SRV records at the same time */
if (!parallel) parallel = step->sp_trace == NULL && type == sres_type_srv;
break; if (!parallel)
break;
continue;
}
} }
sres_sip_answer(step, NULL, answers);
return process = 1;
} }
return process = 0; return process = 0;
@ -837,7 +839,10 @@ sres_sip_status_of_answers(sres_record_t *answers[], uint16_t type)
{ {
int i; int i;
for (i = 0; answers && answers[i]; i++) { if (answers == NULL)
return SRES_NETWORK_ERR;
for (i = 0; answers[i]; i++) {
if (answers[i]->sr_record->r_type == type) { if (answers[i]->sr_record->r_type == type) {
return answers[i]->sr_record->r_status; return answers[i]->sr_record->r_status;
} }
@ -956,12 +961,16 @@ sres_sip_return_results(sres_sip_t *srs, int final)
break; break;
case SRES_SERVER_ERR: case SRES_SERVER_ERR:
case SRES_TIMEOUT_ERR: case SRES_TIMEOUT_ERR:
case SRES_NETWORK_ERR:
srs->srs_error = SRES_SIP_ERR_AGAIN; srs->srs_error = SRES_SIP_ERR_AGAIN;
break; break;
} }
if (srs->srs_error) if (srs->srs_error)
break; break;
} }
if (!srs->srs_error)
srs->srs_error = SRES_SIP_ERR_FAIL;
} }
if (srs->srs_callback) { if (srs->srs_callback) {