commit | 9b01358ba0ac347151a2a20a14ffd1a6097938da | [log] [tgz] |
---|---|---|
author | Vyacheslav Egorov <vegorov@google.com> | Tue Jan 22 16:34:54 2019 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Tue Jan 22 16:34:54 2019 +0000 |
tree | 53f4f0caa9319a9f69b2c05bc96c7f1d7b0da4c7 | |
parent | 44b30b783b815e4b974b705b9f1e37f1b45d7ffd [diff] |
[vm/io] On Windows do not consider sockets with pending operations closed. ClientSocket might have pending operations associated with it, so we should not delete it until those operations fire. This aligns ClientSocket::IsClosed with IsClosed implementation for other handles, which check if handle has any associated pending operations. The situation that sometimes arises it that if we issue Read, Disconnect operation, they might complete in the opposite order DisconnectComplete, ReadComplete, which is why we need to check for pending operations. MSDN contains sentences like these: "Please note that while the packets are queued in FIFO order they may be dequeued in a different order." It seems that a more uniform fix would be to it increment a reference count of a handle whenever an asynchronous operation is started and decrement it whenever it is completed - but such fix requires much more thorough refactoring of eventhandler_win.cc. Bug: https://github.com/flutter/flutter/issues/22558 Change-Id: I4e6a7d5fdeaa85b9903d005b5bb95338033228f1 Reviewed-on: https://dart-review.googlesource.com/c/90484 Commit-Queue: Vyacheslav Egorov <vegorov@google.com> Reviewed-by: Jonas Termansen <sortie@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.
Visit the dartlang.org to learn more about the language, tools, getting started, and more.
Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.
If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.
There are more documents on our wiki.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.