libmicrohttpd
[Top][All Lists]
Advanced

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

Re: [libmicrohttpd] libmicrohttpd 0.9.49 released


From: Christian Grothoff
Subject: Re: [libmicrohttpd] libmicrohttpd 0.9.49 released
Date: Tue, 12 Apr 2016 21:50:29 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.6.0

Ah, the cause is that you create the listen socket (which is OK), but
you don't set it to be non-blocking.  The result looks like this:


pid  5676] <... epoll_wait resumed> {{EPOLLIN, {u32=39549584,
u64=39549584}}}, 128, -1) = 1
[pid  5676] accept4(4, {sa_family=AF_INET, sin_port=htons(35076),
sin_addr=inet_addr("127.0.0.1")}, [16], SOCK_CLOEXEC|SOCK_NONBLOCK) = 8
[pid  5676] mmap(NULL, 134217728, PROT_NONE,
MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7f74bc1ab000
[pid  5676] munmap(0x7f74bc1ab000, 65359872) = 0
[pid  5676] munmap(0x7f74c4000000, 1748992) = 0
[pid  5676] mprotect(0x7f74c0000000, 135168, PROT_READ|PROT_WRITE) = 0
[pid  5676] fcntl(8, F_GETFL)           = 0x802 (flags O_RDWR|O_NONBLOCK)
[pid  5676] epoll_ctl(7, EPOLL_CTL_ADD, 8, {EPOLLIN|EPOLLOUT|EPOLLET,
{u32=3221227712, u64=140139414161600}}) = 0
[pid  5676] accept4(4,   <= hangs here!

I'm not sure if we used to make the listen socket non-blocking
explicitly before, but _removing_ calls to make stuff non-blocking was
part of Evgeny's "optimization" work. Maybe he went a bit overboard, I
certainly agree that _if_ there was a change like that it probably was
unintentional and should have been avoided.

Evgeny: could you check, and re-add the logic to make the listen socket
explicitly non-blocking also IF it was passed in from the outside to
MHD, and then make a fast bugfix release? Thanks!

On 04/12/2016 04:10 PM, Markus Doppelbauer wrote:
> Hello,
> Thanks a lot.
> For me, 0.9.49 does not work - it never enters the
> "AccessHandlerCallback()" handler. I have attached
> a small testcase.
> Steps to reproduce:
> g++ -o testmhd test.cpp -I/tmp/libmicrohttpd-0.9.49/src/include/ 
> -L/tmp/libmicrohttpd-0.9.49/src/microhttpd/.libs/ -lmicrohttpd 
> LD_LIBRARY_PATH=/tmp/libmicrohttpd-0.9.49/src/microhttpd/.libs/
> ./testmhd                                                      
> wget -O /dev/null 127.0.0.1:8080
> Best wishes,
> Markus
> Am Samstag, den 09.04.2016, 16:39 +0200 schrieb Christian Grothoff:
>> Dear all,
>>
>> I'm happy to announce the release of libmicrohttpd 0.9.49.
>>
>> GNU libmicrohttpd is a small C library that is supposed to make it
>> easy
>> to run an HTTP server as part of another application. GNU
>> libmicrohttpd
>> is fully HTTP 1.1 compliant and supports IPv6. Finally, GNU
>> libmicrohttpd is fast, portable and has a simple API and (without TLS
>> support and other optional features) a small binary size (~32k).
>>
>>
>> Major changes include:
>>
>> * use US-ASCII only (instead of user locale settings) when performing
>>   caseless string comparison.
>> * Send response properly if sendfile() failed with EINVAL
>> * do not crash if pthread_create() fails
>> * various minor bugfixes (see ChangeLog)
>> * use non-blocking sockets on all platforms
>> * various improvements to the documentation
>> * reducing number of system calls
>>
>> You can download GNU libmicrohttpd from
>>
>> * ftp://ftp.gnu.org/gnu/libmicrohttpd/ and all GNU FTP mirrors.
>> * Our Subversion repository at https://gnunet.org/svn/libmicrohttpd/
>>
>> Please report bugs to our bugtracker at https://gnunet.org/bugs/.
>>
>> The documentation (including a reference manual and tutorial) can be
>> found at http://www.gnu.org/software/libmicrohttpd/.
>>
>>
>> Happy hacking!
>>
>> Christian & Evgeny
>>

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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