1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 18:07:59 +00:00
Commit Graph

509 Commits

Author SHA1 Message Date
Simon Tatham
4d77b65677 Centralise generation of the control sequences for arrow keys into a
function in terminal.c, and replace the cloned-and-hacked handling
code in all our front ends with calls to that.

This was intended for code cleanliness, but a side effect is to make
the GTK arrow-key handling support disabling of application cursor
key mode in the Features panel. Previously that checkbox was
accidentally ignored, and nobody seems to have noticed before!

[originally from svn r8896]
2010-03-06 15:50:26 +00:00
Jacob Nevins
075d6e819e It's a new year.
[originally from svn r8848]
[this svn revision also touched putty-website]
2010-01-17 17:27:27 +00:00
Jacob Nevins
99455bfc33 On Windows, character set specifications of the form 'IBM437' would never have
worked due to a typo. Spotted by Todd Burkey.

[originally from svn r8755]
2009-11-22 19:10:11 +00:00
Jacob Nevins
8b68066205 We defined tried_shgetfolderpath but never actually set it. Harmless, but fixed.
[originally from svn r8740]
2009-11-08 19:25:22 +00:00
Jacob Nevins
b85038d8a9 Use DECL/GET_WINDOWS_FUNCTION in a few more places in place of ad-hoc
GetProcAddress().

[originally from svn r8739]
2009-11-08 19:22:28 +00:00
Jacob Nevins
24b6168c1d Move the two existing DECL/GET_foo_FUNCTION macro sets used for dynamic
linking on Windows into a single global one, which can cope with function
renaming. Intended to enable eventual removal of ANSI-specific DoSomethingA
references (although I've not removed any).

[originally from svn r8738]
2009-11-08 18:47:41 +00:00
Jacob Nevins
06497952de Improve buffer handling in Windows sk_getaddr() -- we were passing
uninitialised storage into WSAAddressToString()'s length function (and
presumably getting away with it by luck).
Also improve error handling (exposed by my Wine installation, which returns
an error from WSAAddressToString() for connections to localhost for some
reason).

[originally from svn r8737]
2009-11-08 18:25:29 +00:00
Jacob Nevins
f59f13d0f6 Remove is_shift_pressed() -- it's not been used since r4906.
[originally from svn r8666]
[r4906 == 7ecf13564a]
2009-09-27 16:20:39 +00:00
Jacob Nevins
53e2b1f865 Another warning fix and cosmetic tweakage.
[originally from svn r8665]
2009-09-27 16:07:10 +00:00
Jacob Nevins
a83a9cc2a3 Quell more warnings and, perhaps, avoid alignment faults on 64-bit Windows.
[originally from svn r8664]
2009-09-27 15:52:13 +00:00
Jacob Nevins
0ecfb229f4 Fix some (probably harmless) warnings.
[originally from svn r8663]
2009-09-27 15:31:08 +00:00
Jacob Nevins
33756ceae9 Change manifest files to declare Windows GUI apps to be "DPI-aware", that is,
not fazed by being displayed at other than 96DPI; testing on Vista at a range
of DPIs indicates that we cope (with the minor and inevitable exception of the
drag-list control).
This stops pixel scaling and hence fuzzy display on high-resolution displays.
(Hope this is last disastrous than my last set of manifest tweaks! --
<http://support.fogcreek.com/default.asp?copilot.6.26840.1> suggests that this
is an OK thing to do.)

[originally from svn r8661]
2009-09-25 23:32:14 +00:00
Jacob Nevins
d992932e1e Since r7266, it's been possible to get a hostname into Default Settings; but
plink did not cope gracefully with this -- it was not possible to override that
hostname on the command line (attempts at doing so would be treated as part of
the remote command).
Fix this by applying the principle of r7265: if the user didn't explicitly
specify that they wanted to launch the hostname in the default (for instance
with '-load "Default Settings"', we assume they don't want to, and such a
hostname doesn't count when deciding whether to treat a non-option argument as
hostname or command.

[originally from svn r8651]
[r7265 == 5d76e00dac]
[r7266 == 856ed4ae73]
2009-09-14 21:26:48 +00:00
Jacob Nevins
5094b58a20 If there are no saved sessions, put a grayed "(No sessions)" entry on the saved
sessions submenu of the terminal window context menu (as Pageant does), rather
than an empty menu (which often renders poorly).

[originally from svn r8648]
2009-09-13 23:29:11 +00:00
Jacob Nevins
477d12edc4 From Corey Stup: when we're declaring stuff for WSAAddressToStringA, we should
use the explicitly-narrow type LPSTR, not the switchable type LPTSTR. (Since
we currently build without UNICODE this makes no practical difference to us
now.)

[originally from svn r8627]
2009-08-21 22:29:58 +00:00
Jacob Nevins
7b8c6957d5 Corey Stup points out a memory leak in the local-proxy implementations.
[originally from svn r8626]
2009-08-21 21:16:22 +00:00
Jacob Nevins
eadb18418d Corey Stup points out that any attempt to display the message "Unable to load
any WinSock library" will lead to a segfault.

[originally from svn r8625]
2009-08-21 20:05:24 +00:00
Jacob Nevins
bfacfe29a5 Keep the state of the "Full Screen" menu item on the Ctrl+right-click context
menu in sync with reality and the system menu.

[originally from svn r8620]
2009-08-15 17:45:17 +00:00
Jacob Nevins
c35eff9213 Add "-serial" to Plink's usage message.
[originally from svn r8618]
2009-08-13 22:01:20 +00:00
Simon Tatham
f3ac927d33 Patch from Alan Clucas (somewhat polished) providing command-line
options to select and configure serial port mode.

[originally from svn r8617]
2009-08-10 20:55:19 +00:00
Simon Tatham
87aafaa89a Support in the cross-platform code for translating to and from
UTF-16 when exchanging wchar_t strings with the front end. Enabled
by a #define in the platform's header file (one should not
promiscuously translate UTF-16 surrogate pairs on 32-bit wchar_t
platforms since that could give rise to redundant encoding attacks),
which is present on Windows.

[originally from svn r8495]
2009-03-24 22:24:31 +00:00
Simon Tatham
d0661ca94e Handle more gracefully the possibility of a keyboard-interactive
prompts packet containing no actual prompts (perhaps due to odd
server organisation, or perhaps so it can print a banner message and
do nothing else). Previously, the get_userpass_input functions
always returned failure when in '-batch' mode, even in this case
where no actual input would be required.

[originally from svn r8490]
2009-03-03 18:35:53 +00:00
Jacob Nevins
d699530e4c Since r8305, Unix PuTTY has always "upgraded" an X11 display like "localhost:0"
to a Unix-domain socket. This typically works fine when PuTTY is run on the
same machine as the X server, but it's broken multi-hop X forwarding through
OpenSSH; when OpenSSH creates a proxy X server "localhost:10", it only listens
on TCP, not on a Unix-domain socket.

Instead, when deciding on the details of the display, we actively probe to see
if there's a Unix-domain socket we can use instead, and only use it if it's
there, falling back to the specified IP "localhost" if not.

Independently, when looking for local auth details in Xauthority for a
"localhost" TCP display, we prefer a matching Unix-domain entry, but will fall
back to an IP "localhost" entry (which would be unusual, but we don't trust a
Windows X server not to do it) -- this is a generalisation of the special case
added in r2538 (but removed in r8305, as the automatic upgrade masked the need
for it).
(This is now done in platform-independent code, so a side-effect is that
get_hostname() is now part of the networking abstraction on all platforms.)

[originally from svn r8462]
[r2538 == fda9983243]
[r8305 == ca6fc3a4da]
2009-02-24 01:01:23 +00:00
Simon Tatham
35e004ffee The Windows config option to point at an X authority file is only
read at connection setup time, so don't offer it in the Change
Settings dialog box.

(In particular, this fixes an assertion failure when selecting
Change Settings on a non-SSH connection, since wincfg.c would have
added that control to Connection/SSH/X11 when the parent panel
Connection/SSH didn't exist. Making the control conditional on the
selected protocol would have been sufficient to fix that failure,
but I now realise that the setting should never have been presented
in mid-session in any case.)

[originally from svn r8443]
2009-02-03 21:22:52 +00:00
Simon Tatham
9b2515f97e Don't call ReleaseCapture() on any mouse-button-up event. Instead,
only call it when the _last_ mouse button comes back up. Otherwise,
xterm mouse tracking will lose a button-up event if you press down
two buttons, move the mouse outside the window, then release them
one at a time.

[originally from svn r8425]
2009-01-21 18:47:03 +00:00
Simon Tatham
201c2c295b Patch from Gert-Jan Vons: create an event handle to go in the
OVERLAPPED structure in output threads, as we already do for input
threads. This apparently sorts out a hanging issue with serial ports
when trying to do simultaneous read and write, because (GJV says,
and it sounds plausible to me) in the absence of that event object
Windows signals the file handle itself to notify GetOverlappedResult
that it can return - and since the file handle might be being
signalled by a read operation instead, that leads to ambiguity.
Using an explicit event object in both directions means Windows
always knows which way the data is going.

Also a trivial fix in handle_output_new(), which was referencing the
wrong element of a union due to a copy and paste error. (Since the
result was address-taken and cast to void *, this wasn't a
functional error, but it was conceptually wrong.)

[originally from svn r8410]
2009-01-12 20:41:28 +00:00
Simon Tatham
75913faf82 Weaken the assertion in general_textout(). It was failing in the
case of double-width text (ESC # 3, ESC # 4, ESC # 6), because the
string passed to it was not truncated to the same width as the
clipping rectangle. (In fact, it _can't_ reliably be, in the case
where the window width is odd.) So instead we just assert that we
managed to _at least_ fill the clipping rectangle, not that we
exactly filled it.

The problem is easily reproduced by sending ESC # 8 (fill the screen
with Es) followed by ESC # 3. It doesn't typically happen, though,
if you _manually_ fill the screen with Es, because in that case
PuTTY's terminal buffer ends up being filled with CSET_ACP | 'E' or
similar, which means that general_textout() never gets called
because one of the other branches of do_text_internal() does the
work instead. ESC # 8 will fill the terminal buffer with genuine
_Unicode_ 'E' characters, which exercises the failing code path.

