You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2010/01/26 21:45:21 UTC

svn commit: r903407 - in /qpid/trunk/qpid/cpp/src/qpid: client/RdmaConnector.cpp sys/RdmaIOPlugin.cpp sys/rdma/RdmaClient.cpp sys/rdma/RdmaIO.cpp sys/rdma/RdmaIO.h sys/rdma/RdmaServer.cpp sys/rdma/rdma_wrap.h

Author: astitcher
Date: Tue Jan 26 20:45:03 2010
New Revision: 903407

URL: http://svn.apache.org/viewvc?rev=903407&view=rev
Log:
Fix memory error in previous SocketAddress refactoring

Modified:
    qpid/trunk/qpid/cpp/src/qpid/client/RdmaConnector.cpp
    qpid/trunk/qpid/cpp/src/qpid/sys/RdmaIOPlugin.cpp
    qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaClient.cpp
    qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp
    qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.h
    qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaServer.cpp
    qpid/trunk/qpid/cpp/src/qpid/sys/rdma/rdma_wrap.h

Modified: qpid/trunk/qpid/cpp/src/qpid/client/RdmaConnector.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/RdmaConnector.cpp?rev=903407&r1=903406&r2=903407&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/RdmaConnector.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/RdmaConnector.cpp Tue Jan 26 20:45:03 2010
@@ -49,7 +49,7 @@
 using boost::format;
 using boost::str;
 
-  class RdmaConnector : public Connector, public sys::Codec
+class RdmaConnector : public Connector, public sys::Codec
 {
     struct Buff;
 
@@ -164,17 +164,17 @@
     Mutex::ScopedLock l(pollingLock);
     assert(!polling);
 
-    SocketAddress sa(host, boost::lexical_cast<std::string>(port));
     Rdma::Connector* c = new Rdma::Connector(
-        sa,
         Rdma::ConnectionParams(maxFrameSize, Rdma::DEFAULT_WR_ENTRIES),
         boost::bind(&RdmaConnector::connected, this, poller, _1, _2),
         boost::bind(&RdmaConnector::connectionError, this, poller, _1, _2),
         boost::bind(&RdmaConnector::disconnected, this, poller, _1),
         boost::bind(&RdmaConnector::rejected, this, poller, _1, _2));
+
     polling = true;
 
-    c->start(poller);
+    SocketAddress sa(host, boost::lexical_cast<std::string>(port));
+    c->start(poller, sa);
 }
 
 // The following only gets run when connected

Modified: qpid/trunk/qpid/cpp/src/qpid/sys/RdmaIOPlugin.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/RdmaIOPlugin.cpp?rev=903407&r1=903406&r2=903407&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/sys/RdmaIOPlugin.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/sys/RdmaIOPlugin.cpp Tue Jan 26 20:45:03 2010
@@ -305,16 +305,16 @@
     sin.sin_port = htons(listeningPort);
     sin.sin_addr.s_addr = INADDR_ANY;
 
-    SocketAddress sa("",boost::lexical_cast<std::string>(listeningPort));
     listener.reset(
-        new Rdma::Listener(sa,
+        new Rdma::Listener(
             Rdma::ConnectionParams(65536, Rdma::DEFAULT_WR_ENTRIES),
             boost::bind(&RdmaIOProtocolFactory::established, this, poller, _1),
             boost::bind(&RdmaIOProtocolFactory::connectionError, this, _1, _2),
             boost::bind(&RdmaIOProtocolFactory::disconnected, this, _1),
             boost::bind(&RdmaIOProtocolFactory::request, this, _1, _2, fact)));
 
-    listener->start(poller);
+    SocketAddress sa("",boost::lexical_cast<std::string>(listeningPort));
+    listener->start(poller, sa);
 }
 
 // Only used for outgoing connections (in federation)
