On Thu, Mar 01, 2018 at 04:03:04PM +0000, Daniel P. Berrangé wrote: > On Thu, Mar 01, 2018 at 04:44:38PM +0800, Peter Xu wrote: > > TLS handshake may create background GSource tasks, while we won't know > > the correct GMainContext until the whole chardev (including frontend) > > inited. Let's postpone the initial TLS handshake until machine done. > > > > If we dynamically add tcp chardev, it won't be affected since we have a > > new tcp_chr_machine_done flag to know whether we should postpone it or > > not. > > > > Signed-off-by: Peter Xu <pet...@redhat.com> > > --- > > chardev/char-socket.c | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > I don't like this patch either for the same reasons as previous > patch - its creating different behaviour depending on whether > the 'wait' flag happens to have been set in -chardev.
IMHO it's because the socket chardev is indeed complicated... If you see qmp_chardev_open_socket(), that's where most of the complexity lies in. And as I explained, each of the patch, or group of patches, were only trying to solve a single problem. Though I admit this patch has brought a little bit more complexity, though in the short term I don't see a better solution. And, if you consider the existing MUX machine done hook, then it's merely using the same way to do it but even cleaned it up a bit... Please let me know if you have any suggestion that I can do it in a better way. Thanks! -- Peter Xu