From bb5dd7af3cb715e707f367ee7fd462de12c84f8e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Bollo?= Date: Sat, 5 Jan 2019 21:08:33 +0100 Subject: [PATCH] afb-proto-ws: Serialize incoming message MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Enforce serialisation for a connection Bug-AGL: SPEC-2089 Change-Id: Id9f261b7cc02fda78922dc511856c34b7c5bf56d Signed-off-by: José Bollo --- src/afb-proto-ws.c | 7 +++---- src/afb-proto-ws.h | 2 +- src/afb-stub-ws.c | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/afb-proto-ws.c b/src/afb-proto-ws.c index f74869cf..f4070860 100644 --- a/src/afb-proto-ws.c +++ b/src/afb-proto-ws.c @@ -35,7 +35,6 @@ #include "afb-ws.h" #include "afb-msg-json.h" #include "afb-proto-ws.h" -#include "jobs.h" #include "fdev.h" #include "verbose.h" @@ -161,7 +160,7 @@ struct afb_proto_ws void (*on_hangup)(void *closure); /* queuing facility for processing messages */ - int (*queuing)(void (*process)(int s, void *c), void *closure); + int (*queuing)(struct afb_proto_ws *proto, void (*process)(int s, void *c), void *closure); }; /******************* streaming objects **********************************/ @@ -348,7 +347,7 @@ static void queue_message_processing(struct afb_proto_ws *protows, char *data, s binary->rb.head = data; binary->rb.end = data + size; if (!protows->queuing - || protows->queuing(processing, binary) < 0) + || protows->queuing(protows, processing, binary) < 0) processing(0, binary); return; } @@ -1068,7 +1067,7 @@ void afb_proto_ws_on_hangup(struct afb_proto_ws *protows, void (*on_hangup)(void protows->on_hangup = on_hangup; } -void afb_proto_ws_set_queuing(struct afb_proto_ws *protows, int (*queuing)(void (*)(int,void*), void*)) +void afb_proto_ws_set_queuing(struct afb_proto_ws *protows, int (*queuing)(struct afb_proto_ws*, void (*)(int,void*), void*)) { protows->queuing = queuing; } diff --git a/src/afb-proto-ws.h b/src/afb-proto-ws.h index b5f84e9e..d797cb6f 100644 --- a/src/afb-proto-ws.h +++ b/src/afb-proto-ws.h @@ -61,7 +61,7 @@ extern int afb_proto_ws_is_server(struct afb_proto_ws *protows); extern void afb_proto_ws_hangup(struct afb_proto_ws *protows); extern void afb_proto_ws_on_hangup(struct afb_proto_ws *protows, void (*on_hangup)(void *closure)); -extern void afb_proto_ws_set_queuing(struct afb_proto_ws *protows, int (*queuing)(void (*)(int,void*), void*)); +extern void afb_proto_ws_set_queuing(struct afb_proto_ws *protows, int (*queuing)(struct afb_proto_ws *, void (*)(int,void*), void*)); extern int afb_proto_ws_client_call(struct afb_proto_ws *protows, const char *verb, struct json_object *args, const char *sessionid, void *request, const char *user_creds); diff --git a/src/afb-stub-ws.c b/src/afb-stub-ws.c index 5dfacb73..7ec2d63d 100644 --- a/src/afb-stub-ws.c +++ b/src/afb-stub-ws.c @@ -646,9 +646,9 @@ static void on_hangup(void *closure) } } -static int enqueue_processing(void (*callback)(int signum, void* arg), void *arg) +static int enqueue_processing(struct afb_proto_ws *proto, void (*callback)(int signum, void* arg), void *arg) { - return jobs_queue(NULL, 0, callback, arg); + return jobs_queue(proto, 0, callback, arg); } /*****************************************************/ -- 2.16.6