BitcoinTalk

bitcoind not responding to RPC

BitcoinTalk
#1
From:
mtgox
Subject:
bitcoind not responding to RPC
Date:
Occasionally bitcoind will not respond to RPC I'm calling it from php and I get this error:

Warning: fopen(http://127.0.0.1:8332) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error

It happens a lot locally on my windows machine and less frequently on my linux server.

Anyone else have this problem?
BitcoinTalk
#2
From:
The Madhatter
Subject:
Re: bitcoind not responding to RPC
Date:
Try taking the "http://" out of your fsockopen(). The JSON-RPC server isn't really HTTP.

I've had the best luck with the curl+json php extensions, myself.

BitcoinTalk
#3
From:
mtgox
Subject:
Re: bitcoind not responding to RPC
Date:
Well it works 95% of the time which is what is weird
BitcoinTalk
#4
From:
The Madhatter
Subject:
Re: bitcoind not responding to RPC
Date:
Strange. I use my bitcoind almost every day from PHP, and I haven't encountered that.
BitcoinTalk
#5
From:
mtgox
Subject:
Re: bitcoind not responding to RPC
Date:
I also get it anytime I send an invalid bitcoin address. Which is weird since it doesn't seem like that would effect the connecting.
BitcoinTalk
#6
From:
satoshi
Subject:
Re: bitcoind not responding to RPC
Date:
If I recall correctly, 500 is the prescribed status code for JSON-RPC error responses.  There is still a JSON response in the body of the reply telling the explanation of the error, which could be something like {"result":"","error":"bitcoin address not found","id":"1"}.
BitcoinTalk
#7
From:
mtgox
Subject:
Re: bitcoind not responding to RPC
Date:
Weird I guess fopen() in php dies if the response is 500?

It seems like errors such as invalid address should just be normal replies just not "sent" so we can just check the reply string. I think of 500 errors as the server itself having an error.
BitcoinTalk
#8
From:
satoshi
Subject:
Re: bitcoind not responding to RPC
Date:
Can anyone confirm if JSON-RPC over HTTP is supposed to use status 500 if the reply is an error reply?  I can't remember where I picked that up, maybe it's wrong.  It seems like 200 would make more sense unless there's something wrong with the mechanics of the HTTP request itself.  (and maybe that's what it said and I forgot and spread 500 to all error responses)