Libtorrent Session_Status не обновляется

Я пытаюсь обновить Session_Status, но по какой-либо причине значения структуры никогда не обновляются, сессия запускается так:

 using namespace libtorrent;
 session* Session;
 session_status* Session_Status;
 session_settings* Session_Settings;

 bool Start_Client_Sess ( )
 {
     using namespace libtorrent;
     Session = new session;
     Session_Status = new session_status;
     Session_Settings = new session_settings;
     Session->settings ( );
     Session->set_settings ( *Session_Settings );

     Session->add_extension ( create_ut_pex_plugin );
     Session->add_extension ( create_ut_metadata_plugin );
     Session->add_extension ( create_lt_trackers_plugin );
     Session->add_extension ( create_smart_ban_plugin );

     Session->start_upnp ( );
     Session->start_natpmp ( );
     Session->start_dht ( );
     Session->start_lsd ( );    

     error_code e;
     Session->listen_on ( std::make_pair ( 6881 , 6889 ) , e );

     if ( e )
     {
         return false;
     }
     return true;
 }

затем на Windows 1 секундный таймер я делаю это:

 void RunTimer ( )
 {
     using namespace libtorrent;
     Session->status ( );
     if ( Session->is_listening ( ) )
     {
         if ( Session_Status->has_incoming_connections )
         {
             INT x = 2;
             std::cout << x << "\n";
         }
         else
         {
             INT x = 1;
             std::cout << x << "\n";
         }
     }
     else
     {
         INT x = 0;
         std::cout << x << "\n";
     }
 }

но независимо от того, что сеанс всегда слушает, даже если брандмауэр блокирует Libtorrent, и всегда есть соединения, даже если интернет отключен.

1 ответ

Решение

Я полагаю, что вы хотели присвоить статус сеанса вашему объекту Session_Status:

*Session_Status = Session->status();

Я бы посоветовал вам не выделять кучу объектов session_status или session_settings.

Другие вопросы по тегам