| Index: net/quic/crypto/crypto_framer.cc
|
| diff --git a/net/quic/crypto/crypto_framer.cc b/net/quic/crypto/crypto_framer.cc
|
| index f2e76827e25f323f2e6449940beb6806a2caec40..5cb16743e6905ad927a14ad1944237985b67ee63 100644
|
| --- a/net/quic/crypto/crypto_framer.cc
|
| +++ b/net/quic/crypto/crypto_framer.cc
|
| @@ -24,28 +24,22 @@ const size_t kNumEntriesSize = sizeof(uint16);
|
| // OneShotVisitor is a framer visitor that records a single handshake message.
|
| class OneShotVisitor : public CryptoFramerVisitorInterface {
|
| public:
|
| - explicit OneShotVisitor(CryptoHandshakeMessage* out)
|
| - : out_(out),
|
| - error_(false),
|
| - done_(false) {
|
| - }
|
| + OneShotVisitor() : error_(false) {}
|
|
|
| virtual void OnError(CryptoFramer* framer) OVERRIDE { error_ = true; }
|
|
|
| virtual void OnHandshakeMessage(
|
| const CryptoHandshakeMessage& message) OVERRIDE {
|
| - *out_ = message;
|
| - done_ = true;
|
| + out_.reset(new CryptoHandshakeMessage(message));
|
| }
|
|
|
| bool error() const { return error_; }
|
|
|
| - bool done() const { return done_; }
|
| + CryptoHandshakeMessage* release() { return out_.release(); }
|
|
|
| private:
|
| - CryptoHandshakeMessage* const out_;
|
| + scoped_ptr<CryptoHandshakeMessage> out_;
|
| bool error_;
|
| - bool done_;
|
| };
|
|
|
| } // namespace
|
| @@ -61,17 +55,16 @@ CryptoFramer::~CryptoFramer() {}
|
|
|
| // static
|
| CryptoHandshakeMessage* CryptoFramer::ParseMessage(StringPiece in) {
|
| - scoped_ptr<CryptoHandshakeMessage> msg(new CryptoHandshakeMessage);
|
| - OneShotVisitor visitor(msg.get());
|
| + OneShotVisitor visitor;
|
| CryptoFramer framer;
|
|
|
| framer.set_visitor(&visitor);
|
| - if (!framer.ProcessInput(in) || visitor.error() || !visitor.done() ||
|
| + if (!framer.ProcessInput(in) || visitor.error() ||
|
| framer.InputBytesRemaining()) {
|
| return NULL;
|
| }
|
|
|
| - return msg.release();
|
| + return visitor.release();
|
| }
|
|
|
| bool CryptoFramer::ProcessInput(StringPiece input) {
|
|
|