[originally from svn r8403]
2009-01-09 18:55:45 +00:00
Jacob Nevins
fbbec4c23a Rejig windlg.c:verify_ssh_host_key() to silence a warning.
[originally from svn r8394]
2009-01-06 00:25:07 +00:00
Jacob Nevins
2550cd617c Remove a couple of unused variables.
[originally from svn r8393]
2009-01-06 00:16:35 +00:00
Jacob Nevins
e4027368fd It's a new year (and there have even been checkins).
[originally from svn r8392]
[this svn revision also touched putty-website]
2009-01-05 23:49:19 +00:00
Jacob Nevins
bd5cec280a Add some hard-coded textual literal-IP representations of localhost to
sk_hostname_is_local(), to catch the case where we're doing something like X11
forwarding over SSH through a proxy, and we've thus disabled local lookup of
hostnames.
(I think this is what's behind the report in
<e9a86996-5dc2-4428-9b0c-c65693ca6351@m32g2000hsf.googlegroups.com>
in comp.security.ssh, although I'd like to know more of the circumstances.)

[originally from svn r8385]
2009-01-05 02:45:38 +00:00
Jacob Nevins
5611259468 r8338 broke pasting with Shift-Ins and from the context menu on Windows.
Divert these to use the request_paste() interface.

[originally from svn r8377]
[r8338 == 54835a9838]
2008-12-29 20:04:42 +00:00
Jacob Nevins
8d19864dc9 "Derek" points out that reporting of wheel event coordinates to the host on
Windows was relative to the screen origin, not the window origin. 

[originally from svn r8375]
2008-12-20 19:02:09 +00:00
Ben Harris
5d0d5e0466 Change the Unix version of Ssh_gss_name to be a gss_name_t rather than
void *, and hence eliminate a few casts.  The Windows definition is
unchanged, but I daresay I've managed to stop it compiling nonetheless.

[originally from svn r8359]
2008-12-01 21:18:29 +00:00
Simon Tatham
54835a9838 Move the code that reads the Windows clipboard into a trivial
subthread, so that it won't deadlock if fetching the content of the
clipboard turns out to depend on a network connection forwarded
through PuTTY.

[originally from svn r8338]
2008-11-28 18:28:23 +00:00
Jacob Nevins
62cad154f4 Fix a Windows-specific GSS crash introduced in r8326, which (again) apparently
triggers in failure cases. Patch by Iain Patterson.

[originally from svn r8336]
[r8326 == 81dafd906e]
2008-11-26 14:11:49 +00:00
Simon Tatham
8b45210f63 Have wingss.c include <windows.h> by way of putty.h rather than
directly. Fixes a build failure involving name clashes between
winsock2.h and winsock.h, which had somehow managed to get included
in succession.

[originally from svn r8332]
2008-11-25 18:54:05 +00:00
Jacob Nevins
01a7673ae9 Fixed a PuTTYtel startup assertion failure introduced in r8305.
While I'm here, a cosmetic PuTTYtel change: remove a reference to SSH from the
"logical host name" label in PuTTYtel only.

[originally from svn r8331]
[r8305 == ca6fc3a4da]
2008-11-25 18:43:52 +00:00
Ben Harris
81dafd906e Change how we handle the Ssh_gss_buf type. Previously, we defined it
ourselves, but on Unix then assumed it was compatible with the system's
gss_buffer_desc, which wasn't the case on LP64 systems.  Now, on Unix
we make Ssh_gss_buf into an alias for gss_buffer_desc, though we keep
something similar to the existing behaviour on Windows.  This requires
renaming a couple of the fields in Ssh_gss_buf, and hence fixing all
the references.

Tested on Linux (MIT Kerberos) and Solaris.  Compiled on NetBSD (Heimdal).
Not tested on Windows because neither mingw32 nor winegcc worked out of the
box for me.  I think the Windows changes are all syntactic, though, so
if this compiles it should work no worse than before.

[originally from svn r8326]
2008-11-24 23:44:55 +00:00
Jacob Nevins
dc896b79af New option to allow use of the local OS username for login to the remote side
if we have no better ideas, with UI shamelessly stolen from Quest PuTTY.

Off by default, which effectively reverts the change to using the local
username by default that came in with GSSAPI support in r8138. Anyone wanting
seamless single sign-on will need to set the new option. (The previous
default behaviour was getting in the way in ad-hoc scenarios.)

Note that the PSCP and Unix-Plink behaviour of using the local username by
default have remained unchanged throughout; they are not affected by the new
option. Not sure if that's the Right Thing.

[originally from svn r8324]
[r8138 == de5dd9d65c]
2008-11-24 17:51:42 +00:00
Simon Tatham
ca6fc3a4da Revamp of the local X11 connection code. We now parse X display
strings more rigorously, and then we look up the local X authority
data in .Xauthority _ourself_ rather than delegating to an external
xauth program. This is (negligibly) more efficient on Unix, assuming
I haven't got it wrong in some subtle way, but its major benefit is
that we can now support X authority lookups on Windows as well
provided the user points us at an appropriate X authority file in
the standard format. A new Windows-specific config option has been
added for this purpose.

[originally from svn r8305]
2008-11-17 18:38:09 +00:00
Simon Tatham
59691d28a3 Implement sk_addr_dup().
[originally from svn r8294]
2008-11-08 16:58:55 +00:00
Simon Tatham
6e2501be77 Move out of the SockAddr structure the mutable fields "ai" and
"curraddr", and turn "family" into a macro-derived property of the
other fields. The idea is that this renders SockAddrs immutable once
created, which should open up the possibility of duplicating and
reusing one without having to redo the actual DNS lookup.

I _hope_ I haven't broken anything. The new code architecture
contains several rather dubious-looking operations (namely the
arbitrary choice of the first returned address in functions like
sk_getaddr and sk_address_is_local - what if, for instance, a DNS
lookup returned a local and a non-local address?), but I think they
were functionally just as dubious beforehand and all this change has
done is to make them more obviously so to a reader.

[originally from svn r8293]
2008-11-08 16:45:45 +00:00
Jacob Nevins
50abe3567b Patch from Iain Patterson: fix crash on Windows when GSSAPI auth is attempted
but fails for some reason (such as not having a tgt for the server's realm).

[originally from svn r8210]
2008-10-17 20:55:08 +00:00
Simon Tatham
9c6a1127b4 Some Windows keymaps, it turns out, don't translate the key
combination Ctrl + \ as the Ctrl-\ character. All of mine have, but
at least one laptop turns out not to. Do so explicitly.

[originally from svn r8182]
2008-09-14 15:11:42 +00:00
Simon Tatham
4829802c43 Good grief. When I originally wrote the local proxy code two years
ago, I apparently caused all data received from local proxies to be
unconditionally tagged as TCP Urgent. Most network backends ignore
this, but it's critical to the Telnet backend, which will ignore all
Urgent-marked data in the assumption that there's a SYNCH on its way
that it should wait for. Nobody has noticed in two years, presumably
meaning that nobody has ever tried to do Telnet over a local proxy
in that time.

[originally from svn r8158]
2008-08-31 21:45:39 +00:00
Owen Dunn
de5dd9d65c Initial commit of GSSAPI Kerberos support.
[originally from svn r8138]
2008-08-10 13:10:31 +00:00
Simon Tatham
ae5002075a Merged from trunk up to r8033.
[originally from svn r8034]
[r8033 == e81a8cf795]
2008-06-01 11:19:06 +00:00
Simon Tatham
e81a8cf795 Been meaning to do this for years: introduce a configuration option
to manually tweak the host name and port number under which the SSH
host key is read and written.

I've put it in the cross-platform Connection panel. Partly under the
flimsy pretext that other backends _can_ use it if they so wish (and
in fact it overrides the host name for title-bar purposes in all
network backends, though it has no other effect in anything but
SSH); but mostly because the SSH panel was too full already :-)

[originally from svn r8033]
2008-06-01 11:16:32 +00:00
Simon Tatham
85c227326c Merge from trunk up to r8020.
[originally from svn r8021]
[r8020 == 14d825d42f]
2008-05-28 19:28:17 +00:00
Simon Tatham
14d825d42f OS X Leopard, it turns out, has a new and exciting strategy for
addressing X displays. Update PuTTY's display-name-to-Unix-socket-
path translation code to cope with it, thus causing X forwarding to
start working again on Leopard.

[originally from svn r8020]
2008-05-28 19:23:57 +00:00
Simon Tatham
822628246e Merge out from trunk, to keep this branch viable. We are now up to
date as of r7913.

[originally from svn r7914]
[r7913 == d7eda6d99c]
2008-03-10 18:48:36 +00:00
Jacob Nevins
9503c5e5c3 It's a new year (and we've even made a code checkin).
[originally from svn r7883]
[this svn revision also touched putty-website]
2008-02-24 00:16:29 +00:00
Simon Tatham
9024621b91 r7804 neglected to add a help context #define to winhelp.h.
[originally from svn r7815]
[r7804 == 1940b37ff0]
2007-12-15 10:41:40 +00:00
Simon Tatham
712b4689c8 sktree is indexed on the numeric value of the socket structure's
underlying WinSock SOCKET. Therefore, if we plan to modify the
SOCKET in a socket, we must remove it from the tree before doing so,
and put it back again afterwards. Otherwise it'll violate the tree's
sorting order, and sooner or later someone will try to find it and
get back NULL.

[originally from svn r7795]
2007-11-26 21:09:54 +00:00
Simon Tatham
9acc508c4e Harvey Kwok observes that EnumPrinters() can sometimes fail to fill
in its output parameters. Hence, we initialise them before calling
it.

[originally from svn r7729]
2007-09-21 18:04:08 +00:00
Ben Harris
8659f5145f "CR implies LF" patch, based on one from Paul Coldrey.
[originally from svn r7669]
2007-08-04 19:16:46 +00:00
Jacob Nevins
db7cc1cba6 Implement Marcin Bulandra's suggestion of only automatically updating the
port number in the GUI when the connection type is changed if the current
port number is the standard one for the current protocol.
It's not perfect, but it should make the common case of tabbing through the
Session panel easier when starting non-SSH connections on odd ports.

[originally from svn r7635]
2007-07-01 15:47:31 +00:00
Jacob Nevins
6c14388c1d Remove port number validation from Windows PuTTY -- it could cause unnecessary
trouble with serial connections, and a port number of zero gets caught later
anyway.

[originally from svn r7634]
2007-07-01 15:41:09 +00:00
Jacob Nevins
46c00b0f38 Rationalise access to, and content of, backends[] array.
Should be no significant change in behaviour.
(Well, entering usernames containing commas on Plink's command line will be
a little harder now.)

[originally from svn r7628]
2007-06-30 21:56:44 +00:00
Simon Tatham
3f9d53aa9e Update version numbers for 0.60 release.
[originally from svn r7488]
2007-04-29 11:28:54 +00:00
Simon Tatham
5f410ef051 In the wake of r7415, let's have some better error reporting.
Instead of passing -1 to its gotdata and sentdata callbacks on
error, winhandl.c will now pass the negation of the Windows error
number; and the Plink front end will now format that into an error
message and pass it on to the user.

[originally from svn r7416]
[r7415 == 702a92ceb8]
2007-03-27 19:10:10 +00:00
Simon Tatham
702a92ceb8 Windows apparently sends ERROR_BROKEN_PIPE when a pipe we're reading
from is closed normally from the writing end. This is ludicrous; if
that situation isn't a natural EOF, _nothing_ is. So if we get that
particular error, we pretend it's EOF.

[originally from svn r7415]
2007-03-27 18:49:59 +00:00
Jacob Nevins
a3ff37885d Prepend \\.\ to configured serial line string, to allow easy access to ports
above COM9.

