Browse Source

TT#172650 don't segfault if no DTLS cert is available

Change-Id: Ic567b2f585aaa199766168c250f019183036f314
pull/1487/head
Richard Fuchs 4 years ago
parent
commit
af948b498a
2 changed files with 11 additions and 2 deletions
  1. +2
    -1
      daemon/call.c
  2. +9
    -1
      daemon/dtls.c

+ 2
- 1
daemon/call.c View File

@ -3621,7 +3621,8 @@ static void __call_free(void *p) {
//ilog(LOG_DEBUG, "freeing main call struct");
obj_put(c->dtls_cert);
if (c->dtls_cert)
obj_put(c->dtls_cert);
mqtt_timer_stop(&c->mqtt_timer);
while (c->monologues.head) {


+ 9
- 1
daemon/dtls.c View File

@ -345,6 +345,9 @@ static void __dtls_timer(void *p) {
long int left;
c = dtls_cert();
if (!c)
return;
left = c->expires - rtpe_now.tv_sec;
if (left > CERT_EXPIRY_TIME/2)
goto out;
@ -397,7 +400,7 @@ struct dtls_cert *dtls_cert() {
struct dtls_cert *ret;
rwlock_lock_r(&__dtls_cert_lock);
ret = obj_get(__dtls_cert);
ret = __dtls_cert ? obj_get(__dtls_cert) : NULL;
rwlock_unlock_r(&__dtls_cert_lock);
return ret;
@ -517,6 +520,11 @@ static int try_connect(struct dtls_connection *d) {
int dtls_connection_init(struct dtls_connection *d, struct packet_stream *ps, int active,
struct dtls_cert *cert)
{
if (!cert) {
ilogs(crypto, LOG_ERR, "Cannot establish DTLS: no certificate available");
return -1;
}
unsigned long err;
if (d->init) {


Loading…
Cancel
Save