[PATCH] allow non blocking http_receive_result
Alexander Malysh <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi all, attached patch allows http_receive_result to be non blocking if requested. It allow us to start only one thread for http client side. any objections? Thanks, Alex
http-result-nb.patch
(text/plain, 1.6 KB)
=== gwlib/http.c
==================================================================
--- gwlib/http.c (revision 207)
+++ gwlib/http.c (local)
@@ -1656,13 +1656,16 @@
}
-void *http_receive_result(HTTPCaller *caller, int *status, Octstr **final_url,
- List **headers, Octstr **body)
+void *http_receive_result_real(HTTPCaller *caller, int *status, Octstr **final_url,
+ List **headers, Octstr **body, int blocking)
{
HTTPServer *trans;
void *request_id;
- trans = gwlist_consume(caller);
+ if (blocking == 0)
+ trans = gwlist_extract_first(caller);
+ else
+ trans = gwlist_consume(caller);
if (trans == NULL)
return NULL;
=== gwlib/http.h
==================================================================
--- gwlib/http.h (revision 207)
+++ gwlib/http.h (local)
@@ -352,9 +352,12 @@
* (the one passed to http_start request if non-NULL) or NULL if
* http_caller_signal_shutdown has been called and there are no queued results.
*/
-void *http_receive_result(HTTPCaller *caller, int *status, Octstr **final_url,
- List **headers, Octstr **body);
+void *http_receive_result_real(HTTPCaller *caller, int *status, Octstr **final_url,
+ List **headers, Octstr **body, int blocking);
+/* old compatibility mode, always blocking */
+#define http_receive_result(caller, status, final_url, headers, body) \
+ http_receive_result_real(caller, status, final_url, headers, body, 1);
/***********************************************************************
* HTTP server interface.