diff options
author | Felix Fietkau <nbd@openwrt.org> | 2014-03-29 14:49:59 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2014-03-29 14:49:59 +0100 |
commit | 2b80c2689068258eab5e94f92a6d1e7b7550094b (patch) | |
tree | d4b47a8d2d3fba149b8b58052a1c362e2debddf1 /uclient.c | |
parent | 4a3a8cb176aa932ed4bc88354fad76d91764c65f (diff) | |
download | uclient-2b80c2689068258eab5e94f92a6d1e7b7550094b.tar.gz |
split setting url from connecting
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Diffstat (limited to 'uclient.c')
-rw-r--r-- | uclient.c | 31 |
1 files changed, 17 insertions, 14 deletions
@@ -132,27 +132,30 @@ struct uclient *uclient_new(const char *url_str, const char *auth_str, const str return cl; } -int uclient_connect_url(struct uclient *cl, const char *url_str) +int uclient_set_url(struct uclient *cl, const char *url_str) { - struct uclient_url *url = cl->url; const struct uclient_backend *backend = cl->backend; + struct uclient_url *url = cl->url; + + url = uclient_get_url(url_str, NULL); + if (!url) + return -1; - if (url_str) { - url = uclient_get_url(url_str, NULL); - if (!url) - return -1; + if (url->backend != cl->backend) + return -1; - if (url->backend != cl->backend) - return -1; + free(cl->url); + cl->url = url; - free(cl->url); - cl->url = url; + if (backend->update_url) + backend->update_url(cl); - if (backend->update_url) - backend->update_url(cl); - } + return 0; +} - return backend->connect(cl); +int uclient_connect(struct uclient *cl) +{ + return cl->backend->connect(cl); } void uclient_free(struct uclient *cl) |