@@ -1698,16 +1698,19 @@ Ndb_mgmd_event_service::log(int eventType, const Uint32* theData,
1698
1698
logevent2str (str, eventType, theData, len, nodeId, 0 ,
1699
1699
pretty_text, sizeof (pretty_text));
1700
1700
1701
- Vector<ndb_socket_t > copy;
1701
+ Vector<NdbSocket * > copy;
1702
1702
m_clients.lock ();
1703
1703
for (i = m_clients.size () - 1 ; i >= 0 ; i--)
1704
1704
{
1705
1705
if (threshold <= m_clients[i].m_logLevel .getLogLevel (cat))
1706
1706
{
1707
- if (! ndb_socket_valid ( m_clients[i].m_socket ) )
1707
+ if (m_clients[i].m_socket_ptr == nullptr )
1708
1708
continue ;
1709
1709
1710
- SocketOutputStream out (m_clients[i].m_socket );
1710
+ if (!m_clients[i].m_socket_ptr ->is_valid ())
1711
+ continue ;
1712
+
1713
+ SecureSocketOutputStream out (* m_clients[i].m_socket_ptr );
1711
1714
1712
1715
int r;
1713
1716
if (m_clients[i].m_parsable )
@@ -1728,7 +1731,7 @@ Ndb_mgmd_event_service::log(int eventType, const Uint32* theData,
1728
1731
1729
1732
if (r<0 )
1730
1733
{
1731
- copy.push_back (m_clients[i].m_socket );
1734
+ copy.push_back (m_clients[i].m_socket_ptr );
1732
1735
m_clients.erase (i, false );
1733
1736
}
1734
1737
}
@@ -1737,8 +1740,10 @@ Ndb_mgmd_event_service::log(int eventType, const Uint32* theData,
1737
1740
1738
1741
if ((n= (int )copy.size ()))
1739
1742
{
1740
- for (i= 0 ; i < n; i++)
1741
- ndb_socket_close (copy[i]);
1743
+ for (i= 0 ; i < n; i++) {
1744
+ copy[i]->close ();
1745
+ delete copy[i];
1746
+ }
1742
1747
1743
1748
LogLevel tmp; tmp.clear ();
1744
1749
m_clients.lock ();
@@ -1780,18 +1785,18 @@ Ndb_mgmd_event_service::check_listeners()
1780
1785
m_clients.lock ();
1781
1786
for (i= m_clients.size () - 1 ; i >= 0 ; i--)
1782
1787
{
1783
- if (! ndb_socket_valid ( m_clients[i].m_socket ) )
1788
+ if (m_clients[i].m_socket_ptr == nullptr )
1784
1789
continue ;
1785
1790
1786
- SocketOutputStream out (m_clients[i].m_socket );
1791
+ if (!(m_clients[i].m_socket_ptr ->is_valid ()))
1792
+ continue ;
1787
1793
1788
- DBUG_PRINT (" info" ,(" %d %s" ,
1789
- i,
1790
- ndb_socket_to_string (m_clients[i].m_socket ).c_str ()));
1794
+ SecureSocketOutputStream out (* m_clients[i].m_socket_ptr );
1791
1795
1792
1796
if (out.println (" <PING>" ) < 0 )
1793
1797
{
1794
- ndb_socket_close (m_clients[i].m_socket );
1798
+ m_clients[i].m_socket_ptr ->close ();
1799
+ delete m_clients[i].m_socket_ptr ;
1795
1800
m_clients.erase (i, false );
1796
1801
n=1 ;
1797
1802
}
@@ -1808,14 +1813,15 @@ Ndb_mgmd_event_service::check_listeners()
1808
1813
}
1809
1814
1810
1815
void
1811
- Ndb_mgmd_event_service::add_listener (const Event_listener& client)
1816
+ Ndb_mgmd_event_service::add_listener (Event_listener& client, NdbSocket& socket )
1812
1817
{
1813
1818
DBUG_ENTER (" Ndb_mgmd_event_service::add_listener" );
1814
- DBUG_PRINT (" enter" ,(" client.m_socket: %s" ,
1815
- ndb_socket_to_string (client.m_socket ).c_str ()));
1816
1819
1817
1820
check_listeners ();
1818
1821
1822
+ client.m_socket_ptr = new NdbSocket ();
1823
+ NdbSocket::transfer (* client.m_socket_ptr , socket);
1824
+
1819
1825
m_clients.push_back (client);
1820
1826
update_max_log_level (client.m_logLevel );
1821
1827
@@ -1826,9 +1832,9 @@ void
1826
1832
Ndb_mgmd_event_service::stop_sessions (){
1827
1833
m_clients.lock ();
1828
1834
for (int i = m_clients.size () - 1 ; i >= 0 ; i--){
1829
- if (ndb_socket_valid ( m_clients[i].m_socket ))
1835
+ if (m_clients[i].m_socket_ptr && m_clients[i]. m_socket_ptr -> is_valid ( ))
1830
1836
{
1831
- ndb_socket_close ( m_clients[i].m_socket );
1837
+ m_clients[i].m_socket_ptr -> close ( );
1832
1838
m_clients.erase (i, false );
1833
1839
}
1834
1840
}
@@ -1918,7 +1924,6 @@ MgmApiSession::listen_event(Parser<MgmApiSession>::Context & ctx,
1918
1924
1919
1925
Ndb_mgmd_event_service::Event_listener le;
1920
1926
le.m_parsable = parsable;
1921
- le.m_socket = m_secure_socket.ndb_socket ();
1922
1927
1923
1928
Vector<BaseString> list;
1924
1929
param.trim ();
@@ -1982,9 +1987,9 @@ MgmApiSession::listen_event(Parser<MgmApiSession>::Context & ctx,
1982
1987
1983
1988
if (result==0 )
1984
1989
{
1985
- m_mgmsrv.m_event_listner .add_listener (le);
1990
+ m_mgmsrv.m_event_listner .add_listener (le, m_secure_socket );
1986
1991
m_stop = true ;
1987
- m_secure_socket.invalidate ();
1992
+ assert (! m_secure_socket.is_valid ()); // it has been transfered to listener
1988
1993
}
1989
1994
}
1990
1995
0 commit comments