[originally from svn r7345]
[this svn revision also touched putty-wishlist]
2007-02-28 21:30:06 +00:00
Jacob Nevins
befd797f97 Since r7265, a user could not launch a PuTTY session to a specific host by
simply specifying a hostname on the command line -- this would bring up the
config dialog. Use a slightly more sophisticated notion of whether the user
meant to launch a session.

[originally from svn r7321]
[r7265 == 5d76e00dac]
2007-02-25 00:50:24 +00:00
Jacob Nevins
31382c02df Allow dlg_listbox_index() to be called on multi-selection list boxes.
[originally from svn r7297]
2007-02-18 19:50:41 +00:00
Jacob Nevins
c5374da822 Ctrl-Break now sends a Break signal (previously it was equivalent to Ctrl-C).
[originally from svn r7295]
[this svn revision also touched putty-wishlist]
2007-02-18 14:02:39 +00:00
Jacob Nevins
8230ce9fa0 Unbreak "Duplicate session" on Windows, in a similar way to r7291.
[originally from svn r7292]
[r7291 == 062b5ab3e4]
2007-02-17 17:44:24 +00:00
Simon Tatham
062b5ab3e4 r7265 broke the legacy `putty @sessionname' construction, which I
wouldn't care about except for the fact that it's still used to
implement the Saved Sessions menu item in PuTTY and Pageant.

[originally from svn r7291]
[r7265 == 5d76e00dac]
2007-02-16 18:44:07 +00:00
Jacob Nevins
3d78bf9b26 It turns out that HH_INITIALIZE and HH_UNINITIALIZE are optional, and are for
putting HTML Help into "single-threaded" mode. Furthermore, this requires
extra work from the application (message pumping via HH_PRETRANSLATEMESSAGE).

Thus, remove them and run Help in a secondary thread. This means that keyboard
input into the Index and Search tabs now works.

[originally from svn r7285]
2007-02-13 22:57:19 +00:00
Simon Tatham
5d76e00dac Avoid launching a session from the Default Settings, even if they do
represent a launchable session, unless the user can be construed to
have really meant it. This means:
 - starting up PuTTY when the Default Settings are launchable still
   brings up the config box, and you have to hit Open to actually
   launch that session
 - double-clicking on Default Settings from the config box will load
   them but not launch them.
On the other hand:
 - explicitly loading the Default Settings on the command line using
   `-load' _does_ still launch them.

[originally from svn r7265]
2007-02-10 17:02:41 +00:00
Jacob Nevins
762f341d56 `installer.ico' doesn't fit into 8.3, so gets truncated to INSTALLE.ICO in
the Windows source Zips. Rename to `puttyins.ico'.

[originally from svn r7241]
2007-02-06 22:39:15 +00:00
Simon Tatham
a5d45db0c9 Avoid passing modified SVN revision numbers (of the form 1234M) to
parts of the versioning code which might not like them.

As a result of this checkin, bob builds from modified SVN working
copies will still announce themselves as revision nnnnM in the
textual version strings, but their binary version in the Windows
VERSIONINFO will now be 0.0.0.0.

[originally from svn r7231]
2007-02-05 18:07:11 +00:00
Simon Tatham
0a4bb7e711 Be slightly more forgiving about the nature of SVN_REV; bob will be
reliable at defining it, and it's useful to be able to pass `1234M'-
type revisions in for testing purposes.

[originally from svn r7221]
2007-02-05 08:02:53 +00:00
Simon Tatham
ab795ba008 Version management updates for the new bob build script. There's now
a fourth class of PuTTY version tags in addition to release,
snapshot and unidentified: we now have `Custom build r1234',
indicating a build made from that SVN revision in a context other
than that of a dated snapshot. The build script generates these when
it doesn't know what else to do; `unidentified builds' will now only
occur when you run nmake from the command line.

Also, the build script now generates sensible version data in the
installer to match this. So I _think_ we should now be set to use
bob to generate installer builds of the nightly snapshots, although
of course I'll have to wait until tomorrow to test one.

[originally from svn r7211]
2007-02-04 12:30:39 +00:00
Jacob Nevins
7d6dae5e58 In the cases where Setup asks to restart the computer, explain exactly why this
is deemed necessary.

[originally from svn r7179]
2007-01-29 20:10:51 +00:00
Simon Tatham
b3a5cdc5fb Kai Jourdan spotted a rather embarrassing double-free, and Minefield
confirms that it's a real problem.

[originally from svn r7168]
2007-01-26 14:06:08 +00:00
Simon Tatham
35309b5683 Add Colin to the licence. (I must remember to add him to the licence
on the website, when we merge this back into the trunk.)

[originally from svn r7158]
2007-01-25 19:36:11 +00:00
Simon Tatham
c8ac73ada6 Version number bumps, and associated changes, for the 0.59 release.
[originally from svn r7146]
2007-01-24 20:16:33 +00:00
Simon Tatham
7a4ef1491e The direct link between the terminal and the back end via
term_provide_resize_fn() was not being broken when the back end was
destroyed on session termination, causing resizing an inactive PuTTY
to be a segfault hazard.

[originally from svn r7143]
2007-01-24 13:53:28 +00:00
Simon Tatham
c93d7435ef Mention the potential networked-CHM problem in the post-installer
README.

[originally from svn r7140]
2007-01-23 11:38:11 +00:00
Simon Tatham
e01126e2d7 Add an icon for the PuTTY installer. Design concept (and noticing
that Inno Setup had an option to specify an icon) by Jacob; detailed
artwork and translation into Python by me.

[originally from svn r7136]
2007-01-22 18:02:06 +00:00
Jacob Nevins
46a8859541 Fix Plink, the serial backend, and local-proxy support on Win98SE (at least),
which have been broken since r6797.
(At least some versions of Win9x are gratuitously picky about the arguments to
CreateThread(), requiring lpThreadId not to be NULL.)

[originally from svn r7132]
[r6797 == 291533d3f9]
2007-01-21 23:34:35 +00:00
Jacob Nevins
7600975e75 Mention more versions of Windows. (Not Vista, yet.)
[originally from svn r7127]
2007-01-20 16:14:13 +00:00
Jacob Nevins
df7775359f Move README.txt into windows subdir.
It's specific to the Windows installer, so it seems unnecessarily confusing to
have it in the top level of the source distribution alongside README.

[originally from svn r7125]
2007-01-19 14:33:56 +00:00
Simon Tatham
f437af50f1 Update WINVER to 0x500 to avoid build failures from Jacob's
FlashWindow changes. Also fiddle with the <multimon.h> include,
which was subtly broken in turn by that.

[originally from svn r7120]
2007-01-16 21:32:02 +00:00
Jacob Nevins
1c081c99be At least, I have the technology to fix `beepind-win2k'.
Tested on Win98, Win2K, and WinXP.

[originally from svn r7119]
[this svn revision also touched putty-wishlist]
2007-01-16 20:54:58 +00:00
Simon Tatham
174bb7f1fd Fold up the `SSH' branch of the treeview by default; it's getting
quite big and tends to hide the existence of the `Serial' config
panel.

This is implemented by folding up every branch of depth 2 or more,
which with any luck might turn out to be general enough to carry
over unchanged if other branches start expanding. Then again, we may
have to fiddle with it again when that time comes; who knows?

[originally from svn r7117]
2007-01-16 18:48:47 +00:00
Jacob Nevins
af38fcbfbc Experimental fix for `psftp-hang'. (Experimental only in that I haven't thought
about it very hard; it's a plausible fix for the observed cause of the extreme
CPU usage, being that we were asking to be notified of Windows messages and
then not dealing with them, plausibly leading to a loop. Works for me,
anyway.)

