From 1cadc5d677b93cf368815f6516168e8eb53d18a2 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Mon, 4 Jun 2018 09:01:55 +0000 Subject: [PATCH] - Fix deadlock caused by incoming notify for auth-zone. git-svn-id: file:///svn/unbound/trunk@4704 be551aaa-1e26-0410-a405-d3ace91eadb9 --- doc/Changelog | 3 +++ services/authzone.c | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 8f74bd06f..a199a9fea 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +4 June 2018: Wouter + - Fix deadlock caused by incoming notify for auth-zone. + 1 June 2018: Wouter - Rename additional-tls-port to tls-additional-ports. The older name is accepted for backwards compatibility. diff --git a/services/authzone.c b/services/authzone.c index 1f56ac8cf..7ec280baf 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -3425,14 +3425,17 @@ xfr_process_notify(struct auth_xfer* xfr, struct module_env* env, { /* if the serial of notify is older than we have, don't fetch * a zone, we already have it */ - if(has_serial && !xfr_serial_means_update(xfr, serial)) + if(has_serial && !xfr_serial_means_update(xfr, serial)) { + lock_basic_unlock(&xfr->lock); return; + } /* start new probe with this addr src, or note serial */ if(!xfr_start_probe(xfr, env, fromhost)) { /* not started because already in progress, note the serial */ xfr_note_notify_serial(xfr, has_serial, serial); lock_basic_unlock(&xfr->lock); } + /* successful end of start_probe unlocked xfr->lock */ } int auth_zones_notify(struct auth_zones* az, struct module_env* env,