Xymon Mailing List Archive search

HTTP error 0

list Henrik Størner
Thu, 13 Nov 2008 06:56:08 +0000 (UTC)
Message-Id: <gfgj28$6rl$user-e356fad9864f@xymon.invalid>

In <user-543359c918a2@xymon.invalid> "Samuel Cai" <user-ba507acc1d03@xymon.invalid> writes:
In <user-7bd96d8c477b@xymon.invalid> =
"Aaron Li" <user-deffebe7d884@xymon.invalid> writes:
When hobbit monitors the https site, it always gets the error " HTTP
error 0" like below, I appreciate a lot if anyone can give the =
solution,
I'm with Aaron in same company, the weird thing is, if we use wget, then =
can still receive data, so not sure what's wrong.

Can you try running '~hobbit/server/bin/bbtest-net --version' just to
check the version number of your OpenSSL library ?

And can you get data using just the openssl client utility ? Like this:

  openssl s_client -connect 10.20.30.40:443

(replace the IP with that of your server). If that succeeds and shows
you the server certificate then enter

  GET / HTTP/1.0

and hit <enter> twice - this mimicks a simple HTTP request. Does that
work ? And how long does it take to complete ?


Finally, you could try modifying the code in hobbit-4.2.0/bbnet/contest.c
In there is a routine called "socket_read"; delete the version in your
file and replace it with the version below. Recompile with "make bbnet-build"
and copy the new bbnet/bbtest-net program to ~hobbit/server/bin/ . Then
run it with the "--debug" option enabled, like

   bbcmd bbtest-net --noping --debug HOSTNAME

to run the test of just this one host. Hopefully that will print out
some more info about what happens with that read that returns -1.


Regards,
Henrik


static int socket_read(tcptest_t *item, char *inbuf, int inbufsize)
{
        int res = 0;
        char errtxt[1024];

        if (item->svcinfo->flags & TCP_SSL) {
                if (item->sslrunning) {
                        item->sslagain = 0;
                        res = SSL_read(item->ssldata, inbuf, inbufsize);
                        if (res < 0) {
                                switch (SSL_get_error (item->ssldata, res)) {
                                  case SSL_ERROR_WANT_READ:
                                  case SSL_ERROR_WANT_WRITE:
                                          item->sslagain = 1;
                                          break;
                                  default:
                                          ERR_error_string(ERR_get_error(), errtxt);
                                          dbgprintf("SSL read error %s\n", errtxt);
                                          break;
                                }
                        }
                }
                else {
                        /* SSL setup failed - flag 0 bytes read. */
                        res = 0;
                }
        }
        else {
                res = read(item->fd, inbuf, inbufsize);
                if (res < 0) {
                        dbgprintf("Read error %s\n", strerror(errno));
                }
        }

        if (res > 0) item->bytesread += res;
        return res;
}