summaryrefslogtreecommitdiff
path: root/uclient.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-03-29 14:49:59 +0100
committerFelix Fietkau <nbd@openwrt.org>2014-03-29 14:49:59 +0100
commit2b80c2689068258eab5e94f92a6d1e7b7550094b (patch)
treed4b47a8d2d3fba149b8b58052a1c362e2debddf1 /uclient.c
parent4a3a8cb176aa932ed4bc88354fad76d91764c65f (diff)
downloaduclient-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.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/uclient.c b/uclient.c
index 2e3d3ae..5b71bf4 100644
--- a/uclient.c
+++ b/uclient.c
@@ -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)