From d423f3c2fdb9f6ca8ed3cfa16f51a9046ac35e0a Mon Sep 17 00:00:00 2001
From: Hongwei Wang <hongweiw@google.com>
Date: Thu, 16 Jul 2015 14:16:51 -0700
Subject: [PATCH] Fix authority in uri_parser

---
 src/core/client_config/uri_parser.c       | 2 +-
 test/core/client_config/uri_parser_test.c | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/core/client_config/uri_parser.c b/src/core/client_config/uri_parser.c
index 776a255923..615aa4eaf0 100644
--- a/src/core/client_config/uri_parser.c
+++ b/src/core/client_config/uri_parser.c
@@ -99,7 +99,7 @@ grpc_uri *grpc_uri_parse(const char *uri_text, int suppress_errors) {
   if (uri_text[scheme_end + 1] == '/' && uri_text[scheme_end + 2] == '/') {
     authority_begin = scheme_end + 3;
     for (i = authority_begin; uri_text[i] != 0; i++) {
-      if (uri_text[i] == '/') {
+      if (uri_text[i] == '/' && authority_end == -1) {
         authority_end = i;
       }
       if (uri_text[i] == '?') {
diff --git a/test/core/client_config/uri_parser_test.c b/test/core/client_config/uri_parser_test.c
index e5f9017ce0..3451ca1e8c 100644
--- a/test/core/client_config/uri_parser_test.c
+++ b/test/core/client_config/uri_parser_test.c
@@ -60,6 +60,7 @@ int main(int argc, char **argv) {
   test_succeeds("http://www.google.com:90", "http", "www.google.com:90", "");
   test_succeeds("a192.4-df:foo.coom", "a192.4-df", "", "foo.coom");
   test_succeeds("a+b:foo.coom", "a+b", "", "foo.coom");
+  test_succeeds("zookeeper://127.0.0.1:2181/foo/bar", "zookeeper", "127.0.0.1:2181", "/foo/bar");
   test_fails("xyz");
   test_fails("http://www.google.com?why-are-you-using-queries");
   test_fails("dns:foo.com#fragments-arent-supported-here");
-- 
GitLab