X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=shibsp%2Fremoting%2Fimpl%2FTCPListener.cpp;h=65e4ec7e7e4d8144f151626977013dd648565830;hb=44efbaf72f94cbaa256fb044aa2a10d47736721b;hp=4630ef3d30e6c1e4c629d85dd03a2232d7a1e1c7;hpb=71dd40b10ff062da51449352ecced4b5a0edde6b;p=shibboleth%2Fcpp-sp.git diff --git a/shibsp/remoting/impl/TCPListener.cpp b/shibsp/remoting/impl/TCPListener.cpp index 4630ef3..65e4ec7 100644 --- a/shibsp/remoting/impl/TCPListener.cpp +++ b/shibsp/remoting/impl/TCPListener.cpp @@ -25,6 +25,7 @@ #include #include +#include #ifdef HAVE_UNISTD_H # include @@ -46,10 +47,6 @@ using namespace xercesc; using namespace std; namespace shibsp { - static const XMLCh address[] = UNICODE_LITERAL_7(a,d,d,r,e,s,s); - static const XMLCh port[] = UNICODE_LITERAL_4(p,o,r,t); - static const XMLCh acl[] = UNICODE_LITERAL_3(a,c,l); - class TCPListener : virtual public SocketListener { public: @@ -82,41 +79,24 @@ namespace shibsp { { return new TCPListener(e); } + + static const XMLCh address[] = UNICODE_LITERAL_7(a,d,d,r,e,s,s); + static const XMLCh port[] = UNICODE_LITERAL_4(p,o,r,t); + static const XMLCh acl[] = UNICODE_LITERAL_3(a,c,l); }; -TCPListener::TCPListener(const DOMElement* e) : SocketListener(e), m_address("127.0.0.1"), m_port(12345) +TCPListener::TCPListener(const DOMElement* e) + : SocketListener(e), m_address(XMLHelper::getAttrString(e, "127.0.0.1", address)), m_port(XMLHelper::getAttrInt(e, 1600, port)) { - // We're stateless, but we need to load the configuration. - const XMLCh* tag=e->getAttributeNS(nullptr,address); - if (tag && *tag) { - auto_ptr_char a(tag); - m_address=a.get(); - } - - tag=e->getAttributeNS(nullptr,port); - if (tag && *tag) { - m_port=XMLString::parseInt(tag); - if (m_port==0) - m_port=12345; - } - - tag=e->getAttributeNS(nullptr,acl); - if (tag && *tag) { - auto_ptr_char temp(tag); - string sockacl=temp.get(); - if (sockacl.length()) { - int j = 0; - for (unsigned int i=0; i < sockacl.length(); i++) { - if (sockacl.at(i)==' ') { - m_acl.insert(sockacl.substr(j, i-j)); - j = i+1; - } - } - m_acl.insert(sockacl.substr(j, sockacl.length()-j)); + int j = 0; + string sockacl = XMLHelper::getAttrString(e, "127.0.0.1", acl); + for (unsigned int i = 0; i < sockacl.length(); i++) { + if (sockacl.at(i) == ' ') { + m_acl.insert(sockacl.substr(j, i-j)); + j = i+1; } } - else - m_acl.insert("127.0.0.1"); + m_acl.insert(sockacl.substr(j, sockacl.length()-j)); } void TCPListener::setup_tcp_sockaddr(struct sockaddr_in* addr) const