Merge origin/master
[src/app-framework-binder.git] / src / session.c
index f9f24d2..9e25c27 100644 (file)
@@ -330,7 +330,7 @@ STATIC void ctxUuidFreeCB (AFB_clientCtx *client) {
             if (client->contexts[idx] != NULL) {               
                 freeCtxCB = client->plugins[idx]->freeCtxCB;
                 if (freeCtxCB == NULL) free (client->contexts[idx]); 
-                else if (freeCtxCB != (void*)-1) freeCtxCB(client->contexts[idx], client->plugins[idx]->handle, client->uuid); 
+                else if (freeCtxCB != (void*)-1) freeCtxCB(client->contexts[idx], plugins[idx]->handle, client->uuid); 
             }
         }
     }
@@ -466,6 +466,7 @@ PUBLIC AFB_clientCtx *ctxClientGet (AFB_request *request, int idx) {
                 clientCtx=NULL;
             } else {
                 request->context=clientCtx->contexts[idx];
+                request->handle  = clientCtx->plugins[idx]->handle;
                 request->uuid= uuid;
                 return (clientCtx);            
             }
@@ -493,6 +494,7 @@ PUBLIC AFB_clientCtx *ctxClientGet (AFB_request *request, int idx) {
     
     // if (verbose) fprintf (stderr, "ctxClientGet New uuid=[%s] token=[%s] timestamp=%d\n", clientCtx->uuid, clientCtx->token, clientCtx->timeStamp);      
     request->context = clientCtx->contexts[idx];
+    request->handle  = clientCtx->plugins[idx]->handle;
     request->uuid=clientCtx->uuid;
     return(clientCtx);
 }
@@ -523,6 +525,7 @@ PUBLIC AFB_error ctxTokenReset (AFB_clientCtx *clientCtx, AFB_request *request)
     int ret;
 
     if (clientCtx == NULL) return AFB_EMPTY;
+    //if (verbose) fprintf (stderr, "ctxClientReset New uuid=[%s] token=[%s] timestamp=%d\n", clientCtx->uuid, clientCtx->token, clientCtx->timeStamp);      
     
     // Search for an existing client with the same UUID
     clientCtx = ctxStoreSearch (clientCtx->uuid);
@@ -580,6 +583,10 @@ PUBLIC AFB_error ctxTokenRefresh (AFB_clientCtx *clientCtx, AFB_request *request
     // Old token was valid let's regenerate a new one    
     uuid_generate(newuuid);         // create a new UUID
     uuid_unparse_lower(newuuid, clientCtx->token);
+    
+    // keep track of time for session timeout and further clean up
+    clientCtx->timeStamp=time(NULL);
+    
     return (AFB_SUCCESS);    
     
 }