Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-7274

Native Symbian implementation of the QNativeSocketEngine / QAbstractSocketEngine

    XMLWordPrintable

Details

    Description

      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
      • 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)

      Attachments

        Issue Links

          There are no Sub-Tasks for this issue.
          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              shkearns Shane Kearns
              mgoetz Markus Goetz (Inactive)
              Votes:
              4 Vote for this issue
              Watchers:
              17 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes