diff -aur libtorrent-libtorrent-1_1.orig/src/session_impl.cpp libtorrent-libtorrent-1_1/src/session_impl.cpp --- libtorrent-libtorrent-1_1.orig/src/session_impl.cpp 2016-07-19 16:48:53.882000208 -0700 +++ libtorrent-libtorrent-1_1/src/session_impl.cpp 2016-07-19 16:52:54.445769928 -0700 @@ -1237,7 +1237,8 @@ ip_filter const& session_impl::get_ip_filter() { TORRENT_ASSERT(is_single_thread()); - return *m_ip_filter; + if (!m_ip_filter) m_ip_filter = boost::make_shared(); + return *m_ip_filter; } port_filter const& session_impl::get_port_filter() const diff -aur libtorrent-libtorrent-1_1.orig/test/test_ip_filter.cpp libtorrent-libtorrent-1_1/test/test_ip_filter.cpp --- libtorrent-libtorrent-1_1.orig/test/test_ip_filter.cpp 2016-07-19 16:48:53.888666887 -0700 +++ libtorrent-libtorrent-1_1/test/test_ip_filter.cpp 2016-07-19 16:58:57.449753986 -0700 @@ -35,6 +35,7 @@ #include "test.hpp" #include "libtorrent/socket_io.hpp" +#include "libtorrent/session.hpp" /* @@ -89,6 +90,18 @@ } } +TORRENT_TEST(session_get_ip_filter) +{ + using namespace libtorrent; + session ses; + ip_filter const& ipf = ses.get_ip_filter(); + #if TORRENT_USE_IPV6 + TEST_EQUAL(boost::get<0>(ipf.export_filter()).size(), 1); + #else + TEST_EQUAL(ipf.export_filter().size(), 1); + #endif +} } + TORRENT_TEST(ip_filter) { using namespace libtorrent;