summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp5
-rw-r--r--qpid/cpp/src/qpid/sys/urlAdd.h9
2 files changed, 9 insertions, 5 deletions
diff --git a/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp b/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
index abf7e58bfe..b6a72fd204 100644
--- a/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
+++ b/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
@@ -78,7 +78,7 @@ void ConnectionContext::trace(const char* message) const
ConnectionContext::ConnectionContext(const std::string& url, const qpid::types::Variant::Map& o)
: qpid::messaging::ConnectionOptions(o),
- fullUrl(url),
+ fullUrl(url, protocol.empty() ? qpid::Address::TCP : protocol),
engine(pn_transport()),
connection(pn_connection()),
//note: disabled read/write of header as now handled by engine
@@ -89,7 +89,8 @@ ConnectionContext::ConnectionContext(const std::string& url, const qpid::types::
codecAdapter(*this)
{
// Concatenate all known URLs into a single URL, get rid of duplicate addresses.
- sys::urlAddStrings(fullUrl, urls.begin(), urls.end());
+ sys::urlAddStrings(fullUrl, urls.begin(), urls.end(), protocol.empty() ?
+ qpid::Address::TCP : protocol);
if (pn_transport_bind(engine, connection)) {
//error
}
diff --git a/qpid/cpp/src/qpid/sys/urlAdd.h b/qpid/cpp/src/qpid/sys/urlAdd.h
index aecb3115cf..e78c5d586c 100644
--- a/qpid/cpp/src/qpid/sys/urlAdd.h
+++ b/qpid/cpp/src/qpid/sys/urlAdd.h
@@ -40,7 +40,9 @@ inline void urlAddUrl(Url& url, const Url& more) {
}
/** Convert str to a Url and do urlAddUrl. */
-inline void urlAddString(Url& url, const std::string& str) { urlAddUrl(url, Url(str)); }
+inline void urlAddString(Url& url, const std::string& str, const std::string& defaultProtocol) {
+ urlAddUrl(url, Url(str, defaultProtocol));
+}
/** For each URL in a range, do urlAddUrl */
template <class UrlIterator>
@@ -50,8 +52,9 @@ void urlAddUrls(Url& url, UrlIterator i, UrlIterator j) {
/** For each string in a range, do urlAddUrl(Url(string)) */
template <class StringIterator>
-void urlAddStrings(Url& url, StringIterator i, StringIterator j) {
- for_each(i, j, boost::bind(&urlAddString, boost::ref(url), _1));
+void urlAddStrings(Url& url, StringIterator i, StringIterator j,
+ const std::string& defaultProtocol) {
+ for_each(i, j, boost::bind(&urlAddString, boost::ref(url), _1, defaultProtocol));
}
}} // namespace qpid::sys