62 |
int |
int |
63 |
wHTTP::open (const char *_url) |
wHTTP::open (const char *_url) |
64 |
{ |
{ |
65 |
releaseMem (); |
/* In case the function is used more than once, we |
66 |
|
need to release the old structures first. */ |
67 |
|
releaseHeaders (); |
68 |
|
|
69 |
|
safe_free (this->host); |
70 |
|
safe_free (this->url); |
71 |
|
|
72 |
if (extractHostInfo (_url, &this->host, &this->url)) |
if (extractHostInfo (_url, &this->host, &this->url)) |
73 |
return -1; |
return -1; |
106 |
err = extractHostInfo (_url, &this->host, &this->url); |
err = extractHostInfo (_url, &this->host, &this->url); |
107 |
if (err) |
if (err) |
108 |
return err; |
return err; |
109 |
|
|
110 |
method = HTTP_HEAD; |
method = HTTP_HEAD; |
111 |
|
if (!sendRequest (this->host, this->port, this->url)) |
|
if (!sendRequest (host, port, url)) |
|
112 |
parseResponse (&statcode); |
parseResponse (&statcode); |
113 |
|
|
114 |
return 0; |
return 0; |
121 |
{ |
{ |
122 |
int err; |
int err; |
123 |
|
|
124 |
safe_free (host); |
safe_free (this->host); |
125 |
safe_free (url); |
safe_free (this->url); |
126 |
|
|
127 |
err = extractHostInfo (_url, &this->host, &this->url); |
err = extractHostInfo (_url, &this->host, &this->url); |
128 |
if (err) |
if (err) |
557 |
resp_headers = n; |
resp_headers = n; |
558 |
} |
} |
559 |
resp_headers = NULL; |
resp_headers = NULL; |
560 |
rc = parseHeaders (&resp_headers); |
return parseHeaders (&resp_headers); |
|
if (rc) |
|
|
return rc; |
|
|
return 0; |
|
561 |
} |
} |
562 |
|
|
563 |
|
|
564 |
/* Release all used structures. */ |
/* Release all used structures. */ |
565 |
void |
void |
566 |
wHTTP::releaseMem (void) |
wHTTP::releaseHeaders (void) |
567 |
{ |
{ |
568 |
http_head_t h; |
http_head_t h; |
569 |
|
|
570 |
while (resp_headers) { |
while (resp_headers != NULL) { |
571 |
h = resp_headers->next; |
h = resp_headers->next; |
572 |
free (resp_headers); |
free (resp_headers); |
573 |
resp_headers = h; |
resp_headers = h; |
574 |
} |
} |
575 |
resp_headers = NULL; |
resp_headers = NULL; |
576 |
while (req_headers) { |
while (req_headers != NULL) { |
577 |
h = req_headers->next; |
h = req_headers->next; |
578 |
free (req_headers); |
free (req_headers); |
579 |
req_headers = h; |
req_headers = h; |
580 |
} |
} |
581 |
req_headers = NULL; |
req_headers = NULL; |
|
safe_free (url); |
|
|
safe_free (host); |
|
582 |
} |
} |
583 |
|
|
584 |
|
|
585 |
/* Destroy HTTP object. */ |
/* Destroy HTTP object. */ |
586 |
wHTTP::~wHTTP (void) |
wHTTP::~wHTTP (void) |
587 |
{ |
{ |
588 |
releaseMem (); |
releaseHeaders(); |
589 |
|
safe_free (host); |
590 |
|
safe_free (url); |
591 |
if (fd != 0) { |
if (fd != 0) { |
592 |
closesocket (fd); |
closesocket (fd); |
593 |
fd = 0; |
fd = 0; |