This change allows users to get a full list of HTTP request headers
allowing libraries that build on top of websocketpp to pass those on
to their users without exposing access to the already existing getter
methods.
This change fixes a shutdown crash occuring when using an
external io_service to drive a websocketpp server. The crash
itself is reproduced by the following code:
```
int main(int argc, const char * argv[])
{
boost::asio::io_service ioService;
std::unique_ptr<boost::asio::io_service::work> ioServiceWork(new boost::asio::io_service::work(ioService));
std::thread ioServiceThread(boost::bind(&boost::asio::io_service::run, &ioService));
{
auto server = std::unique_ptr<websocketpp::server<websocketpp::config::asio>>(new websocketpp::server<websocketpp::config::asio>());
server->init_asio(&ioService);
server->listen(0);
server->start_accept();
server->stop();
}
ioServiceWork.reset();
ioService.stop();
ioServiceThread.join();
return 0;
}
```
The cause of the crash is a dangling pointer to alog or elog objects in endpoints.
This is mitigated by storing logging objects as shared_ptrs. This ensures that
they are kept alive and able to log even if their owning structures have already
been deallocated.