Skip to content

Commit

Permalink
db_postgres: database URL supports IPv6 address as hostname
Browse files Browse the repository at this point in the history
- changed parsing of db_url to accept IPv6 address for hostname
  • Loading branch information
vasilevalex authored and henningw committed Sep 9, 2019
1 parent a7588f3 commit f99b492
Showing 1 changed file with 23 additions and 3 deletions.
26 changes: 23 additions & 3 deletions src/modules/db_postgres/pg_uri.c
Expand Up @@ -110,12 +110,13 @@ static int parse_postgres_uri(struct pg_uri *res, str *uri)
ST_USER_HOST, /* Username or hostname */
ST_PASS_PORT, /* Password or port part */
ST_HOST, /* Hostname part */
ST_HOST6, /* Hostname part IPv6 */
ST_PORT, /* Port part */
ST_DB /* Database part */
};

enum state st;
int i;
int i, ipv6_flag=0;
const char *begin;
char *prev_token;

Expand Down Expand Up @@ -173,6 +174,11 @@ static int parse_postgres_uri(struct pg_uri *res, str *uri)
begin = uri->s + i + 1;
break;

case '[':
st = ST_HOST6;
begin = uri->s + i + 1;
break;

case '/':
if(memchr(uri->s + i + 1, '/', uri->len - i - 1)
!= NULL)
Expand Down Expand Up @@ -213,9 +219,14 @@ static int parse_postgres_uri(struct pg_uri *res, str *uri)

case ST_HOST:
switch(uri->s[i]) {
case '[':
st = ST_HOST6;
begin = uri->s + i + 1;
break;

case ':':
st = ST_PORT;
if(dupl_string(&res->host, begin, uri->s + i) < 0)
if(dupl_string(&res->host, begin, uri->s + i - ipv6_flag) < 0)
goto err;
begin = uri->s + i + 1;
break;
Expand All @@ -224,7 +235,7 @@ static int parse_postgres_uri(struct pg_uri *res, str *uri)
if(memchr(uri->s + i + 1, '/', uri->len - i - 1)
!= NULL)
break;
if(dupl_string(&res->host, begin, uri->s + i) < 0)
if(dupl_string(&res->host, begin, uri->s + i - ipv6_flag) < 0)
goto err;
if(dupl_string(&res->database, uri->s + i + 1,
uri->s + uri->len)
Expand All @@ -234,6 +245,15 @@ static int parse_postgres_uri(struct pg_uri *res, str *uri)
}
break;

case ST_HOST6:
switch(uri->s[i]) {
case ']':
ipv6_flag = 1;
st = ST_HOST;
break;
}
break;

case ST_PORT:
switch(uri->s[i]) {
case '/':
Expand Down

0 comments on commit f99b492

Please sign in to comment.