summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [c31ca233ca] Fix TclGetsObjBinary() so that each [gets] rediscovers whetherdgp2014-07-022-5/+24
| | | a nonblocking channel is blocked.
* Fix mismatch of Tcl_Preserve() / Tcl_Release().dgp2014-06-261-2/+1
|
* Simplify / refactor Tcl_ReadRaw(). No need for CopyBuffer().dgp2014-06-241-127/+50
|
* Fix execute-6.5 test failure on trunk: the "preserveCore" part of ↵jan.nijtmans2014-06-231-33/+33
| | | | tcltest::test assumes that the cleanup is done first, so moving the cleanup means the the "preserverCore" part needs to move with it.
* ticket [2f9df4c4fa]: tcltest - request to move -cleanup script execution ↵jan.nijtmans2014-06-224-14/+14
|\ | | | | | | | | until after -output compare tcltest -> version 2.3.8
| * previous commit was not quite right, this one should be betterbug_2f9df4c4fajan.nijtmans2014-06-201-14/+14
| |
| * ticket [2f9df4c4fa]: tcltest - request to move -cleanup script execution ↵jan.nijtmans2014-06-204-12/+12
|/ | | | until after -output compare
* [b47b176adf] Stop possible segfaults when variability in mutex lockaku2014-06-201-0/+16
| | | | | schedules cause a ForwardingResult to remain on the forwardList after it has been processed (IORChan is the origin of the code in IORTrans).
* [1758a0b603] socket-2.13 : Workaround the broken select() in some Linuxdgp2014-06-161-3/+58
|\ | | | | | | kernels that fails to report a writable state on a socket when an error condition (or remote close) is present.
| * merge 8.5bug_1758a0b603dgp2014-06-161-0/+41
| |\ | |/ |/|
* | Draft test for [1758a0b603].dgp2014-06-131-0/+41
| |
| * Additional check for an error condition on the socket.dgp2014-06-121-1/+7
| |
| * Workaround the broken select() in some Linux kernels that fails to reportdgp2014-06-111-3/+52
|/ | | | | a writable state on a socket when an error condition (or remote close) is present. Would be good to add actual test suite tests for this, but until then see demo scripts in the ticket 1758a0b603.
* Test socket-2.12 covers the DiscardOutput() update.dgp2014-06-051-1/+39
|
* merge forkdgp2014-06-050-0/+0
|\
| * Fixed a tricky interaction of IO system and encodings which couldandreask2014-06-051-2/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | result in a panic. The relevant function is ReadChars() (short RC in the following). When the encoding and translation transforms deliver more characters than were requested the iterative algorithm used by RC reduces the value of "dstLimit" (= the number of bytes allowed to be copied into the destination buffer) to force the next round to deliver less characters, hopefully the number requested. The existing code used the byte located just after the last wanted character to determine the new limit. The resulting value could _undershoot_ the best possible limit because Tcl_ExternalToUtf would effectively reduce this limit further, by TCL_UTF_MAX+1, to have enough space for a single multi-byte character in the buffer, and a closing '\0' as well. One effect of this were additional calls to ReadChars() to retrieve the characters missed by a call with an undershot limit. In the limit (sic) however this was also able to cause a full-blown "Buffer Underflow" panic if the original request was for less than TCL_UTF_MAX characters (*), and we are using a single-byte encoding like iso-8859-1. Because then the undershot dstLimit would prevent the next round from copying anything, and causing it to try and consolidate the current buffer with the next buffer, thinking that it had to merge a multi-byte character split across buffer boundaries. (Ad *) For example because the previous call had undershot already and left only such a small amount of characters behind! The basic fix to the problem is to add TCL_UTF_MAX back to the limit, like is done in all the (three) other places in RC setting a new one. Note however that this naive fix may generate a new limit which is the same as the old, or possibly larger. If that happens we act very conservatively and reduce the limit by only one byte instead. While I believe that this last conservative approach will never reduce the limit to TCL_UTF_MAX or less before reaching a state where it returnds the exact amount of requested characters I still added a check against this situation anyway, causing a new panic if triggered.
* | When too many chars are read by ReadChars() and we trim the limits todgp2014-06-052-4/+44
|/ | | | | | | 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.
* Revise DiscardOutput() to account for revisions to the loop in FlushChannel()dgp2014-06-041-0/+5
| | | | | 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?).
* merge fork of 8.5 branchdgp2014-06-034-27/+42
|\
| * Backport I/O core fixes made known by async socket work on trunk.dgp2014-06-031-7/+15
| |\
| | * These edits make all tests outside of socket-14.* pass on OSX Mavericks.dgp_async_socketdgp2014-06-031-1/+3
| | | | | | | | | | | | 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.
| | * These edits make the tests socket-14.11.[01] stop hanging, but also introducedgp2014-06-023-12/+16
| | | | | | | | | a whole raft of test failures. WIP.
| | * Improve robustness of the socket tests against systems that support IPv6, ↵max2014-06-021-60/+75
| | | | | | | | | | | | but don't resolve localhost to ::1 (and vice versa for IPv4 and 127.0.0.1).
| | * Correct the interest masks in the Tcl_CreateFileHandler() calls in ↵dgp2014-05-313-13/+14
| | |\ | |_|/ |/| | | | | 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.
* | | Correct the interest masks in the Tcl_CreateFileHandler() calls indgp2014-05-313-13/+14
| | | | | | | | | | | | | | | 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.
| | * Refinements of FlushChannel() and its callers. Notably includes removal of ↵dgp2014-05-293-118/+73
| | |\ | |_|/ |/| | | | | the flag BUFFER_READY.
| | * Merged the workarounds and fixes for wrapped executables on variousandreask2014-05-281-1/+85
| | |\ | | | | | | | | | | | | | | | | platforms into the trunk. For details see the merged revision and its ancestor.
| | * | eliminate two unused variables.jan.nijtmans2014-05-231-2/+0
| | | |
| | * | Ditto [dict append], [dict incr], and [dict lappend]. Update description of ↵andy2014-05-211-4/+7
| | | | | | | | | | | | | | | | [dict create] to explicitly state that it returns the new dictionary.
| | * | Ditto [dict unset].andy2014-05-211-1/+2
| | | |
| | * | Update dict man page to state that [dict set] returns the updated dictionary ↵andy2014-05-211-1/+1
| | | | | | | | | | | | | | | | value.
| | * | Fix gcc warning (signed-unsigned compare)jan.nijtmans2014-05-211-1/+1
| | | |
| | * | Fix c&p errors in test descriptionsmax2014-05-211-4/+4
| | | |
| | | |
| | | \
| | *-. \ Rework the management of the CHANNEL_BLOCKED and CHANNEL_EOF flags, in ↵dgp2014-05-207-239/+196
| | |\ \ \ | | | | | | | | | | | | | | | | | | particular not allowing them to leak between multiple layers of a stacked channel. Much common code refactored into ChanRead().
| | | * | | Same improvements to the zlib transform operations.dgp_trunk_flag_repairdgp2014-05-191-40/+5
| | | | | |
| | | * | | Simplify ReflectInput(). Also stop intruding on channel internals withdgp2014-05-191-36/+16
| | | | | | | | | | | | | | | | | | direct clearing of CHANNEL_EOF flag.
| | | * | | Simplify the inputProc of [testchannel transform].dgp2014-05-171-23/+18
| | | | | |
| | | * | | Revise results of tests iogt-2.[123] to account for EOF flags nodgp2014-05-171-0/+3
| | | | | | | | | | | | | | | | | | longer leaking across channel stacks.
| | | * | | Merge flag changes. - Wow, no trouble with [chan push] demonstrated.dgp2014-05-161-39/+37
| | | | | |
| | | * | | merge trunkdgp2014-05-163-15/+121
| | | |\ \ \
| | | * \ \ \ merge trunkdgp2014-05-141-0/+3
| | | |\ \ \ \
| | | * \ \ \ \ Refactored much management of the BLOCKED and EOF flags into ChanRead() thendgp2014-05-133-102/+119
| | | |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * | \ \ \ \ \ Fix and improve socket -async [13d3af3ad5] oehhar2014-05-203-1601/+2619
| | |\ \ \ \ \ \ \
| | | * | | | | | | * Give clearer names to some of the state flags and sync them with ↵bug_13d3af3ad5max2014-04-082-41/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Windows where it makes sense. * Rework WaitForConnect once more to always report ENOTCONN on I/O operations on failed async sockets. * Fix synchronous connections to a server that only listens on IPv6 (or whatever comes later in the list returned by getaddrinfo(), socket-15.*) * Fix spurious writable event on async sockets (socket-14.15).
| | | * | | | | | | Beautify check for async connect reentryoehhar2014-04-081-4/+10
| | | | | | | | | |
| | | * | | | | | | Changed error report logic, that an async connect error is only reported by ↵oehhar2014-04-083-58/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'fconfigure -error' and not by a possible last command terminating the async connect. The terminating command always returns "socket is not connected" on connect error. In addition, some flags were renamed: TCP_ASYNC_SOCKET to TCP_NONBLOCKING and also the new state flags.
| | | * | | | | | | Rename error to connectError in struct TcpState.max2014-04-071-11/+11
| | | | | | | | | |
| | | * | | | | | | Rename CreateClientSocket to TcpConnectmax2014-04-071-8/+8
| | | | | | | | | |
| | | * | | | | | | Renamed function CreateClientSocket to TcpConnect and variable error to ↵oehhar2014-04-071-23/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | connectError
| | | * | | | | | | Return async connect error by first following read or write operation.oehhar2014-04-071-1/+12
| | | | | | | | | |