[sr-dev] git:master:35014d46: http_client Add a function to check if a connection exists to the development API

Olle E. Johansson oej at edvina.net
Thu May 12 21:38:46 CEST 2016


Module: kamailio
Branch: master
Commit: 35014d465152fbd297fc3c2c951f0a24eabcd84a
URL: https://github.com/kamailio/kamailio/commit/35014d465152fbd297fc3c2c951f0a24eabcd84a

Author: Olle E. Johansson <oej at edvina.net>
Committer: Olle E. Johansson <oej at edvina.net>
Date: 2016-05-12T21:10:07+02:00

http_client Add a function to check if a connection exists to the development API

---

Modified: modules/http_client/curl_api.c
Modified: modules/http_client/curl_api.h
Modified: modules/http_client/curlcon.c
Modified: modules/http_client/curlcon.h
Modified: modules/http_client/doc/http_client_devel.xml

---

Diff:  https://github.com/kamailio/kamailio/commit/35014d465152fbd297fc3c2c951f0a24eabcd84a.diff
Patch: https://github.com/kamailio/kamailio/commit/35014d465152fbd297fc3c2c951f0a24eabcd84a.patch

---

diff --git a/modules/http_client/curl_api.c b/modules/http_client/curl_api.c
index c0f8fc5..c0e9d71 100644
--- a/modules/http_client/curl_api.c
+++ b/modules/http_client/curl_api.c
@@ -30,6 +30,7 @@ int bind_httpc_api(httpc_api_t *api)
 	}
 	api->http_connect = curl_con_query_url;
 	api->http_query = http_query;
+	api->http_connection_exists = http_connection_exists;
 
 	return 0;
 }
diff --git a/modules/http_client/curl_api.h b/modules/http_client/curl_api.h
index 236aef6..cbca5e3 100644
--- a/modules/http_client/curl_api.h
+++ b/modules/http_client/curl_api.h
@@ -30,14 +30,17 @@
 
 #include "../../sr_module.h"
 #include "functions.h"
+#include "curlcon.h"
 
 typedef int (*httpcapi_httpconnect_f)(struct sip_msg *msg, const str *connection, const str* _url, str* _result, const char *contenttype, const str* _post);
 typedef int (*httpcapi_httpquery_f)(struct sip_msg* _m, char* _url, str* _dst, char* _post);
+typedef int (*httpcapi_curlcon_exists_f)(str* _name);
 
 
 typedef struct httpc_api {
 	httpcapi_httpconnect_f	http_connect;
 	httpcapi_httpquery_f	http_query;
+	httpcapi_curlcon_exists_f	http_connection_exists;
 } httpc_api_t;
 
 typedef int (*bind_httpc_api_f)(httpc_api_t *api);
diff --git a/modules/http_client/curlcon.c b/modules/http_client/curlcon.c
index aa03fba..b2caa4a 100644
--- a/modules/http_client/curlcon.c
+++ b/modules/http_client/curlcon.c
@@ -124,6 +124,20 @@ unsigned int curl_connection_count()
 }
 
 
+/*! Check if CURL connection exists
+ */
+int http_connection_exists(str *name)
+{
+	curl_con_t *cc;
+
+	if (curl_get_connection(name) != NULL) {
+		return 1;
+	}
+
+	LM_DBG("curl_connection_exists no success in looking for httpcon: [%.*s]\n", name->len, name->s);
+	return 0;
+}
+
 /*! Find CURL connection by name
  */
 curl_con_t* curl_get_connection(str *name)
diff --git a/modules/http_client/curlcon.h b/modules/http_client/curlcon.h
index 0380648..f878258 100644
--- a/modules/http_client/curlcon.h
+++ b/modules/http_client/curlcon.h
@@ -39,6 +39,10 @@ extern curl_con_t *_curl_con_root;
  */
 unsigned int curl_connection_count();
 
+/*! Check if CURL connection exists
+ */
+int http_connection_exists(str *name);
+
 int http_client_load_config(str *config_file);
 
 int curl_parse_param(char *val);
diff --git a/modules/http_client/doc/http_client_devel.xml b/modules/http_client/doc/http_client_devel.xml
index 542f50e..ad06026 100644
--- a/modules/http_client/doc/http_client_devel.xml
+++ b/modules/http_client/doc/http_client_devel.xml
@@ -73,6 +73,19 @@
 		</section>
 		<section>
 			<title>
+			<function moreinfo="none">int http_connection_exists(str *connection)</function>
+			</title>
+			<para>
+			Check if a connection definition exists. Connections are defined as modparam's
+			in the http_client modules.
+			</para>
+			<para>
+			Returns 1 if the connection exists, 0 if a connection with the given name can't
+			be found.
+			</para>
+		</section>
+		<section>
+			<title>
 			<function moreinfo="none">http_query(msg, url, dest, post)</function>
 			</title>
 			<para>




More information about the sr-dev mailing list