[originally from svn r7098]
2007-01-12 23:35:46 +00:00
Jacob Nevins
f9afa5e784 According to Frank Dijcks, this cast makes OpenWatcom happier.
[originally from svn r7089]
2007-01-10 00:46:45 +00:00
Jacob Nevins
097fc8b43d MinGW needs an extra symbol _WIN32_IE defined to a particular value before
it'll let you see an identifier (SHGFP_TYPE_CURRENT) referenced since r7082.
(Actually, you need a pretty recent w32api before it's there at all.)

Morally, this should be defined for all toolchains, not just MinGW/Cygwin, but  I'll leave that to people who have those toolchains.
<http://msdn2.microsoft.com/en-us/library/aa383745.aspx>

Also add some other comments on our use of this API (since it's a horrible one
that I suspect will come back and haunt us...)

[originally from svn r7087]
[r7082 == dbbd6eb5ec]
[this svn revision also touched putty-wishlist]
2007-01-09 23:47:15 +00:00
Simon Tatham
42801b7e9e Get rid of all the MSVC warnings.
[originally from svn r7086]
2007-01-09 18:24:07 +00:00
Simon Tatham
4fa9564c90 Fix `puttygen-unix-perms': f_open(), PuTTY's wrapper on fopen, now
takes a third argument which is TRUE if the file is being opened for
writing and wants to be created in such a way that it's readable
only to the owner. This is used when saving private keys.

While I'm here, I also use this option when writing session logs, on
the general principle that they probably contain _something_
sensitive.

The new argument is only supported on Unix, for the moment. (I think
writing owner-accessible-only files is the default on Windows.)

[originally from svn r7084]
2007-01-09 18:14:30 +00:00
Simon Tatham
dbbd6eb5ec Fix `win-randseed-location': use SHGetFolderPath() to find the
Application Data directory in preference to the old-fashioned
attempt to find the user's home directory, and use the _local-
machine_ Application Data directory in preference even to that.

SHGetFolderPath() is called via GetProcAddress, so this degrades
gracefully on old Windowses. (Tested myself on Win95.)

As part of this change, we now search for a location for the seed
file separately for reading and writing, so that installing the new
PuTTY should cause a seamless migration as the old seed file is read
from the old location and then a new one written to the new location.

`putty -cleanup' attempts to delete the seed file from _all_
affected locations.

Naturally, a user-specified seed file path in the Registry still
takes priority over all other means of finding the location.

[originally from svn r7082]
2007-01-09 18:05:17 +00:00
Simon Tatham
6c3f4b3baa The remaining issue in `win-askappend-multi' appears to have been
caused by the MessageBox() internal message loop eating WinSock
FD_READ notifications, which then don't reappear afterwards because
you have to explicitly prod a socket in order to get a repeat
notification on it.

Hence, here's a piece of infrastructure which seems to sort it out:
a new winnet.c function called socket_reselect_all(), whose function
is to go through all currently active sockets and re-run
WSAAsyncSelect() on them, causing repeat notifications for anything
we might have missed. I call this after every call to MessageBox(),
and that seems to solve the problem.

(The problem was actually masked in very recent revisions, probably
by the reinstatement of pending_netevent in r7071. However, I don't
believe that was a complete fix. This should be.)

[originally from svn r7077]
[r7071 == 57a763b0ec]
2007-01-08 19:38:39 +00:00
Simon Tatham
57a763b0ec Reinstate RDB's pending_netevent mechanism, which was removed in
r4906 in the process of adding the new timing code. It seems to have
been what was previously preventing spew-lockup, and still seems to
prevent it now I've put it back in.

[originally from svn r7071]
[r4906 == 7ecf13564a]
[this svn revision also touched putty-wishlist]
2007-01-07 12:40:21 +00:00
Simon Tatham
c1a9dbef13 Tweak the icon script, and the generated icons, to more closely
match the original icons. (Apparently I managed to introduce errors
while transcribing the originals for detailed analysis.)

While I'm at it, add the obviously useful `make install' target in
icons/Makefile, and fix the svn:ignore property on the icons
directory.

[originally from svn r7068]
2007-01-07 10:17:12 +00:00
Simon Tatham
a8bdd536c8 Shiny new script which constructs the various icons for the PuTTY
suite. In a dramatic break with tradition, I'm actually checking in
the resulting icon files as well as the script that generates them,
because the script requires Python and ImageMagick and I don't think
it's reasonable to require that much extra infrastructure on
everyone checking out from Subversion.

The new icons should be _almost_ indistinguishable from the old
ones, at least at the 32x32 resolution. The immediately visible
change is that all the icons now come in 16x16, 32x32 and 48x48
formats, in both 16 colours and monochrome, instead of an ad-hoc
mixture of whichever ones I could be bothered to draw.

The same code can also be adapted to generate icons for the GTK port
(although icons for the running programs don't seem to be supported
by GTK 1 - another reason to upgrade to GTK 2!).

[originally from svn r7063]
2007-01-06 18:15:35 +00:00
Simon Tatham
dc03c3948f Francois L'Archeveque spotted that the variable `winsock2_module'
only exists when compiling for IPv6, so we shouldn't try assigning
to it the rest of the time.

[originally from svn r7059]
2007-01-05 18:43:58 +00:00
Jacob Nevins
55947f2346 It's a new year.
[originally from svn r7048]
[this svn revision also touched putty-website,puzzles]
2007-01-01 21:19:14 +00:00
Jacob Nevins
89f7c2c8ce Add a NO_HTMLHELP option, and enable it by default in the Cygwin Makefile,
since even the latest version of w32api (3.6) shows no sign of HTMLHelp
support.

(This touches mkfiles.pl because that's where the details of what Cygwin
doesn't support are kept currently. This may be deliberate, so I haven't
changed it.)

[originally from svn r7032]
2006-12-28 20:56:01 +00:00
Simon Tatham
3a13c14e62 Nearly forgot: add the .CHM to the PuTTY installer. This involves
making the manual shortcut in the Start menu point to one or other
of the two help files depending on the version of Windows;
fortunately Inno Setup has no difficulty doing that.

[originally from svn r7028]
2006-12-28 10:39:56 +00:00
Simon Tatham
d86e01e836 After discussion with Jeroen Massar, here's a patch (mostly his)
which we think fixes the vista-ipv6 problem.

[originally from svn r7007]
2006-12-23 09:04:27 +00:00
Jacob Nevins
d660f65ac1 Sort out line-endings on new file.
[originally from svn r7001]
2006-12-17 17:46:12 +00:00
Simon Tatham
1dac1bc911 Initial support for HTML Help. All the ad-hoc help-file finding code
and various calls to WinHelp() have been centralised into a new file
winhelp.c, which in turn has been modified to detect a .CHM file as
well as .HLP and select between them as appropriate. It explicitly
tries to load HHCTRL.OCX and use GetProcAddress, meaning that it
_should_ still work correctly on pre-HTML-Help platforms, falling
gracefully back to WinHelp, but although I tested this by
temporarily renaming my own HHCTRL.OCX I haven't yet been able to
test it on a real HTML-Help-free platform.

Also in this checkin: a new .but file and docs makefile changes to
make it convenient to build the sources for a .CHM. As yet, owing to
limitations of Halibut's CHM support, I'm not able to write a .CHM
directly, more's the pity.

[originally from svn r7000]
2006-12-17 11:16:07 +00:00
Simon Tatham
230d400ddc Reinstate as much of the Windows font-linking behaviour as I can
easily manage, by adopting a hybrid approach to Unicode text
display. The old approach of simply calling ExtTextOutW provided
font linking without us having to lift a finger, but didn't do the
right thing when it came to bidirectional or Arabic-shaped text.
Arabeyes' replacement exact_textout() supported the latter, but
turned out to break the former (with no warning from the Windows API
documentation, so it's not their fault).

So now I've got a second wrapper layer called general_textout(),
which splits the input string into substrings based on bidi
character class. Any character liable to cause bidi or shaping
behaviour if fed straight to ExtTextOutW is instead fed through
Arabeyes' exact_textout(), but the rest is fed straight to
ExtTextOutW as it used to be.

The effect appears to be that font linking is restored for all
characters _except_ Arabic and other bidi scripts, which means in
particular that we are no longer in a state of regression over 0.57.
(0.57 would have done font linking on Arabic as well, but would also
have misbidied it, so we've merely exchanged one failure mode for
another slightly less harmful one in that situation.)

[originally from svn r6910]
2006-11-18 15:10:48 +00:00
Simon Tatham
a2338cb6f2 Fix breakage of `Restart Session' in r6802. When restarting the
session, we were clearing the new session_closed flag, but failing
to clear must_close_session; with that set, the session was being
opened but immediately re-closed.

[originally from svn r6857]
[r6802 == 0dcdb6c3c1]
2006-09-21 11:48:32 +00:00
Simon Tatham
33e827818a Add a mini-rant to the top comment explaining why threads are
required. (I just tried getting rid of them; it worked fine for
serial ports, but not for anything else. The Windows I/O API sucks.)

[originally from svn r6843]
2006-09-03 12:55:16 +00:00
Simon Tatham
bb6482c35d Explicitly closing logctx on various kinds of error exit means that
the log file gets fclosed properly and the critical last few
messages might be recoverable from the log file more often...

[originally from svn r6834]
2006-08-29 18:50:07 +00:00
Simon Tatham
f0a9c33f25 The Windows HANDLE type, despite being a `void *', does not actually
behave like a pointer. In particular, the right thing to set a
HANDLE to to indicate that it's invalid is INVALID_HANDLE_VALUE, not
NULL. Crack down on sloppy use of NULL HANDLEs across all Windows
code.

(There is one oddity, which is that {Create,Open}FileMapping are
documented to return a NULL HANDLE instead of INVALID_HANDLE_VALUE
on failure. Shrug. If MS want to be inconsistent, I suppose I have
to live with it.)

[originally from svn r6833]
2006-08-29 18:32:44 +00:00
Simon Tatham
088bc613ed Support for sending serial breaks, in both the Windows and Unix
serial backends.

[originally from svn r6832]
2006-08-29 18:20:57 +00:00
Simon Tatham
d38ea07616 Inhibit the Serial configuration panel in mid-session if the session
isn't a serial one. In particular, this causes pterm not to fail an
assertion if you select `Change Settings'. Ahem.

[originally from svn r6831]
2006-08-29 09:18:09 +00:00
Simon Tatham
4c460326d9 Apparently MsgWaitForMultipleObjects doesn't always return the
values one might expect, which means that GetMessage() was
occasionally blocking the process. That appears to be the last of
the annoying data loss issues, so I think the Windows serial back
end actually looks vaguely reliable now. Phew.

[originally from svn r6830]
2006-08-28 19:09:28 +00:00
Simon Tatham
32582f0fab Eep! Next bit flag after 1 and 2 is _4_, not 3. Perhaps it's time I
stopped coding and went and sat down quietly and tried not to touch
anything for a while.

[originally from svn r6828]
2006-08-28 18:27:54 +00:00
Simon Tatham
a485923ae4 Reading 4K at a time from a serial port turns out to be a bit
unfriendly in an interactive session, because at 19200 baud it takes
nearly two seconds to receive that much data, and as long as the
data is flowing continuously Windows waits until it has a full
buffer. So here's another annoying flag in the winhandl API, which
restricts reads to length 1 so that serial output shows up as it
appears.

(I tried this yesterday, but without the OVERLAPPED fix in r6826 it
behaved very erratically. It now seems solid.)

[originally from svn r6827]
[r6826 == 2aedc83f8d]
2006-08-28 18:26:50 +00:00
Simon Tatham
2aedc83f8d Apparently it helps for an OVERLAPPED structure to contain a valid
event handle. This seems to have fixed _some_, but not all, of the
curious data loss issues in the Windows serial backend.

[originally from svn r6826]
2006-08-28 18:16:49 +00:00
Jacob Nevins
74278dcd64 Minor tweaks to -nc:
- log host:port in event log
 - add -nc to Plink usage message

[originally from svn r6825]
2006-08-28 17:47:43 +00:00
Simon Tatham
38ebd5f5ba Missed a couple of instances of cfg_launchable().
[originally from svn r6824]
2006-08-28 17:41:02 +00:00
Simon Tatham
631b494807 New command-line option in Plink (and PuTTY, though it's less useful
there): `plink host -nc host2:port' causes the SSH connection's main
channel to be replaced with a direct-tcpip connection to the
specified destination. This feature is mainly designed for use as a
local proxy: setting your local proxy command to `plink %proxyhost
-nc %host:%port' lets you tunnel SSH over SSH with a minimum of
fuss. Works on all platforms.

[originally from svn r6823]
2006-08-28 15:12:37 +00:00
Simon Tatham
ae83801b28 Because not all OSes will support the same set of serial port
options, here's a slight change to the API of ser_setup_config_box()
to make it filter its parity and flow control options using
platform-supplied bit masks.

[originally from svn r6820]
2006-08-28 13:08:15 +00:00
Simon Tatham
0ceeaf2b96 Fix small event log bug.
[originally from svn r6819]
2006-08-28 11:33:51 +00:00
Simon Tatham
8fe46f4b05 Forgot to initialise serial->bufsize to zero.
[originally from svn r6818]
2006-08-28 11:32:12 +00:00
Simon Tatham
3c04bd6b42 Fix line endings (svn:eol-style properties and actual CRs).
[originally from svn r6817]
2006-08-28 11:13:56 +00:00
Simon Tatham
34f747421d Support for Windows PuTTY connecting straight to a local serial port
in place of making a network connection. This has involved a couple
of minor infrastructure changes:
 - New dlg_label_change() function in the dialog.h interface, which
   alters the label on a control. Only used, at present, to switch
   the Host Name and Port boxes into Serial Line and Speed, which
   means that any platform not implementing serial connections (i.e.
   currently all but Windows) does not need to actually do anything
   in this function. Yet.
 - New small piece of infrastructure: cfg_launchable() determines
   whether a Config structure describes a session ready to be
   launched. This was previously determined by seeing if it had a
   non-empty host name, but it has to check the serial line as well
   so there's a centralised function for it. I haven't gone through
   all front ends and arranged for this function to be used
   everywhere it needs to be; so far I've only checked Windows.
 - Similarly, cfg_dest() returns the destination of a connection
   (host name or serial line) in a text format suitable for putting
   into messages such as `Unable to connect to %s'.

[originally from svn r6815]
2006-08-28 10:35:12 +00:00
Simon Tatham
17bc654532 Grow some nasty warts on the side of winhandl.c, in preparation for
a serial port backend:
 - In order to do simultaneous reading and writing on the same
   HANDLE, you must enable overlapped access and pass an OVERLAPPED
   structure to each ReadFile and WriteFile call. This would make
   sense if it were an optional thing I could do if I wanted to do
   the reading and writing in the same thread, but making it
   mandatory even if I'm doing them in _different_ threads is just
   annoying and arbitrary.
 - Serial ports occasionally return length 0 from ReadFile, for no
   particularly good reason. Fortunately serial ports also don't
   have a real EOF condition to speak of, so ignoring EOFs is
   actually a viable response in spite of sounding utterly gross.
Hence, handle_{input,output}_new() now accept a flags parameter,
which includes a flag to enable the OVERLAPPED bureaucracy and a
flag to cause EOFs to be ignored on input handles. The current
clients of winhandl.c do not use either of these.

[originally from svn r6813]
2006-08-27 10:00:36 +00:00
Simon Tatham
3dc4063f69 Remove spurious #include.
[originally from svn r6812]
2006-08-27 09:53:34 +00:00
Simon Tatham
1347235754 Call console_provide_logctx _before_ initialising the back end, so
that logevent() will go to stderr in -v mode even during the back
end init function.

[originally from svn r6811]
2006-08-27 08:34:04 +00:00
Simon Tatham
c353c3cc97 The `socket' function in the backends is only ever checked to see if
it's NULL. Since we already have one back end (uxpty) which doesn't
in fact talk to a network socket, and may well have more soon, I'm
replacing this TCP/IP-centric function with a nice neutral
`connected' function returning a boolean. Nothing else about its
semantics has currently changed.

[originally from svn r6810]
2006-08-27 08:03:19 +00:00
Simon Tatham
cda522186a It's critically important that the local proxy process should not
inherit _our_ ends of its I/O pipes! Otherwise, closing our copy of
those handles does not cause it to see EOF on its stdin, because
it's holding the pipe open itself.

[originally from svn r6808]
2006-08-26 10:59:09 +00:00
Simon Tatham
421a5ece2c We _can_ have handle_throttle() called on defunct handles after all,
so it should just do nothing rather than failing an assertion.

[originally from svn r6807]
2006-08-26 10:58:13 +00:00
Simon Tatham
8a3c123bd7 ProxyCommand support for Windows, using the new winhandl.c API.
Seems a bit clunky when I actually try to use it - not sure why -
but I think all the actual functionality is there.

[originally from svn r6806]
2006-08-26 10:20:16 +00:00
Simon Tatham
d5f4ce4611 Another bug fix: always set the busy flag when telling a subthread
to do something, otherwise handle_get_events will forget to tell the
front end to check for that subthread finishing. This applies even
when we're only setting `busy' to tell the subthread to terminate!

[originally from svn r6805]
2006-08-26 10:19:23 +00:00
Simon Tatham
b2fec9f576 Cleanups to reduce dependency on Windows SFTP tools always having a
real network socket.

[originally from svn r6804]
2006-08-26 10:18:31 +00:00
Simon Tatham
0dcdb6c3c1 Start using notify_remote_exit() in the Windows front end, in place
of the previous ad-hockery which depended on the return value from
select_result() and hence which will not adapt sensibly to a world
in which the primary session is something local rather than a
network connection.

[originally from svn r6802]
2006-08-26 10:04:46 +00:00
Simon Tatham
44a246aaa7 Always initialise the `addresses' field of a SockAddr to NULL,
because it gets unconditionally sfree()d in sk_addr_free(). This
just bit me when running under the MSVC debugger; not sure how it
hasn't bitten anyone until now!

[originally from svn r6800]
2006-08-26 08:37:42 +00:00
Simon Tatham
911f43b872 Bug fix: since the input thread does not wait for the event object
until _after_ its first read, we should not start by signalling that
object in order to trigger the first read. Ahem.

[originally from svn r6799]
2006-08-26 08:15:53 +00:00
Simon Tatham
52cdcc6a7c Small tweak to the new handle API: provide a `privdata' field in
each handle structure, set on initialisation and readable by an API
call.

[originally from svn r6798]
2006-08-26 07:41:15 +00:00
Simon Tatham
291533d3f9 New piece of Windows infrastructure: winhandl.c takes Plink's
thread-based approach to stdin and stdout, wraps it in a halfway
sensible API, and makes it a globally available service across all
network tools.

There is no direct functionality enhancement from this checkin:
winplink.c now talks to the new API instead of doing it all
internally, but does nothing different as a result.

However, this should lay the groundwork for several diverse pieces
of work in future: pipe-based ProxyCommand on Windows, a serial port
back end, and (hopefully) a pipe-based means of communicating with
Pageant, which should have sensible blocking behaviour and hence
permit asynchronous agent requests and decrypt-on-demand.

[originally from svn r6797]
2006-08-25 22:10:16 +00:00
Owen Dunn
33b7caa590 Large file support for psftp and pscp on both Windows and Unix. On Unix
we set _FILE_OFFSET_BITS to 64 on the compiler command line (via mkfiles.pl),
and on Windows we use SetFilePointer and GetFileSize to cope with 64-bit sizes
where possible.  Not tested on Win9x.

[originally from svn r6783]
2006-08-12 15:20:19 +00:00
Jacob Nevins
7958a63147 Sprinkle some header comments in various files in an attempt to explain what
they're for.

[originally from svn r6639]
2006-04-23 18:26:03 +00:00
Owen Dunn
806c2b73ce Update size when going from maximised to full screen.
[originally from svn r6618]
2006-03-29 17:55:40 +00:00
Simon Tatham
3f6dfdaa61 David Damerell tells me I should be using Ctrl-hjklyubn rather than
Shift-hjklyubn for batch movement in NetHack, because they have
subtly different behaviour within the game and the Ctrl-moves are
more useful. Unfortunately, PuTTY's NetHack keypad mode doesn't
support Ctrl-moves. Therefore, it does now :-)

[originally from svn r6593]
2006-03-08 18:10:12 +00:00
Jacob Nevins
341171d187 Batch of miscellaneous tweaks to the Windows installer:
- Now we've fixed `win-versioninfo', choose some sensible outcomes from
   the installer's comparisons of binary version numbers. Also, give the
   installer _itself_ a matching binary version.
   In particular, without this change, it would not have been possible
   to downgrade PuTTY -- it would have silently left the "newer" files in
   place. Now it will make some fuss, but permit it.
 - Also remove descriptions from shortcuts, on the grounds that the
   binaries have embedded descriptions now. (Although I've not checked
   whether those are actually visible in the Start Menu.)
 - At the request of various people (e.g., PJB), add flags so that if
   files are in use at the time the (un)installer is run, replacement is
   deferred to the next restart. (The user may be prompted to restart,
   which isn't ideal; see comments).
   This is supposed to make centrally-pushed silent upgrades more robust.
 - Note some limitations of the installer.

[originally from svn r6585]
2006-02-27 22:27:49 +00:00
Jacob Nevins
f9c1d0acf8 Alain Guibert points out that palette changes weren't causing the space
between the text area and the window border to be refreshed.
Fixed on Windows. Gtk still has a similar problem.

[originally from svn r6583]
2006-02-25 14:13:46 +00:00
Jacob Nevins
dd73d2a836 Fix `restart-reset-terminal': terminal now restored to a sensible state when
reusing a window to restart a session.

[originally from svn r6577]
[this svn revision also touched putty-wishlist]
2006-02-19 14:59:48 +00:00
Jacob Nevins
5e59d81947 Fix up documentation/usage messages for r6572.
[originally from svn r6574]
[r6572 == c2b2d9c539]
2006-02-19 12:52:28 +00:00
Simon Tatham
c2b2d9c539 Introduce a new checkbox and command-line option to inhibit use of
Pageant for local authentication. (This is a `don't use Pageant for
authentication at session startup' button rather than a `pretend
Pageant doesn't exist' button: that is, agent forwarding is
independent of this option.)

[originally from svn r6572]
2006-02-19 12:05:12 +00:00
Owen Dunn
d526e3bb33 Preserve more attributes of text copied as RTF. Thanks to Stephen Balousek.
[originally from svn r6555]
2006-02-13 22:18:17 +00:00
Jacob Nevins
ef2db06457 Oops. Since r6546, old "Special Commands" menus weren't being deleted from the
context menu, and they tended to pile up.

[originally from svn r6547]
[r6546 == 3cdf5b739f]
2006-02-10 20:57:40 +00:00
Jacob Nevins
3cdf5b739f Users of Virtual Dimension are reporting that the "Close" menu item and
button tend to get disabled on login.
After a suggestion by "Tkil", change the way we handle the specials menu
to be robust against the window menu being externally modified.

[originally from svn r6546]
[this svn revision also touched putty-wishlist]
2006-02-09 23:06:57 +00:00
Jacob Nevins
4da1f2b17e Somewhat gruesome tweak to use SetClassLongPtr where available and degrade
nicely elsewhere, which should fix `win64' _properly_.
Tested on recent-ish MinGW (with GetWindowLongPtr but not GetClassLongPtr),
and VC++ 6.0 with a recent SDK, but not with vanilla VC++.

[originally from svn r6535]
[this svn revision also touched putty-wishlist]
2006-01-27 20:49:59 +00:00
Owen Dunn
b61713fb3f Don't explicitly open the logfile on startup; it'll automatically be opened
by logwrite() as necessary.  Should fix win-askappend-multi.

[originally from svn r6533]
2006-01-25 22:46:33 +00:00
Owen Dunn
d6f844533e VC6 doesn't define LONG_PTR
[originally from svn r6520]
2006-01-11 23:43:04 +00:00
Owen Dunn
dd924a644e Configurable font quality on Windows. (Together with a little bit of
macro stuff to cope with the inadequacy of VC++ 6 headers.)

[originally from svn r6519]
2006-01-11 23:42:02 +00:00
Jacob Nevins
6a596c736a It's a new year.
[originally from svn r6513]
[this svn revision also touched halibut,putty-website,puzzles]
2006-01-08 18:18:11 +00:00
Simon Tatham
0a4b6612fb A few small changes to make the PuTTY source base more usable as a
basis for other terminal-involving applications: a stub
implementation of the printing interface, an additional function in
notiming.c, and also I've renamed the front-end function beep() to
do_beep() so as not to clash with beep() in lib[n]curses.

[originally from svn r6479]
2005-12-09 20:04:19 +00:00
Jacob Nevins
8719f92c14 Revamp SSH authentication code so that user interaction is more
abstracted out; replace loops structured around a single interaction
per loop with less tortuous code (fixes: `ki-multiprompt-crash',
`ssh1-bad-passphrase-crash'; makes `ssh2-password-expiry' and
`proxy-password-prompt' easier).

The new interaction abstraction has a lot of fields that are unused in
the current code (things like window captions); this is groundwork for
`gui-auth'. However, ssh.c still writes directly to stderr; that may
want to be fixed.

In the GUI apps, user interaction is moved to terminal.c. This should
make it easier to fix things like UTF-8 username entry, although I
haven't attempted to do so. Also, control character filtering can be
tailored to be appropriate for individual front-ends; so far I don't
promise anything other than not having made it any worse.

I've tried to test this fairly exhaustively (although Mac stuff is
untested, as usual). It all seems to basically work, but I bet there
are new bugs. (One I know about is that you can no longer make the
PuTTY window go away with a ^D at the password prompt; this should be
fixed.)

