From cef6e70c0b3e92e36b6895e7d6e981b00c702f9b Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Fri, 22 Nov 2024 18:16:24 -0800 Subject: Select transport using raw URL string. This is done so that we can provide transport specific logic for URL parsing later (we're going to want this for ZeroTier for example.) --- src/sp/transport.c | 6 ++++-- src/sp/transport.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'src/sp') diff --git a/src/sp/transport.c b/src/sp/transport.c index 61192e82..a2220e7b 100644 --- a/src/sp/transport.c +++ b/src/sp/transport.c @@ -32,14 +32,16 @@ nni_sp_tran_register(nni_sp_tran *tran) } nni_sp_tran * -nni_sp_tran_find(nng_url *url) +nni_sp_tran_find(const char *url) { // address is of the form "://blah..." nni_sp_tran *t; nni_rwlock_rdlock(&sp_tran_lk); NNI_LIST_FOREACH (&sp_tran_list, t) { - if (strcmp(url->u_scheme, t->tran_scheme) == 0) { + size_t len = strlen(t->tran_scheme); + if ((strncmp(url, t->tran_scheme, len) == 0) && + (strncmp(url + len, "://", 3) == 0)) { nni_rwlock_unlock(&sp_tran_lk); return (t); } diff --git a/src/sp/transport.h b/src/sp/transport.h index 7311638f..b65486ed 100644 --- a/src/sp/transport.h +++ b/src/sp/transport.h @@ -186,7 +186,7 @@ struct nni_sp_tran { // These APIs are used by the framework internally, and not for use by // transport implementations. -extern nni_sp_tran *nni_sp_tran_find(nng_url *); +extern nni_sp_tran *nni_sp_tran_find(const char *); extern void nni_sp_tran_sys_init(void); extern void nni_sp_tran_sys_fini(void); extern void nni_sp_tran_register(nni_sp_tran *); -- cgit v1.2.3-70-g09d2