Skip to content

Commit

Permalink
Set SEVER_SOFTWARE to the value provided over FastCGI
Browse files Browse the repository at this point in the history
Closes #2106
Github Author: Simon Welsh <simonsimon.geek.nz>

Reviewed By: @fredemmott

Differential Revision: D1229962
  • Loading branch information
ptarjan authored and sgolemon committed Mar 26, 2014
1 parent 307d1b8 commit 516e149
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 1 deletion.
7 changes: 7 additions & 0 deletions hphp/runtime/server/fastcgi/fastcgi-transport.cpp
Expand Up @@ -88,6 +88,11 @@ uint16_t FastCGITransport::getServerPort() {
return (m_serverPort != 0) ? m_serverPort : Transport::getServerPort();
}

const char *FastCGITransport::getServerSoftware() {
return (!m_serverSoftware.empty()) ? m_serverSoftware.c_str() :
Transport::getServerSoftware();
}

const void *FastCGITransport::getPostData(int &size) {
assert(!m_readMore);
return getPostDataImpl(size, false);
Expand Down Expand Up @@ -358,6 +363,7 @@ static const std::string
s_remoteAddr("REMOTE_ADDR"),
s_serverName("SERVER_NAME"),
s_serverAddr("SERVER_ADDR"),
s_serverSoftware("SERVER_SOFTWARE"),
s_extendedMethod("REQUEST_METHOD"),
s_httpVersion("HTTP_VERSION"),
s_documentRoot("DOCUMENT_ROOT"),
Expand All @@ -375,6 +381,7 @@ void FastCGITransport::onHeadersComplete() {
m_remoteAddr = getRawHeader(s_remoteAddr);
m_serverName = getRawHeader(s_serverName);
m_serverAddr = getRawHeader(s_serverAddr);
m_serverSoftware = getRawHeader(s_serverSoftware);
m_extendedMethod = getRawHeader(s_extendedMethod);
m_httpVersion = getRawHeader(s_httpVersion);
m_serverObject = getRawHeader(s_scriptName);
Expand Down
2 changes: 2 additions & 0 deletions hphp/runtime/server/fastcgi/fastcgi-transport.h
Expand Up @@ -54,6 +54,7 @@ class FastCGITransport
virtual const char *getServerName() override;
virtual const char *getServerAddr() override;
virtual uint16_t getServerPort() override;
virtual const char* getServerSoftware() override;

virtual const void *getPostData(int &size) override;
virtual bool hasMorePostData() override;
Expand Down Expand Up @@ -121,6 +122,7 @@ class FastCGITransport
uint16_t m_remotePort;
std::string m_serverName;
std::string m_serverAddr;
std::string m_serverSoftware;
uint16_t m_serverPort;
Method m_method;
std::string m_extendedMethod;
Expand Down
2 changes: 1 addition & 1 deletion hphp/runtime/server/http-protocol.cpp
Expand Up @@ -511,7 +511,7 @@ static void CopyServerInfo(Array& server,
server.set(s_SERVER_ADDR, transport->getServerAddr());
server.set(s_SERVER_NAME, hostName);
server.set(s_SERVER_PORT, transport->getServerPort());
server.set(s_SERVER_SOFTWARE, s_HPHP);
server.set(s_SERVER_SOFTWARE, transport->getServerSoftware());
server.set(s_SERVER_PROTOCOL, "HTTP/" + transport->getHTTPVersion());
server.set(s_SERVER_ADMIN, empty_string);
server.set(s_SERVER_SIGNATURE, empty_string);
Expand Down
3 changes: 3 additions & 0 deletions hphp/runtime/server/transport.h
Expand Up @@ -135,6 +135,9 @@ class Transport : public IDebuggable {
virtual uint16_t getServerPort() {
return RuntimeOption::ServerPort;
};
virtual const char *getServerSoftware() {
return "HPHP";
};

/**
* POST request's data.
Expand Down

0 comments on commit 516e149

Please sign in to comment.