~ignacio-nin/galera/galera-2.x

« back to all changes in this revision

Viewing changes to galera/src/ist.cpp

  • Committer: Teemu Ollakka
  • Date: 2012-01-27 13:33:48 UTC
  • Revision ID: teemu.ollakka@codership.com-20120127133348-tiuoi586a2928inl
References lp:884566, lp:922549 synced with SVN r2696

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
    static inline std::string unescape_addr(const std::string& addr)
41
41
    {
42
42
        std::string ret(addr);
43
 
        remove(ret.begin(), ret.end(), '[');
44
 
        remove(ret.begin(), ret.end(), ']');
45
 
        return addr;
 
43
        size_t pos(ret.find('['));
 
44
        if (pos != std::string::npos) ret.erase(pos, 1);
 
45
        pos = ret.find(']');
 
46
        if (pos != std::string::npos) ret.erase(pos, 1);
 
47
        return ret;
46
48
    }
47
49
 
48
50
 
748
750
        }
749
751
 
750
752
        asio::ip::tcp::resolver resolver(io_service_);
751
 
        asio::ip::tcp::resolver::query query(unescape_addr(uri.get_host()),
752
 
                                             uri.get_port());
 
753
        asio::ip::tcp::resolver::query
 
754
            query(unescape_addr(uri.get_host()),
 
755
                  uri.get_port(),
 
756
                  asio::ip::tcp::resolver::query::flags(0));
753
757
        asio::ip::tcp::resolver::iterator i(resolver.resolve(query));
754
758
        acceptor_.open(i->endpoint().protocol());
755
759
        acceptor_.set_option(asio::ip::tcp::socket::reuse_address(true));
765
769
    catch (asio::system_error& e)
766
770
    {
767
771
        recv_addr_ = "";
768
 
        gu_throw_error(e.code().value()) << "Failed to open IST listener at "
769
 
                                         << uri.to_string();
 
772
        gu_throw_error(e.code().value())
 
773
            << "Failed to open IST listener at "
 
774
            << uri.to_string()
 
775
            << "', asio error '" << e.what() << "'";
770
776
    }
771
777
 
772
778
    current_seqno_ = first_seqno;
804
810
    }
805
811
    catch (asio::system_error& e)
806
812
    {
807
 
        gu_throw_error(e.code().value()) << "accept() failed";
 
813
        gu_throw_error(e.code().value()) << "accept() failed"
 
814
                                         << "', asio error '"
 
815
                                         << e.what() << "'";
808
816
    }
809
817
    acceptor_.close();
810
818
    int ec(0);
979
987
void galera::ist::Receiver::interrupt()
980
988
{
981
989
    gu::URI uri(recv_addr_);
982
 
    asio::ip::tcp::resolver resolver(io_service_);
983
 
    asio::ip::tcp::resolver::query query(unescape_addr(uri.get_host()),
984
 
                                         uri.get_port());
985
 
    asio::ip::tcp::resolver::iterator i(resolver.resolve(query));
986
990
    try
987
991
    {
 
992
        asio::ip::tcp::resolver::iterator i;
 
993
        try
 
994
        {
 
995
            asio::ip::tcp::resolver resolver(io_service_);
 
996
            asio::ip::tcp::resolver::query
 
997
                query(unescape_addr(uri.get_host()),
 
998
                      uri.get_port(),
 
999
                      asio::ip::tcp::resolver::query::flags(0));
 
1000
            i = resolver.resolve(query);
 
1001
        }
 
1002
        catch (asio::system_error& e)
 
1003
        {
 
1004
            gu_throw_error(e.code().value())
 
1005
                << "failed to resolve host '"
 
1006
                << uri.to_string()
 
1007
                << "', asio error '" << e.what() << "'";
 
1008
        }
988
1009
        if (use_ssl_ == true)
989
1010
        {
990
1011
            asio::ssl::stream<asio::ip::tcp::socket>
1033
1054
    try
1034
1055
    {
1035
1056
        asio::ip::tcp::resolver resolver(io_service_);
1036
 
        asio::ip::tcp::resolver::query query(unescape_addr(uri.get_host()),
1037
 
                                             uri.get_port());
 
1057
        asio::ip::tcp::resolver::query
 
1058
            query(unescape_addr(uri.get_host()),
 
1059
                  uri.get_port(),
 
1060
                  asio::ip::tcp::resolver::query::flags(0));
1038
1061
        asio::ip::tcp::resolver::iterator i(resolver.resolve(query));
1039
1062
        if (uri.get_scheme() == "ssl")
1040
1063
        {
1159
1182
    }
1160
1183
    catch (asio::system_error& e)
1161
1184
    {
1162
 
        gu_throw_error(e.code().value()) << "ist send failed: " << e.code();
 
1185
        gu_throw_error(e.code().value()) << "ist send failed: " << e.code()
 
1186
                                         << "', asio error '" << e.what()
 
1187
                                         << "'";
1163
1188
    }
1164
1189
}
1165
1190