[originally from svn r6437]
[this svn revision also touched putty-wishlist]
2005-10-30 20:24:09 +00:00
Jacob Nevins
c14f259ba2 Allow rsakey_pubblob() to return the key comment.
(like r6433 but for SSH-1)

[originally from svn r6434]
[r6433 == 49d2cf19ac]
2005-10-30 15:16:42 +00:00
Jacob Nevins
49d2cf19ac Add ability for ssh2_userkey_loadpub() to return the key comment.
(Not actually used currently, but it makes life easier for a patch I'm
working on.)

[originally from svn r6433]
2005-10-30 13:42:36 +00:00
Ben Harris
9d31462c52 Fix 256-colours-match-xterm, based on 256colres.pl from xterm-205.
Largely untested -- may not even compile on Windows.

[originally from svn r6393]
2005-10-13 21:56:43 +00:00
Jacob Nevins
4d48ba62e8 `win-versioninfo': all builds of all Windows binaries now contain
a VERSIONINFO resource. The versioning scheme is described in
windows/version.rc2.

Some .rc files are now #included in others. In order to keep MSVC
project files working, these have been renamed to .rc2; there may exist
a better solution.

(This checkin also includes the documentation tweak missing from r6367.)

Testing performed:
 - MinGW (cross-compiler): works
 - VC nmake: works (tested with VC6)
 - VC project files: builds with VERSIONINFO resource (no VER variable though)
 - Borland: an old version of this patch was tested with it and more or
   less worked, except that some of the VERSIONINFO strings were apparently
   not terminated properly. Not attempted to work around this.
 - LCC: not tested. Some fixes are in there from the last time we tried
   this, but then the build ultimately failed and I haven't tried this
   since that was fixed.
 - Dev-C++: untested. (Haven't done anything special.)
 - Unix Gtk/autoconf Makefiles work as before.

[originally from svn r6374]
[r6367 == f86ad059db]
[this svn revision also touched putty-wishlist]
2005-10-04 14:13:28 +00:00
Jacob Nevins
92a62b8aed Ben Rudiak-Gould points out that we should be using WM_APP as the base for
our app-private window messages, which is considerably higher than the
WM_XUSER we arbitrarily chose. (This isn't known to be causing any actual
problems. The fix seems not to have obviously broken anything.)

[originally from svn r6183]
[this svn revision also touched putty-wishlist]
2005-08-10 18:31:24 +00:00
Ben Harris
b400397f69 Move comment about ECHO and LINE input modes to a more sensible position.
Spotted by Ben Rudiak-Gould.

[originally from svn r5976]
2005-06-19 13:57:50 +00:00
Jacob Nevins
ccedec116c "SanskritFritz" points out that digits at the start of RTF pastes were being
eaten by the trailing "\f0" on the RTF preamble. The RTF spec (1.0 and 1.6)
suggests that adding a space should defuse this situation and be otherwise
harmless, and it works for me (Win98).

[originally from svn r5931]
2005-06-09 10:05:29 +00:00
Jacob Nevins
2ba272c262 Add NO_MANIFESTS option to Windows build, as the manifests apparently cause
trouble for 64-bit Windows builds.
Also flag the build flags that only apply to Windows.

[originally from svn r5820]
2005-05-21 14:35:21 +00:00
Jacob Nevins
26635548e8 Use {Get,Set}WindowLongPtr() instead of {Get,Set}WindowLong() for compatibility
with 64-bit Windows. Untested on 64-bit, but it doesn't appear to have broken
anything on 32-bit.

[originally from svn r5819]
2005-05-21 14:16:43 +00:00
Jacob Nevins
9cde5fa319 Minor memory leak spotted by Mikhail Kruk.
[originally from svn r5815]
2005-05-20 21:52:07 +00:00
Jacob Nevins
b099456c87 Implement `bypass-ssh2-userauth', since from correspondence it sounds like
there are servers which could in principle operate in this mode, although I
don't know if any do in practice. (Hence, I haven't been able to test it.)

