diff --git a/main/uri.c b/main/uri.c
index 6642d843b2b2bdec44834ce6f84b32b5c8478d61..be1136fe67819bb1faa3de27451170af126d19d5 100644
--- a/main/uri.c
+++ b/main/uri.c
@@ -229,6 +229,8 @@ struct ast_uri *ast_uri_parse(const char *uri)
 	if ((p = strchr(uri, '?'))) {
 		query = p + 1;
 		size_query = strlen(query) + 1;
+	} else {
+		p = uri + strlen(uri);
 	}
 
 	if (!host) {
@@ -313,9 +315,9 @@ char *ast_uri_make_host_with_port(const struct ast_uri *uri)
 	if (ast_uri_port(uri)) {
 		res[host_size] = ':';
 		memcpy(res + host_size + 1,
-		       ast_uri_port(uri), port_size);
+		       ast_uri_port(uri), port_size - 1);
 	}
 
-	res[host_size + port_size + 1] = '\0';
+	res[host_size + port_size] = '\0';
 	return res;
 }
diff --git a/tests/test_websocket_client.c b/tests/test_websocket_client.c
index e104ed82560332c2c39ae7ebc5000114ec77ad55..726ee1cfccf3f12d216568830c7a018b8c9fb0bf 100644
--- a/tests/test_websocket_client.c
+++ b/tests/test_websocket_client.c
@@ -41,7 +41,7 @@ ASTERISK_FILE_VERSION(__FILE__, "")
 #include "asterisk/http_websocket.h"
 
 #define CATEGORY "/res/websocket/"
-#define REMOTE_URL "ws://localhost:8088/ws"
+#define REMOTE_URL "ws://127.0.0.1:8088/ws"
 
 AST_TEST_DEFINE(websocket_client_create_and_connect)
 {