Index: runtime/bin/socket_impl.dart |
diff --git a/runtime/bin/socket_impl.dart b/runtime/bin/socket_impl.dart |
index fa5e897aa164f099a39757e8ba358944230a9d65..62dd538e68b7e9716d9ee5d96aba42b69c601d1c 100644 |
--- a/runtime/bin/socket_impl.dart |
+++ b/runtime/bin/socket_impl.dart |
@@ -15,7 +15,9 @@ class _SocketBase { |
static final int _FIRST_EVENT = _IN_EVENT; |
static final int _LAST_EVENT = _CLOSE_EVENT; |
- static final int _CLOSE_COMMAND = 4; |
+ static final int _CLOSE_COMMAND = 8; |
+ |
+ static final int _LISTEN_SOCKET = 16; |
_SocketBase () { |
_handler = new ReceivePort(); |
@@ -72,7 +74,9 @@ class _SocketBase { |
void _doActivateHandlers() { |
if (_canActivateHandlers && (_id >= 0)) { |
- EventHandler._sendData(_id, _handler, _handlerMask); |
+ int data = _handlerMask; |
+ if (_isListenSocket()) data |= (1 << _LISTEN_SOCKET); |
+ EventHandler._sendData(_id, _handler, data); |
} |
} |
@@ -106,6 +110,7 @@ class _SocketBase { |
} |
} |
+ abstract bool _isListenSocket(); |
/* |
* Socket id is set from native. -1 indicates that the socket was closed. |
@@ -180,6 +185,8 @@ class _ServerSocket extends _SocketBase implements ServerSocket { |
void setConnectionHandler(void callback()) { |
_setHandler(_IN_EVENT, callback); |
} |
+ |
+ bool _isListenSocket() => true; |
} |
@@ -275,6 +282,8 @@ class _Socket extends _SocketBase implements Socket { |
_setHandler(_CLOSE_EVENT, callback); |
} |
+ bool _isListenSocket() => false; |
+ |
InputStream get inputStream() { |
if (_inputStream == null) { |
_inputStream = new SocketInputStream(this); |