summaryrefslogtreecommitdiffstats
path: root/src/network/ssl/qsslsocket_openssl.cpp
diff options
context:
space:
mode:
authorShane Kearns <shane.kearns@accenture.com>2011-11-30 13:39:23 (GMT)
committerShane Kearns <shane.kearns@accenture.com>2011-11-30 14:47:43 (GMT)
commit67d146092a6c11f1ca3c622ae0737202ca292a58 (patch)
tree170825dfe25f77557e69b7f77ffba0a442260af4 /src/network/ssl/qsslsocket_openssl.cpp
parent951e46bc21168cb66780f932006ec41b7dfea234 (diff)
downloadQt-67d146092a6c11f1ca3c622ae0737202ca292a58.zip
Qt-67d146092a6c11f1ca3c622ae0737202ca292a58.tar.gz
Qt-67d146092a6c11f1ca3c622ae0737202ca292a58.tar.bz2
Backport SMP safe initialisation of QNetworkConfigurationManager
The original commit in Qt5 uses new atomics API that is not in Qt4. I have replaced with equivalent calls. Also the init/cleanup functions are different, so those are renamed. Reviewed-by: mread Task-number: ou1cimx1#946677 Original commit message follows: Author: Thiago Macieira <thiago@kde.org> Date: Wed Jul 6 00:06:15 2011 +0200 Fix the QNetworkConnectionManagerPrivate initialisation code. The current code was meant to be a thread-safe initialisation that also ran a couple of extra steps. But it wasn't. While it's ok to call qAddPostRoutine(), the call to updateConfigurations() was thread-unsafe. It is possible that another thread got the pointer to the Private before updateConfigurations() finished. So instead protect the initialisation with a mutex. It's possible that the value of the pointer becomes visible to other processors before the other contained values, so use atomics here. To call qAddPostRoutine safely from the main thread, use the trick of deleteLater() (which is thread-safe) in another thread connecting to a slot.
Diffstat (limited to 'src/network/ssl/qsslsocket_openssl.cpp')
0 files changed, 0 insertions, 0 deletions