From e9d729bf4fe7e6e2fbcc08de2468ae6e42f99b8a Mon Sep 17 00:00:00 2001 From: Stefan Becker Date: Tue, 26 Mar 2013 16:22:15 +0200 Subject: [PATCH] http: add API for HTTP session --- src/core/sipe-http-request.c | 17 +++++++++++++++++ src/core/sipe-http.h | 30 +++++++++++++++++++++++++++--- src/core/sipe-svc.c | 11 +++++------ 3 files changed, 49 insertions(+), 9 deletions(-) diff --git a/src/core/sipe-http-request.c b/src/core/sipe-http-request.c index 168f73d3..75836e50 100644 --- a/src/core/sipe-http-request.c +++ b/src/core/sipe-http-request.c @@ -190,6 +190,16 @@ struct sipe_http_request *sipe_http_request_new(struct sipe_core_private *sipe_p return(req); } +struct sipe_http_session *sipe_http_session_start(void) +{ + return(NULL); +} + +void sipe_http_session_close(struct sipe_http_session *session) +{ + (void)session; +} + void sipe_http_request_cancel(struct sipe_http_request *request) { struct sipe_http_connection *conn = request->connection; @@ -202,6 +212,13 @@ void sipe_http_request_cancel(struct sipe_http_request *request) sipe_http_request_free(conn->public.sipe_private, request); } +void sipe_http_request_session(struct sipe_http_request *request, + const struct sipe_http_session *session) +{ + (void)request; + (void)session; +} + /* Local Variables: mode: c diff --git a/src/core/sipe-http.h b/src/core/sipe-http.h index 0474df6b..559bb8e6 100644 --- a/src/core/sipe-http.h +++ b/src/core/sipe-http.h @@ -32,6 +32,7 @@ /* Forward declarations */ struct sipe_core_private; struct sipe_http_request; +struct sipe_http_session; /** * HTTP response callback @@ -57,11 +58,18 @@ typedef void (sipe_http_response_callback)(struct sipe_core_private *sipe_privat void sipe_http_free(struct sipe_core_private *sipe_private); /** - * Cancel pending HTTP request + * Start HTTP session * - * @param pointer to opaque HTTP request data structure + * @return pointer to opaque HTTP session data structure */ -void sipe_http_request_cancel(struct sipe_http_request *request); +struct sipe_http_session *sipe_http_session_start(void); + +/** + * Close HTTP session + * + * @param session pointer to opaque HTTP session data structure + */ +void sipe_http_session_close(struct sipe_http_session *session); /** * Create HTTP GET request @@ -96,3 +104,19 @@ struct sipe_http_request *sipe_http_request_post(struct sipe_core_private *sipe_ const gchar *content_type, sipe_http_response_callback *callback, gpointer callback_data); + +/** + * Cancel pending HTTP request + * + * @param pointer to opaque HTTP request data structure + */ +void sipe_http_request_cancel(struct sipe_http_request *request); + +/** + * Assign request to HTTP session + * + * @param request pointer to opaque HTTP request data structure + * @param session pointer to opaque HTTP session data structure + */ +void sipe_http_request_session(struct sipe_http_request *request, + const struct sipe_http_session *session); diff --git a/src/core/sipe-svc.c b/src/core/sipe-svc.c index ca292681..b502ffee 100644 --- a/src/core/sipe-svc.c +++ b/src/core/sipe-svc.c @@ -68,7 +68,7 @@ struct sipe_svc { }; struct sipe_svc_session { - HttpSession *session; + struct sipe_http_session *session; }; static void sipe_svc_request_free(struct sipe_core_private *sipe_private, @@ -114,14 +114,14 @@ static void sipe_svc_init(struct sipe_core_private *sipe_private) struct sipe_svc_session *sipe_svc_session_start(void) { struct sipe_svc_session *session = g_new0(struct sipe_svc_session, 1); - session->session = http_conn_session_create(); + session->session = sipe_http_session_start(); return(session); } void sipe_svc_session_close(struct sipe_svc_session *session) { if (session) { - http_conn_session_free(session->session); + sipe_http_session_close(session->session); g_free(session); } } @@ -179,9 +179,6 @@ static gboolean sipe_svc_https_request(struct sipe_core_private *sipe_private, data->auth.user = sipe_private->authuser; data->auth.password = sipe_private->password; - /* keep compiler happy */ - (void)session; - if (body) { data->request = sipe_http_request_post(sipe_private, uri, @@ -199,6 +196,8 @@ static gboolean sipe_svc_https_request(struct sipe_core_private *sipe_private, } if (data->request) { + sipe_http_request_session(data->request, session->session); + data->internal_cb = internal_callback; data->cb = callback; data->cb_data = callback_data; -- 2.11.4.GIT