| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
ability to read beyond EOF. Plenty of assert()s to keep thing from going
off track again.
|
|
|
|
|
| |
strings back in those cases where the channel has them to offer. Also
working through all the implications of this possibility on Tcl's more
exotic channel features, like stacking.
|
|\
| |
| | |
properly accounts for the effects of ENCODING_LINESIZE.
|
|/
|
|
|
|
|
| |
1) At least one call to the channel driver input proc gets made.
Failure to do this locks up the channel - catastrophic FAIL.
2) After any driver call reports BLOCKED, don't call again.
This is less serious, but FAILs to respect the non-blocking setting.
Code corrections and tests included, to restore 8.5.15 compat.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
In a DoRead() revision, it came to favor making every effort to fill
buffers, in preference to a more sensible goal of favoring avoiding calls
out to the driver if there's already enough data in the buffers to satisfy
the read operation. Result is many more calls out to recv() than are
a good idea. Ought to show up most glaringly when many Tcl_Read() calls
asking for small numbers of bytes (compared to buffer size) each, and that
matches the reported case.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
will be called back with a mask value. "Mask is an integer mask indicating
which of the requested conditions actually exists for the channel; it will
contain ***a subset of the bits from the mask argument*** to
Tcl_CreateChannelHandler when the handler was created." (emhpasis added).
Tcl_NotifyChannel is not honoring this. It passes a mask value that may
contain bits not in common with the mask argument to T_CCH().
This commit is a one-liner patch adding in the masking step to make things
behave as documented. Thanks to apn for digging this out. (In combination
with other questionable code, this led to a hang in test http-4.6 on Windows)
Tcl_NotifyChannel() has had this error in all of recorded Tcl history.
It's hard to imagine any code dependent on it though. If any exists, it
can be revised to pass the mask value it truly needs to T_CCH() and end up
with code suitable both before and after this change.
If you concur, please merge to core-8-5-branch, and I'll take it from there.
|
|
|
|
|
| |
[read] on a channel @ EOF to attempt another pass through the channel drivers
instead of immediately returning an empty string. Correcting this misbehavior
appears too disruptive in a patch release to a long stable branch.
|
| |
|
|
|
|
|
|
|
|
| |
identifiers "macosx*-i386-x86_64" and "macosx-universal" as
incompatible with each other.
Plus addition of a cast in tclIO.c to match types in a comparison
which otherwise bugs a Windows debug build (warnings are errors).
|
|\ |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| | |
Reduce code duplication.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
compatibility!
|
| | |
|
| | |
|
| |\ |
|
| | |\
| |_|/
|/| | |
|
| |/
| |
| | |
efficient [chan copy].
|
| |\
| | |
| | | |
a nonblocking channel is blocked.
|
| |\ \ |
|
| |\ \ \ |
|
| |\ \ \ \
| | | | | |
| | | | | |
| | | | | | |
right on the next pass, don't forget the TCL_UTF_MAX padding demanded by Tcl_ExternalToUtf(). (Thanks for finding that, aku!) Fix the factorPtr management. It was just totaly wrong. The factor should be a ratio of the record of bytes read to the record of chars read. With those fixes, new test io-12.6 covers the "too many chars" code.
|
| |\ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | | |
FlushChannel() which is its only caller. We need to discard the curOutPtr buffer as well, and not count on another pass through the loop to attempt to flush it (and raise the same failure again?).
|
| |_|_|_|_|/
|/| | | | | |
|
| |_|_|_|/
|/| | | |
| | | | | |
a nonblocking channel is blocked.
|
| |_|_|/
|/| | | |
|
| |_|/
|/| | |
|
| |/
|/|
| |
| |
| |
| |
| | |
get it right on the next pass, don't forget the TCL_UTF_MAX padding
demanded by Tcl_ExternalToUtf(). (Thanks for finding that, aku!)
Fix the factorPtr management. It was just totaly wrong. The factor should
be a ratio of the record of bytes read to the record of chars read.
With those fixes, new test io-12.6 covers the "too many chars" code.
|
| |
| |
| |
| |
| | |
which is its only caller. We need to discard the curOutPtr buffer as well,
and not count on another pass through the loop to attempt to flush it
(and raise the same failure again?).
|
|\ \
| |/ |
|
| |
| |
| |
| | |
Several socket-14.* tests failing there, and those that pass are very slow
about it. Firewall or poor networking configuration may be playing a role.
|
| |
| |
| | |
a whole raft of test failures. WIP.
|
| |\
| | |
| | |
| | | |
PipeWatchProc(). When we are interested in both readable and writable events of a command pipeline channel, we only want the readable from the read end of the pipe, and the writable from the write end of the pipe.
|
| |/
|/|
| |
| |
| | |
PipeWatchProc(). When we are interested in both readable and writable
events of a command pipeline channel, we only want the readable from
the read end of the pipe, and the writable from the write end of the pipe.
|
| |\
| |/
|/|
| | |
the flag BUFFER_READY.
|
| | |
|
| |\ \
| | | |
| | | |
| | | | |
particular not allowing them to leak between multiple layers of a stacked channel. Much common code refactored into ChanRead().
|
| | | | |
|
| | |\ \
| | |/ /
| |/| | |
|
| | |\ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
began repairing some of the logic about them. Tests iogt-2.* now fail because
they've been crafted as experiments recording the fine detail of reflected
channel driver calls, and fixing the management of channel flags is changing
that. zlib-8.5 also needed adjustment to reflect that an EOF set must come
with an empty string read when flags are functioning properly.
|