Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

77 check-ins using file windows/winnet.c version 4e5267fcb7

2004-12-30
09:29
Stray // comments. check-in: a7351a8274 user: simon tags: trunk
07:51
I've decided that trying to do wildcards in PSFTP as a special case of directory recursion was a strategic error: it obfuscates sftp_{get,put}_file(), and also it makes it very hard to handle subdirectory wildcards such as `foo/*'. Accordingly, here's a completely different approach, in which sftp_{get,put}_file() are still responsible for directory recursion, but wildcards are expanded in sftp_general_{get,put}() before being passed thereto. Subdirectory wildcards are now handled consistently across Unix, Windows and the remote server. check-in: 46c1373c46 user: simon tags: trunk
04:58
Remove "Load" button in mid-session configuration dialog, as it allows the user to manipulate settings they can't see so could lead to confusion. (Also remove "Delete" button for some sort of UI consistency even though it's harmless.) Also conditionalise other aspects of sessionsaver_handler() that don't make sense mid-session. check-in: 711d82ee73 user: jacob tags: trunk
2004-12-29
07:44
Add some discussion of rekeys-as-keepalives, and their potential adverse effect on the life expectancy of a low-use connection over a low-reliability network. check-in: be824f099e user: simon tags: trunk
06:32
Loose end from r5031: the Kex panel should only be displayed in mid-session if we are not using SSHv1. I've done this by introducing a generic `cfg_info' function which every back end can use to communicate an int's worth of data to setup_config_box; in SSH that's the protocol version in use, and in everything else it's currently zero. check-in: 8cec6d493a user: simon tags: trunk
2004-12-28
11:12
The latest unfix.org IPv6 patch contains these apparently IPv6-unrelated changes, which convert ints into unsigned in a few key places in ssh.c. Looks harmless at worst, possibly terribly useful, so I think we'll have these no matter what the real IPv6 stuff is up to! check-in: 23840b0529 user: simon tags: trunk
10:46
Ability to save in mid-session! Simplest possible resolution to all the difficult questions about when it's sensible to offer the option of saving to the slot we loaded from: _we never do_. The user must always explicitly specify a slot to save to. check-in: 9a448e7d3f user: simon tags: trunk
10:18
Forgot to initialise ssh->portfwds to NULL. Unusually, this was pointed out by the MSVC debugger, not by valgrind :-) check-in: 8a11a858c7 user: simon tags: trunk
08:11
Can't use `d' for an accelerator in the Kex panel, since it clashes with the `d' used for the Down button in the Windows preference list. check-in: c74909c32f user: simon tags: trunk
08:10
Support reconfiguration of key exchange in mid-session. The fiddly bit is working out when to reschedule the next rekey for when the timeout or data limit changes; sometimes it will be _right now_ because we're already over the new limit. Still to do: the Kex panel should not appear in mid-session if we are using SSHv1. check-in: 25f79c1e9a user: simon tags: trunk
08:07
SSH port forwarding is now configurable in mid-session. After doing Change Settings, the port forwarding setup function is run again, and tags all existing port forwardings as `do not keep'. Then it iterates through the config in the normal way; when it encounters a port forwarding which is already in the tree, it tags it `keep' rather than setting it up from scratch. Finally, it goes through the tree and removes any that haven't been labelled `keep'. Hence, editing the list of forwardings in Change Settings has the effect of cancelling any forwardings you remove, and adding any new ones. The SSH panel now appears in the reconfig box, and is empty apart from a message explaining that it has to be there for subpanels of it to exist. Better wording for this message would be welcome. check-in: 771c5deefb user: simon tags: trunk
08:04
Abstracted out the rather large port-forwarding setup code into a routine which is common between SSH1 and SSH2. Since this routine is not part of the coroutine system, this means it can't sit and wait to get its various success/failure responses back. Hence, I've introduced a system of queued packet handlers, each of which waits for exactly one of a pair of messages (SSH1_SMSG_{SUCCESS,FAILURE} or SSH2_MSG_REQUEST_{SUCCESS,FAILURE}), handles it when it arrives, and automatically de-registers itself. Hence the port-forwarding setup code can be called once, and then subsequent packets related to it will automatically be handled as they arrive. The real purpose of all this is that the infrastructure is now there for me to arrange mid-session configurability of port forwarding. However, a side benefit is that fewer round trips are involved in session startup. I'd quite like to move more of the connection setup (X forwarding, agent forwarding, pty allocation etc) to using the new queued handler mechanism for this reason. check-in: 5c871b121e user: simon tags: trunk
08:04
Fix divide overflow in internal_mod(). Thanks to William Petiot for spotting a special case that the DIV instruction can't quite cover. check-in: 7f128afe0a user: simon tags: trunk
2004-12-24
07:39
Basic configurability for client-initiated rekeys. check-in: 10eff8e7d3 user: jacob tags: trunk
04:04
Don't offer repeat key exchange as a special command in SSH-1. check-in: 7730aea1d9 user: jacob tags: trunk
2004-12-22
23:54
Minimally document "repeat key exchange" special command. check-in: ece0722d35 user: jacob tags: trunk
20:24
Add a preference list for SSH-2 key exchange algorithms, on a new "Kex" panel (which will gain more content anon). Retire BUG_SSH2_DH_GEX and add a backwards-compatibility wart, since we never did find a way of automatically detecting this alleged server bug, and in any case there was only ever one report (<3D91F3B5.7030309@inwind.it>, FWIW). Also generalise askcipher() to a new askalg() (thus touching all the front-ends). I've made some attempt to document what SSH key exchange is and why you care, but it could use some review for clarity (and outright lies). check-in: c0c1b1745c user: jacob tags: trunk
17:17
Fix potential access of freed data (only if we couldn't create the second of two registry keys, so pretty unlikely). check-in: d6440b9496 user: jacob tags: trunk
04:53
Support diffie-hellman-group14-sha1 group exchange. Tested against locally built OpenSSH 3.9, and seems to work fine. check-in: 1716598298 user: simon tags: trunk
04:21
In my revamp of cursor handling I had assumed that you were supposed to call _either_ do_text() _or_ do_cursor() on a given character cell. In fact you're supposed to call do_text() no matter what, and then call do_cursor() as well if it's got the cursor on it, since do_cursor() _only_ draws the actual cursor, which often doesn't also cause the text to get drawn. I'm half tempted to change this in the interface, retire do_cursor() as an external function and relegate it to an internal function in each front end, and require that do_text() must fully process all cursor attributes it is passed. However, I haven't done this yet. check-in: ec3c52848a user: simon tags: trunk
2004-12-20
03:27
The end condition in the binary search loop in the new getType() was incorrect. I must have written that binary search idiom a hundred times, so it's rather embarrassing that I can't _automatically_ get it right! This was causing all kinds of characters to be classified as ON when they should have been various other classes. Also while I'm here, I've added another test case to utf8.txt (a small piece of Arabic within a predominantly L->R line), and also supplied a means to compile minibidi.c with -DTEST_GETTYPE to produce a command-line character class lookup tool. (Not sure what use that'll be _other_ than debugging this precise problem, but I don't like to throw it away now I've written it :-) check-in: d5e3c234a7 user: simon tags: trunk
2004-12-19
17:37
Restore border around terminal to default background colour rather than something outside colours[] (consistently brown on my system). (I don't understand why this code was the way it was, but it gave the correct result before r4917 `256-colours', and now doesn't.) check-in: 0302a088bc user: jacob tags: trunk
17:15
Correct number of configurable colours (NCFGCOLOURS) to match reality (leftover from `256-colours', r4917). check-in: dd7d41edc3 user: jacob tags: trunk
16:37
Fix line cursor colours (fallout from `256-colours'), on both Windows and Unix. check-in: fc8fba4a2e user: jacob tags: trunk
2004-12-18
05:34
Make sure the docs in a Unix release tarball are generated with the correct version info. check-in: 61da0dbc9d user: jacob tags: trunk
04:46
Missed options off mput help check-in: 8b8fc6fa16 user: jacob tags: trunk
04:00
zip apparently gives a warning (`-l used on binary file') when you use -l on a UTF-8 text file. Move potentially UTF-8 things (the new testdata files) into a new category of source files, and suppress zip's warning for that category. check-in: 63ce6ba766 user: simon tags: trunk
2004-12-17
08:25
Jacob has pointed out why SIGCHLD was blocked, so I've updated the comment when I unblock it in pty.c to reflect reality. Also I've moved block_signal() out of pterm.c into signal.c, so I can conveniently use it for unblocking SIGCHLD rather than having to reinvent it in pty.c. check-in: e6e6127715 user: simon tags: trunk
07:39
The xfer mechanism wasn't gracefully terminating when an error was encountered part way through transfer. In particular, this caused psftp to hang (waiting for FXP_READ replies which had already arrived) if you try `get' (without -r) on a remote directory. check-in: 9b4c7b154a user: simon tags: trunk
07:00
Document recent SFTP changes: - document behaviour of "-r" with mget/mput/reget/reput - document "close" command - document SFTP wildcard syntax for those who may not be familiar with Unix wildcards check-in: d7c8b9fbfa user: jacob tags: trunk
06:55
I _think_ I've just fixed `font-overflow'. term->disptext now tracks the start of every contiguous run passed to do_text() or do_cursor(), and arranges never to overwrite only part of such a run on the next update. I'm a bit worried about this checkin because I've also completely revamped cursor handling: the cursor was previously being drawn _outside_ the main loop over the display line, and is now drawn as part of that loop when it gets to the cursor location. It _seems_ to still work sensibly, even in complex cases involving LATTR_WIDE and double-width CJK characters etc, but I won't be entirely happy until it's had some beta use. check-in: b868941b5d user: simon tags: trunk
06:15
Update online help for "-r" and "--" options to get/put commands. Use command name in error messages rather than hardcoded "get:"/"put:". check-in: ce3882214d user: jacob tags: trunk
05:37
Divide the do_paint() loop into several subloops. The activity of going through the line and working out which bits need to be redrawn is now in a separate loop from the subsequent activity of actually going through and doing the redraws. This _should_ enable me to tinker with the which-bits-to-redraw data in between the two, thus fixing `font-overflow'. However, I thought it would be sensible to break the work up into two commits so we can track bugs in the restructuring separately from bugs introduced by the new feature. Also added a couple more terminal test files. check-in: 529f5d4832 user: simon tags: trunk
05:24
I had apparently broken wrapping of double-width characters (again). Also fixed the new UTF-8 test file so that it tests double-width wrapping both with _and_ without LATTR_WRAPPED2. check-in: 5f0baf2cd5 user: simon tags: trunk
05:18
I'd rather not keep losing these little test files, so here's some stuff that I can `cat' into a terminal to test particular features of it. check-in: 82be78c949 user: simon tags: trunk
03:43
Apparently SIGCHLD is blocked by default in processes run in a pterm, which was breaking my bash job notification patch. This is apparently not the case for xterm, so I've fiddled with it. Not entirely sure _why_ it did this in the first place, but there we go. check-in: 1d52612956 user: simon tags: trunk
2004-12-16
13:36
General mechanism for ensuring a dodgy SFTP server can't return malicious filenames via FXP_READDIR. check-in: c846e64623 user: simon tags: trunk
13:19
Implement the `close' command, which terminates an SFTP session but does not quit PSFTP, so you can then issue another `open' to connect to somewhere else. This has apparently been trivial for some time, for exactly the same reasons that `reuse-windows' was so easy, but it hadn't occurred to me to actually do it until now. check-in: 54f8df664d user: simon tags: trunk
13:15
Jacob points out that I introduced a bug in PSFTP when I did the timing shakeup: just running `psftp' caused the net/stdin select loop (on both Unix and Windows) to get confused at the lack of any network connection and give up immediately. Should now be fixed. check-in: 7f1a80cc9d user: simon tags: trunk
11:45
Wildcards in `ls'. I think that completes `psftp-multi'. Woo! check-in: 23bacbfd9f user: simon tags: trunk
11:35
Implement mget and mput in PSFTP, supporting wildcards. check-in: 292ea1d038 user: simon tags: trunk
10:37
Support for recursive file transfer in PSFTP. check-in: 8d0de62bb0 user: simon tags: trunk
09:38
Fix obviously stupid segfault. Ahem. check-in: 95d7fcd0a1 user: simon tags: trunk
09:22
Abe Crabtree complains that flushing the log file as often as we do in 0.56 results in unacceptable performance for him on Win2000. Add a checkbox to revert to the old behaviour. check-in: e3ced0602f user: jacob tags: trunk
09:01
Rename scp.* to pscp.*, because I always misspell it that way. Also it's more consistent with PSFTP like this: scp.c/pscp.c is more similar to psftp.c (the main application framework) than it is to sftp.c (a set of back-end library routines). check-in: 769189a6e0 user: simon tags: trunk
2004-12-10
05:41
Unix PSCP was tight-looping when connecting through a ProxyCommand. Turned out that sk_localproxy_close() was closing the pipe fds without removing them from the uxsel list. check-in: d33391ac70 user: simon tags: trunk
2004-12-08
13:41
Replace the RLE-based getType() function with one that binary- searches a list of (start,end,type) tuples. This increases data size by about 5Kb, which is a shame; but on the plus side, it boosts performance from O(N) to O(log N). As an added bonus, the table now covers _all_ of Unicode, not just the BMP. check-in: 2a29cfc6ba user: simon tags: trunk
13:07
Further clarity and speed cleanups of minibidi: - rewrote the reversal loop in flipThisRun to be considerably clearer - rewrote leastGreaterOdd and leastGreaterEven as bit-twiddling macros - replaced malloc/free with snewn/sfree - lost some gratuitous repeat calls of getType on the same character And most noticeably: - got rid of minibidi.h, since it was entirely full of minibidi.c internals (including constant data definitions!) and wasn't used to provide an external interface at all. Everything in it has been folded into minibidi.c. check-in: 6a1f4de516 user: simon tags: trunk
2004-12-07
12:18
Reformat minibidi.[ch] in line with my coding conventions. It was just getting to be too much hassle trying to work with the existing indentation. check-in: 7c396881dd user: simon tags: trunk
12:10
Bidi stability work. I _think_ I've now removed all the failures of array bounds checking. check-in: 985fa45e60 user: simon tags: trunk
05:50
Fix segfault when HOME not set on Unix. check-in: 64f18d2b49 user: owen tags: trunk
2004-12-02
07:48
\n and \r need double backslashes in Halibut. check-in: b51bd05d37 user: simon tags: trunk
07:37
NULL a couple of members after freeing them in ssh_free(). In particular, should stop ssh_do_close() accessing freed ssh->channels when invoked later from ssh_free(). Spotted by Fred Sauer. (Perhaps this is the cause of the crashes people have been reporting on abnormal closures such as `Software caused connection abort'? I've not been able to test this.) check-in: f3f0eafa38 user: jacob tags: trunk
07:07
Mention our assumptions about the execution character set. Not very well-written, since my brain is largely absent today. check-in: 70c76c16bd user: ben tags: trunk
2004-12-01
09:34
Bah. Ben points out that SSH_1_ version strings should still end in \n, and also that `\r' and `\n' don't mean what I think they mean on all compilers (Mac reverses them). check-in: 5cfe4be596 user: simon tags: trunk
07:42
And now I look at it, the latest draft also says version strings should be followed by \r\n, not just \n. check-in: 138a06123c user: simon tags: trunk
07:37
Kimmo Parviainen points out that SSH software version strings have restrictions on the use of hyphens and spaces. check-in: 9b824c14f2 user: simon tags: trunk
03:25
term_bidi_cache_store() now has a need to distinguish between the _width_ of a terminal line (number of character cell positions) and its _size_ (number of termchars), since of course these differ in the presence of combining characters. check-in: 3182fb76d5 user: simon tags: trunk
2004-11-30
07:39
Fix large memory leak introduced in the r4915 bidi changes. check-in: 19cb7e3f26 user: simon tags: trunk
2004-11-29
19:07
Another default-background fix for 256-colour mode check-in: da93f608bb user: jacob tags: trunk
10:58
Nitpick, close bracket. check-in: 1305136e4a user: owen tags: trunk
05:31
Some blurb about terminal types and 256-colour xterms. Thanks to Dan Nicolaescu for the suggestion. check-in: 38b8c1bf4d user: simon tags: trunk
03:40
rm '$Source$' from comments as not meaningful under Subversion check-in: 42e6df4e40 user: jacob tags: trunk
03:27
typo in comment check-in: c12759e021 user: jacob tags: trunk
03:23
Briefly document the "CP866" manual-entry feature on Windows in the dialog itself (since we have a bit of room). check-in: cdce670586 user: jacob tags: trunk
2004-11-28
09:18
Bah, there's always one thing I miss. Correct the background-colour handling in Unix PuTTY. check-in: b306166356 user: simon tags: trunk
09:13
Implement xterm 256-colour mode. check-in: 1d10fbc8cf user: simon tags: trunk
03:32
Stability fixes (thanks valgrind). check-in: 0f2074ec6b user: simon tags: trunk
03:24
Cursor position, selection highlights and mouse clicks are now all transformed back and forth according to the character position permutation output from the bidi algorithm. I was expecting that to be a lot harder. check-in: fcf7a639b6 user: simon tags: trunk
2004-11-27
18:48
Oops; forgot to add this file in r4913. check-in: 2f7ca41897 user: simon tags: trunk
13:56
Loose end from timing shakeup: sshrand.c is now a client of timing.c, and hence takes its own responsibility for calling noise_regular() at regular intervals. Again, this means it will be called consistently in _all_ the SSH-speaking tools, not just those in which I remembered to call it! check-in: 4150c7ebb8 user: simon tags: trunk
13:41
Changes in startup order to ensure any subsystem which might attempt to schedule timers is not started until after hwnd is initialised. check-in: 25fee5edd7 user: simon tags: trunk
13:34
Slight improvement to cursor blink timing: since the cursor doesn't blink when the window doesn't have focus, we don't schedule blink timers at that point either. Infrastructure change: term->has_focus should now not be written directly from outside terminal.c. Instead, use the function term_set_focus, which will sort out the blink timers as well. check-in: 7a1f0222f8 user: simon tags: trunk
09:32
Almost _all_ of the final connection-layer loop, in both SSH1 and SSH2, is now handled by the packet dispatch table. Dispatch table entries are enabled as soon as possible, so that if anyone tries to (for example) start using a forwarded port before the main shell session setup has finished, things should work sensibly. The SSH code is now a hybrid of coroutine-based sequential logic and table-driven event dispatch, each where it makes the most sense. I'm rather pleased with it. Should fix: ext-data-at-start, portfwd-at-start. check-in: b15612d1c4 user: simon tags: trunk
08:29
Implement client-initiated rekeys after an hour, or after 1Gb of data transfer in either direction (whichever comes first), or at explicit client request (nice idea Jacob). Have tested by lowering the limits, and it all seems solid enough; in particular, this has also allowed me to test the behaviour when connection-level data is received during rekey, and that looks fine too (at least it does _now_ :-). check-in: a58a9529c0 user: simon tags: trunk
07:31
Bah, I knew I'd miss _something_. term_out is now static, so declaring it in putty.h gives a warning under Unix. check-in: 2f29b2a9ed user: simon tags: trunk
07:20
New timing infrastructure. There's a new function schedule_timer() which pretty much any module can call to request a call-back in the future. So terminal.c can do its own handling of blinking, visual bells and deferred screen updates, without having to rely on term_update() being called 50 times a second (fixes: pterm-timer); and ssh.c and telnet.c both invoke a new module pinger.c which takes care of sending keepalives, so they get sent uniformly in all front ends (fixes: plink-keepalives, unix-keepalives). check-in: 683ee6bed3 user: simon tags: trunk