Created
January 3, 2011 00:07
-
-
Save dustin/762954 to your computer and use it in GitHub Desktop.
Testing curl header parsing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Testing header parsing with libcurl. | |
* | |
* I used nc to send a hand-crafted http response as follows: | |
* | |
* nc -w 2 -l 8888 < /tmp/response | |
* | |
* Python's http response handler was pretty happy with it. | |
*/ | |
#include <stdio.h> | |
#include <assert.h> | |
#include <string.h> | |
#include <stdlib.h> | |
#include <curl/curl.h> | |
#define URL "http://localhost:8888/" | |
static size_t header_handler(void *ptr, size_t size, | |
size_t nmemb, void *userdata) { | |
char *x = calloc(size + 1, nmemb); | |
assert(x); | |
memcpy(x, ptr, size * nmemb); | |
printf("New header:\n%s\n", x); | |
return size * nmemb; | |
} | |
int main(int argc, char **argv) { | |
curl_global_init(CURL_GLOBAL_ALL); | |
CURL *curl = curl_easy_init(); | |
curl_easy_setopt(curl, CURLOPT_URL, URL); | |
curl_easy_setopt(curl, CURLOPT_HEADERDATA, NULL); | |
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_handler); | |
CURLcode rv = curl_easy_perform(curl); | |
assert(rv == 0); | |
curl_easy_cleanup(curl); | |
curl_global_cleanup(); | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
HTTP/1.1 200 OK | |
Server: emacs | |
Date: Sun, 02 Jan 2011 23:47:19 GMT | |
Content-Type: text/plain | |
Content-Length: 5 | |
Last-Modified: Sat, 23 Jul 2005 02:54:24 GMT | |
Connection: close | |
Accept-Ranges: bytes | |
X-Long-Ass-Header: Lorem ipsum dolor sit amet, consectetur adipiscing | |
elit. Cras et urna magna. Sed eget aliquam leo. Aliquam laoreet | |
placerat volutpat. Curabitur mattis mattis quam adipiscing | |
condimentum. Nullam in risus sit amet justo imperdiet eleifend | |
facilisis quis magna. Fusce vitae diam nisi, at lacinia erat. Morbi | |
est dolor, varius eget euismod eget, imperdiet non risus. Donec | |
sagittis sagittis metus, quis hendrerit lorem tincidunt eu. In vitae | |
nisl sit amet magna porta convallis. Vestibulum sagittis malesuada | |
dolor sit amet posuere. Pellentesque id elementum augue. Morbi | |
sollicitudin, massa quis auctor vulputate, libero velit sagittis | |
libero, rutrum pharetra nisi ipsum ut lectus. Duis lacus eros, | |
facilisis eu tincidunt quis, feugiat aliquet nisl. Pellentesque | |
pulvinar velit non justo mattis in pharetra odio venenatis. Mauris vel | |
dolor mi, in suscipit erat. Cras nisi nisi, egestas ac cursus non, | |
tincidunt id orci. Vivamus porttitor auctor risus id | |
volutpat. Phasellus sapien leo, bibendum nec vehicula quis, porttitor | |
quis turpis. Donec ut tempus erat. Nulla orci nisl, auctor in | |
vestibulum et, luctus ut velit. | |
Lorem ipsum dolor sit amet, consectetur adipiscing | |
elit. Cras et urna magna. Sed eget aliquam leo. Aliquam laoreet | |
placerat volutpat. Curabitur mattis mattis quam adipiscing | |
condimentum. Nullam in risus sit amet justo imperdiet eleifend | |
facilisis quis magna. Fusce vitae diam nisi, at lacinia erat. Morbi | |
est dolor, varius eget euismod eget, imperdiet non risus. Donec | |
sagittis sagittis metus, quis hendrerit lorem tincidunt eu. In vitae | |
nisl sit amet magna porta convallis. Vestibulum sagittis malesuada | |
dolor sit amet posuere. Pellentesque id elementum augue. Morbi | |
sollicitudin, massa quis auctor vulputate, libero velit sagittis | |
libero, rutrum pharetra nisi ipsum ut lectus. Duis lacus eros, | |
facilisis eu tincidunt quis, feugiat aliquet nisl. Pellentesque | |
pulvinar velit non justo mattis in pharetra odio venenatis. Mauris vel | |
dolor mi, in suscipit erat. Cras nisi nisi, egestas ac cursus non, | |
tincidunt id orci. Vivamus porttitor auctor risus id | |
volutpat. Phasellus sapien leo, bibendum nec vehicula quis, porttitor | |
quis turpis. Donec ut tempus erat. Nulla orci nisl, auctor in | |
vestibulum et, luctus ut velit. | |
Lorem ipsum dolor sit amet, consectetur adipiscing | |
elit. Cras et urna magna. Sed eget aliquam leo. Aliquam laoreet | |
placerat volutpat. Curabitur mattis mattis quam adipiscing | |
condimentum. Nullam in risus sit amet justo imperdiet eleifend | |
facilisis quis magna. Fusce vitae diam nisi, at lacinia erat. Morbi | |
est dolor, varius eget euismod eget, imperdiet non risus. Donec | |
sagittis sagittis metus, quis hendrerit lorem tincidunt eu. In vitae | |
nisl sit amet magna porta convallis. Vestibulum sagittis malesuada | |
dolor sit amet posuere. Pellentesque id elementum augue. Morbi | |
sollicitudin, massa quis auctor vulputate, libero velit sagittis | |
libero, rutrum pharetra nisi ipsum ut lectus. Duis lacus eros, | |
facilisis eu tincidunt quis, feugiat aliquet nisl. Pellentesque | |
pulvinar velit non justo mattis in pharetra odio venenatis. Mauris vel | |
dolor mi, in suscipit erat. Cras nisi nisi, egestas ac cursus non, | |
tincidunt id orci. Vivamus porttitor auctor risus id | |
volutpat. Phasellus sapien leo, bibendum nec vehicula quis, porttitor | |
quis turpis. Donec ut tempus erat. Nulla orci nisl, auctor in | |
vestibulum et, luctus ut velit. | |
X-Short-Header: woo | |
hello |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment