resolved: implicitly disconnect a stream from its server when a stream is closed

Previously, the callback function did this, but let's do this in the
caller instead, to make this more robust, and use our new helper
function for it.
This commit is contained in:
Lennart Poettering 2018-12-04 22:17:49 +01:00
parent 808089ae3d
commit 7172e4ee1e
2 changed files with 3 additions and 5 deletions

View File

@ -64,6 +64,8 @@ static int dns_stream_complete(DnsStream *s, int error) {
#endif
dns_stream_stop(s);
dns_stream_detach(s);
if (s->complete)
s->complete(s, error);
else /* the default action if no completion function is set is to close the stream */

View File

@ -503,11 +503,7 @@ static int dns_transaction_on_stream_packet(DnsTransaction *t, DnsPacket *p) {
}
static int on_stream_complete(DnsStream *s, int error) {
_cleanup_(dns_stream_unrefp) DnsStream *p = NULL;
/* Do not let new transactions use this stream */
if (s->server && s->server->stream == s)
p = TAKE_PTR(s->server->stream);
assert(s);
if (ERRNO_IS_DISCONNECT(error) && s->protocol != DNS_PROTOCOL_LLMNR) {
log_debug_errno(error, "Connection failure for DNS TCP stream: %m");