Browse Source

split setting url from connecting

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Felix Fietkau 10 years ago
parent
commit
2b80c26890
2 changed files with 19 additions and 21 deletions
  1. 17 14
      uclient.c
  2. 2 7
      uclient.h

+ 17 - 14
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)

+ 2 - 7
uclient.h

@@ -58,13 +58,8 @@ struct uclient_cb {
 struct uclient *uclient_new(const char *url, const char *auth_str, const struct uclient_cb *cb);
 void uclient_free(struct uclient *cl);
 
-int uclient_connect_url(struct uclient *cl, const char *url_str);
-
-static inline int uclient_connect(struct uclient *cl)
-{
-	return uclient_connect_url(cl, NULL);
-}
-
+int uclient_set_url(struct uclient *cl, const char *url_str);
+int uclient_connect(struct uclient *cl);
 
 int uclient_read(struct uclient *cl, char *buf, int len);
 int uclient_write(struct uclient *cl, char *buf, int len);