mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
Support eof in net_uv
This commit is contained in:
@@ -100,22 +100,35 @@ function onread(buffer, offset, length) {
|
||||
|
||||
var end = offset + length;
|
||||
|
||||
// Emit 'data' event.
|
||||
if (buffer) {
|
||||
// Emit 'data' event.
|
||||
|
||||
if (self._decoder) {
|
||||
// Emit a string.
|
||||
var string = self._decoder.write(buffer.slice(offset, end));
|
||||
if (string.length) self.emit('data', string);
|
||||
} else {
|
||||
// Emit a slice. Attempt to avoid slicing the buffer if no one is
|
||||
// listening for 'data'.
|
||||
if (self._events && self._events['data']) {
|
||||
self.emit('data', buffer.slice(offset, end));
|
||||
if (self._decoder) {
|
||||
// Emit a string.
|
||||
var string = self._decoder.write(buffer.slice(offset, end));
|
||||
if (string.length) self.emit('data', string);
|
||||
} else {
|
||||
// Emit a slice. Attempt to avoid slicing the buffer if no one is
|
||||
// listening for 'data'.
|
||||
if (self._events && self._events['data']) {
|
||||
self.emit('data', buffer.slice(offset, end));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Optimization: emit the original buffer with end points
|
||||
if (self.ondata) self.ondata(buffer, offset, end);
|
||||
// Optimization: emit the original buffer with end points
|
||||
if (self.ondata) self.ondata(buffer, offset, end);
|
||||
|
||||
} else {
|
||||
// EOF
|
||||
self.readable = false;
|
||||
|
||||
if (!self.writable) self.destroy();
|
||||
// Note: 'close' not emitted until nextTick.
|
||||
|
||||
if (!self.allowHalfOpen) self.end();
|
||||
if (self._events && self._events['end']) self.emit('end');
|
||||
if (self.onend) self.onend();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user