transport: provide a getter for the proxy options

As with the callbacks, third-party implementations of smart subtransports cannot
reach into the opaque struct and thus cannot know what options the user set.

Add a getter for these options to copy the proxy options into something external
implementors can use.
This commit is contained in:
Carlos Martín Nieto 2017-04-17 13:03:03 +02:00
parent f9d3b0d05f
commit 5c76096046
2 changed files with 16 additions and 0 deletions

View File

@ -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); 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 *** *** End of base transport interface ***
*** Begin interface for subtransports for the smart transport *** *** Begin interface for subtransports for the smart transport ***

View File

@ -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); 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) int git_transport_smart(git_transport **out, git_remote *owner, void *param)
{ {
transport_smart *t; transport_smart *t;