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:
parent
d5b2e2d2ab
commit
733062be3a
|
@ -1 +1 @@
|
||||||
Wed Feb 25 13:37:49 CST 2009
|
Wed Feb 25 13:39:07 CST 2009
|
||||||
|
|
|
@ -767,26 +767,28 @@ 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);
|
||||||
|
if (step->sp_query) {
|
||||||
/* Query all self-generated SRV records at the same time */
|
/* Query all self-generated SRV records at the same time */
|
||||||
parallel = step->sp_trace == NULL && type == sres_type_srv;
|
parallel = step->sp_trace == NULL && type == sres_type_srv;
|
||||||
if (!parallel)
|
if (!parallel)
|
||||||
break;
|
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) {
|
||||||
|
|
Loading…
Reference in New Issue