浏览代码

Throw exception instead of failing with SIGSEGV

Ivan Savenko 1 年之前
父节点
当前提交
84d9078bd9
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      lib/serializer/Connection.cpp

+ 6 - 0
lib/serializer/Connection.cpp

@@ -148,6 +148,9 @@ void CConnection::flushBuffers()
 	if(!enableBufferedWrite)
 	if(!enableBufferedWrite)
 		return;
 		return;
 
 
+	if (!socket)
+		throw std::runtime_error("Can't write to closed socket!");
+
 	try
 	try
 	{
 	{
 		asio::write(*socket, connectionBuffers->writeBuffer);
 		asio::write(*socket, connectionBuffers->writeBuffer);
@@ -164,6 +167,9 @@ void CConnection::flushBuffers()
 
 
 int CConnection::write(const void * data, unsigned size)
 int CConnection::write(const void * data, unsigned size)
 {
 {
+	if (!socket)
+		throw std::runtime_error("Can't write to closed socket!");
+
 	try
 	try
 	{
 	{
 		if(enableBufferedWrite)
 		if(enableBufferedWrite)