From: Simon H. <sh...@us...> - 2005-08-31 05:55:16
|
Update of /cvsroot/openh323/pwlib/src/ptclib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22277/src/ptclib Modified Files: enum.cxx Log Message: Reworked ENUM to craigs' exacting requirements Index: enum.cxx =================================================================== RCS file: /cvsroot/openh323/pwlib/src/ptclib/enum.cxx,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** enum.cxx 31 Aug 2005 04:07:53 -0000 1.7 --- enum.cxx 31 Aug 2005 05:55:03 -0000 1.8 *************** *** 23,26 **** --- 23,29 ---- * * $Log$ + * Revision 1.8 2005/08/31 05:55:03 shorne + * Reworked ENUM to craigs' exacting requirements + * * Revision 1.7 2005/08/31 04:07:53 shorne * added ability to set ENUM Servers at runtime *************** *** 271,292 **** } ! BOOL PDNS::ENUMLookup( ! const PString & e164, ! const PString & service, ! PString & dn ! ) { ! static const char * defaultDomains[] = { "e164.voxgratia.net", "e164.org", "e164.arpa" }; PStringArray domains; char * env = ::getenv(PWLIB_ENUM_PATH); ! if (ENUMServers.GetSize() > 0) ! domains = ENUMServers; ! else if (env != NULL) ! domains += PString(env).Tokenise(PATH_SEP); else ! domains += PStringArray(sizeof(domains)/sizeof(defaultDomains[0]), defaultDomains); ! return PDNS::ENUMLookup(e164, service, domains, dn); } --- 274,310 ---- } + static PStringArray & GetENUMServers() + { + static const char * defaultDomains[] = { "e164.voxgratia.net","e164.org","e164.arpa"}; + static PStringArray servers( + sizeof(defaultDomains)/sizeof(defaultDomains[0]), + defaultDomains + ); + return servers; + } ! static PMutex & GetENUMServerMutex() { ! static PMutex mutex; ! return mutex; ! } + void PDNS::SetENUMServers(const PStringArray & servers) + { + PWaitAndSignal m(GetENUMServerMutex()); + GetENUMServers() = servers; + } + + BOOL PDNS::ENUMLookup(const PString & e164, + const PString & service,PString & dn) + { + PWaitAndSignal m(GetENUMServerMutex()); PStringArray domains; char * env = ::getenv(PWLIB_ENUM_PATH); ! if (env == NULL) ! domains += GetENUMServers(); else ! domains += PString(env).Tokenise(PATH_SEP); ! return PDNS::ENUMLookup(e164, service, domains, dn); } |