[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [libmicrohttpd] How to send a binary payload (octet-stream)?

From: silvioprog
Subject: Re: [libmicrohttpd] How to send a binary payload (octet-stream)?
Date: Fri, 5 Jan 2018 00:59:48 -0300

Oh, I found a good explanation just after sensing my question:

* @param[in,out] upload_data_size set initially to the size of the
* @a upload_data provided; the method must update this
* value to the number of bytes NOT processed;
... it seems I need to load the upload_data on demand. 🤔

I'm going to test it and back with some feedback ...

On Fri, Jan 5, 2018 at 12:50 AM, silvioprog <address@hidden> wrote:
Hi dudes!

Consider the following file:


# debugdump.txt just for debuging
$ url --header "Content-Type:application/octet-stream" --trace-ascii debugdump.txt --data-binary @content.bin http://localhost:9090

and example:
#include <microhttpd.h>
#include <stdio.h>
#include <string.h>

static int answer_to_connection(void *cls, struct MHD_Connection *connection, const char *url, const char *method,
const char *version, const char *upload_data, size_t *upload_data_size,
void **con_cls) {
if (!*con_cls) {
*con_cls = (void *) 1;
return MHD_YES;
*con_cls = NULL;
printf("*upload_data_size: %zd\n", *upload_data_size);
return MHD_NO;

int main(void) {
struct MHD_Daemon *daemon;
daemon = MHD_start_daemon(MHD_USE_SELECT_INTERNALLY, 9090, NULL, NULL, &answer_to_connection, NULL, MHD_OPTION_END);
return 0;
the result is:

*upload_data_size: 1995

but the upload_data buffer contains only 746 characters. OK, my file is a binary that contains some NULLs, so it should be sent via multipart/form-data, however, I've tested it with other servers and the binary content is sent properly as application/octet-stream. (eg. NodeJS uses its req.buffer to get octet-streams)

It seems MHD's payload (upload_data) ends with first NULL character. So, is there any chance to get a binary content without using HTML forms?

Thank you!

Silvio Clécio

reply via email to

[Prev in Thread] Current Thread [Next in Thread]