diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-01-28 08:30:36 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-01-28 08:45:17 +0900 |
commit | 18230451c03a6d20141efbc85341b6a5c6809077 (patch) | |
tree | 74ec1ba3f7e5afe9f5da687b4f3c77ad3172734d /src/resolve/resolved-dns-stream.c | |
parent | e6d31fc97af92ef59741b3948c984a7d1b2b70f3 (diff) | |
download | systemd-18230451c03a6d20141efbc85341b6a5c6809077.tar.gz |
resolve: make dns_stream_new() take on_packet and complete callbacks
And make on_packet callback mandatory.
Diffstat (limited to 'src/resolve/resolved-dns-stream.c')
-rw-r--r-- | src/resolve/resolved-dns-stream.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/resolve/resolved-dns-stream.c b/src/resolve/resolved-dns-stream.c index 51ffa6b4b0..bdf46170d1 100644 --- a/src/resolve/resolved-dns-stream.c +++ b/src/resolve/resolved-dns-stream.c @@ -411,16 +411,13 @@ static int on_stream_io_impl(DnsStream *s, uint32_t revents) { s->n_read += ss; } - /* Are we done? If so, disable the event source for EPOLLIN */ + /* Are we done? If so, call the packet handler and re-enable EPOLLIN for the + * event source if necessary. */ if (s->n_read >= sizeof(s->read_size) + be16toh(s->read_size)) { - /* If there's a packet handler - * installed, call that. Note that - * this is optional... */ - if (s->on_packet) { - r = s->on_packet(s); - if (r < 0) - return r; - } + assert(s->on_packet); + r = s->on_packet(s); + if (r < 0) + return r; r = dns_stream_update_io(s); if (r < 0) @@ -523,6 +520,8 @@ int dns_stream_new( DnsProtocol protocol, int fd, const union sockaddr_union *tfo_address, + int (on_packet)(DnsStream*), + int (complete)(DnsStream*, int), /* optional */ usec_t connect_timeout_usec) { _cleanup_(dns_stream_unrefp) DnsStream *s = NULL; @@ -535,6 +534,7 @@ int dns_stream_new( assert(protocol >= 0); assert(protocol < _DNS_PROTOCOL_MAX); assert(fd >= 0); + assert(on_packet); if (m->n_dns_streams[type] > DNS_STREAMS_MAX) return -EBUSY; @@ -576,6 +576,8 @@ int dns_stream_new( s->manager = m; s->fd = fd; + s->on_packet = on_packet; + s->complete = complete; if (tfo_address) { s->tfo_address = *tfo_address; |