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

qpid-route does not resolve hostname and this causes problems with localhost among others

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 0.10
    • Fix Version/s: None
    • Component/s: C++ Tools
    • Labels:
    • Environment:

      All

      Description

      All the examples for Federation and qpid-route use localhost. For a multihost environment this is not a good idea.

      1. 'localhost':<port> can end up in the routing table of remote host erroneously.
      2. Resolving localhost doesn't help as you'd end up with 127.0.0.1 in the route erroneously
      3. Even non localhost names don't get resolved and checked.

      Here is the test I was performing.
      I was doing some playing/testing with federation and I used two machines: my
      laptop (sligo) and a remote machine (buzz). I ran three brokers: 2 on sligo on
      ports 5672 and 5682 and one on remote on port 5682.

      From sligo I set up some links between all the brokers.
      (The problem has already occurred on the links above. Listing the routes will show the problem. But we'll go on)

      From sligo I set up a topic exchange on each broker:
      $ qpid-config -a localhost:5672 add exchange topic T.Prod
      $ qpid-config -a localhost:5682 add exchange topic T.Prod
      $ qpid-config -a buzz.somedomain.com:5682 add exchange topic T.Prod

      On sligo I set up dynamic routes from source localhost:5672 to localhost:5682
      and buzz.somedomain.com:5682.

      When I list the routes from sligo I see:
      $ qpid-route route list localhost:5682
      localhost:5682 localhost:5672 T.Prod <dynamic>
      $ qpid-route route list buzz.somedomain.com:5682
      buzz.somedomain.com:5682 localhost:5672 T.Prod <dynamic>

      When I run example program drain on localhost:5682 on sligo I get the messages sent using the spout example program to default broker on sligo (on 5672).

      When I run drain on buzz I don't see anything.

      I see references to "localhost:5672" in the trace output of buzz's broker. This is BAD!

      We need qpid-route to resolve hostname before passing the arg to the remote
      broker.

      (In the meantime we might want to warn users of using 'localhost' with
      qpid-route across different hosts.)

      I will attach a diff and a new version of qpid-route for review.

        Attachments

        1. QPID-3375.patch
          1.0 kB
          Gordon Sim
        2. qpid-route
          22 kB
          William Henry
        3. qpid-route-diff.txt
          1 kB
          William Henry
        4. qpid-route
          22 kB
          William Henry
        5. qpid-route.diff
          0.8 kB
          William Henry

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              whenry William Henry
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: