@@ -204,39 +204,42 @@ void UvTcpServerStream::Write(const std::vector<uint8_t>& data)
204204 fwRefContainer<UvTcpServerStream> stream;
205205 };
206206
207- // prepare a write request
208- UvWriteReq* writeReq = new UvWriteReq;
209- writeReq->sendData = data;
210- writeReq->buffer .base = reinterpret_cast <char *>(&writeReq->sendData [0 ]);
211- writeReq->buffer .len = writeReq->sendData .size ();
212- writeReq->stream = this ;
213-
214- writeReq->write .data = writeReq;
215-
216- // submit the write request
217- m_pendingRequests.push ([=]()
207+ if (m_writeCallback)
218208 {
219- if (!m_client)
220- {
221- return ;
222- }
209+ // prepare a write request
210+ UvWriteReq* writeReq = new UvWriteReq;
211+ writeReq->sendData = data;
212+ writeReq->buffer .base = reinterpret_cast <char *>(&writeReq->sendData [0 ]);
213+ writeReq->buffer .len = writeReq->sendData .size ();
214+ writeReq->stream = this ;
223215
224- // send the write request
225- uv_write (&writeReq->write , reinterpret_cast <uv_stream_t *>(m_client.get ()), &writeReq->buffer , 1 , [](uv_write_t * write , int status)
226- {
227- UvWriteReq* req = reinterpret_cast <UvWriteReq*>(write ->data );
216+ writeReq->write .data = writeReq;
228217
229- if (status < 0 )
218+ // submit the write request
219+ m_pendingRequests.push ([=]()
220+ {
221+ if (!m_client)
230222 {
231- // trace("write to %s failed - %s\n", req->stream->GetPeerAddress().ToString().c_str(), uv_strerror(status)) ;
223+ return ;
232224 }
233225
234- delete req;
226+ // send the write request
227+ uv_write (&writeReq->write , reinterpret_cast <uv_stream_t *>(m_client.get ()), &writeReq->buffer , 1 , [](uv_write_t * write , int status)
228+ {
229+ UvWriteReq* req = reinterpret_cast <UvWriteReq*>(write ->data );
230+
231+ if (status < 0 )
232+ {
233+ // trace("write to %s failed - %s\n", req->stream->GetPeerAddress().ToString().c_str(), uv_strerror(status));
234+ }
235+
236+ delete req;
237+ });
235238 });
236- });
237239
238- // wake the callback
239- uv_async_send (m_writeCallback.get ());
240+ // wake the callback
241+ uv_async_send (m_writeCallback.get ());
242+ }
240243}
241244
242245void UvTcpServerStream::ScheduleCallback (const TScheduledCallback& callback)
0 commit comments