- 
    Task 
- 
    Resolution: Done
- 
    P1: Critical 
- 
    None
Scope
- Use RSocket and friends instead of OpenC Posix functions to help with performance, bugs and bearer management problems.
- Implement a QAbstractSocketEngine for Symbian
- Look into Qt Bearer Management code, needs to be ported too
- Look at native system proxy for Symbian code- done and in 4.7.2 already
- Reduce the dependency to OpenC
Test plan
- Everything in tests/auto/network.pro
- qtcpsocket (in gui.pro)
- We also need to identify some network using tests in QML / Webkit to verify higher layer users of QtNetwork
- Platforms: 5.0 (5800), s3 (N8), winscw emulator?
	- SDK emulator is known broken as the winsock shim doesn't support non blocking IO
		- PDK / nokia RND emulator could use the real TCP/IP stack
- Nokia Qt SDK doesn't include WINSCW emulator
 
 
- SDK emulator is known broken as the winsock shim doesn't support non blocking IO
		
- We need to regularly test & compare with previous results & and compare with reference open C implementation
	- WLAN testing is inherently unstable
- CI infrastructure can't help us - it doesn't test symbian except compilation.
- Shane has some lashed together with gaffa tape scripts + runonphone which was used to do this on file engine branch
- open C reference should probably be master + test fixes, but check test fixes don't regress open C. Also we want to use the same version of master in both places.
 
- we do need CI to check we aren't breaking other platforms (does it have a mode that only runs tests?)
Removed features
- socket handles can't be used with open C functions
- we won't adopt open C sockets
Probable Symbian Bugs
- WLAN connections drop with KErrNotReady (-18) socket error during active TCP connections, which makes tests unstable
- if client closes a localhost socket, before the server accepts it, then the accept succeeds but select never completes
	- qtcpsocket, disconnectWhileConnectingNoEventLoop test case reproduces this every time
- yielding the client thread so the accept comes before close makes the test pass
 
- First outgoing UDP packet is always dropped if socket doesn't have an explicit RConnection but a connection is up
	- All outgoing UDP packets are dropped while starting a connection implicitly (this isn't a bug, but a feature)
- UDP packet drops have KErrWouldBlock on S^1 but KErrNone on S^3
 
Compatibility issues that aren't really bugs
- localhost resolves to IPv6 ::1 rather than 127.0.0.1
- binding to any address returns IPv6 Any (0:0:0:0:0:0:0:0) from localname rather than IPv4 Any (0.0.0.0)
- is required for
- 
                    QTBUG-16441 Symbian: Move QLocalSocket code away from OpenC/PIPS -         
- Closed
 
-         
- 
                    QTBUG-13645 Symbian: Connecting to network causes QML application framerate to drop considerably -         
- Closed
 
-         
- 
                    QTBUG-5153 Problem with QTcpServer or QTcpSocket -         
- Closed
 
-         
- 
                    QTBUG-14100 QNativeSocketEnginePrivate::nativePendingDatagramSize for Symbian doesn't handle error for ioctl in correct way -         
- Closed
 
-         
- 
                    QTBUG-14304 QTcpSocket fails to read data on Symbian wk36 SDK -         
- Closed
 
-         
- 
                    QTBUG-14352 QNetworkAccessManager Connection refused randomly -         
- Closed
 
-         
- 
                    QTBUG-15359 More than one QNetworkAccessManager in same process on Symbian does not work properly -         
- Closed
 
-         
- 
                    QTBUG-15858 [Qt Message] exception on 3 [will close the socket handle - hack] -         
- Closed
 
-         
- 
                    QTBUG-16901 Symbian "QNetworkReplyImpl::_q_startOperation was called more than once" -         
- Closed
 
-         
- 
                    QTBUG-6094 OpenStreetMap: Sometimes the application crashes on Symbian when exiting it via exit softkey -         
- Closed
 
-         
- 
                    QTBUG-9859 Symbian: Network access is wrong -         
- Closed
 
-         
- 
                    QTBUG-16724 Socket layer is been constantly reinitialized in Symbian -         
- Closed
 
-         
- 
                    QTBUG-14114 Symbian socket engine -         
- Closed
 
-         
- relates to
- 
                    QTBUG-13857 QNetworkProxyFactory::systemProxyForQuery() implementation for Symbian -         
- Closed
 
-         
- 
                    QTBUG-13606 QHostInfo::lookupHost() returns "Host not found" when the Qt application tries to reconnect to some internet address after n/w roaming(WLAN->GPRS->WLan) or forceful disconnection from ConnectionManager -         
- Closed
 
-         
- 
                    QTBUG-16843 Symbian - Qt don't recognize 127.0.0.1 as local connection -         
- Closed
 
-         
- 
                    QTBUG-16903 low performance of QNetworkAccessManager::get() while parallel http requests -         
- Closed
 
-