Module: sems
Branch: 1.4
Commit: 931c24371aea8b4d12269777bf288b237504c659
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=931c24371aea8b4d12269777bf288b237504c659

Author: Peter Lemenkov <[email protected]>
Committer: Peter Lemenkov <[email protected]>
Date:   Tue Jan  4 22:34:03 2011 +0300

Avoid using private Glibc functions

Signed-off-by: Peter Lemenkov <[email protected]>

---

 core/sip/resolver.cpp |   33 +++++++++++++++++++++++++++------
 1 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/core/sip/resolver.cpp b/core/sip/resolver.cpp
index c0ca24d..520b0a2 100644
--- a/core/sip/resolver.cpp
+++ b/core/sip/resolver.cpp
@@ -54,6 +54,27 @@ using std::list;
 // (the limit is the # bits in dns_handle::srv_used)
 #define MAX_SRV_RR (sizeof(unsigned int)*8)
 
+/* The SEMS_GET16 macro and the sems_get16 function were copied from glibc 2.7
+ * (include/arpa/nameser.h (NS_GET16) and resolv/ns_netint.c (ns_get16)) to
+ *  avoid using private glibc functions.
+ */
+
+# define SEMS_GET16(s, cp)              \
+  do {                                  \
+    uint16_t *t_cp = (uint16_t *) (cp); \
+    (s) = ntohs (*t_cp);                \
+    (cp) += NS_INT16SZ;                 \
+} while (0)
+
+u_int
+sems_get16(const u_char *src)
+{
+       u_int dst;
+
+       SEMS_GET16(dst, src);
+       return (dst);
+}
+
 struct ip_entry
     : public dns_base_entry
 {
@@ -406,15 +427,15 @@ dns_base_entry* dns_srv_entry::get_rr(dns_record* rr, 
u_char* begin, u_char* end
     DBG("SRV:\tTTL=%i\t%s\tP=<%i> W=<%i> P=<%i> T=<%s>\n",
        ns_rr_ttl(*rr),
        ns_rr_name(*rr),
-       ns_get16(rdata),
-       ns_get16(rdata+2),
-       ns_get16(rdata+4),
+       sems_get16(rdata),
+       sems_get16(rdata+2),
+       sems_get16(rdata+4),
        name_buf);
     
     srv_entry* srv_r = new srv_entry();
-    srv_r->p = ns_get16(rdata);
-    srv_r->w = ns_get16(rdata+2);
-    srv_r->port = ns_get16(rdata+4);
+    srv_r->p = sems_get16(rdata);
+    srv_r->w = sems_get16(rdata+2);
+    srv_r->port = sems_get16(rdata+4);
     srv_r->target = (const char*)name_buf;
 
     return srv_r;

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to