After upgrading to 2.3.2 the -s, -r, and -R flags to check_http no longer work, e.g: dot 241 % pkg info nagios-plugins | fgrep Version Version : 2.3.2,1 dot 242 % /usr/local/libexec/nagios/check_http -S -H www.freebsd.org -s operating HTTP CRITICAL: HTTP/1.1 200 OK - string 'operating' not found on 'https://www.freebsd.org:443/' - 8195 bytes in 0.351 second response time |time=0.350931s;;;0.000000 size=8195B;;;0 This fixed by the patch in this pull request by Sebastian Wolf: https://github.com/nagios-plugins/nagios-plugins/pull/533 check_http: Fix issue with page length calculation #533 Please see attached patch for the port.
Created attachment 212036 [details] patch
After deploying this I see it only fixes use with servers that provide a content-length header in the repsonse; my read of the spec: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html Applications SHOULD use this field to indicate the transfer-length of the message-body but I find I have http servers (e.g. embedded devices) that do not provide content-length. I will test and submit a new patch that just reverts the new content-length code in check_http() to the 2.3.1 version.
Created attachment 212040 [details] revised patch Revised patch that reverts most of check_http to the 2.3.1 version. This version works even when a content-length header is not provided by the http server.
This issue is fixed by 2.3.3, committed by mat@ yesterday: (From nagios-plugins-2.3.2/ChangeLog) > 2020-03-03 madlohe <swolf@nagios.com> > > * plugins/check_http.c: (Handles #535) check_http: Ensure that trailing > null byte is copied to full_page_new (gets overwritten each loop > iteration) > 2020-03-02 madlohe <swolf@nagios.com> > > * plugins/check_http.c: Content-Length is not required - don't check it > if it wasn't included in the headers.