@@ -337,17 +337,16 @@
     ConnectionCodec::Factory* f,
     ConnectFailedCallback failed)
 {
-    SocketAddress sa(host, boost::lexical_cast<std::string>(port));
     Rdma::Connector* c =
         new Rdma::Connector(
-            sa,
             Rdma::ConnectionParams(8000, Rdma::DEFAULT_WR_ENTRIES),
             boost::bind(&RdmaIOProtocolFactory::connected, this, poller, _1, _2, f),
             boost::bind(&RdmaIOProtocolFactory::connectionError, this, _1, _2),
             boost::bind(&RdmaIOProtocolFactory::disconnected, this, _1),
             boost::bind(&RdmaIOProtocolFactory::rejected, this, _1, _2, failed));
 
-    c->start(poller);
+    SocketAddress sa(host, boost::lexical_cast<std::string>(port));
+    c->start(poller, sa);
 }
 
 }} // namespace qpid::sys

Modified: qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaClient.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaClient.cpp?rev=903407&r1=903406&r2=903407&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaClient.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaClient.cpp Tue Jan 26 20:45:03 2010
@@ -172,17 +172,16 @@
         boost::shared_ptr<Poller> p(new Poller());
         Dispatcher d(p);
 
-        SocketAddress sa(host, port);
-        cout << "Connecting to: " << sa.asString() <<"\n";
         Rdma::Connector c(
-            sa,
             Rdma::ConnectionParams(msgsize, Rdma::DEFAULT_WR_ENTRIES),
             boost::bind(&connected, p, _1, _2),
             boost::bind(&connectionError, p, _1, _2),
             boost::bind(&disconnected, p, _1),
             boost::bind(&rejected, p, _1, _2));
 
-        c.start(p);
+        SocketAddress sa(host, port);
+        cout << "Connecting to: " << sa.asString() <<"\n";
+        c.start(p, sa);
         d.run();
     } catch (Rdma::Exception& e) {
         int err = e.getError();

Modified: qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp?rev=903407&r1=903406&r2=903407&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.cpp Tue Jan 26 20:45:03 2010
@@ -452,8 +452,8 @@
         handle.stopWatch();
     }
 
-    void ConnectionManager::start(Poller::shared_ptr poller) {
-        startConnection(ci);
+    void ConnectionManager::start(Poller::shared_ptr poller, const qpid::sys::SocketAddress& addr) {
+        startConnection(ci, addr);
         handle.startWatch(poller);
     }
 
@@ -462,7 +462,6 @@
     }
 
     Listener::Listener(
-        const SocketAddress& src,
         const ConnectionParams& cp,
         EstablishedCallback ec,
         ErrorCallback errc,
@@ -470,15 +469,14 @@
         ConnectionRequestCallback crc
     ) :
         ConnectionManager(errc, dc),
-        src_addr(src),
         checkConnectionParams(cp),
         connectionRequestCallback(crc),
         establishedCallback(ec)
     {
     }
 
-    void Listener::startConnection(Connection::intrusive_ptr ci) {
-        ci->bind(src_addr);
+    void Listener::startConnection(Connection::intrusive_ptr ci, const qpid::sys::SocketAddress& addr) {
+        ci->bind(addr);
         ci->listen();
     }
 
@@ -542,7 +540,6 @@
     }
 
     Connector::Connector(
-        const SocketAddress& dst,
         const ConnectionParams& cp,
         ConnectedCallback cc,
         ErrorCallback errc,
@@ -550,15 +547,14 @@
         RejectedCallback rc
     ) :
         ConnectionManager(errc, dc),
-        dst_addr(dst),
         connectionParams(cp),
         rejectedCallback(rc),
         connectedCallback(cc)
     {
     }
 
