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