+
+ // Sometimes we need the request body by itself, sometimes we need it with headers.
+ // So we save it with synthetic headers, and also provide a pointer into the place where the body begins.
+
+ char *cct = header_val(&h, "Content-Type");
+ if (cct) {
+ h.request_body_with_synth_headers = malloc(h.request_body_length + 1024);
+ memset(h.request_body_with_synth_headers, h.request_body_length + 1024, 0);
+ sprintf(h.request_body_with_synth_headers, "Content-Type: %s\r\n\r\n", cct);
+ h.request_body = h.request_body_with_synth_headers + strlen(h.request_body_with_synth_headers);
+ }
+ else { // a request body absent a Content-Type: header is invalid, but handle it anyway.
+ h.request_body_with_synth_headers = malloc(h.request_body_length);
+ memset(h.request_body_with_synth_headers, h.request_body_length, 0);
+ h.request_body = h.request_body_with_synth_headers;
+ }
+