You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2013/12/02 16:39:49 UTC
svn commit: r1547063 - in /qpid/proton/trunk/proton-c/src/messenger:
messenger.c subscription.c subscription.h
Author: rhs
Date: Mon Dec 2 15:39:49 2013
New Revision: 1547063
URL: http://svn.apache.org/r1547063
Log:
PROTON-439: properly format subscription address
Modified:
qpid/proton/trunk/proton-c/src/messenger/messenger.c
qpid/proton/trunk/proton-c/src/messenger/subscription.c
qpid/proton/trunk/proton-c/src/messenger/subscription.h
Modified: qpid/proton/trunk/proton-c/src/messenger/messenger.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/messenger.c?rev=1547063&r1=1547062&r2=1547063&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/messenger.c Mon Dec 2 15:39:49 2013
@@ -126,7 +126,7 @@ static pn_listener_ctx_t *pn_listener_ct
pn_ssl_domain_allow_unsecured_client(ctx->domain);
}
- pn_subscription_t *sub = pn_subscription(messenger, scheme);
+ pn_subscription_t *sub = pn_subscription(messenger, scheme, host, port);
ctx->subscription = sub;
ctx->host = pn_strdup(host);
ctx->port = pn_strdup(port);
@@ -1114,6 +1114,7 @@ pn_link_t *pn_messenger_link(pn_messenge
char *name = NULL;
pn_connection_t *connection = pn_messenger_resolve(messenger, address, &name);
if (!connection) return NULL;
+ pn_connection_ctx_t *cctx = (pn_connection_ctx_t *) pn_connection_get_context(connection);
pn_link_t *link = pn_link_head(connection, PN_LOCAL_ACTIVE);
while (link) {
@@ -1151,7 +1152,8 @@ pn_link_t *pn_messenger_link(pn_messenge
if (!sender) {
pn_link_ctx_t *ctx = (pn_link_ctx_t *)pn_link_get_context(link);
assert( ctx );
- ctx->subscription = pn_subscription(messenger, NULL);
+ ctx->subscription = pn_subscription(messenger, cctx->scheme, cctx->host,
+ cctx->port);
}
pn_link_open(link);
return link;
@@ -1390,6 +1392,7 @@ int pn_messenger_put(pn_messenger_t *mes
pn_tracker_t pn_messenger_outgoing_tracker(pn_messenger_t *messenger)
{
+ assert(messenger);
return messenger->outgoing_tracker;
}
@@ -1617,6 +1620,7 @@ int pn_messenger_get(pn_messenger_t *mes
pn_tracker_t pn_messenger_incoming_tracker(pn_messenger_t *messenger)
{
+ assert(messenger);
return messenger->incoming_tracker;
}
Modified: qpid/proton/trunk/proton-c/src/messenger/subscription.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/subscription.c?rev=1547063&r1=1547062&r2=1547063&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/subscription.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/subscription.c Mon Dec 2 15:39:49 2013
@@ -28,6 +28,8 @@
struct pn_subscription_t {
pn_messenger_t *messenger;
pn_string_t *scheme;
+ pn_string_t *host;
+ pn_string_t *port;
pn_string_t *address;
void *context;
};
@@ -37,6 +39,8 @@ void pn_subscription_initialize(void *ob
pn_subscription_t *sub = (pn_subscription_t *) obj;
sub->messenger = NULL;
sub->scheme = pn_string(NULL);
+ sub->host = pn_string(NULL);
+ sub->port = pn_string(NULL);
sub->address = pn_string(NULL);
sub->context = NULL;
}
@@ -45,6 +49,8 @@ void pn_subscription_finalize(void *obj)
{
pn_subscription_t *sub = (pn_subscription_t *) obj;
pn_free(sub->scheme);
+ pn_free(sub->host);
+ pn_free(sub->port);
pn_free(sub->address);
}
@@ -52,12 +58,17 @@ void pn_subscription_finalize(void *obj)
#define pn_subscription_compare NULL
#define pn_subscription_inspect NULL
-pn_subscription_t *pn_subscription(pn_messenger_t *messenger, const char *scheme)
+pn_subscription_t *pn_subscription(pn_messenger_t *messenger,
+ const char *scheme,
+ const char *host,
+ const char *port)
{
static pn_class_t clazz = PN_CLASS(pn_subscription);
pn_subscription_t *sub = (pn_subscription_t *) pn_new(sizeof(pn_subscription_t), &clazz);
sub->messenger = messenger;
pn_string_set(sub->scheme, scheme);
+ pn_string_set(sub->host, host);
+ pn_string_set(sub->port, port);
pni_messenger_add_subscription(messenger, sub);
pn_decref(sub);
return sub;
@@ -84,7 +95,21 @@ void pn_subscription_set_context(pn_subs
int pni_subscription_set_address(pn_subscription_t *sub, const char *address)
{
assert(sub);
- return pn_string_set(sub->address, address);
+ pn_string_set(sub->address, "");
+ bool scheme = pn_string_get(sub->scheme);
+ if (scheme) {
+ int e = pn_string_addf(sub->address, "%s:", pn_string_get(sub->scheme));
+ if (e) return e;
+ }
+ if (pn_string_get(sub->host)) {
+ int e = pn_string_addf(sub->address, scheme ? "//%s" : "%s", pn_string_get(sub->host));
+ if (e) return e;
+ }
+ if (pn_string_get(sub->port)) {
+ int e = pn_string_addf(sub->address, ":%s", pn_string_get(sub->port));
+ if (e) return e;
+ }
+ return pn_string_addf(sub->address, "/%s", address);
}
const char *pn_subscription_address(pn_subscription_t *sub)
Modified: qpid/proton/trunk/proton-c/src/messenger/subscription.h
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/subscription.h?rev=1547063&r1=1547062&r2=1547063&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/subscription.h (original)
+++ qpid/proton/trunk/proton-c/src/messenger/subscription.h Mon Dec 2 15:39:49 2013
@@ -24,7 +24,9 @@
#include <proton/messenger.h>
-pn_subscription_t *pn_subscription(pn_messenger_t *messenger, const char *scheme);
+pn_subscription_t *pn_subscription(pn_messenger_t *messenger,
+ const char *scheme, const char *host,
+ const char *port);
const char *pn_subscription_scheme(pn_subscription_t *sub);
int pni_subscription_set_address(pn_subscription_t *sub, const char *address);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org