diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2018-11-06 14:15:43 +0000 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2018-11-21 23:06:12 +0000 |
commit | a2e6e0ea0e947954836b27572e753c7f95e5a1f4 (patch) | |
tree | 5314f62c8e903b4799f253b8c1ef9a77a60964b5 /include/git2 | |
parent | 8ee1009874d11a61ccd4b89322432c3633b4cc1f (diff) | |
download | libgit2-a2e6e0ea0e947954836b27572e753c7f95e5a1f4.tar.gz |
transport: allow cred/cert callbacks to return GIT_PASSTHROUGHethomson/defer_cert_cred_cb
Allow credential and certificate checking callbacks to return
GIT_PASSTHROUGH, indicating that they do not want to act.
Introduce this to support in both the http and ssh callbacks.
Additionally, enable the same mechanism for certificate validation.
This is most useful to disambiguate any meaning in the publicly exposed
credential and certificate functions (`git_transport_smart_credentials`
and `git_transport_smart_certificate_check`) but it may be more
generally useful for callers to be able to defer back to libgit2.
Diffstat (limited to 'include/git2')
-rw-r--r-- | include/git2/errors.h | 2 | ||||
-rw-r--r-- | include/git2/types.h | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/include/git2/errors.h b/include/git2/errors.h index b0ce45fe5..2c0ac1c71 100644 --- a/include/git2/errors.h +++ b/include/git2/errors.h @@ -52,7 +52,7 @@ typedef enum { GIT_EDIRECTORY = -23, /**< The operation is not valid for a directory */ GIT_EMERGECONFLICT = -24, /**< A merge conflict exists and cannot continue */ - GIT_PASSTHROUGH = -30, /**< Internal only */ + GIT_PASSTHROUGH = -30, /**< A user-configured callback refused to act */ GIT_ITEROVER = -31, /**< Signals end of iteration with iterator */ GIT_RETRY = -32, /**< Internal only */ GIT_EMISMATCH = -33, /**< Hashsum mismatch in object */ diff --git a/include/git2/types.h b/include/git2/types.h index 607a62a5a..d6af602ab 100644 --- a/include/git2/types.h +++ b/include/git2/types.h @@ -330,6 +330,9 @@ typedef struct { * this certificate is valid * @param host Hostname of the host libgit2 connected to * @param payload Payload provided by the caller + * @return 0 to proceed with the connection, < 0 to fail the connection + * or > 0 to indicate that the callback refused to act and that + * the existing validity determination should be honored */ typedef int (*git_transport_certificate_check_cb)(git_cert *cert, int valid, const char *host, void *payload); |