Mercurial > hg > bitcoin
changeset 706:65d3b325c5eb draft
rpc server: send '403 Forbidden' to rejected clients
In order to be a proper HTTP implementation clients that aren't allowed
to connect to the RPC server (using -rpcallowip), should receive a
proper HTTP response. So instead of closing the connection on them send
a '403 Forbidden' status.
Signed-off-by: Giel van Schijndel <me@mortis.eu>
author | Giel van Schijndel <me@mortis.eu> |
---|---|
date | Fri, 24 Jun 2011 19:26:47 +0200 |
parents | 1eaf93557fe5 |
children | 4b7885be4cb0 |
files | src/rpc.cpp |
diffstat | 1 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1532,7 +1532,7 @@ return string(buffer); } -string HTTPReply(int nStatus, const string& strMsg) +static string HTTPReply(int nStatus, const string& strMsg) { if (nStatus == 401) return strprintf("HTTP/1.0 401 Authorization Required\r\n" @@ -1554,6 +1554,7 @@ string strStatus; if (nStatus == 200) strStatus = "OK"; else if (nStatus == 400) strStatus = "Bad Request"; + else if (nStatus == 403) strStatus = "Forbidden"; else if (nStatus == 404) strStatus = "Not Found"; else if (nStatus == 500) strStatus = "Internal Server Error"; return strprintf( @@ -1887,7 +1888,10 @@ // Restrict callers by IP if (!ClientAllowed(peer.address().to_string())) + { + stream << HTTPReply(403, "") << std::flush; continue; + } map<string, string> mapHeaders; string strRequest;