hs-clientmanager: Do not store always the client context 44/26044/3
authorMarius Vlad <marius.vlad@collabora.com>
Mon, 15 Feb 2021 11:52:58 +0000 (13:52 +0200)
committerMarius Vlad <marius.vlad@collabora.com>
Wed, 3 Mar 2021 14:44:54 +0000 (16:44 +0200)
This incorrectly assumed that by re-using the same client context we
could gain access to the *current* client's context. But as we have
seen, the fake subscribe mechanism isn't really capable of doing that,
requiring a direct connection from the client to have that in.

Storing the client context make sense to happen only when we can create
it (with a real subscribe verb) and not *re-use* it, and assign it to
other applications. This basically reverts it to the way it was
previously.

Bug-AGL: SPEC-3796

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I643dfe91049efa8937c9a8a21eb6fbb366b3fdcc

src/hs-clientmanager.cpp

index beac816..e880c62 100644 (file)
@@ -94,9 +94,10 @@ HS_ClientCtxt* HS_ClientManager::createClientCtxt(afb_req_t req, std::string app
         ctxt = new HS_ClientCtxt(appid);
         afb_req_session_set_LOA(req, 1);
         afb_req_context_set(req, ctxt, cbRemoveClientCtxt);
+
+       appid2ctxt[appid] = ctxt;
     }
 
-    appid2ctxt[appid] = ctxt;
     return ctxt;
 }