summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Feuer <mfeuer@jaguarlandrover.com>2015-06-26 12:29:06 -0700
committerMagnus Feuer <mfeuer@jaguarlandrover.com>2015-06-26 12:29:06 -0700
commit0bb050c3570f13feefe5c665195d388525081d6b (patch)
tree2215f9be3cf5ccc92a3fce486828948c11fbf3b6
parent67ce1910328c6d9085a0b764d86bdfff3255f6c7 (diff)
downloadrvi_core-0bb050c3570f13feefe5c665195d388525081d6b.tar.gz
release-next: Each outbound message is now run in its own process, alleviating nested callback deadlocks
-rw-r--r--components/service_edge/src/service_edge_rpc.erl30
1 files changed, 8 insertions, 22 deletions
diff --git a/components/service_edge/src/service_edge_rpc.erl b/components/service_edge/src/service_edge_rpc.erl
index ccac474..fb79073 100644
--- a/components/service_edge/src/service_edge_rpc.erl
+++ b/components/service_edge/src/service_edge_rpc.erl
@@ -638,28 +638,14 @@ forward_message_to_local_service(URL,SvcName, Parameters, _CompSpec) ->
%% Deliver the message to the local service, which can
%% be either a wse websocket, or a regular HTTP JSON-RPC call
- case rvi_common:get_request_result(
- dispatch_to_local_service(URL,
- message,
- {struct, [ { service_name, LocalSvcName },
- { parameters, Parameters }]})) of
-
- %% Request delivered.
- %% -1 is transaction ID.
- { ok, _Result } ->
- [ ok, -1 ];
-
- %% status returned was an error code.
- { Other, _Result } ->
- ?warning("service_edge:forward_to_local(): ~p:~p Failed: ~p.",
- [URL, SvcName, Other]),
- [not_found, -1];
-
- Other ->
- ?warning("service_edge:forward_to_local(): ~p:~p Unknown error: ~p.",
- [URL, SvcName, Other]),
- [internal, -1]
- end.
+ spawn(fun() ->
+ rvi_common:get_request_result(
+ dispatch_to_local_service(URL,
+ message,
+ {struct, [ { service_name, LocalSvcName },
+ { parameters, Parameters }]}))
+ end),
+ [ ok, -1 ].
announce_service_availability(Available, SvcName) ->