Chromium Code Reviews| Index: sdk/lib/io/secure_socket.dart |
| diff --git a/sdk/lib/io/secure_socket.dart b/sdk/lib/io/secure_socket.dart |
| index 197e87d4a889cce534049a779cf8952b6fd14381..c5fe3c2290befce7aa4df18329b5179193a77414 100644 |
| --- a/sdk/lib/io/secure_socket.dart |
| +++ b/sdk/lib/io/secure_socket.dart |
| @@ -469,12 +469,17 @@ class _RawSecureSocket extends Stream<RawSocketEvent> |
| return 0; |
| } |
| if (_status != CONNECTED) return 0; |
| + |
| + if (offset == null) offset = 0; |
|
Anders Johnsen
2013/04/15 09:24:04
Why was this introduced?
floitsch
2013/04/15 13:45:34
I don't think it worked before.
|
| + if (bytes == null) bytes = data.length - offset; |
| + |
| var buffer = _secureFilter.buffers[WRITE_PLAINTEXT]; |
| if (bytes > buffer.free) { |
| bytes = buffer.free; |
| } |
| if (bytes > 0) { |
| - buffer.data.setRange(buffer.start + buffer.length, bytes, data, offset); |
| + int startIndex = buffer.start + buffer.length; |
| + buffer.data.setRange(startIndex, startIndex + bytes, data, offset); |
| buffer.length += bytes; |
| } |
| _writeEncryptedData(); // Tries to flush all pipeline stages. |
| @@ -660,9 +665,8 @@ class _RawSecureSocket extends Stream<RawSocketEvent> |
| List<int> data = _socket.read(encrypted.free); |
| if (data != null) { |
| int bytes = data.length; |
| - encrypted.data.setRange(encrypted.start + encrypted.length, |
| - bytes, |
| - data); |
| + int startIndex = encrypted.start + encrypted.length; |
| + encrypted.data.setRange(startIndex, startIndex + bytes, data); |
| encrypted.length += bytes; |
| progress = true; |
| } |