Jacob Nevins [Sun, 24 Oct 2004 16:24:58 +0000 (16:24 +0000)]
Freshness tweaks:
- soften language around changing-username-during-login section; with SSH-2
this is a misfeature of implementations rather than the protocol itself
- tweak new-host-key dialog text
Jacob Nevins [Sun, 24 Oct 2004 15:58:31 +0000 (15:58 +0000)]
Differences between protocols: remove the entire paragraph about environment
variables. It was no longer true (given that we support them in SSH-2 now),
and the new situation was probably too complex to explain in an introductory
chapter. And the utility of setting them seems to be marginal these days given
the lack of server support.
Simon Tatham [Thu, 21 Oct 2004 10:59:53 +0000 (10:59 +0000)]
I just had a need to decode a piece of Zlib data from out of the
middle of a PDF. So here's a modification to sshzlib.c which enables
it to be compiled into a standalone Zlib decoder if you define
ZLIB_STANDALONE. As an added bonus, it (both standalone and in
PuTTY) also validates the Zlib header, just to make sure someone
hasn't defined a new compression format.
Jacob Nevins [Tue, 19 Oct 2004 13:54:50 +0000 (13:54 +0000)]
Munge line-drawing description to match current naming and order of options
(in the Windows version), and hopefully to clarify distinction between line
charset and local font, which has occasionally foxed me.
Cross-reference the Translation panel reference section from the intro
section in using.but and mention line-drawing characters there also.
Jacob Nevins [Mon, 18 Oct 2004 00:41:48 +0000 (00:41 +0000)]
Add support for logging "exit-signal", why not.
This is disgustingly huge because old versions of OpenSSH got the message
format wrong, so we have to infer which format is in use. Tested with
Debian stable OpenSSH (3.4p1), with `uint32' packet, and lshd, which uses
the correct `string' packet, and also let me test "core dumped" and the
explanatory message.
Jacob Nevins [Sun, 17 Oct 2004 21:22:22 +0000 (21:22 +0000)]
Support the SSH-2 mechanism for sending signals to a running session. Neither
of the SSH servers I conveniently have access to (Debian stable OpenSSH --
3.4p1 -- and lshd) seem to take a blind bit of notice, but the channel
requests look fine to me in the packet log.
I've included all the signals explicitly defined by
draft-ietf-secsh-connect-19, but I've put the more obscure ones in a submenu
of the specials menu; there's therefore been some minor upheaval to support
such submenus.
Jacob Nevins [Sun, 17 Oct 2004 15:32:42 +0000 (15:32 +0000)]
We shouldn't offer the Break special when we don't have a session to send it
down. (A side effect of fixing this is that ssh->mainchain is set to NULL
when it closes, which might avoid other sorts of trouble.)
While we're here, don't bother offering SSH1_MSG_IGNORE if we believe the
remote will barf on it.
Jacob Nevins [Sun, 17 Oct 2004 14:44:27 +0000 (14:44 +0000)]
Telnet specials menu was not being reinstated after a session was restarted in
the same window (Windows version only).
Policy change: it's now the backend's responsibility to call
update_specials_menu() at the start of a session (or whenever it feels ready),
if it has any special commands. Otherwise the menu won't be displayed.
Simon Tatham [Sat, 16 Oct 2004 14:17:58 +0000 (14:17 +0000)]
Markus Kuhn's UTF-8 page
http://www.cl.cam.ac.uk/~mgk25/unicode.html#activate
feels strongly that it should be easy to make _all_ your
applications work in UTF-8 mode, without having to remember a switch
for each one. Every application should simply note a UTF-8 locale
setting and switch into UTF-8 mode automatically.
Therefore, for the Unix port only, there's now a checkbox, enabled
by default, which causes the drop-down Translation box to be
overridden if the locale indicates UTF-8. Anyone who doesn't like
this, or doesn't like MGK, is welcome to turn it straight back off.
I'm not _completely_ convinced by MGK's argument myself; for
xterm/pterm to do _useful_ UTF-8 you also need to specify a decently
Unicode-capable font, and there's no way _that_ can be automagically
done on noticing a locale setting. But it's a de facto standard
(i.e. xterm does it :-) so I might as well at least be _able_ to
support it.
Simon Tatham [Sat, 16 Oct 2004 10:56:54 +0000 (10:56 +0000)]
Moved the environment variables config block out of the Telnet panel
into the Connection panel, and implemented support for the SSH2
"env" request. (I haven't yet found a server which accepts this
request, so although I've visually checked the packet log and it
looks OK, I haven't yet been able to do a full end-to-end test.)
Also, the `pty' backend reads this data and does a series of
`putenv' commands before launching the shell or application.
This is mostly because in last week's UTF-8 faffings I got
thoroughly sick of typing `export LANG=en_GB.UTF-8' every time I
started a new testing pterm, and it suddenly occurred to me that
this would be precisely the sort of thing you'd want to have pterm
set up for you, particularly since you can configure it alongside
the translation settings and so you can ensure they match up
properly.
Simon Tatham [Fri, 15 Oct 2004 12:37:44 +0000 (12:37 +0000)]
Fix two memory leaks in the new code. (There's no point compressing
the scrollback if you then leak away all the memory you saved!) One
of the leaks - by far the bigger of the two - was in my temporary
diagnostic function cc_check(), which is particularly embarrassing :-)
Simon Tatham [Fri, 15 Oct 2004 11:14:42 +0000 (11:14 +0000)]
Don't forget to flush the bidi cache when the user enables or
disables bidi or shaping, otherwise they'll have to do a manual
screen refresh to see any difference.
Simon Tatham [Fri, 15 Oct 2004 09:16:58 +0000 (09:16 +0000)]
Fix Windows redraw problem on RH half of wrapped lines. (term_paint
was checking whether lattr == LATTR_NORM, where it should have been
checking (lattr & LATTR_MODE) to mask off LATTR_WRAPPED et al.
Simon Tatham [Fri, 15 Oct 2004 08:22:49 +0000 (08:22 +0000)]
Mark cc_check() and all calls to it with the new
XXX-REMOVE-BEFORE-RELEASE tag, since they're performance-intensive.
And now that I'm reasonably confident of remembering to remove them
before the next release, I feel less guilty about adding them willy-
nilly all over the place, so I've shoved in a couple more for now :-)
Simon Tatham [Fri, 15 Oct 2004 08:16:29 +0000 (08:16 +0000)]
I'm instituting a policy that before every release I will grep the
PuTTY source for the word XXX-REMOVE-BEFORE-RELEASE, and not release
until I've got rid of all of them. Hence, here's an addition to the
release checklist which will remind me to do so.
I don't want this mechanism to seriously inhibit a release by being
a placeholder for a large piece of work we might never get round to.
It should be used only in cases where it's _simple_ to change the
offending code: for example, a performance-impacting diagnostic
might be invaluable while testing nightly snapshots but wouldn't
want to slow down everyone's next release, and it's easy to get rid
of on release day.
Simon Tatham [Thu, 14 Oct 2004 16:42:43 +0000 (16:42 +0000)]
First-stage support for Unicode combining characters. The `chars'
array of each `termline' structure now contains optional additional
entries after the normal number of columns, which are used to chain
a linked list of combining characters off any primary termchar that
needs it. This means we support arbitrarily many combining
characters per cell (unlike xterm's hard limit of 2).
Cut and paste works correctly (selecting a character cell containing
multiple code points causes all those code points to be cut and
pasted). Display works by simply overlaying all the relevant
characters on top of one another; this is good enough for Unix
(xterm does the same thing), and mostly seems OK for Windows except
that the Windows Unicode fonts have a nasty habit of not containing
most of the combining characters and thus overlaying an
unknown-code-point box on your perfectly good base glyph.
I had no idea how to add support in the Mac do_text(), so I've
simply stuck in an assertion that will trigger the first time a
combining character is displayed, and hopefully this will bite
someone with the clue to fix it.
Simon Tatham [Wed, 13 Oct 2004 13:43:11 +0000 (13:43 +0000)]
Implement part of `ssh2-generality': introduce the ability to tell
PuTTY / Plink not to run a remote shell/command at all. Supported in
the GUI configuration and via the (OpenSSH-like) -N command-line
option.
No effort is currently made to arrange `nice' UI properties. If you
do this in GUI PuTTY, a full-size terminal window will still be
created, and will sit there with almost nothing in it throughout
your session. If you do it in Plink, Plink will not accept any kind
of request to terminate gracefully; you'll have to ^C or kill it.
Nonetheless, even this little will be useful to some people...
Simon Tatham [Wed, 13 Oct 2004 12:29:50 +0000 (12:29 +0000)]
I think we've been told before that you're not supposed to
CloseHandle() the thing returned from MonitorFromPoint. Certainly MS
Visual Studio's debugger complained about it just now. CloseHandle()
call removed.
Simon Tatham [Wed, 13 Oct 2004 11:50:16 +0000 (11:50 +0000)]
Re-engineering of terminal emulator, phase 1.
The active terminal screen is no longer an array of `unsigned long'
encoding 16-bit Unicode plus 16 attribute bits. Now it's an array of
`termchar' structures, which currently have 32-bit Unicode and 32
attribute bits but which will probably expand further in future.
To prevent bloat of the memory footprint, I've introduced a mostly
RLE-like compression scheme for storing scrollback: each line is
compressed into a compact (but hard to modify) form when it moves
into the term->scrollback tree, and is temporarily decompressed when
the user wants to scroll back over it. My initial tests suggest that
this compression averages about 1/4 of the previous (32 bits per
character cell) data size in typical output, which means this is an
improvement even without counting the new ability to extend the
information stored in each character cell.
Another beneficial side effect is that the insane format in which
Unicode was passed to front ends through do_text() has now been
rendered sane.
Testing is incomplete; this _may_ still have instabilities. Windows
and Unix front ends both seem to work as far as I've looked, but I
haven't yet looked very hard. The Mac front end I've edited (it
seemed obvious how to change it) but I can't compile or test it.
As an immediate functional effect, the terminal emulator now
supports full 32-bit Unicode to whatever extent the host platform
allows it to. For example, if you output a 4-or-more-byte UTF-8
character in Unix pterm, it will not display it properly, but it
will correctly paste it back out in a UTF8_STRING selection. Windows
is more restricted, sadly.
Jacob Nevins [Wed, 6 Oct 2004 22:31:07 +0000 (22:31 +0000)]
X forwarding changes:
- new function platform_get_x_display() to find a sensible local display.
On Unix, the Gtk apps weren't taking account of --display when
determining where to send forwarded X traffic.
- explicitly document that leaving X display location blank in config tries
to do something sensible (and that it's now blank by default)
- don't override X11Display setting in plink, since that's more properly
done later
Jacob Nevins [Sat, 2 Oct 2004 00:33:27 +0000 (00:33 +0000)]
`ssh-log-pw-blank': known password fields are now omitted from SSH packet logs
by default (although they can be included). There's also an option to remove
session data, which is good both for privacy and for reducing the size of
logfiles.
Jacob Nevins [Wed, 29 Sep 2004 23:57:03 +0000 (23:57 +0000)]
Mention the negotiated SSH-2 MAC algorithm(s) in the Event Log.
(It should be possible to at least see what MAC is in use without going to a
SSH packet log.)
Jacob Nevins [Tue, 21 Sep 2004 21:04:28 +0000 (21:04 +0000)]
Add `OSU_1.5alpha4' to BUG_CHOKES_ON_SSH1_IGNORE; this is apparently enough to
enable login with this version. (I'd suspected as much -- see ssh.c CVS
log 1.299 [r3359] -- and Geoffrey Hughes has now confirmed this.)
Simon Tatham [Mon, 30 Aug 2004 13:11:17 +0000 (13:11 +0000)]
Malcolm Smith's patch to support CHAP (digest-based) authentication
when talking to SOCKS 5 proxies. Configures itself transparently (if
the proxy offers CHAP it will use it, otherwise it falls back to
ordinary cleartext passwords).
Simon Tatham [Sat, 28 Aug 2004 16:51:26 +0000 (16:51 +0000)]
More sensible error handling when we receive an SSH1 public key
modulus of zero (!!), and also a robustness fix in ssh1_rdpkt which
I happened to notice while debugging that.
Jacob Nevins [Fri, 20 Aug 2004 08:32:30 +0000 (08:32 +0000)]
alternate-localhost WinXP SP2: apparently SP2 fixes the problem with
Terminal Services that meant you needed to use alternate-localhost in
the first place!
Jacob Nevins [Thu, 19 Aug 2004 15:05:31 +0000 (15:05 +0000)]
Fix an annoying inconsistency that's been bugging me for years: "plink host"
and "plink user@host" differed in that the former attempted to load session
`host' while the latter didn't. Now both forms attempt to load a session.
Someone will probably complain, but hey.
Jacob Nevins [Tue, 17 Aug 2004 14:08:05 +0000 (14:08 +0000)]
Someone complained that their keyboard-interactive password prompt was being
truncated - it was from OpenSSH on HP/UX and had all sorts of stuff in it
("last successful login" etc).
Bodged it by bumping up the space allocated in the fixed array for a password
prompt. Also added an indication that the prompt is being truncated, as
required by draft-ietf-secsh-auth-kbdinteract-06.
(NB that before this checkin, there was a more-or-less harmless buffer overread
where if we ever received a keyboard-interactive prompt with echo=1, we'd
probably spew goo on the terminal; fixed now.)
Jacob Nevins [Mon, 16 Aug 2004 09:38:12 +0000 (09:38 +0000)]
Patch from Kurt Roeckx: apparently on Debian amd64, the ut_time member of
struct utmp is not equivalent to time_t (it's 32-bit). From Debian bug#265910.
Simon Tatham [Sat, 14 Aug 2004 13:04:18 +0000 (13:04 +0000)]
Implement `Restart Session', in both Unix and Windows PuTTY. Largely
because Owen questioned whether it was really easy enough to be
labelled `fun' in the bug database :-)
Jacob Nevins [Fri, 13 Aug 2004 01:08:34 +0000 (01:08 +0000)]
Extra logging in SSH-2 port-forwarding. Most obviously, the opening of a
forwarded X11 connection is now logged as well as the closing; but we also
log the peer IP/port in case it's interesting, and log the reason for
refusing to honour a channel open.
Jacob Nevins [Thu, 12 Aug 2004 01:02:01 +0000 (01:02 +0000)]
Flush the logfile reasonably frequently in `printable output only' and
`all session data' modes, without completely mauling the performance, by
fflush()ing once per term_out(). If anyone complains I suppose we can
make this optional.
Simon Tatham [Tue, 10 Aug 2004 17:12:31 +0000 (17:12 +0000)]
Remove the email address from the footer of the HTML manual, and
replace it with a link to the Feedback page, as we have long since
done everywhere else on the PuTTY website.
Jacob Nevins [Mon, 9 Aug 2004 17:01:25 +0000 (17:01 +0000)]
Apparently sending the tar output to stdout rather than a file causes tar to
pad with trailing NULs, which slightly upsets old versions of gzip (1.2.4,
not 1.3.x), which upsets some of our correspondents.
Use -f to send it to a file instead. (It's not transparently clear what
happens when you mix -f and -C; I've tested this with ixion's tar, 1.13.25.)
Also add option -o to generate POSIX tar files, as for halibut/Makefile;
apparently this shuts up a `trailing garbage' error from WinZip.
Jacob Nevins [Tue, 3 Aug 2004 23:43:07 +0000 (23:43 +0000)]
When using remote forwarding with SSH-1, you'd get bogus 'SSH1 cannot
handle source address spec ":10023"; ignoring' type errors in the
Event Log. The forwarding would go ahead as normal so this is
cosmetic. Fixed.
Jacob Nevins [Fri, 30 Jul 2004 09:38:37 +0000 (09:38 +0000)]
Tweak to make it more obvious that the System menu is only available from
the _terminal_ window -- should be obvious from context but the nearest
context is some distance away.
Jacob Nevins [Wed, 28 Jul 2004 11:04:22 +0000 (11:04 +0000)]
Another wart in the command-line processing: if the user just specifies
`-load sessname', and that mentions a hostname, that should be sufficient
to start a connection.