diff --git a/include/git2/sys/transport.h b/include/git2/sys/transport.h index 60e38b21a..a395de5ed 100644 --- a/include/git2/sys/transport.h +++ b/include/git2/sys/transport.h @@ -241,6 +241,16 @@ GIT_EXTERN(int) git_transport_smart_certificate_check(git_transport *transport, */ GIT_EXTERN(int) git_transport_smart_credentials(git_cred **out, git_transport *transport, const char *user, int methods); +/** + * Get a copy of the proxy options + * + * The url is copied and must be freed by the caller. + * + * @param out options struct to fill + * @param transport the transport to extract the data from. + */ +GIT_EXTERN(int) git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport); + /* *** End of base transport interface *** *** Begin interface for subtransports for the smart transport *** diff --git a/src/transports/smart.c b/src/transports/smart.c index e4aa26d86..a96fdf6fb 100644 --- a/src/transports/smart.c +++ b/src/transports/smart.c @@ -472,6 +472,12 @@ int git_transport_smart_credentials(git_cred **out, git_transport *transport, co return t->cred_acquire_cb(out, t->url, user, methods, t->cred_acquire_payload); } +int git_transport_smart_proxy_options(git_proxy_options *out, git_transport *transport) +{ + transport_smart *t = (transport_smart *) transport; + return git_proxy_options_dup(out, &t->proxy); +} + int git_transport_smart(git_transport **out, git_remote *owner, void *param) { transport_smart *t;