mirror of
https://github.com/status-im/realm-js.git
synced 2025-02-20 02:18:26 +00:00
Don’t capture the current JS context in the session bind callback (#839)
This commit is contained in:
parent
de3c3e6788
commit
7843e72595
@ -366,7 +366,7 @@ void SyncClass<T>::populate_sync_config(ContextType ctx, ObjectType realm_constr
|
|||||||
Protected<ObjectType> protected_sync(ctx, sync_constructor);
|
Protected<ObjectType> protected_sync(ctx, sync_constructor);
|
||||||
Protected<typename T::GlobalContext> protected_ctx(Context<T>::get_global_context(ctx));
|
Protected<typename T::GlobalContext> protected_ctx(Context<T>::get_global_context(ctx));
|
||||||
|
|
||||||
EventLoopDispatcher<SyncBindSessionHandler> bind([=](const std::string& path, const realm::SyncConfig& config, std::shared_ptr<SyncSession>) {
|
EventLoopDispatcher<SyncBindSessionHandler> bind([protected_ctx, protected_sync](const std::string& path, const realm::SyncConfig& config, std::shared_ptr<SyncSession>) {
|
||||||
HANDLESCOPE
|
HANDLESCOPE
|
||||||
if (config.user->is_admin()) {
|
if (config.user->is_admin()) {
|
||||||
// FIXME: This log-in callback is called while the object store still holds some sync-related locks.
|
// FIXME: This log-in callback is called while the object store still holds some sync-related locks.
|
||||||
@ -379,11 +379,11 @@ void SyncClass<T>::populate_sync_config(ContextType ctx, ObjectType realm_constr
|
|||||||
thread.detach();
|
thread.detach();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ObjectType user_constructor = Object::validated_get_object(ctx, protected_sync, std::string("User"));
|
ObjectType user_constructor = Object::validated_get_object(protected_ctx, protected_sync, std::string("User"));
|
||||||
FunctionType authenticate = Object::validated_get_function(ctx, user_constructor, std::string("_authenticateRealm"));
|
FunctionType authenticate = Object::validated_get_function(protected_ctx, user_constructor, std::string("_authenticateRealm"));
|
||||||
|
|
||||||
ValueType arguments[3];
|
ValueType arguments[3];
|
||||||
arguments[0] = create_object<T, UserClass<T>>(ctx, new SharedUser(config.user));
|
arguments[0] = create_object<T, UserClass<T>>(protected_ctx, new SharedUser(config.user));
|
||||||
arguments[1] = Value::from_string(protected_ctx, path.c_str());
|
arguments[1] = Value::from_string(protected_ctx, path.c_str());
|
||||||
arguments[2] = Value::from_string(protected_ctx, config.realm_url.c_str());
|
arguments[2] = Value::from_string(protected_ctx, config.realm_url.c_str());
|
||||||
Function::call(protected_ctx, authenticate, 3, arguments);
|
Function::call(protected_ctx, authenticate, 3, arguments);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user