[originally from svn r5748]
[this svn revision also touched putty-wishlist]
2005-05-05 22:37:54 +00:00
Jacob Nevins
b28330fc35 Stir in process ID at start.
[originally from svn r5655]
2005-04-22 15:47:28 +00:00
Jacob Nevins
fb581ac625 First crack at `terminal-modes' in SSH. PuTTY now sends ERASE by default,
Unix Plink sends everything sensible it can find, and it's fully configurable
from the GUI.

I'm not entirely sure about the precise set of modes that Unix Plink should
look at; informed tweaks are welcome.

Also the Mac bits are guesses (but trivial).

[originally from svn r5653]
[this svn revision also touched putty-wishlist]
2005-04-21 13:57:08 +00:00
Jacob Nevins
0a0433cf80 Add a comment describing `dummyitem' in prefslist and associated problems.
[originally from svn r5641]
2005-04-18 12:21:53 +00:00
Jacob Nevins
6eec320f0b Unify GET_32BIT()/PUT_32BIT() et al from numerous source files into misc.h.
I've done a bit of testing (not exhaustive), and I don't _think_ I've broken
anything...

[originally from svn r5632]
2005-04-12 20:04:56 +00:00
Jacob Nevins
f481acb479 Retire winctrls.c:multiedit() in favour of a new simpler function for a
single full-width edit box. multiedit()'s extra functionality has been
superseded by the "columns" mechanism, and it didn't allow an edit box to
be created with no label.

Also add no-label capability to a couple of other controls.

