- tcp fix prted from stable
authorAndrei Pelinescu-Onciul <andrei@iptel.org>
Wed, 13 Aug 2003 18:03:43 +0000 (18:03 +0000)
committerAndrei Pelinescu-Onciul <andrei@iptel.org>
Wed, 13 Aug 2003 18:03:43 +0000 (18:03 +0000)
Makefile.defs
TODO
receive.c

index 7748b64..7948d69 100644 (file)
@@ -40,7 +40,7 @@ export makefile_defs
 VERSION = 0
 PATCHLEVEL = 8
 SUBLEVEL =   12
-EXTRAVERSION = dev-t11
+EXTRAVERSION = dev-t12
 
 RELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 OS = $(shell uname -s | sed -e s/SunOS/solaris/ | tr "[A-Z]" "[a-z]")
diff --git a/TODO b/TODO
index 55ecbd2..16c1230 100644 (file)
--- a/TODO
+++ b/TODO
@@ -108,7 +108,7 @@ optimizations:
 - assembly for some very common used function
 - getsock* cache
 - fd cache for tcp_send
-- dns cache?
+- dns cache? (see DNS)
 
 
 tcp stuff:
@@ -126,4 +126,8 @@ tm optimizations:
   build_uac_request, build_uac_request_dlg, t_uac, t_uac_dlg
 - uri2proxy - t_uac_dlg => extra malloc/free (no ├╝roxy needed here)
   
-
+dns stuff:
+ - dns cache
+ - support for NAPTR (naptr(domain, pref_proto)=> srv_rec + proto => srv(srv_rec, proto) => A or AAAA => A/AAAA(name))
+ - support for fallback (inside the same A/AAAA record, other ip; if fails => other SRV ; if it fails too other NAPTR
+[see rfc3263]
index be20b93..80d30dc 100644 (file)
--- a/receive.c
+++ b/receive.c
@@ -32,6 +32,7 @@
  * 2003-02-07 undoed jiri's zero term. changes (they break tcp) (andrei)
  * 2003-02-10 moved zero-term in the calling functions (udp_receive &
  *            tcp_read_req)
+ * 2003-08-13 fixed exec_pre_cb returning 0 (backported from stable) (andrei)
  */
 
 
@@ -66,6 +67,7 @@ unsigned int msg_no=0;
 int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info) 
 {
        struct sip_msg* msg;
+       int ret;
 #ifdef STATS
        int skipped = 1;
        struct timeval tvb, tve;        
@@ -102,7 +104,11 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
        /* if some of the callbacks said not to continue with
           script processing, don't do so
        */
-       if (exec_pre_cb(msg)==0) goto error;
+       ret=exec_pre_cb(msg);
+       if (ret<=0){
+               if (ret<0) goto error;
+               else goto end; /* drop the message -- no error -- andrei */
+       }
 
        /* ... and clear branches from previous message */
        clear_branches();
@@ -170,6 +176,7 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
                DBG("succesfully ran reply processing...(%d usec)\n", diff);
 #endif
        }
+end:
 #ifdef STATS
        skipped = 0;
 #endif