@@ -6150,6 +6150,18 @@ sslmodule_init_strings(PyObject *module)
61506150 return 0 ;
61516151}
61526152
6153+ static int
6154+ sslmodule_init_lock (PyObject * module )
6155+ {
6156+ _sslmodulestate * state = get_ssl_state (module );
6157+ state -> keylog_lock = PyThread_allocate_lock ();
6158+ if (state -> keylog_lock == NULL ) {
6159+ PyErr_NoMemory ();
6160+ return -1 ;
6161+ }
6162+ return 0 ;
6163+ }
6164+
61536165static PyModuleDef_Slot sslmodule_slots [] = {
61546166 {Py_mod_exec , sslmodule_init_types },
61556167 {Py_mod_exec , sslmodule_init_exceptions },
@@ -6158,9 +6170,8 @@ static PyModuleDef_Slot sslmodule_slots[] = {
61586170 {Py_mod_exec , sslmodule_init_constants },
61596171 {Py_mod_exec , sslmodule_init_versioninfo },
61606172 {Py_mod_exec , sslmodule_init_strings },
6161- // XXX gh-103092: fix isolation.
6162- {Py_mod_multiple_interpreters , Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED },
6163- //{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
6173+ {Py_mod_exec , sslmodule_init_lock },
6174+ {Py_mod_multiple_interpreters , Py_MOD_PER_INTERPRETER_GIL_SUPPORTED },
61646175 {0 , NULL }
61656176};
61666177
@@ -6219,6 +6230,8 @@ static void
62196230sslmodule_free (void * m )
62206231{
62216232 sslmodule_clear ((PyObject * )m );
6233+ _sslmodulestate * state = get_ssl_state (m );
6234+ PyThread_free_lock (state -> keylog_lock );
62226235}
62236236
62246237static struct PyModuleDef _sslmodule_def = {
0 commit comments