X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuclient.git;a=blobdiff_plain;f=uclient.h;h=fcd7769e711bb4d1a23b4a72a7d676e01ce2e506;hp=e8214c28008ef7ee3258073dfd94ccfe662baea5;hb=e5f35a424a0b69504b0438cb2c4e709b618e3f81;hpb=438ebb9ce2bfd5cf3ab940667029c27346dc5160 diff --git a/uclient.h b/uclient.h index e8214c2..fcd7769 100644 --- a/uclient.h +++ b/uclient.h @@ -18,6 +18,8 @@ #ifndef __LIBUBOX_UCLIENT_H #define __LIBUBOX_UCLIENT_H +#include + #include #include #include @@ -30,12 +32,32 @@ enum uclient_error_code { UCLIENT_ERROR_CONNECT, UCLIENT_ERROR_SSL_INVALID_CERT, UCLIENT_ERROR_SSL_CN_MISMATCH, + UCLIENT_ERROR_MISSING_SSL_CONTEXT, +}; + +union uclient_addr { + struct sockaddr sa; + struct sockaddr_in sin; + struct sockaddr_in6 sin6; +}; + +struct uclient_url { + const struct uclient_backend *backend; + int prefix; + + const char *host; + const char *port; + const char *location; + + const char *auth; }; struct uclient { const struct uclient_backend *backend; const struct uclient_cb *cb; + union uclient_addr local_addr, remote_addr; + struct uclient_url *url; void *priv; @@ -65,14 +87,17 @@ int uclient_read(struct uclient *cl, char *buf, int len); int uclient_write(struct uclient *cl, char *buf, int len); int uclient_request(struct uclient *cl); +char *uclient_get_addr(char *dest, int *port, union uclient_addr *a); + /* HTTP */ extern const struct uclient_backend uclient_backend_http; +int uclient_http_reset_headers(struct uclient *cl); int uclient_http_set_header(struct uclient *cl, const char *name, const char *value); -int uclient_http_reset_headers(struct uclient *cl, const char *name, const char *value); int uclient_http_set_request_type(struct uclient *cl, const char *type); bool uclient_http_redirect(struct uclient *cl); -int uclient_http_set_ssl_ctx(struct uclient *cl, struct ustream_ssl_ctx *ctx, bool require_validation); +int uclient_http_set_ssl_ctx(struct uclient *cl, const struct ustream_ssl_ops *ops, + struct ustream_ssl_ctx *ctx, bool require_validation); #endif