]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Wed Feb 25 12:40:44 CST 2009 Pekka Pessi <first.last@nokia.com>
authorMichael Jerris <mike@jerris.com>
Wed, 25 Feb 2009 19:36:39 +0000 (19:36 +0000)
committerMichael Jerris <mike@jerris.com>
Wed, 25 Feb 2009 19:36:39 +0000 (19:36 +0000)
  * s2dns: added s2_dns_set_filter()
  Ignore-this: dc9bf478b6a90d5b351b56c3d77a7ec9

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12283 d0543943-73ff-0310-b7d9-9358b9ac24b2

libs/sofia-sip/.update
libs/sofia-sip/s2check/s2dns.c
libs/sofia-sip/s2check/s2dns.h

index 582bb3c23b8f7f7fb47bf76d600f7a2d5ea0e92c..ace50befaa42f434b3cef7a1a49acc40f9eb212d 100644 (file)
@@ -1 +1 @@
-Wed Feb 25 13:35:46 CST 2009
+Wed Feb 25 13:36:25 CST 2009
index 94aa6c0b5ac1cbc9c76cd81cfd3c4d7a11643d0c..a4adf710195c07b21cf331622b40661160ba917d 100644 (file)
@@ -18,6 +18,8 @@ static struct s2dns {
   su_socket_t socket;
   su_wait_t wait[1];
   int reg;
+  int (*filter)(void *data, size_t len, void *userdata);
+  void *userdata;
 } s2dns;
 
 static
@@ -94,6 +96,14 @@ void s2_dns_setup(su_root_t *root)
   s2dns.socket = socket;
 }
 
+/* Set filter function */
+void s2_dns_set_filter(int (*filter)(void *data, size_t len, void *userdata),
+                      void *userdata)
+{
+  s2dns.filter = filter;
+  s2dns.userdata = userdata;
+}
+
 void s2_dns_teardown(void)
 {
   struct s2_dns_response *r, *next;
@@ -145,7 +155,8 @@ s2_dns_query(su_root_magic_t *magic,
       || ntohs(request.header->mh_qdcount) != 1) {
     flags |= FLAGS_QR | FLAGS_UNIMPL_ERR;
     request.header->mh_flags = htons(flags);
-    su_sendto(socket, request.buffer, len, 0, &su->su_sa, sulen);
+    if (!s2dns.filter || s2dns.filter(request.buffer, len, s2dns.userdata))
+      su_sendto(socket, request.buffer, len, 0, &su->su_sa, sulen);
     return 0;
   }
 
@@ -170,7 +181,8 @@ s2_dns_query(su_root_magic_t *magic,
   }
 
   request.header->mh_flags = htons(flags);
-  su_sendto(socket, request.buffer, len, 0, &su->su_sa, sulen);
+  if (!s2dns.filter || s2dns.filter(request.buffer, len, s2dns.userdata))
+    su_sendto(socket, request.buffer, len, 0, &su->su_sa, sulen);
   return 0;
 }
 
index 01f660721159a95f6f727914a85088b099bf4bf5..b176ad15b931f4a0f78cc44f0850d31f73bf6399 100644 (file)
@@ -38,6 +38,8 @@
 SOFIA_BEGIN_DECLS
 
 void s2_dns_setup(su_root_t *root);
+void s2_dns_set_filter(int (*filter)(void *data, size_t len, void *userdata),
+                      void *userdata);
 void s2_dns_teardown(void);
 
 char const *s2_dns_default(char const *domain);