shrpx_spdy_session: Use std::unique_ptr for proxy_htp_
This commit is contained in:
parent
769f560586
commit
e1dfc1cdc5
|
@ -59,8 +59,7 @@ SpdySession::SpdySession(event_base *evbase, SSL_CTX *ssl_ctx)
|
||||||
notified_(false),
|
notified_(false),
|
||||||
wrbev_(nullptr),
|
wrbev_(nullptr),
|
||||||
rdbev_(nullptr),
|
rdbev_(nullptr),
|
||||||
flow_control_(false),
|
flow_control_(false)
|
||||||
proxy_htp_(0)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
SpdySession::~SpdySession()
|
SpdySession::~SpdySession()
|
||||||
|
@ -109,8 +108,7 @@ int SpdySession::disconnect()
|
||||||
}
|
}
|
||||||
|
|
||||||
if(proxy_htp_) {
|
if(proxy_htp_) {
|
||||||
delete proxy_htp_;
|
proxy_htp_.reset();
|
||||||
proxy_htp_ = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
notified_ = false;
|
notified_ = false;
|
||||||
|
@ -386,8 +384,8 @@ int SpdySession::initiate_connection()
|
||||||
bev_ = 0;
|
bev_ = 0;
|
||||||
return SHRPX_ERR_NETWORK;
|
return SHRPX_ERR_NETWORK;
|
||||||
}
|
}
|
||||||
proxy_htp_ = new http_parser();
|
proxy_htp_ = util::make_unique<http_parser>();
|
||||||
http_parser_init(proxy_htp_, HTTP_RESPONSE);
|
http_parser_init(proxy_htp_.get(), HTTP_RESPONSE);
|
||||||
proxy_htp_->data = this;
|
proxy_htp_->data = this;
|
||||||
|
|
||||||
state_ = PROXY_CONNECTING;
|
state_ = PROXY_CONNECTING;
|
||||||
|
@ -514,12 +512,12 @@ int SpdySession::on_read_proxy()
|
||||||
evbuffer *input = bufferevent_get_input(bev_);
|
evbuffer *input = bufferevent_get_input(bev_);
|
||||||
unsigned char *mem = evbuffer_pullup(input, -1);
|
unsigned char *mem = evbuffer_pullup(input, -1);
|
||||||
|
|
||||||
size_t nread = http_parser_execute(proxy_htp_, &htp_hooks,
|
size_t nread = http_parser_execute(proxy_htp_.get(), &htp_hooks,
|
||||||
reinterpret_cast<const char*>(mem),
|
reinterpret_cast<const char*>(mem),
|
||||||
evbuffer_get_length(input));
|
evbuffer_get_length(input));
|
||||||
|
|
||||||
evbuffer_drain(input, nread);
|
evbuffer_drain(input, nread);
|
||||||
http_errno htperr = HTTP_PARSER_ERRNO(proxy_htp_);
|
http_errno htperr = HTTP_PARSER_ERRNO(proxy_htp_.get());
|
||||||
if(htperr == HPE_OK) {
|
if(htperr == HPE_OK) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "shrpx.h"
|
#include "shrpx.h"
|
||||||
|
|
||||||
#include <set>
|
#include <set>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
|
|
||||||
|
@ -129,7 +130,7 @@ private:
|
||||||
bufferevent *rdbev_;
|
bufferevent *rdbev_;
|
||||||
bool flow_control_;
|
bool flow_control_;
|
||||||
// Used to parse the response from HTTP proxy
|
// Used to parse the response from HTTP proxy
|
||||||
http_parser *proxy_htp_;
|
std::unique_ptr<http_parser> proxy_htp_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace shrpx
|
} // namespace shrpx
|
||||||
|
|
Loading…
Reference in New Issue