[originally from svn r5626]
2005-04-11 16:23:35 +00:00
Jacob Nevins
798f924906 Add WS_VSCROLL style to drop-down non-combo boxes, to add a scroll bar
if needed. (Doesn't affect the appearance of any existing controls.)

[originally from svn r5621]
2005-04-09 23:02:55 +00:00
Jacob Nevins
b33d9e4a44 Tone down canonical-name resolution when using getaddrinfo(). Previously
we were doing a forward+reverse lookup, which seems above and beyond the
call of duty, especially given that getaddrinfo() can be persuaded to
return a canonical name (this is what unix/uxnet.c does).

Unfortunately, I'm unable to test this at all as Win98 doesn't have
getaddrinfo(); hopefully I'll be able to find a mug with a modern version
of Windows to check it's not completely broken.

I think the effects of this are mostly cosmetic -- the canonical name is
used for window titles (and some people have been annoyed at the new
behaviour), other displays, and probably also for proxy exclusions.

[originally from svn r5614]
2005-04-07 22:33:42 +00:00
Jacob Nevins
62faf61d6e Oops, forgot to credit Ahmad Khalifa of arabeyes.org for the bidi/shaping work.
[originally from svn r5612]
[this svn revision also touched putty-website]
2005-04-07 12:00:01 +00:00
Jacob Nevins
52a17ab04a If a new session was saved from Change Settings, a side-effect on Windows was
that the global `sesslist' got out of sync with the saved-sessions submenu,
causing the latter to launch the wrong sessions.

Also, Change Settings wasn't getting a fresh session list, so if the set of
sessions had changed since session startup it wouldn't reflect that (at least
until a session was saved). Fixed (on all platforms).

Therefore, since the global sesslist didn't seem to be useful, I've got rid
of it; config.c creates one as needed, as do the frontends. (Not tried
compiling Mac changes.)

Also, we now build the saved-sessions submenu on demand on Windows and Unix.
(This should probably also be done on the Mac.)

[originally from svn r5609]
2005-04-07 01:36:28 +00:00
Jacob Nevins
a53aa4051a `xp-wont-run': Apparently my application-manifest trims of r5534 aren't
acceptable on all versions of XP. Bah. Revert to pre-r5534 format (but
keep version number as 0.0.0.0). People who've had this problem have
reported putty.mft to make it go away.

NB, putting these updated manifests alongside the executable (e.g. as
`putty.exe.manifest') is also reported to work.

[originally from svn r5604]
[r5534 == deadab0900]
[this svn revision also touched putty-wishlist]
2005-04-06 22:16:42 +00:00
Simon Tatham
398ec35fe1 Version number and other tweakings prior to the 0.58 release.
[originally from svn r5598]
2005-04-05 19:36:25 +00:00
Simon Tatham
91b10030c8 sk_address_is_local() was ignoring the possibility that a SockAddr
might have an IPv4 address in `ai' rather than in `addresses'.
Thanks to Martin Prikryl for pointing this out.

[originally from svn r5587]
2005-04-01 08:46:26 +00:00
Simon Tatham
19d5b9a829 Further fix for lcc-win32. The PuTTY suite now compiles fine for me
using lcc-win32 v3.8 (compilation date Mar 2 2005 18:40:17) provided
I pass COMPAT="-DNO_IPV6 -DNO_MULTIMON" on the command line.

[originally from svn r5573]
2005-03-30 19:33:24 +00:00
Simon Tatham
d0beed9aba Render timing.c robust in the face of strangeness. The strangenesses
in question vary per OS: on Windows the problem is that WM_TIMER
sometimes goes off too early, so that GetTickCount() is right and
the callback time is wrong, whereas on Unix the problem is that my
GETTICKCOUNT implementation comes from the system clock which means
it can change suddenly and non-monotonically if the sysadmin is
messing about (meaning that the timing of callbacks from GTK or
select timeouts is _more_ likely to be right than GETTICKCOUNT).
This checkin provides band-aid workarounds for both problems, which
aren't pretty but ought to at least prevent catastrophic assertion
failure.

[originally from svn r5556]
2005-03-28 17:48:24 +00:00
Jacob Nevins
2d379524c3 Since Markus Kuhn no longer explicitly places wcwidth.c in the public domain,
it'd probably be generous to list him in the copyrights.

[originally from svn r5548]
[this svn revision also touched putty-website]
2005-03-23 20:23:07 +00:00
Jacob Nevins
cb779c95e3 Another fix from Hung-Te Lin; apparently in some IMEs (such as
"MS NewPhonetics"), move events (arrow keys) were being doubled up,
apparently because we turned both KEYDOWN and KEYUP events into new
KEYDOWN events.

I don't claim to understand the precise effect of this patch :( but
I'm reasonably confident that it only affects IME users, and experimentally
it doesn't seem to break anything obvious, so if piaip says it makes
things better that's good enough for me :)

[originally from svn r5545]
2005-03-23 01:08:18 +00:00
Jacob Nevins
ddb1fc1256 Fix my fix (r5539) to the `multi-changesettings-crash' fix. Ahem.
[originally from svn r5543]
[r5539 == 5b695d81ad]
2005-03-22 23:25:21 +00:00
Jacob Nevins
faf59c78be Add an option to use wcwidth_cjk() instead of wcwidth(), as several people
have asked for it.

[originally from svn r5542]
2005-03-22 23:20:23 +00:00
Jacob Nevins
5b695d81ad Hung-Te Lin spotted that the `multi-changesettings-crash' workaround for Windows
would prevent a user opening Change Settings if they'd cancelled a previous
Change Settings.

[originally from svn r5539]
2005-03-21 22:20:22 +00:00
Jacob Nevins
deadab0900 Trim application manifests as much as MS' documentation and Owen's experiments
on XP allow while still having the desired effect -- this allows removal of
some fibs.
Also, change version number to 0.0.0.0 in preparation for `win-versioninfo'
(not that we found anything that took any notice of the version number 
declared here).

[originally from svn r5534]
2005-03-21 01:51:22 +00:00
Jacob Nevins
091462f240 Improvement for IME font display from Hung-Te Lin.
Not tested, but it appears only to affect Glenn Maynard's r1406 code from
<20011006170741.A23470@zewt.org> and nothing else, so seems harmless enough.

[originally from svn r5533]
[r1406 == d9f7fc44bc]
2005-03-21 01:05:38 +00:00
Jacob Nevins
bcd70d0661 Add comments about default processing in DialogProc/WindowProc, since I
often forget the rules.

[originally from svn r5532]
2005-03-20 22:28:13 +00:00
Jacob Nevins
36fc6c0a76 Try to make our PGP signing more useful:
* All the PuTTY tools for Windows and Unix now contain the fingerprints of
   the Master Keys. The method for accessing them is crude but universal:
   a new "-pgpfp" command-line option. (Except Unix PuTTYgen, which takes
   "--pgpfp" just to be awkward.)

 * Move the key policy discussion from putty-website/keys.html to
   putty/doc/pgpkeys.but, and autogenerate the former from the latter.
   Also tweak the text somewhat and include the fingerprints of the
   Master Keys themselves.
   (I've merged the existing autogeneration scripts into a single new
   one; I've left the old scripts and keys.html around until such time
   as the webmonster reviews the changes and plumbs in the new script;
   he should remove the old files then.)

[originally from svn r5524]
[this svn revision also touched putty-website]
2005-03-19 02:26:58 +00:00
Simon Tatham
82f82fdb6d After we thaw a frozen socket, we apparently need to restart the
WSAAsyncSelect or else Windows loses read events.

[originally from svn r5521]
2005-03-18 19:47:21 +00:00
Simon Tatham
0a4181d396 Hung-Te Lin's fix for intermittent WM_PAINT problems.
[originally from svn r5518]
2005-03-17 20:01:28 +00:00
Owen Dunn
1e21ea8f63 Add protection against multiple Change Settings dialogues.
[originally from svn r5508]
2005-03-15 20:34:08 +00:00
Jacob Nevins
492b3933f8 Retire MINGW32_FIX. It was a fix for a blatant bug in MinGW's windres, which
was fixed in CVS in 2000 (I think); and we now depend on MinGW much more
recent than that for various other reasons. I've tested with my current
MinGW (around 2.0.0 vintage) and the original symptoms (dodgy characters in
edit boxes) don't appear to show up.

[originally from svn r5491]
2005-03-11 15:52:59 +00:00
Jacob Nevins
5aa719d16e Consistently use a single notation to refer to SSH protocol versions, as
discussed. Use Barrett and Silverman's convention of "SSH-1" for SSH protocol
version 1 and "SSH-2" for protocol 2 ("SSH1"/"SSH2" refer to ssh.com
implementations in this scheme). <http://www.snailbook.com/terms.html>

[originally from svn r5480]
2005-03-10 16:36:05 +00:00
Jacob Nevins
cb47941b61 Ben Hutchings reports that new PuTTY instances created from the saved
sessions menu (etc) can inherit listening sockets, and that this sometimes
causes trouble. Can't reproduce any problems myself, but let's only allow
inheritance when absolutely necessary -- Duplicate Session -- in which
case there's already going to be trouble with two processes trying to
listen on the same port.

[originally from svn r5468]
2005-03-08 23:06:15 +00:00
Jacob Nevins
3fc33c4118 More confusing "(BYTE *) & val" style punctuation.
I blame GNU indent, although its confusion is understandable.

[originally from svn r5432]
2005-03-02 15:53:50 +00:00
Jacob Nevins
2dfee45b91 nit: confusing punctuation
[originally from svn r5430]
2005-03-02 00:46:22 +00:00
Jacob Nevins
41793f56d4 Update Inno Setup script. Tested with IS 5.0.8 on Win98SE; I think there are
a few things that will faze whatever we're using currently (2.0.19 or
thereabouts?), but nothing desperately modern. (NB, the 0.57 putty.iss works
fine with 5.0.8 and the installer is even 40k smaller.)

Notable changes:
 - Uninstallation now runs a variant of `putty -cleanup'. The variance is
   only in the text displayed; the user is still prompted, and the default
   action is (now) "keep" in both cases.
 - Optionally add an icon in the Quick Launch bar.
 - Make desktop item optionally for all users. (not tested)
 - "Create a Start Menu group" now handled via IS' own mechanism.

[originally from svn r5423]
2005-03-01 21:34:21 +00:00
Jacob Nevins
e3511e1387 VC didn't like PATH_MAX. Use MAX_PATH instead. (This macro is mentioned in
MSDN's SetCurrentDirectory() documentation, although I haven't found a
statement of where it's supposed to be defined.)

[originally from svn r5420]
2005-03-01 12:19:58 +00:00
Jacob Nevins
a2b583f137 Add context help to a couple of message boxes. Unfortunately the ones
I wanted to get to -- "software caused connection abort" and friends --
are going to be more involved (probably requiring some cross-platform
notion of help contexts), and these ones hardly seem worth the effort.
Still, I've done it now.

Side-effect: Pageant now uses the same `hinst' and `hwnd' globals as
everything else. Tested basic functionality.

[originally from svn r5417]
2005-03-01 01:16:57 +00:00
Jacob Nevins
f538bd6d4c Make it clearer that `-m' is only usable with SSH.
[originally from svn r5416]
2005-03-01 00:33:18 +00:00
Jacob Nevins
182a511ec3 Move the MessageBox-with-help function out into winutils.c, although it's
still only used for the host key popups. Side-effects:
 - requested_help is a winstuff.h global
 - Pageant now defines winstuff.h globals

(Also, my previous fix to my improved host-key dialogs only got the "changed"
case, not the "unknown" case. Some days I shouldn't be let near a keyboard.)

[originally from svn r5415]
2005-03-01 00:00:09 +00:00
Jacob Nevins
f246144c44 Make things other than Pageant use request_file(), why not, although all of
its funkiness is switched off so the behaviour is the same as before.

[originally from svn r5414]
2005-02-28 02:51:51 +00:00
Jacob Nevins
d7b50f8066 Fix for pageant-dirhandle': a new wrapper functions request_file()' maintains
a separate CWD for the file requester, so that when the Open File box is not
open Pageant should stay where it was started.
(Also some other minor cleanups in this area of Pageant.)

[originally from svn r5413]
[this svn revision also touched putty-wishlist]
2005-02-28 02:40:43 +00:00
Jacob Nevins
e5d5da8bdd Move SaneDialogBox()/SaneEndDialog() from winmisc.c to windlg.c, since they
seem to be PuTTY(tel)-specific (at least at the moment). Might save a bit
of space in the other binaries.

[originally from svn r5410]
2005-02-27 23:57:17 +00:00
Jacob Nevins
c60aa6b2f5 Improve Pageant's error reporting for private key load failures.
[originally from svn r5409]
2005-02-27 23:15:22 +00:00
Jacob Nevins
bd6eadd196 Improvements to PuTTYgen error reporting:
- will now display a reason when it fails to load a key
 - uses existing error return from native keys
 - import.c had a lot of error descriptions which weren't going anywhere;
   since the strings are probably taking up space in the binary, we
   may as well use them

[originally from svn r5408]
2005-02-27 23:01:11 +00:00
Jacob Nevins
eba099d006 Pull out the common compiler-specific workarounds and so on from individual
resource files into windows/rcstuff.h.

[originally from svn r5405]
2005-02-26 17:43:47 +00:00
Jacob Nevins
f9363925c6 We weren't correctly discounting "." and ".." when they came from
FindFirstFile(), with hilarious consequences for recursive transfers in
PSFTP. (PSCP appears to behave fine; it does its own "."/".." removal.)

[originally from svn r5398]
2005-02-26 00:41:36 +00:00
Simon Tatham
6d47285462 Fallout from my change in the semantics of cfg.remote_cmd_ptr.
Spotted by Alano na Alania.

[originally from svn r5386]
2005-02-23 09:25:39 +00:00
Jacob Nevins
bb874319fb Ahem. Fix my hostkey dialog fix so that storing the host key doesn't
close the connection.

[originally from svn r5379]
2005-02-21 23:34:41 +00:00
Jacob Nevins
38c9737e19 Change "are you sure you want to close this window" default back to what it
was ("yes"). Partly because it was inconsistent with gtkdlg.c, and partly
because it was annoying me.

[originally from svn r5371]
2005-02-20 23:26:47 +00:00
Jacob Nevins
651cedc7fb On Windows, MessageBoxIndirect() was sometimes failing to pop up the host key
dialog and returning an unexpected value (0), causing everything to silently
behave as if the user had said "allow this connection but don't store host
key"!

Initialising (MSGBOXPARAMS).hInstance seems to have cured this (although the
MSDN docs seemed to indicate it wouldn't be used) -- if so, it's been broken
since r5309 on 2004-02-15 -- but since this was something of a Heisenbug, and
the behaviour was so catastrophic when MessageBoxIndirect() behaved oddly, I've
rearranged the code to default to cancelling, and added an assertion for
visibility.

(Windows PuTTY still seems to be broken wrt servers that send NEWKEYS while
we're waiting for the user, which happens to include the "SSH-2.0-2.4.1 SSH
Secure Shell OpenVMS V1.0" I'm testing against. I don't know why. The above bug
may also have been limited to this circumstance.)

[originally from svn r5370]
[r5309 == 99122767f5]
2005-02-20 23:00:17 +00:00
Simon Tatham
97154e55da Bump version numbers. (Forgot to do this _before_ dropping the 0.57
tag, but that's OK because SVN doesn't distinguish tags from
branches anyway...)

[originally from svn r5361]
2005-02-20 10:51:02 +00:00
Simon Tatham
f73fcb0424 Add asynchronous callback capability to the askappend() alert box.
This was harder than verify_ssh_host_key() and askalg() put
together, because:
 (a) askappend() can be called at any time, since it's a side effect
     of data-logging functions. Therefore there can be an unfinished
     askappend() alert at any time, and hence the OS X front end has
     to be prepared to _queue_ other alerts which occur during that
     time.
 (b) logging.c has to do something with data that comes in while
     it's waiting for an answer to askappend(). It buffers it until
     it knows what the user wants done with it. This involved
     something of a reorganisation of logging.c.

[originally from svn r5344]
2005-02-18 18:33:31 +00:00
Simon Tatham
8574822b9b Revamp interface to verify_ssh_host_key() and askalg(). Each of them
now returns an integer: 0 means cancel the SSH connection and 1
means continue with it. Additionally, they can return -1, which
means `front end has set an asynchronous alert box in motion, please
wait to be called back with the result', and each one is passed a
callback function pointer and context for this purpose.

I have not yet done the same to askappend() yet, because it will
take a certain amount of reorganisation of logging.c.

Importantly, this checkin means the host key dialog box now works on
OS X.

[originally from svn r5330]
2005-02-17 18:34:24 +00:00
Jacob Nevins
db19a6aff1 Minor reorganisations to WinHelp support. (Done as part of a - failed -
attempt to fix `winhelp-crash', but we may as well keep them.)

[originally from svn r5314]
2005-02-16 01:47:10 +00:00
Jacob Nevins
99122767f5 The Windows host key dialogs now have a `Help' button that should give
appropriate context help, iff the help file is present. (Shame it's prey to
`winhelp-crash'.)

(I've perpetrated a widening of visibility of `hwnd'; the alternative, putting
it into a frontend handle, seemed too likely to cause maintenance trouble if
we don't also _use_ that frontend handle everywhere we now use the global
`hwnd'.)

[originally from svn r5309]
2005-02-15 22:23:47 +00:00
Jacob Nevins
0fb46d3a0a Add a couple of other sensible button defaults in MessageBox()s.
[originally from svn r5305]
2005-02-15 19:22:47 +00:00
Jacob Nevins
e8a4e7e601 Martin Radford points out that the default action for the host key
confirmation dialogs should be "cancel", not "accept".

[originally from svn r5304]
2005-02-15 19:10:44 +00:00
Jacob Nevins
c9116974ac The terminal window can now indicate that PuTTY is busy in various ways, by
changing its mouse pointer. Currently this is only used in the (slightly-
arbitrarily-defined) "heavy" bits of SSH-2 key exchange. We override pointer
hiding while PuTTY is busy, but preserve pointer-hiding state.

Not yet implemented on the Mac.

Also switch to frobbing window-class cursor in Windows rather than relying on
SetCursor().

[originally from svn r5303]
2005-02-15 17:05:58 +00:00
Jacob Nevins
63784f3f9a Martin Prikryl points out that we weren't always initialising new "addrinfo"
members of Windows SockAddr_tag; particular in sk_nonamelookup() (proxy
resolution at far end) this was causing trouble.

Make sure they _always_ start out NULL (since the Windows getaddrinfo()
documentation doesn't make any claims about initialisation), and also
initialise 'naddresses' in sk_nonamelookup() for good measure.

[originally from svn r5297]
2005-02-14 11:43:27 +00:00
Jacob Nevins
0259612237 Petri Kero pointed out a FreeLibrary() call that should be guarded by NO_IPV6.
[originally from svn r5268]
2005-02-07 12:23:10 +00:00
Ben Harris
865fbaa8ce Overhaul of client-side XDM-AUTHORIZATION-1:
* Make sk_getxdmdata() return an arbitrary string rather than two integers.
  This better matches the spec, even if the current version always returns
  six bytes
* On Unix, for PF_UNIX sockets, return a counter rather than a constant along
  with the PID.  This should allow multiple clients to connect within one
  second, and is what Xlib does.
* On Unix, interpret AF_INET6 addresses like Xlib does, returning the
  embedded IPv4 address for v4-mapped addresses, and six bytes of zeroes
  otherwise.  The latter is silly, but if I'm going to do anything more sane
  I need to check that X servers won't reject it.

[originally from svn r5219]
2005-01-28 11:39:45 +00:00
Simon Tatham
f70efc5cc6 Support for falling back through the list of addresses returned from
a DNS lookup, whether they're IPv4, v6 or a mixture of both.

[originally from svn r5119]
[this svn revision also touched putty-wishlist]
2005-01-16 14:29:34 +00:00
Simon Tatham
e7b53c3ad5 Servers announcing themselves as `Sun_SSH_1.0' apparently cannot
deal with rekeys at all: they totally ignore mid-session KEXINIT
sent by the client. Hence, a new bug entry so we don't try it.

[originally from svn r5092]
2005-01-11 10:37:55 +00:00
Owen Dunn
06434ffc71 New function ltime() returns a struct tm of the current local time.
Fixes crashes when time() returns (time_t)-1 on Windows by using the
Win32 GetLocalTime() function.  (The Unix implementation still just 
uses time() and localtime().)

[originally from svn r5086]
2005-01-09 14:27:48 +00:00
Simon Tatham
c57e9f0672 For local and dynamic port forwardings (i.e. the ones which listen
on a local port), the `Auto' protocol option on the Tunnels panel
should always produce a port you can connect to in _either_ of IPv4
and v6, because the aim is for the user not to have to know or care
which one they're using. This was not the case on Windows, and now
is. Also, updated the docs to give more detail on issues like this.

[originally from svn r5083]
2005-01-08 14:45:26 +00:00
Simon Tatham
79629c729c Cleanups to sk_namelookup(). In particular, it now doesn't segfault
if you explicitly specify IPv6 and then try to look up a hostname
which doesn't have an IPv6 address.

[originally from svn r5082]
2005-01-08 14:02:06 +00:00
Simon Tatham
b93e12d477 It's a new year!
[originally from svn r5061]
[this svn revision also touched putty-website]
2005-01-02 09:19:14 +00:00
Simon Tatham
b66b93034d A couple of people have pointed out that the local variable
`reading' in this file is not reliably initialised.

[originally from svn r5054]
2004-12-31 19:06:20 +00:00
Simon Tatham
6daf6faede Integrate unfix.org's IPv6 patches up to level 10, with rather a lot
of polishing to bring them to what I think should in principle be
release quality. Unlike the unfix.org patches themselves, this
checkin enables IPv6 by default; if you want to leave it out, you
have to build with COMPAT=-DNO_IPV6.

I have tested that this compiles on Visual C 7 (so the nightlies
_should_ acquire IPv6 support without missing a beat), but since I
don't have IPv6 set up myself I haven't actually tested that it
_works_. It still seems to make correct IPv4 connections, but that's
all I've been able to verify for myself. Further testing is needed.

[originally from svn r5047]
[this svn revision also touched putty-wishlist]
2004-12-30 16:45:11 +00:00
Simon Tatham
7573f3733f Stray // comments.
[originally from svn r5046]
2004-12-30 15:29:38 +00:00
Simon Tatham
b0bf176dfb 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.

[originally from svn r5040]
[r5031 == d77102a8d5]
2004-12-29 12:32:25 +00:00
Simon Tatham
340afa2733 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.

[originally from svn r5035]
[this svn revision also touched putty-wishlist]
2004-12-28 16:46:30 +00:00
Jacob Nevins
30896d650e Basic configurability for client-initiated rekeys.
[originally from svn r5027]
2004-12-24 13:39:32 +00:00
Jacob Nevins
3c98d6e60d 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).

[originally from svn r5022]
2004-12-23 02:24:07 +00:00
Jacob Nevins
f13f9f6420 Fix potential access of freed data (only if we couldn't create the
second of two registry keys, so pretty unlikely).

[originally from svn r5021]
2004-12-22 23:17:02 +00:00
Jacob Nevins
4cae179ff8 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.)

[originally from svn r5014]
[r4917 == e4e10e494b]
2004-12-19 23:37:30 +00:00
Jacob Nevins
2a69c4e0fa Correct number of configurable colours (NCFGCOLOURS) to match reality
(leftover from `256-colours', r4917).

[originally from svn r5013]
[r4917 == e4e10e494b]
2004-12-19 23:15:17 +00:00
Jacob Nevins
a27ce0492b Fix line cursor colours (fallout from `256-colours'), on both Windows and Unix.
[originally from svn r5012]
2004-12-19 22:37:05 +00:00
Simon Tatham
6c81ee6706 General mechanism for ensuring a dodgy SFTP server can't return
malicious filenames via FXP_READDIR.

[originally from svn r4995]
2004-12-16 19:36:47 +00:00
Simon Tatham
f1585f8f46 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.

[originally from svn r4993]
2004-12-16 19:15:38 +00:00
Jacob Nevins
a2e01a5604 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.

[originally from svn r4988]
[this svn revision also touched putty-wishlist]
2004-12-16 15:22:36 +00:00
Simon Tatham
89f4cf6a0a 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).

[originally from svn r4987]
2004-12-16 15:01:43 +00:00
Owen Dunn
7e7aec0ca4 Nitpick, close bracket.
[originally from svn r4926]
2004-11-29 16:58:02 +00:00
Jacob Nevins
96a5923cc3 Briefly document the "CP866" manual-entry feature on Windows in the dialog
itself (since we have a bit of room).

[originally from svn r4922]
2004-11-29 09:23:11 +00:00
Simon Tatham
e4e10e494b Implement xterm 256-colour mode.
[originally from svn r4917]
[this svn revision also touched putty-wishlist]
2004-11-28 15:13:34 +00:00
Simon Tatham
8c69ba0672 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!

[originally from svn r4913]
2004-11-27 19:56:38 +00:00
Simon Tatham
9fc67313fb Changes in startup order to ensure any subsystem which might attempt
to schedule timers is not started until after hwnd is initialised.

[originally from svn r4912]
2004-11-27 19:41:24 +00:00
Simon Tatham
92f3b101f5 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.

[originally from svn r4911]
2004-11-27 19:34:45 +00:00
Simon Tatham
7ecf13564a 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).

[originally from svn r4906]
[this svn revision also touched putty-wishlist]
2004-11-27 13:20:21 +00:00
Jacob Nevins
4f6e453530 Add missing backslash in "Unable to create registry key" messages.
[originally from svn r4855]
2004-11-20 19:07:34 +00:00
Jacob Nevins
693f062397 UI tweak from Malcolm Rowe: set IDM_VIEWKEYS as the default menu item and use
that mechanism to invoke it on double-click; this emboldens it in the right-
click menu.

[originally from svn r4851]
2004-11-20 18:29:58 +00:00
Jacob Nevins
739de21c6d console_get_line() returns failure iff console_batch_mode is set, whereas
before is would return success and the empty string. IMO this makes `-batch'
much more useful; before, utilities such as Plink in `-batch' mode would
attempt to plough on using empty strings for usernames, passwords, and so on.

[originally from svn r4832]
2004-11-19 21:05:31 +00:00
Simon Tatham
3a7fbd292a Fix Windows installer script: the paths were wrong after the
directory reorganisation, and also the EOL style needs to be CRLF or
Inno Setup gets upset.

[originally from svn r4793]
2004-11-16 23:26:22 +00:00
Simon Tatham
cb45b9cc25 Now that we have Subversion's file renaming ability, it's time at
long last to move all the Windows-specific source files down into a
`windows' subdirectory. Only platform-specific files remain at the
top level. With any luck this will act as a hint to anyone still
contemplating sending us a Windows-centric patch...

[originally from svn r4792]
2004-11-16 22:14:56 +00:00