Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-4931

Broker should only listen to a single network address if "--port 0" is specified

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.23
    • Component/s: C++ Broker
    • Labels:
      None

      Description

      The C++ broker has a setting which is really only useful for testing which allows the broker to listen to whichever port the kernel gives it. In this mode it prints the received port on stdout for subsequent testing programs to use.

      When you listen to multiple network addresses (addresses are multiple network interfaces or multiple protocols on the same network interface - IPv4 & IPv6 for example) the broker has to remember the port it got for the first address and then try to get the same port for subsequent addresses.

      Unfortunately there is no guarantee that the same port will actually be available on the other addresses so the entire broker startup can fail.

      In the testing environment which this is useful for you only care about the IPv4 loopback address in any case so we have to ensure that this address is the only (or at least the first) address used.

      Because we can't guarantee getting the same port for more than one address it makes sense to restrict "--port 0" to only listening to a single address.

      I propose that if the broker detects that more than one address has been specified or is implied by the network setup it should list to the first address and log a warning message with the actual address listened to.

        Attachments

          Activity

            People

            • Assignee:
              astitcher Andrew Stitcher
              Reporter:
              astitcher Andrew Stitcher
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: