|
|
@ -8181,8 +8181,12 @@ static int handle_response_register(struct sip_pvt *p, int resp, char *rest, str
|
|
|
|
r->call = NULL;
|
|
|
|
r->call = NULL;
|
|
|
|
ast_sched_del(sched, r->timeout);
|
|
|
|
ast_sched_del(sched, r->timeout);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 200:
|
|
|
|
case 200: /* 200 OK */
|
|
|
|
if (r) {
|
|
|
|
if (!r) {
|
|
|
|
|
|
|
|
ast_log(LOG_WARNING, "Got 200 OK on REGISTER that isn't a register\n");
|
|
|
|
|
|
|
|
ast_set_flag(p, SIP_NEEDDESTROY);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
int expires, expires_ms;
|
|
|
|
int expires, expires_ms;
|
|
|
|
|
|
|
|
|
|
|
|
r->regstate=REG_STATE_REGISTERED;
|
|
|
|
r->regstate=REG_STATE_REGISTERED;
|
|
|
@ -8245,15 +8249,6 @@ static int handle_response_register(struct sip_pvt *p, int resp, char *rest, str
|
|
|
|
/* Schedule re-registration before we expire */
|
|
|
|
/* Schedule re-registration before we expire */
|
|
|
|
r->expire=ast_sched_add(sched, expires_ms, sip_reregister, r);
|
|
|
|
r->expire=ast_sched_add(sched, expires_ms, sip_reregister, r);
|
|
|
|
ASTOBJ_UNREF(r, sip_registry_destroy);
|
|
|
|
ASTOBJ_UNREF(r, sip_registry_destroy);
|
|
|
|
} else {
|
|
|
|
|
|
|
|
if (r->expire)
|
|
|
|
|
|
|
|
ast_log(LOG_WARNING, "Got 200 OK on REGISTER that is already done\n");
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
ast_log(LOG_WARNING, "Got 200 OK on REGISTER that isn't a register\n");
|
|
|
|
|
|
|
|
ast_set_flag(p, SIP_NEEDDESTROY);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|