Thanks for the detailed report, the patch looks good as-is, applied to master as
f5d387df7e7fb8de1a5dd0739ddb83a8b19fe64b Happy hacking! Christian On 8/11/21 6:02 PM, Irion, Alexander wrote: > Hello! > > I discovered a problem with closing connections, when > MHD_OPTION_CONNECTION_TIMEOUT is used. When I set the timeout option to > 3 seconds and connect with a browser, I get a timeout value from > MHD_get_timeout() of 3000 ms returned. I then sleep the desired time and > call MHD_run again(). Then, MHD_get_timeout() returns repetitive a > timeout of 0 which causes thousands of calls to MHD_run(), taking up > several hundred milliseconds and burning CPU time. > > I use an external event loop with MHD_DAEMON_INFO_EPOLL_FD. > > As reason I found that the condition timeout < > (MHD_monotonic_sec_counter () - connection->last_activity) will not be > true, after waiting the timeout time. The right side will be equal to > timeout, so the connection is not closed, MHD_get_timeout() continues to > return a timeout value of 0, and this runs repetitively in a loop for > some thousand iterations, until the time jumps to the next second. > > In the attachment please find a small patch for fixing this issue. It's > just turning the < into a <=. > > Regards, > Alexander Irion > --> > > ----------------- > Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, > 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: > Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; > Registergericht München, HRB 106955 >
signature.asc
Description: OpenPGP digital signature