else
#endif
{
- s->sock_timeout = state->defaulttimeout;
- if (state->defaulttimeout >= 0) {
+ s->sock_timeout = _Py_atomic_load_int64_relaxed(&state->defaulttimeout);
+ if (s->sock_timeout >= 0) {
if (internal_setblocking(s, 0) == -1) {
return -1;
}
socket_getdefaulttimeout(PyObject *self, PyObject *Py_UNUSED(ignored))
{
socket_state *state = get_module_state(self);
- if (state->defaulttimeout < 0) {
+ PyTime_t timeout = _Py_atomic_load_int64_relaxed(&state->defaulttimeout);
+ if (timeout < 0) {
Py_RETURN_NONE;
}
else {
- double seconds = PyTime_AsSecondsDouble(state->defaulttimeout);
+ double seconds = PyTime_AsSecondsDouble(timeout);
return PyFloat_FromDouble(seconds);
}
}
return NULL;
socket_state *state = get_module_state(self);
- state->defaulttimeout = timeout;
+ _Py_atomic_store_int64_relaxed(&state->defaulttimeout, timeout);
Py_RETURN_NONE;
}