Skip to content
Permalink
Browse files Browse the repository at this point in the history
resolved: pin stream while calling callbacks for it
These callbacks might unref the stream, but we still have to access it,
let's hence ref it explicitly.

Maybe fixes: #10725
  • Loading branch information
poettering committed Dec 7, 2018
1 parent 904dcaf commit d973d94
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/resolve/resolved-dns-stream.c
Expand Up @@ -46,6 +46,8 @@ static int dns_stream_update_io(DnsStream *s) {
}

static int dns_stream_complete(DnsStream *s, int error) {
_cleanup_(dns_stream_unrefp) _unused_ DnsStream *ref = dns_stream_ref(s); /* Protect stream while we process it */

assert(s);

#if ENABLE_DNS_OVER_TLS
Expand Down Expand Up @@ -273,7 +275,7 @@ static int on_stream_timeout(sd_event_source *es, usec_t usec, void *userdata) {
}

static int on_stream_io(sd_event_source *es, int fd, uint32_t revents, void *userdata) {
DnsStream *s = userdata;
_cleanup_(dns_stream_unrefp) DnsStream *s = dns_stream_ref(userdata); /* Protect stream while we process it */
int r;

assert(s);
Expand Down

0 comments on commit d973d94

Please sign in to comment.