Skip to content

Instantly share code, notes, and snippets.

@dustin
Created January 3, 2011 00:07
Show Gist options
  • Save dustin/762954 to your computer and use it in GitHub Desktop.
Save dustin/762954 to your computer and use it in GitHub Desktop.
Testing curl header parsing
/*
* 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;
}
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