Skip to content

Commit

Permalink
Merge pull request #4887 from rgacogne/auth-webserver-exit
Browse files Browse the repository at this point in the history
auth: Don't exit if the webserver can't accept a connection
  • Loading branch information
pieterlexis authored Jan 12, 2017
2 parents fd95c88 + 17d60ab commit 95e6cf1
Showing 1 changed file with 27 additions and 10 deletions.
37 changes: 27 additions & 10 deletions pdns/webserver.cc
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@
#include <yahttp/router.hpp>

struct connectionThreadData {
WebServer* webServer;
Socket* client;
WebServer* webServer{nullptr};
Socket* client{nullptr};
};

json11::Json HttpRequest::json()
Expand Down Expand Up @@ -363,14 +363,31 @@ void WebServer::go()
// data and data->client will be freed by thread
connectionThreadData *data = new connectionThreadData;
data->webServer = this;
data->client = d_server->accept();
if (data->client->acl(acl)) {
pthread_create(&tid, 0, &WebServerConnectionThreadStart, (void *)data);
} else {
ComboAddress remote;
if (data->client->getRemote(remote))
L<<Logger::Error<<"Webserver closing socket: remote ("<< remote.toString() <<") does not match 'webserver-allow-from'"<<endl;
delete data->client; // close socket
try {
data->client = d_server->accept();
if (data->client->acl(acl)) {
pthread_create(&tid, 0, &WebServerConnectionThreadStart, (void *)data);
} else {
ComboAddress remote;
if (data->client->getRemote(remote))
L<<Logger::Error<<"Webserver closing socket: remote ("<< remote.toString() <<") does not match 'webserver-allow-from'"<<endl;
delete data->client; // close socket
delete data;
}
}
catch(PDNSException &e) {
L<<Logger::Error<<"PDNSException while accepting a connection in main webserver thread: "<<e.reason<<endl;
delete data->client;
delete data;
}
catch(std::exception &e) {
L<<Logger::Error<<"STL Exception while accepting a connection in main webserver thread: "<<e.what()<<endl;
delete data->client;
delete data;
}
catch(...) {
L<<Logger::Error<<"Unknown exception while accepting a connection in main webserver thread"<<endl;
delete data->client;
delete data;
}
}
Expand Down

0 comments on commit 95e6cf1

Please sign in to comment.