spdycli: Fix missing last by with IPv6 addr and check argc
This commit is contained in:
parent
3d2ef18afb
commit
ba8bc5cae7
|
@ -657,6 +657,7 @@ static int parse_uri(struct URI *res, const char *uri)
|
||||||
{
|
{
|
||||||
/* We only interested in https */
|
/* We only interested in https */
|
||||||
size_t len, i, offset;
|
size_t len, i, offset;
|
||||||
|
int ipv6addr = 0;
|
||||||
memset(res, 0, sizeof(struct URI));
|
memset(res, 0, sizeof(struct URI));
|
||||||
len = strlen(uri);
|
len = strlen(uri);
|
||||||
if(len < 9 || memcmp("https://", uri, 8) != 0) {
|
if(len < 9 || memcmp("https://", uri, 8) != 0) {
|
||||||
|
@ -669,6 +670,7 @@ static int parse_uri(struct URI *res, const char *uri)
|
||||||
/* IPv6 literal address */
|
/* IPv6 literal address */
|
||||||
++offset;
|
++offset;
|
||||||
++res->host;
|
++res->host;
|
||||||
|
ipv6addr = 1;
|
||||||
for(i = offset; i < len; ++i) {
|
for(i = offset; i < len; ++i) {
|
||||||
if(uri[i] == ']') {
|
if(uri[i] == ']') {
|
||||||
res->hostlen = i-offset;
|
res->hostlen = i-offset;
|
||||||
|
@ -718,7 +720,7 @@ static int parse_uri(struct URI *res, const char *uri)
|
||||||
res->port = port;
|
res->port = port;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res->hostportlen = uri+offset-res->host;
|
res->hostportlen = uri+offset+ipv6addr-res->host;
|
||||||
for(i = offset; i < len; ++i) {
|
for(i = offset; i < len; ++i) {
|
||||||
if(uri[i] == '#') {
|
if(uri[i] == '#') {
|
||||||
break;
|
break;
|
||||||
|
@ -739,6 +741,11 @@ int main(int argc, char **argv)
|
||||||
struct URI uri;
|
struct URI uri;
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
|
if(argc < 2) {
|
||||||
|
die("Specify URI");
|
||||||
|
}
|
||||||
|
|
||||||
memset(&act, 0, sizeof(struct sigaction));
|
memset(&act, 0, sizeof(struct sigaction));
|
||||||
act.sa_handler = SIG_IGN;
|
act.sa_handler = SIG_IGN;
|
||||||
sigaction(SIGPIPE, &act, 0);
|
sigaction(SIGPIPE, &act, 0);
|
||||||
|
|
Loading…
Reference in New Issue