-    void Connector::startConnection(Connection::intrusive_ptr ci) {
-        ci->resolve_addr(dst_addr);
+    void Connector::startConnection(Connection::intrusive_ptr ci, const qpid::sys::SocketAddress& addr) {
+        ci->resolve_addr(addr);
     }
 
     void Connector::connectionEvent(Connection::intrusive_ptr ci) {

Modified: qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.h?rev=903407&r1=903406&r2=903407&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaIO.h Tue Jan 26 20:45:03 2010
@@ -160,12 +160,12 @@
 
         virtual ~ConnectionManager();
 
-        void start(qpid::sys::Poller::shared_ptr poller);
+        void start(qpid::sys::Poller::shared_ptr polle, const qpid::sys::SocketAddress& addrr);
 
     private:
         void event(qpid::sys::DispatchHandle& handle);
 
-        virtual void startConnection(Connection::intrusive_ptr ci) = 0;
+        virtual void startConnection(Connection::intrusive_ptr ci, const qpid::sys::SocketAddress& addr) = 0;
         virtual void connectionEvent(Connection::intrusive_ptr ci) = 0;
     };
 
@@ -174,14 +174,12 @@
 
     class Listener : public ConnectionManager
     {
-        qpid::sys::SocketAddress src_addr;
         ConnectionParams checkConnectionParams;
         ConnectionRequestCallback connectionRequestCallback;
         EstablishedCallback establishedCallback;
 
     public:
         Listener(
-            const qpid::sys::SocketAddress& src,
             const ConnectionParams& cp,
             EstablishedCallback ec,
             ErrorCallback errc,
@@ -190,7 +188,7 @@
         );
 
     private:
-        void startConnection(Connection::intrusive_ptr ci);
+        void startConnection(Connection::intrusive_ptr ci, const qpid::sys::SocketAddress& addr);
         void connectionEvent(Connection::intrusive_ptr ci);
     };
 
@@ -199,14 +197,12 @@
 
     class Connector : public ConnectionManager
     {
-        qpid::sys::SocketAddress dst_addr;
         ConnectionParams connectionParams;
         RejectedCallback rejectedCallback;
         ConnectedCallback connectedCallback;
 
     public:
         Connector(
-            const qpid::sys::SocketAddress& dst,
             const ConnectionParams& cp,
             ConnectedCallback cc,
             ErrorCallback errc,
@@ -215,7 +211,7 @@
         );
 
     private:
-        void startConnection(Connection::intrusive_ptr ci);
+        void startConnection(Connection::intrusive_ptr ci, const qpid::sys::SocketAddress& addr);
         void connectionEvent(Connection::intrusive_ptr ci);
     };
 }

Modified: qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaServer.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaServer.cpp?rev=903407&r1=903406&r2=903407&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaServer.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/sys/rdma/RdmaServer.cpp Tue Jan 26 20:45:03 2010
@@ -152,8 +152,7 @@
         boost::shared_ptr<Poller> p(new Poller());
         Dispatcher d(p);
 
-        SocketAddress sa("", port);
-        Rdma::Listener a(sa,
+        Rdma::Listener a(
             Rdma::ConnectionParams(16384, Rdma::DEFAULT_WR_ENTRIES),
             boost::bind(connected, p, _1),
             connectionError,
@@ -161,7 +160,8 @@
             connectionRequest);
 
 
-        a.start(p);
+        SocketAddress sa("", port);
+        a.start(p, sa);
         d.run();
     } catch (Rdma::Exception& e) {
         int err = e.getError();

Modified: qpid/trunk/qpid/cpp/src/qpid/sys/rdma/rdma_wrap.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/rdma/rdma_wrap.h?rev=903407&r1=903406&r2=903407&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/sys/rdma/rdma_wrap.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/sys/rdma/rdma_wrap.h Tue Jan 26 20:45:03 2010
@@ -350,7 +350,7 @@
             return ConnectionEvent(e);
         }
 
-        void bind(qpid::sys::SocketAddress& src_addr) const {
+        void bind(const qpid::sys::SocketAddress& src_addr) const {
             assert(id.get());
             CHECK(::rdma_bind_addr(id.get(), getAddrInfo(src_addr).ai_addr));
         }
@@ -361,7 +361,7 @@
         }
 
         void resolve_addr(
-            qpid::sys::SocketAddress& dst_addr,
+            const qpid::sys::SocketAddress& dst_addr,
             int timeout_ms = DEFAULT_TIMEOUT) const
         {
             assert(id.get());



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org