1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-10 01:48:00 +00:00
putty-source/unix
Simon Tatham de38a4d826 Pageant: new asynchronous internal APIs.
This is a pure refactoring: no functional change expected.

This commit introduces two new small vtable-style APIs. One is
PageantClient, which identifies a particular client of the Pageant
'core' (meaning the code that handles each individual request). This
changes pageant_handle_msg into an asynchronous operation: you pass in
an agent request message and an identifier, and at some later point,
the got_response method in your PageantClient will be called with the
answer (and the same identifier, to allow you to match requests to
responses). The trait vtable also contains a logging system.

The main importance of PageantClient, and the reason why it has to
exist instead of just passing pageant_handle_msg a bare callback
function pointer and context parameter, is that it provides robustness
if a client stops existing while a request is still pending. You call
pageant_unregister_client, and any unfinished requests associated with
that client in the Pageant core will be cleaned up, so that you're
guaranteed that after the unregister operation, no stray callbacks
will happen with a stale pointer to that client.

The WM_COPYDATA interface of Windows Pageant is a direct client of
this API. The other client is PageantListener, the system that lives
in pageant.c and handles stream-based agent connections for both Unix
Pageant and the new Windows named-pipe IPC. More specifically, each
individual connection to the listening socket is a separate
PageantClient, which means that if a socket is closed abruptly or
suffers an OS error, that client can be unregistered and any pending
requests cancelled without disrupting other connections.

Users of PageantListener have a second client vtable they can use,
called PageantListenerClient. That contains _only_ logging facilities,
and at the moment, only Unix Pageant bothers to use it (and even that
only in debugging mode).

Finally, internally to the Pageant core, there's a new trait called
PageantAsyncOp which describes an agent request in the process of
being handled. But at the moment, it has only one trivial
implementation, which is handed the full response message already
constructed, and on the next toplevel callback, passes it back to the
PageantClient.
2020-01-25 18:05:39 +00:00
..
configure Move the Unix configure script up to the top level. 2014-02-22 18:01:32 +00:00
gtkapp.c Move all extern declarations into header files. 2018-11-03 13:47:29 +00:00
gtkask.c Refactor 'struct context *ctx = &actx' pattern. 2019-12-24 13:47:46 +00:00
gtkcfg.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkcols.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkcols.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkcomm.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkcompat.h gtkcompat.h: fix GTK1 implementation of ref_sink. 2019-11-02 08:26:14 +00:00
gtkdlg.c New functions to shrink a strbuf. 2020-01-21 20:24:04 +00:00
gtkfont.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
gtkfont.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkmain.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkmisc.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkmisc.h Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkwin.c Refactor 'struct context *ctx = &actx' pattern. 2019-12-24 13:47:46 +00:00
osxlaunch.c osxlaunch: stop setting DYLD_LIBRARY_PATH. 2017-12-20 10:04:02 +00:00
procnet.c Add a /proc/net magic authenticator. 2019-03-31 10:35:10 +01:00
pterm.bundle OS X makefile: stop depending on JHBUILD_PREFIX. 2017-11-26 11:45:48 +00:00
pterm.plist Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
putty.bundle OS X makefile: stop depending on JHBUILD_PREFIX. 2017-11-26 11:45:48 +00:00
putty.plist Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
unix.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
ux_x11.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxagentc.c Fix double-free in remote->local forwardings. 2020-01-14 19:52:54 +00:00
uxagentsock.c Close standard handles in watchdog subprocesses. 2018-10-21 10:16:16 +01:00
uxcfg.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxcons.c Introduce and use strbuf_chomp. 2020-01-22 22:30:26 +00:00
uxfdsock.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxgen.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxgss.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxmisc.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxnet.c New functions to shrink a strbuf. 2020-01-21 20:24:04 +00:00
uxnogtk.c Include the compile-time GTK version in the build info. 2017-02-15 19:32:42 +00:00
uxnoise.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxpeer.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxpgnt.c Pageant: new asynchronous internal APIs. 2020-01-25 18:05:39 +00:00
uxplink.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxpoll.c uxpoll.c: cope with missing #defines in poll.h. 2019-03-26 18:44:19 +00:00
uxprint.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxproxy.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxpterm.c Label random-noise sources with an enum of ids. 2019-01-23 22:36:17 +00:00
uxpty.c uxpty: remove redundant signal list. (NFC) 2020-01-01 15:47:37 +00:00
uxputty.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxsel.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxser.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxserver.c Rename all public/private key load/save functions. 2020-01-09 19:57:35 +00:00
uxsftp.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxsftpserver.c Add an autoconf test and workaround for futimes(3). 2019-03-26 18:44:19 +00:00
uxshare.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxsignal.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxstore.c New functions to shrink a strbuf. 2020-01-21 20:24:04 +00:00
uxucs.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxutils.c Check for auxv.h and hwcap.h before including them. 2019-03-26 19:19:28 +00:00
x11misc.c New array-growing macros: sgrowarray and sgrowarrayn. 2019-02-28 20:15:38 +00:00
x11misc.h Basic support for running under GDK Wayland back end. 2018-05-09 09:21:27 +01:00
xkeysym.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
xpmptcfg.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
xpmpterm.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
xpmpucfg.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
xpmputty.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00