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

QTcpSocket readyRead not emitted for first received data

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P2: Important
    • 6.8.1, 6.9.0 FF
    • 6.7.0
    • Network: Sockets
    • None
    • WebAssembly
    • 9b01f1bdb (dev), b56e959d6 (6.8)

    Description

      It appears that QTcpSocket may not emit the readyRead signal on the WebAssembly target in the following circumstance:

      • Client running on WebAssembly creates a QTcpSocket and connects to a server QWebSocketServer running on x64.
      • The server, on the QWebSocketServer::newConnection signal, immediately sends a binary or text message to the client that is less than around 3700 bytes. (Exact size appears to depend on socket name).
      • Client will get QTcpSocket::connected signal, but appears not to get readyRead signal, unless server transmits more data (which for the protocol I'm working on, never happens, as server is waiting for a response from client).

      Some observations:

      • If the server transmits a bit more data (such that the first packet of data transmitted is bigger than 4096 bytes), then the readyRead signal is emitted.
      • If the server has a bit of a time delay after newConnection before it sends the small amount of data, then readyRead is emitted.
      • In the case that readyRead is not emitted, the data is definitely received by the client. handleMessage in library_sockfs.js is called and QEventDispatcherWasm::socketMessage is called.

      It appears as though there may be a race condition. It seems in the failing case, when QEventDispatcherWasm::socketMessage is called, the notifier hasn't been set up yet.. i.e. QEventDispatcherWasm::registerSocketNotifier hasn't yet been called. In the working cases, registerSocketNotifier is called before socketMessage.

      Attachments

        For Gerrit Dashboard: QTBUG-125874
        # Subject Branch Project Status CR V

        Activity

          People

            lopotter-ext Lorn Potter
            srcejon Jon Beniston
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes