Simon Tatham [Sat, 24 May 2003 12:31:32 +0000 (12:31 +0000)]
Modified form of Jim Lucas's PC speaker patch. I don't like
discriminating on the Windows version in order to decide whether to
call MessageBeep(-1) or Beep() - I'd prefer to directly test the
specific OS property in any given case - but it looks as if this is
the best available option.
Jacob Nevins [Sat, 24 May 2003 10:57:53 +0000 (10:57 +0000)]
Incorporate matthew.gabeler-lee's suggested fix for badness with multiple
exact hostnames in the proxy exclusion list.
<OF63043512.26ABC6B9-ON85256D21.006C33C6-85256D21.006C4B81@EU.novartis.net>
Simon Tatham [Tue, 13 May 2003 19:57:17 +0000 (19:57 +0000)]
Real COMPOUND_TEXT support! I was expecting to have to read the spec
and implement the required subset of ISO-2022 in libcharset, but it
turns out that Xlib provides conversion functions between UTF-8 and
compound text, which are just about ideal for us. So now we can
paste multilingual stuff both to and from emacs21. Rock on.
Simon Tatham [Tue, 13 May 2003 18:43:30 +0000 (18:43 +0000)]
Allow pterm to receive selections in compound text format. Doesn't
actually _understand_ compound text yet - anything with
non-ASCII-or-8859-1 characters will fail miserably - but it will at
least successfully receive plain text if the pasting application
doesn't see fit to give it out in any other format.
Simon Tatham [Tue, 13 May 2003 18:23:43 +0000 (18:23 +0000)]
Rename crc32() to crc32_compute(), to avoid clashing catastrophically
with the crc32() function in the zlib interface. (Not that PuTTY
itself _uses_ zlib, but on Unix it's linked against libgtk which
uses libpng which uses zlib. And zlib has poor namespace management
so it defines this ridiculously intrusive function name. Arrrrgh.)
Simon Tatham [Tue, 13 May 2003 18:14:14 +0000 (18:14 +0000)]
Debian bug #193013 points out that the (default-)one-pixel border is
not redrawn when the window background colour is reconfigured mid-
session. In addition, the Official Window Background is not reset,
meaning that opaque resizes etc will flicker in the old background
colour. This checkin should fix both.
Simon Tatham [Sun, 11 May 2003 12:28:53 +0000 (12:28 +0000)]
I think I've just fixed Debian bug #166396. The +ut option was
causing pty_utmp_helper_pipe to be closed, but its fd was kept
around even when stale, and closed again when the main child process
terminated - by which time the fd number had been reused for a
rather more vital fd, which GTK didn't appreciate having closed
under its feet. Hence, spin on POLLNVAL. Should now be sorted.
Ben Harris [Sat, 10 May 2003 20:23:23 +0000 (20:23 +0000)]
Change the way that panel-switching works so that we only hide the panel
we're switching from and show the panel we're switching to, rather than
iterating over all the panels, hiding and showing them as appropriate.
This has that consequence that all controls have to be created invisible,
since they no longer get hidden after creation. As usual, the scroll
bars on list boxes have a special hack of their own.
Simon Tatham [Sat, 10 May 2003 10:15:00 +0000 (10:15 +0000)]
pterm will now attempt to guess suitable names for any missing fonts
from the ones given; so it'll ask for a font twice as wide as your
base one if you don't specify a wide font, it'll ask for a bolded
version of your base font if you don't specify a bold font, and
similarly for a wide/bold font. Should solve Debian bug #187389; at
least it works for me.
Simon Tatham [Sat, 10 May 2003 09:05:41 +0000 (09:05 +0000)]
Stupid braino in get_window_title (thanks Colin): window and icon
titles were being reported the wrong way round. Should fix half of
Debian bug #191751.
Simon Tatham [Sat, 10 May 2003 08:35:54 +0000 (08:35 +0000)]
Fixes for Debian bug #192701 (64-bit gccs warn about casts between
ptrs and ints of different size and -Werror makes this serious).
The GTK bits are done by Colin's patch to use GINT_TO_POINTER
(thanks); the uxnet bits are done by cleaning up the rest of the
code. In particular, network.h now typedefs `OSSocket' to be a type
capable of holding whatever the OS's socket data type is that
underlies our socket abstraction. Individual platforms can make this
typedef themselves if they define OSSOCKET_DEFINED to prevent
network.h redoing it; so the Unix OSSocket is now int. Default is
still void *, so other platforms should be unaffected.
Simon Tatham [Wed, 7 May 2003 13:14:48 +0000 (13:14 +0000)]
Bah. Stop the Proxy panel appearing empty in Change Settings. One
day I'll make a reasonably big checkin and _not_ have six tiny mop-
up issues after it...
Simon Tatham [Wed, 7 May 2003 12:07:23 +0000 (12:07 +0000)]
Yesterday's proxy enhancements also slightly nadgered the config
box, in that it started to expand under the weight of proxy options.
Now fixed, by folding the SOCKS version selector into the general
proxy type selector so there's one single 5- or 6-way radio button
set split over two lines. settings.c has of course grown a backwards
compatibility wart to deal with legacy config data.
Simon Tatham [Wed, 7 May 2003 08:49:57 +0000 (08:49 +0000)]
Ahem. Well, the complicated Unix implementation of
platform_new_connection() worked fine, but the really simple stub
version for the other ports fell over horribly because I got its
name wrong. NEVER ASSUME YOU'VE DONE THE EASY BIT RIGHT.
Simon Tatham [Tue, 6 May 2003 19:52:31 +0000 (19:52 +0000)]
Support, on Unix only (so far), for OpenSSH-style generic proxying
(running a local command in a pair of pipes and proxying through
that, for example `ssh proxyhost nc -q0 %host %port').
Simon Tatham [Mon, 28 Apr 2003 13:59:32 +0000 (13:59 +0000)]
Asynchronous agent requests on Windows. Actually, I've kept the
ability to do synchronous ones as well, because PSCP and PSFTP don't
really need async ones and it would have been a serious pain to
implement them. Also, Pageant itself when run as a client of its
primary instance doesn't benefit noticeably from async agent
requests.
Simon Tatham [Mon, 28 Apr 2003 11:41:39 +0000 (11:41 +0000)]
First half of `pageant-async' work. agent_query() is now passed a
callback function; it may return 0 to indicate that it doesn't have
an answer _yet_, in which case it will call the callback later on
when it does, or it may return 1 to indicate that it's got an answer
right now. The Windows agent_query() implementation is functionally
unchanged and still synchronous, but the Unix one is async (since
that one was really easy to do via uxsel). ssh.c copes cheerfully
with either return value, so other ports are at liberty to be sync
or async as they choose.
Simon Tatham [Sun, 27 Apr 2003 11:10:48 +0000 (11:10 +0000)]
Support for non-ISO-8859-1 X keysyms. So in particular, pterm in a
Euro-supporting font with a Euro-enabled X key map will now actually
generate a Euro character rather than shrugging and doing nothing.
Simon Tatham [Sun, 27 Apr 2003 09:45:35 +0000 (09:45 +0000)]
Take the random number generator back out of Pageant: the `random'
numbers needed for RSA blinding are now done deterministically by
hashes of the private key, much the same way we do it for DSA.
Simon Tatham [Sat, 26 Apr 2003 14:37:49 +0000 (14:37 +0000)]
Remove the TODO comment at the top of uxputty.c; I'm now not aware
of anything that makes the Unix port of PuTTY proper significantly
unfinished. That's quite a milestone :-)
Simon Tatham [Sat, 26 Apr 2003 14:35:34 +0000 (14:35 +0000)]
Finer granularity of config box handling. SSH packet logging should
now not show up when it's meaningless (in PuTTYtel, in pterm, and
in the middle of any non-SSH session), and the Connection panel is
inhibited completely in pterm.
Simon Tatham [Sat, 26 Apr 2003 14:22:42 +0000 (14:22 +0000)]
Make the `vtmode' config option work under X. In the process I've
had to move another of its values out into wincfg.c - paradoxically,
this was the `font has X encoding' option! (Because the Unix font
handling code expects to be able to tell for _itself_ whether it has
a font with X-encoded line drawing glyphs.)
Simon Tatham [Sat, 26 Apr 2003 13:55:47 +0000 (13:55 +0000)]
Aha, _that's_ why the icon title didn't work properly in pterm:
gtk_window_set_title() overwrote both titles at once. Icon title is
now working properly under X, and since X was the reason for the
whole icon/window title separation _anyway_ they default to being
separate.
Simon Tatham [Fri, 25 Apr 2003 16:42:36 +0000 (16:42 +0000)]
Fix another segfault on abrupt X connection shutdown. This should
have happened in rev 1.5 [r996] but didn't! Now we never call
sk_get_private_ptr() on a socket unless we've ensured it's non-NULL.
Simon Tatham [Fri, 25 Apr 2003 11:48:24 +0000 (11:48 +0000)]
Robustness in the face of sudden connection closures: we now make a
credible effort to shut down open forwardings cleanly when the
owning SSH connection terminates abruptly (for whatever reason).
Simon Tatham [Wed, 23 Apr 2003 15:25:45 +0000 (15:25 +0000)]
Force gcc to use x86's built-in 64/32->32,32 division instruction
rather than swanning off to a helper function. This seems to make
woefully little actual performance difference, which annoys me, but
it's a just-about-detectable improvement so I'll leave it in.
Simon Tatham [Wed, 23 Apr 2003 14:48:57 +0000 (14:48 +0000)]
Added framework to sshbn.c to make it possible to vary the
underlying integer type forming the Bignum. Using this, arranged
that gcc/x86 uses 32-bit chunks rather than the guaranteed ANSI-
portable 16-bit chunks. This has gained another 30% on key exchanges
by my measurements, but I'm not yet convinced that it's all
perfectly robust - it seems to work fine for SSH1 and SSH2/RSA but
I haven't ensured that every bignum routine is actually being
tested, so it may yet show up problems in DSA or key generation.
Simon Tatham [Wed, 23 Apr 2003 13:48:09 +0000 (13:48 +0000)]
Unix makefile now uses -O2, which massively cuts down key exchange
time. This gives rise to a whole bunch of spare warnings, one or two
of which might have been actual bugs; now all resolved.
Simon Tatham [Fri, 18 Apr 2003 09:14:54 +0000 (09:14 +0000)]
Removing items from a list box using gtk_container_remove is nasty,
because when the selected item is removed the selection moves on to
another item. Thus, calling dlg_listbox_clear causes repeated
selchanges in the list, which in turn cause repeated valchanges if
the list is attached to a combo box. This has been completely
scuppering the Translation panel.
Simon Tatham [Fri, 18 Apr 2003 09:06:11 +0000 (09:06 +0000)]
Oops; we _do_ need to set dport even when doing dynamic forwarding,
because otherwise the `if (sport && dport)' statement runs the risk
of not working.
Simon Tatham [Fri, 18 Apr 2003 09:00:16 +0000 (09:00 +0000)]
Fix obvious foulup in X forwarding: my recent `how did this ever
work' change to port forwarding completely broke it, by failing to
set peeraddr{,len} before reading them. Oops.
Ben Harris [Wed, 16 Apr 2003 23:58:59 +0000 (23:58 +0000)]
Replace use of FIONBIO with POSIX-approved O_NONBLOCK (set using fcntl()).
This should save us having to worry about different OSs' defining it in
different headers.
Ben Harris [Wed, 16 Apr 2003 23:33:44 +0000 (23:33 +0000)]
Make IPv6 support for Unix work, and make it a lot simpler in the process.
At the moment, we have to assume that getaddrinfo() will only return AF_INET
and AF_INET6 addresses, since we patch in the port number into the sockaddr
later. Fixing this is probably best done by redesigning the PuTTY network
abstraction a little.
Ben Harris [Mon, 14 Apr 2003 23:25:04 +0000 (23:25 +0000)]
Minor fixes:
- Erase the background of System 7 editboxes before drawing them.
- Set the height of listboxes correctly.
- Set the panel-selection listbox to 20 items high.
Ben Harris [Mon, 14 Apr 2003 21:15:39 +0000 (21:15 +0000)]
Enlarge the settings window so as to fill a 640x480 display. This makes
enough space to actually fit all of the panels. I'll have to do a version
with smaller fonts for 9" screens.
Ben Harris [Sun, 13 Apr 2003 13:52:44 +0000 (13:52 +0000)]
Support for list boxes under System 7. There are some horrible kludges in
this code to do with the handling of the scroll bar, but it doesn actually
work better than the Mac OS 8 version.
Ben Harris [Sat, 12 Apr 2003 21:23:58 +0000 (21:23 +0000)]
socks5_negotiate(): rather than using an uninitialised value when passed
an address of an invalid type, assert() that it will never happen.
Do something similar for SOCKS4 as well.
Simon Tatham [Sat, 12 Apr 2003 17:37:15 +0000 (17:37 +0000)]
Support for New Session, Duplicate Session and the Saved Sessions
submenu in Unix PuTTY, and Duplicate Session also in pterm. You do
_not_ want to know how this is done. Be warned.
Simon Tatham [Sat, 12 Apr 2003 09:05:28 +0000 (09:05 +0000)]
Mid-session BCE reconfiguration wasn't taking effect immediately
because I forgot to set term->erase_char in response to the change
in term->use_bce. Oops.
Simon Tatham [Sat, 12 Apr 2003 08:59:06 +0000 (08:59 +0000)]
Disable window title reporting by default, since it's a security
hazard. I considered removing it completely, but I can't rule out
the possibility of an OS that actually takes security of its
terminal devices seriously, and which might be able to make sensible
and safe use of this feature.
Simon Tatham [Sat, 12 Apr 2003 08:27:03 +0000 (08:27 +0000)]
Close On Exit and Warn On Close fixes: (a) pty_reconfig needs to
remember changes in COE so it knows whether to print a message, and
(b) once the session has already ended, Warn On Close should shut up.
Simon Tatham [Fri, 11 Apr 2003 18:36:27 +0000 (18:36 +0000)]
Rationalisation of the system of frontend handles. Most modular bits
of PuTTY (terminal, backend, logctx etc) take a `void *' handle
passed to them from the frontend, and used as a context for all
their callbacks. Most of these point at the frontend structure
itself (on platforms where this is meaningful), except that the
handle passed to the backend has always pointed at the terminal
because from_backend() was implemented in terminal.c. This has
finally bitten Unix PuTTY, because both backend and logctx have
been passing their respective and very different frontend handles to
logevent(), so I've fixed it.
from_backend() is now a function supplied by the _frontend_ itself,
in all cases, and the frontend handle passed to backends must be the
same as that passed to everything else. What was from_backend() in
terminal.c is now called term_data(), and the typical implementation
of from_backend() in a GUI frontend will just extract the terminal
handle from the frontend structure and delegate to that.
This appears to work on Unix and Windows, but has most likely broken
the Mac build.
Simon Tatham [Fri, 11 Apr 2003 18:10:13 +0000 (18:10 +0000)]
`Copy All' ought to de-highlight any existing selection, in line
with any other operation that shifts the X selection to stuff other
than the highlighted text.
Simon Tatham [Fri, 11 Apr 2003 17:42:52 +0000 (17:42 +0000)]
Saving of Default Settings under Unix was broken, because mungestr()
was translating NULL into "Default Settings" but not doing the same
to "". Now fixed.
Simon Tatham [Fri, 11 Apr 2003 17:39:48 +0000 (17:39 +0000)]
A poster on comp.security.ssh mentions that he had expected to find
the location of PuTTY's data storage mentioned in the manual section
about loading and storing sessions. This seems not unreasonable, so
I've put it there.
Simon Tatham [Wed, 9 Apr 2003 18:46:45 +0000 (18:46 +0000)]
Event Log for Unix PuTTY. Doesn't yet allow X selection of its
contents, and doesn't automatically maintain scroll position at the
bottom when new entries are added while the list is open, but it's a
start.
Simon Tatham [Wed, 9 Apr 2003 11:19:39 +0000 (11:19 +0000)]
Remote-to-local port forwarding in SSH2 was apparently completely
broken! We were expecting the peer address/port in the incoming
packet _before_ the connected address/port, which is just wrong. I
wonder how I managed to mess that up.
Simon Tatham [Wed, 9 Apr 2003 09:09:57 +0000 (09:09 +0000)]
Chas Honton's patch to dynamic port forwarding: should allow longer
host names in SOCKS 4A, up to 255 characters (which is apparently
the DNS limit anyway).