void MOB_Connection::read_socket()
{
#ifdef DEF_USE_ASIO_ASYNC_READ
	_async_read();
#else
	_async_read_some();
#endif
}
void tcp_basesession::handle_read_header( const boost::system::error_code& error )
{
	if( !is_valid() )
		return;

	if( !error )
	{
		_record_action();

		unsigned short datalen = *(unsigned short*)m_recv_buffer;
		m_recv_size += datalen;

		if( datalen > m_message_head_len )
		{
			//assert( datalen <= MAX_MESSAGE_LEN );
			_async_read(datalen);
			//boost::asio::async_read( *m_socket,
			//	boost::asio::buffer( m_recv_buffer + m_message_head_len, datalen - m_message_head_len ),
			//	boost::bind( &tcp_basesession::handle_read_body, this,
			//	boost::asio::placeholders::error ) );
		}
		else if( datalen == m_message_head_len )
		{
			_Read_Other();
		}
		else
		{
			//printf( "datalen < 12, close socket\n" );
			if( m_father )
			{
				m_father->add_ban_ip( this->get_remote_address_ui(), 120, net_global::BAN_REASON_HACK_PACKET );
				printf( "IP:[%s] try to hack server. Ban it for 120 seconds.\n", get_remote_address_string().c_str() );
			}
			this->close();
			net_global::write_close_log( "IP:[%s] message length is not valid", this->get_remote_address_string().c_str() );
		}
	}
	else
		_on_close( error );
}