diff options
author | Gordon Sim <gsim@apache.org> | 2010-03-19 17:04:18 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2010-03-19 17:04:18 +0000 |
commit | 45b5d1cc1f48ed8f6caef8ee9652f788d69747a5 (patch) | |
tree | 285eebffee4dd1252abde2dd39872531565987d3 /cpp/examples/messaging | |
parent | d6de561675087e8b1a6978d82569467c4aeff398 (diff) | |
download | qpid-python-45b5d1cc1f48ed8f6caef8ee9652f788d69747a5.tar.gz |
QPID-664: Prevent dangling pointers when receiver/sender handles stay in scope after connection/session handles goes out of scope. This change require connections to be closed explicitly to avoid leaking memory.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@925332 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/examples/messaging')
-rw-r--r-- | cpp/examples/messaging/client.cpp | 3 | ||||
-rw-r--r-- | cpp/examples/messaging/drain.cpp | 3 | ||||
-rw-r--r-- | cpp/examples/messaging/map_receiver.cpp | 3 | ||||
-rw-r--r-- | cpp/examples/messaging/map_sender.cpp | 4 | ||||
-rw-r--r-- | cpp/examples/messaging/queue_receiver.cpp | 3 | ||||
-rw-r--r-- | cpp/examples/messaging/queue_sender.cpp | 4 | ||||
-rw-r--r-- | cpp/examples/messaging/server.cpp | 3 | ||||
-rw-r--r-- | cpp/examples/messaging/spout.cpp | 3 | ||||
-rw-r--r-- | cpp/examples/messaging/topic_receiver.cpp | 3 | ||||
-rw-r--r-- | cpp/examples/messaging/topic_sender.cpp | 3 |
10 files changed, 20 insertions, 12 deletions
diff --git a/cpp/examples/messaging/client.cpp b/cpp/examples/messaging/client.cpp index 4d68d7c575..3f7afb5e3e 100644 --- a/cpp/examples/messaging/client.cpp +++ b/cpp/examples/messaging/client.cpp @@ -39,8 +39,8 @@ using std::string; int main(int argc, char** argv) { const char* url = argc>1 ? argv[1] : "amqp:tcp:127.0.0.1:5672"; + Connection connection; try { - Connection connection; connection.open(url); Session session = connection.newSession(); @@ -70,6 +70,7 @@ int main(int argc, char** argv) { return 0; } catch(const std::exception& error) { std::cout << error.what() << std::endl; + connection.close(); } return 1; } diff --git a/cpp/examples/messaging/drain.cpp b/cpp/examples/messaging/drain.cpp index bd18fd3884..38f6bdbb98 100644 --- a/cpp/examples/messaging/drain.cpp +++ b/cpp/examples/messaging/drain.cpp @@ -93,8 +93,8 @@ int main(int argc, char** argv) { Options options(argv[0]); if (options.parse(argc, argv)) { + Connection connection(options.connectionOptions); try { - Connection connection(options.connectionOptions); connection.open(options.url); Session session = connection.newSession(); Receiver receiver = session.createReceiver(options.address); @@ -116,6 +116,7 @@ int main(int argc, char** argv) return 0; } catch(const std::exception& error) { std::cout << error.what() << std::endl; + connection.close(); } } return 1; diff --git a/cpp/examples/messaging/map_receiver.cpp b/cpp/examples/messaging/map_receiver.cpp index 05be4090d2..cdbae6007e 100644 --- a/cpp/examples/messaging/map_receiver.cpp +++ b/cpp/examples/messaging/map_receiver.cpp @@ -38,8 +38,8 @@ using std::string; int main(int argc, char** argv) { const char* url = argc>1 ? argv[1] : "amqp:tcp:127.0.0.1:5672"; + Connection connection; try { - Connection connection; connection.open(url); Session session = connection.newSession(); Receiver receiver = session.createReceiver("message_queue"); @@ -52,6 +52,7 @@ int main(int argc, char** argv) { return 0; } catch(const std::exception& error) { std::cout << error.what() << std::endl; + connection.close(); } return 1; } diff --git a/cpp/examples/messaging/map_sender.cpp b/cpp/examples/messaging/map_sender.cpp index b6e0621844..037bb55201 100644 --- a/cpp/examples/messaging/map_sender.cpp +++ b/cpp/examples/messaging/map_sender.cpp @@ -37,9 +37,8 @@ using std::string; int main(int argc, char** argv) { const char* url = argc>1 ? argv[1] : "amqp:tcp:127.0.0.1:5672"; - + Connection connection; try { - Connection connection; connection.open(url); Session session = connection.newSession(); Sender sender = session.createSender("message_queue"); @@ -64,6 +63,7 @@ int main(int argc, char** argv) { return 0; } catch(const std::exception& error) { std::cout << error.what() << std::endl; + connection.close(); } return 1; } diff --git a/cpp/examples/messaging/queue_receiver.cpp b/cpp/examples/messaging/queue_receiver.cpp index 192b90088d..95756a9a3d 100644 --- a/cpp/examples/messaging/queue_receiver.cpp +++ b/cpp/examples/messaging/queue_receiver.cpp @@ -31,8 +31,8 @@ using namespace qpid::messaging; int main(int argc, char** argv) { const char* url = argc>1 ? argv[1] : "amqp:tcp:127.0.0.1:5672"; + Connection connection; try { - Connection connection; connection.open(url); Session session = connection.newSession(); Receiver receiver = session.createReceiver("message_queue"); @@ -51,6 +51,7 @@ int main(int argc, char** argv) { return 0; } catch(const std::exception& error) { std::cout << error.what() << std::endl; + connection.close(); } return 1; } diff --git a/cpp/examples/messaging/queue_sender.cpp b/cpp/examples/messaging/queue_sender.cpp index b2535d90bf..439e1dffaf 100644 --- a/cpp/examples/messaging/queue_sender.cpp +++ b/cpp/examples/messaging/queue_sender.cpp @@ -34,8 +34,8 @@ int main(int argc, char** argv) { const char* url = argc>1 ? argv[1] : "amqp:tcp:127.0.0.1:5672"; int count = argc>2 ? atoi(argv[2]) : 10; + Connection connection; try { - Connection connection; connection.open(url); Session session = connection.newSession(); Sender sender = session.createSender("message_queue"); @@ -50,10 +50,10 @@ int main(int argc, char** argv) { // And send a final message to indicate termination. sender.send(Message("That's all, folks!")); session.sync(); - connection.close(); return 0; } catch(const std::exception& error) { std::cout << error.what() << std::endl; + connection.close(); } return 1; } diff --git a/cpp/examples/messaging/server.cpp b/cpp/examples/messaging/server.cpp index 0a80a5fb02..046a209e2f 100644 --- a/cpp/examples/messaging/server.cpp +++ b/cpp/examples/messaging/server.cpp @@ -41,8 +41,8 @@ using std::string; int main(int argc, char** argv) { const char* url = argc>1 ? argv[1] : "amqp:tcp:127.0.0.1:5672"; + Connection connection; try { - Connection connection; connection.open(url); Session session = connection.newSession(); Receiver receiver = session.createReceiver("service_queue; {create: always}"); @@ -70,6 +70,7 @@ int main(int argc, char** argv) { return 0; } catch(const std::exception& error) { std::cout << error.what() << std::endl; + connection.close(); } return 1; } diff --git a/cpp/examples/messaging/spout.cpp b/cpp/examples/messaging/spout.cpp index cbb6b52b34..4819c6bc00 100644 --- a/cpp/examples/messaging/spout.cpp +++ b/cpp/examples/messaging/spout.cpp @@ -156,8 +156,8 @@ int main(int argc, char** argv) { Options options(argv[0]); if (options.parse(argc, argv)) { + Connection connection(options.connectionOptions); try { - Connection connection(options.connectionOptions); connection.open(options.url); Session session = connection.newSession(); Sender sender = session.createSender(options.address); @@ -183,6 +183,7 @@ int main(int argc, char** argv) return 0; } catch(const std::exception& error) { std::cout << error.what() << std::endl; + connection.close(); } } return 1; diff --git a/cpp/examples/messaging/topic_receiver.cpp b/cpp/examples/messaging/topic_receiver.cpp index 13f881e574..9e0264a4c3 100644 --- a/cpp/examples/messaging/topic_receiver.cpp +++ b/cpp/examples/messaging/topic_receiver.cpp @@ -34,8 +34,8 @@ int main(int argc, char** argv) { const std::string url = argc>1 ? argv[1] : "amqp:tcp:127.0.0.1:5672"; const std::string pattern = argc>2 ? argv[2] : "#.#"; + Connection connection; try { - Connection connection; connection.open(url); Session session = connection.newSession(); Receiver receiver = session.createReceiver("news_service; {filter:[control, " + pattern + "]}"); @@ -53,6 +53,7 @@ int main(int argc, char** argv) { return 0; } catch(const std::exception& error) { std::cout << error.what() << std::endl; + connection.close(); } return 1; } diff --git a/cpp/examples/messaging/topic_sender.cpp b/cpp/examples/messaging/topic_sender.cpp index d1ada45864..a37d4b5371 100644 --- a/cpp/examples/messaging/topic_sender.cpp +++ b/cpp/examples/messaging/topic_sender.cpp @@ -51,8 +51,8 @@ int main(int argc, char** argv) { const char* url = argc>1 ? argv[1] : "amqp:tcp:127.0.0.1:5672"; int count = argc>2 ? atoi(argv[2]) : 10; + Connection connection; try { - Connection connection; connection.open(url); Session session = connection.newSession(); Sender sender = session.createSender("news_service"); @@ -72,6 +72,7 @@ int main(int argc, char** argv) { return 0; } catch(const std::exception& error) { std::cout << error.what() << std::endl; + connection.close(); } return 1; } |