]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: ostream-multiplex - set ostream_private.parent
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 9 Oct 2017 10:19:32 +0000 (13:19 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 9 Oct 2017 10:19:32 +0000 (13:19 +0300)
Unlike with istream-multiplex, there are no issues with I/Os. Only the
parent stream will have the I/O. Using the default parent adds the
missing methods that otherwise would have needed to be implemented:
 - cork
 - flush_pending
 - switch_ioloop

src/lib/ostream-multiplex.c

index d944b8820987bacd7e4b995772a4a857a7b8fb5c..7efcd5f3bb6f94dcf156f4495bb988df89cada28 100644 (file)
@@ -184,13 +184,11 @@ o_stream_add_channel_real(struct multiplex_ostream *mstream, uint8_t cid)
        channel->ostream.sendv = o_stream_multiplex_ochannel_sendv;
        channel->ostream.iostream.close = o_stream_multiplex_ochannel_close;
        channel->ostream.iostream.destroy = o_stream_multiplex_ochannel_destroy;
-       if (cid == 0)
-               channel->ostream.fd = o_stream_get_fd(mstream->parent);
-       else
-               channel->ostream.fd = -1;
+       channel->ostream.fd = o_stream_get_fd(mstream->parent);
        array_append(&channel->mstream->channels, &channel, 1);
 
-       return o_stream_create(&channel->ostream, NULL, mstream->bufsize);
+       return o_stream_create(&channel->ostream, mstream->parent,
+                              mstream->bufsize);
 }
 
 struct ostream *o_stream_multiplex_add_channel(struct ostream *stream, uint8_t cid)