Details
-
Bug
-
Resolution: Done
-
P2: Important
-
4.8.5, 5.2.0
-
None
-
BlackBerry
Description
Custom implementation of virtual int QEventDispatcherBlackberry::select(...) function in qeventdispatcher_blackberry.cpp registers all the socket notifiers. The waitForReadyRead() function calls qt_safe_select() instead. It leads to erasing socket fds registered by all previous calls of QEventDispatcherBlackberry::registerSocketNotifier(...) and the readyRead() signal is not emitted any more after waitForReadyRead().
Funny thing is that writing of any data to socket makes read notification working again. Current QT implementation of TCP socket write() also unregister write socket notifier before write and register it again afterward. Registering of write notifier re-register also the read one.
The bug can be reproduced in attached example.