@@ -165,7 +165,10 @@ void TransportSession::sendData(TransportData data)
165165void TransportSession::prepareSend (TransportData data)
166166{
167167 // Only access m_sendQueue in IO service thread.
168- m_sendQueue.push (data);
168+ TransportMessage toSend (data.buffer .get (), data.length );
169+ TransportData wrappedData{toSend.messageData (),
170+ toSend.messageLength ()};
171+ m_sendQueue.push (wrappedData);
169172 if (m_sendQueue.size () == 1 ) {
170173 sendHandler ();
171174 }
@@ -184,24 +187,21 @@ void TransportSession::sendHandler()
184187 return ;
185188 }
186189
187- TransportData data = m_sendQueue.front ();
188- TransportMessage toSend (data.buffer .get (), data.length );
189- TransportData wrappedData{toSend.messageData (),
190- toSend.messageLength ()};
190+ TransportData& data = m_sendQueue.front ();
191191
192- ELOG_DEBUG (" SendHandler- %p %zu" , this , (size_t )wrappedData .length );
192+ ELOG_DEBUG (" SendHandler- %p %zu" , this , (size_t )data .length );
193193 auto self (shared_from_this ());
194194 if (m_sslSocket) {
195195 boost::asio::async_write (
196196 *m_sslSocket,
197- boost::asio::buffer (wrappedData .buffer .get (), wrappedData .length ),
197+ boost::asio::buffer (data .buffer .get (), data .length ),
198198 boost::bind (&TransportSession::writeHandler, self,
199199 boost::asio::placeholders::error,
200200 boost::asio::placeholders::bytes_transferred));
201201 } else {
202202 boost::asio::async_write (
203203 m_socket,
204- boost::asio::buffer (wrappedData .buffer .get (), wrappedData .length ),
204+ boost::asio::buffer (data .buffer .get (), data .length ),
205205 boost::bind (&TransportSession::writeHandler, self,
206206 boost::asio::placeholders::error,
207207 boost::asio::placeholders::bytes_transferred));
0 commit comments