| 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;
|
| + 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;
|
| }
|
|
|