[Freeswitch-svn] [commit] r11794 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/nta libsofia-sip-ua/nta/sofia-sip

FreeSWITCH SVN mikej at freeswitch.org
Wed Feb 11 08:46:51 PST 2009


Author: mikej
Date: Wed Feb 11 10:46:50 2009
New Revision: 11794

Log:
Thu Jan  8 12:38:05 CST 2009  Pekka Pessi <first.last at nokia.com>
  * nta: use <sofia-sip/su_string.h> functions



Modified:
   freeswitch/trunk/libs/sofia-sip/.update
   freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta.c
   freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta_check.c
   freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_log.c
   freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_print.c
   freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/sl_utils.h
   freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/test_nta.c
   freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/test_nta_api.c

Modified: freeswitch/trunk/libs/sofia-sip/.update
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/.update	(original)
+++ freeswitch/trunk/libs/sofia-sip/.update	Wed Feb 11 10:46:50 2009
@@ -1 +1 @@
-Wed Feb 11 10:46:12 CST 2009
+Wed Feb 11 10:46:42 CST 2009

Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta.c	(original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta.c	Wed Feb 11 10:46:50 2009
@@ -41,11 +41,14 @@
  * @author Pekka Pessi <Pekka.Pessi at nokia.com>
  *
  * @date Created: Tue Jun 13 02:57:51 2000 ppessi
+ *
+ * @sa
+ * @RFC3261, @RFC4320
  */
 
 #include "config.h"
 
-#include <sofia-sip/string0.h>
+#include <sofia-sip/su_string.h>
 
 /** @internal SU message argument structure type */
 #define SU_MSG_ARG_T   union sm_arg_u
@@ -315,7 +318,7 @@
     outgoing_queue_t  delayed[1];
     outgoing_queue_t  resolving[1];
 
-    outgoing_queue_t  trying[1];	/* Timer F/E */
+    outgoing_queue_t  trying[1];	/* Timer F / Timer E */
     outgoing_queue_t  completed[1];	/* Timer K */
     outgoing_queue_t  terminated[1];
 
@@ -1126,21 +1129,21 @@
   sip_via_t const *v;
 
   for (v = agent->sa_public_vias; v; v = v->v_next) {
-    if (strcasecmp(via->v_host, v->v_host))
+    if (!su_casematch(via->v_host, v->v_host))
       continue;
-    if (str0cmp(via->v_port, v->v_port))
+    if (!su_strmatch(via->v_port, v->v_port))
       continue;
-    if (strcasecmp(via->v_protocol, v->v_protocol))
+    if (!su_casematch(via->v_protocol, v->v_protocol))
       continue;
     return (sip_via_t *)v;
   }
 
   for (v = agent->sa_vias; v; v = v->v_next) {
-    if (strcasecmp(via->v_host, v->v_host))
+    if (!su_casematch(via->v_host, v->v_host))
       continue;
-    if (str0cmp(via->v_port, v->v_port))
+    if (!su_strmatch(via->v_port, v->v_port))
       continue;
-    if (strcasecmp(via->v_protocol, v->v_protocol))
+    if (!su_casematch(via->v_protocol, v->v_protocol))
       continue;
     return (sip_via_t *)v;
   }
@@ -1570,7 +1573,7 @@
   if (algorithm != NONE)
     agent->sa_algorithm = su_strdup(home, algorithm);
 
-  if (str0cmp(sigcomp, agent->sa_sigcomp_options)) {
+  if (!su_strmatch(sigcomp, agent->sa_sigcomp_options)) {
     msg_param_t const *l = NULL;
     char *s = su_strdup(home, sigcomp);
     char *s1 = su_strdup(home, s), *s2 = s1;
@@ -2181,7 +2184,7 @@
 
     if (tpn->tpn_comp &&
 	(nta_compressor_vtable == NULL ||
-	 strcasecmp(tpn->tpn_comp, nta_compressor_vtable->ncv_name) != 0)) {
+	 !su_casematch(tpn->tpn_comp, nta_compressor_vtable->ncv_name))) {
       SU_DEBUG_1(("nta(%p): comp=%s not supported for " URL_PRINT_FORMAT "\n",
 		  (void *)self, tpn->tpn_comp, URL_PRINT_ARGS(url)));
     }
@@ -2308,11 +2311,11 @@
     if (tport_has_ip6(tp)) self->sa_tport_ip6 = 1;
 #endif
 
-    if (strcasecmp(tpn->tpn_proto, "udp") == 0)
+    if (su_casematch(tpn->tpn_proto, "udp"))
       self->sa_tport_udp = 1;
-    else if (strcasecmp(tpn->tpn_proto, "tcp") == 0)
+    else if (su_casematch(tpn->tpn_proto, "tcp"))
       self->sa_tport_tcp = 1;
-    else if (strcasecmp(tpn->tpn_proto, "sctp") == 0)
+    else if (su_casematch(tpn->tpn_proto, "sctp"))
       self->sa_tport_sctp = 1;
 
     if (tport_has_tls(tp)) self->sa_tport_tls = 1;
@@ -2330,7 +2333,7 @@
 
       if (su) {
 	su_inet_ntop(su->su_family, SU_ADDR(su), host, sizeof host);
-	maddr = use_maddr && strcasecmp(canon, host) != 0;
+	maddr = use_maddr && !su_casematch(canon, host);
 	port = ntohs(su->su_port);
       }
       else {
@@ -2340,9 +2343,9 @@
 	port = 0;
       }
 
-      if (strncasecmp(tpn->tpn_proto, "tls", 3)
-	  ? port == SIP_DEFAULT_PORT
-	  : port == SIPS_DEFAULT_PORT)
+      if (su_casenmatch(tpn->tpn_proto, "tls", 3)
+	  ? port == SIPS_DEFAULT_PORT
+	  : port == SIP_DEFAULT_PORT)
 	port = 0;
 
       snprintf(sport, sizeof sport, ":%u", port);
@@ -2471,15 +2474,15 @@
   v2 = v1->v_next;
 
   if (v2 &&
-      strcasecmp(v1->v_host, v2->v_host) == 0 &&
-      str0casecmp(v1->v_port, v2->v_port) == 0) {
+      su_casematch(v1->v_host, v2->v_host) &&
+      su_casematch(v1->v_port, v2->v_port)) {
     char const *p1 = v1->v_protocol, *p2 = v2->v_protocol;
 
-    if (strcasecmp(p1, sip_transport_udp))
+    if (!su_casematch(p1, sip_transport_udp))
       p1 = v2->v_protocol, p2 = v1->v_protocol;
 
-    if (strcasecmp(p1, sip_transport_udp) == 0 &&
-	strcasecmp(p2, sip_transport_tcp) == 0)
+    if (su_casematch(p1, sip_transport_udp) &&
+	su_casematch(p2, sip_transport_tcp))
       /* Do not include transport if we have both UDP and TCP */
       tp = NULL;
   }
@@ -2541,26 +2544,23 @@
   if (branch && branch != v->v_branch) {
     char const *bvalue = branch + strcspn(branch, "=");
     if (*bvalue) bvalue++;
-    if (!v->v_branch || strcasecmp(bvalue, v->v_branch))
+    if (!v->v_branch || !su_casematch(bvalue, v->v_branch))
       msg_header_replace_param(msg_home(msg), v->v_common, branch);
   }
 
-  if (via->v_protocol != v->v_protocol &&
-      strcasecmp(via->v_protocol, v->v_protocol))
+  if (!su_casematch(via->v_protocol, v->v_protocol))
     clear = 1, v->v_protocol = via->v_protocol;
 
   /* XXX - should we do this? */
   if ((!user_via || !v->v_host) &&
-      via->v_host != v->v_host &&
-      str0cmp(via->v_host, v->v_host))
+      !su_strmatch(via->v_host, v->v_host))
     clear = 1, v->v_host = via->v_host;
 
   if ((!user_via || !v->v_port ||
        /* Replace port in user Via only if we use udp and no rport */
        (v->v_protocol == sip_transport_udp && !v->v_rport &&
 	!orq->orq_stateless)) &&
-      via->v_port != v->v_port &&
-      str0cmp(via->v_port, v->v_port))
+      !su_strmatch(via->v_port, v->v_port))
     clear = 1, v->v_port = via->v_port;
 
   if (clear)
@@ -2628,7 +2628,7 @@
   SU_DEBUG_7(("nta: selecting scheme %s\n", url->url_scheme));
 
   *scheme = url->url_scheme;
-  if (strcasecmp(url->url_scheme, "sips") == 0)
+  if (su_casematch(url->url_scheme, "sips"))
     tpn->tpn_proto = "tls";
   else
     tpn->tpn_proto = "*";
@@ -2639,11 +2639,11 @@
     for (b = (char *)url->url_params; b[0]; b += n) {
       n = strcspn(b, ";");
 
-      if (n > 10 && strncasecmp(b, "transport=", 10) == 0)
+      if (n > 10 && su_casenmatch(b, "transport=", 10))
 	tpn->tpn_proto = b + 10;
-      else if (n > 5 && strncasecmp(b, "comp=", 5) == 0)
+      else if (n > 5 && su_casenmatch(b, "comp=", 5))
 	tpn->tpn_comp = b + 5;
-      else if (n > 6 && strncasecmp(b, "maddr=", 6) == 0)
+      else if (n > 6 && su_casenmatch(b, "maddr=", 6))
 	tpn->tpn_host = b + 6;
 
       if (b[n])
@@ -2845,7 +2845,7 @@
     return;
   }
 
-  if (str0casecmp(sip->sip_request->rq_version, sip_version_2_0) != 0) {
+  if (!su_casematch(sip->sip_request->rq_version, sip_version_2_0)) {
     agent->sa_stats->as_bad_request++;
     agent->sa_stats->as_bad_message++;
 
@@ -3008,7 +3008,7 @@
     return v ? 0 : -1;
   }
 
-  if (str0casecmp(v->v_protocol, tpv->v_protocol)) {
+  if (!su_strmatch(v->v_protocol, tpv->v_protocol)) {
     tport_hostport(hostport, TPORT_HOSTPORTSIZE, from, 1);
     SU_DEBUG_1(("nta: Via check: invalid transport \"%s\" from %s\n",
 		v->v_protocol, hostport));
@@ -3026,7 +3026,7 @@
   if (!tport_hostport(hostport, TPORT_HOSTPORTSIZE, from, 0))
     return -1;
 
-  if (strcasecmp(hostport, v->v_host)) {
+  if (!su_casematch(hostport, v->v_host)) {
     size_t rlen;
     /* Add the "received" field */
     memcpy(received, "received=", receivedlen);
@@ -3127,9 +3127,9 @@
 	url->url_port = lv->v_port;
       return 1;
     }
-    if (url->url_port &&
-	strcmp(url->url_port, url_port_default(url->url_type)) == 0)
-      /* Remove default port */
+    if (su_strmatch(url->url_port, url_port_default(url->url_type)) ||
+	su_strmatch(url->url_port, ""))
+      /* Remove default or empty port */
       url->url_port = NULL;
 
     return 0;
@@ -3196,7 +3196,7 @@
     return;
   }
 
-  if (str0casecmp(sip->sip_status->st_version, sip_version_2_0) != 0) {
+  if (!su_casematch(sip->sip_status->st_version, sip_version_2_0)) {
     agent->sa_stats->as_bad_response++;
     agent->sa_stats->as_bad_message++;
 
@@ -3807,7 +3807,6 @@
   su_home_t *home = msg_home(msg);
   sip_t *sip = sip_object(msg);
   sip_to_t const *to;
-  sip_cseq_t *cseq;
   uint32_t seq;
   url_t reg_url[1];
   url_string_t const *original = request_uri;
@@ -3865,7 +3864,7 @@
     if (!rq
 	|| request_uri != (url_string_t *)rq->rq_url
 	|| method != rq->rq_method
-	|| str0cmp(method_name, rq->rq_method_name))
+	|| !su_strmatch(method_name, rq->rq_method_name))
       rq = NULL;
 
     if (rq == NULL) {
@@ -3905,7 +3904,7 @@
     sip->sip_from = sip_from_dup(home, leg->leg_local);
   else if (leg->leg_local && leg->leg_local->a_tag &&
 	   (!sip->sip_from->a_tag ||
-	    strcasecmp(sip->sip_from->a_tag, leg->leg_local->a_tag)))
+	    !su_casematch(sip->sip_from->a_tag, leg->leg_local->a_tag)))
     sip_from_tag(home, sip->sip_from, leg->leg_local->a_tag);
 
   if (sip->sip_from && !sip->sip_from->a_tag) {
@@ -3952,14 +3951,14 @@
       sip->sip_call_id = sip_call_id_create(home, NULL);
   }
 
-  if ((!sip->sip_cseq ||
-       seq != sip->sip_cseq->cs_seq ||
-       method != sip->sip_cseq->cs_method ||
-       (method == sip_method_unknown &&
-	strcmp(method_name, sip->sip_cseq->cs_method_name) != 0)) &&
-      (!(cseq = sip_cseq_create(home, seq, method, method_name)) ||
-       msg_header_insert(msg, (msg_pub_t *)sip, (msg_header_t *)cseq) < 0))
-    return -1;
+  if (!sip->sip_cseq ||
+      seq != sip->sip_cseq->cs_seq ||
+      method != sip->sip_cseq->cs_method ||
+      !su_strmatch(method_name, sip->sip_cseq->cs_method_name)) {
+    sip_cseq_t *cseq = sip_cseq_create(home, seq, method, method_name);
+    if (msg_header_insert(msg, (msg_pub_t *)sip, (msg_header_t *)cseq) < 0)
+      return -1;
+  }
 
   return 0;
 }
@@ -4391,10 +4390,10 @@
   /* If there already is a tag,
      return NULL if it does not match with new one */
   if (leg->leg_local->a_tag) {
-    if (!tag && str0casecmp(tag, leg->leg_local->a_tag))
-      return NULL;
-    else
+    if (su_casematch(tag, leg->leg_local->a_tag))
       return leg->leg_local->a_tag;
+    else
+      return NULL;
   }
 
   if (tag) {
@@ -4711,9 +4710,9 @@
     return 0;
   else
     return
-      host_cmp(a->url_host, b->url_host)
-      || str0cmp(a->url_port, b->url_port)
-      || str0cmp(a->url_user, b->url_user);
+      host_cmp(a->url_host, b->url_host) ||
+      su_strcmp(a->url_port, b->url_port) ||
+      su_strcmp(a->url_user, b->url_user);
 }
 
 /** Get a leg by dialog.
@@ -4836,14 +4835,14 @@
     if (!remote_tag != !from_tag && !local_tag != !to_tag)
       continue;
 
-    if (local_tag && to_tag && strcasecmp(local_tag, to_tag) && to_tag[0])
+    if (local_tag && to_tag && !su_casematch(local_tag, to_tag) && to_tag[0])
       continue;
-    if (remote_tag && from_tag && strcasecmp(remote_tag, from_tag) && from_tag[0])
+    if (remote_tag && from_tag && !su_casematch(remote_tag, from_tag) && from_tag[0])
       continue;
 
     if (leg_url && request_uri && url_cmp(leg_url, request_uri))
       continue;
-    if (leg_method && method_name && strcasecmp(method_name, leg_method))
+    if (leg_method && method_name && !su_casematch(method_name, leg_method))
       continue;
 
     /* Perfect match if both local and To have tag
@@ -4916,7 +4915,7 @@
 	return leg;
       }
       else if (leg->leg_method) {
-	if (strcasecmp(method_name, leg->leg_method))
+	if (!su_casematch(method_name, leg->leg_method))
 	  continue;
 	return leg;
       }
@@ -5657,7 +5656,7 @@
   if (tag && strchr(tag, '='))
     tag = strchr(tag, '=') + 1;
 
-  if (tag && irq->irq_tag && strcasecmp(tag, irq->irq_tag))
+  if (tag && irq->irq_tag && !su_casematch(tag, irq->irq_tag))
     return NULL;
 
   if (!irq->irq_tag) {
@@ -5845,7 +5844,7 @@
 
   int is_uas_ack = return_ack && agent->sa_is_a_uas;
 
-  if (v->v_branch && strncasecmp(v->v_branch, "z9hG4bK", 7) == 0)
+  if (v->v_branch && su_casenmatch(v->v_branch, "z9hG4bK", 7))
     magic_branch = v->v_branch + 7;
   else
     magic_branch = NULL;
@@ -5859,13 +5858,13 @@
       continue;
     if (irq->irq_cseq->cs_seq != cseq->cs_seq)
       continue;
-    if (str0casecmp(irq->irq_from->a_tag, from->a_tag))
+    if (su_strcasecmp(irq->irq_from->a_tag, from->a_tag))
       continue;
 
     if (is_uas_ack &&
 	irq->irq_method == sip_method_invite &&
 	200 <= irq->irq_status && irq->irq_status < 300 &&
-	str0casecmp(irq->irq_tag, to->a_tag) == 0) {
+	su_casematch(irq->irq_tag, to->a_tag)) {
       *return_ack = irq;
       return NULL;
     }
@@ -5878,11 +5877,10 @@
        * transaction, except for ACK, where the method of the request
        * that created the transaction is INVITE.
        */
-
       if (irq->irq_via->v_branch &&
-	  strcasecmp(irq->irq_via->v_branch + 7, magic_branch) == 0 &&
-	  strcasecmp(irq->irq_via->v_host, v->v_host) == 0 &&
-	  str0cmp(irq->irq_via->v_port, v->v_port) == 0) {
+	  su_casematch(irq->irq_via->v_branch + 7, magic_branch) &&
+	  su_casematch(irq->irq_via->v_host, v->v_host) &&
+	  su_strmatch(irq->irq_via->v_port, v->v_port)) {
 	if (irq->irq_method == cseq->cs_method &&
 	    strcmp(irq->irq_cseq->cs_method_name,
 		   cseq->cs_method_name) == 0)
@@ -5903,9 +5901,9 @@
       /* From tag, Call-ID, and CSeq number has been matched above */
 
       /* Match top Via header field */
-      if (str0casecmp(irq->irq_via->v_branch, v->v_branch) != 0 ||
-	       strcasecmp(irq->irq_via->v_host, v->v_host) != 0 ||
-	       str0cmp(irq->irq_via->v_port, v->v_port) != 0)
+      if (!su_casematch(irq->irq_via->v_branch, v->v_branch) ||
+	  !su_casematch(irq->irq_via->v_host, v->v_host) ||
+	  !su_strmatch(irq->irq_via->v_port, v->v_port))
 	;
       /* Match Request-URI */
       else if (url_cmp(irq->irq_rq->rq_url, rq->rq_url))
@@ -5913,17 +5911,16 @@
       else {
 	/* Match CSeq */
 	if (irq->irq_method == cseq->cs_method &&
-	    strcmp(irq->irq_cseq->cs_method_name,
-		   cseq->cs_method_name) == 0) {
+	    su_strmatch(irq->irq_cseq->cs_method_name, cseq->cs_method_name)) {
 	  /* Match To tag  */
-	  if (!str0casecmp(irq->irq_to->a_tag, to->a_tag))
+	  if (!su_strcasecmp(irq->irq_to->a_tag, to->a_tag))
 	    return irq;		/* found */
 	}
 	else if (
 	  /* Tag set by UAS */
-	  str0casecmp(irq->irq_tag, to->a_tag) &&
+	  su_strcasecmp(irq->irq_tag, to->a_tag) &&
 	  /* Original tag */
-	  str0casecmp(irq->irq_to->a_tag, to->a_tag))
+	  su_strcasecmp(irq->irq_to->a_tag, to->a_tag))
 	  ;
 	else if (return_ack && irq->irq_method == sip_method_invite)
 	  return *return_ack = irq, NULL;
@@ -7684,13 +7681,13 @@
   if (comp == NULL)
     orq->orq_tpn->tpn_comp = comp;
 
-  if (orq->orq_user_via && str0cmp(orq->orq_tpn->tpn_proto, "*") == 0) {
+  if (orq->orq_user_via && su_strmatch(orq->orq_tpn->tpn_proto, "*")) {
     char const *proto = sip_via_transport(sip->sip_via);
     if (proto) orq->orq_tpn->tpn_proto = proto;
   }
 
   if (branch && branch != NONE) {
-    if (strncasecmp(branch, "branch=", 7) == 0)
+    if (su_casenmatch(branch, "branch=", 7))
       branch = su_strdup(home, branch);
     else
       branch = su_sprintf(home, "branch=%s", branch);
@@ -7708,7 +7705,7 @@
   if (orq->orq_method == sip_method_ack) {
     /* Find the original INVITE which we are ACKing */
     if (ack_branch != NULL && ack_branch != NONE) {
-      if (strncasecmp(ack_branch, "branch=", 7) == 0)
+      if (su_casenmatch(ack_branch, "branch=", 7))
 	orq->orq_branch = su_strdup(home, ack_branch);
       else
 	orq->orq_branch = su_sprintf(home, "branch=%s", ack_branch);
@@ -7803,7 +7800,7 @@
   nta_agent_t *sa = orq->orq_agent;
   tport_t *tp;
   tp_name_t *tpn = orq->orq_tpn;
-  int sips = strcasecmp(orq->orq_scheme, "sips") == 0;
+  int sips = su_casematch(orq->orq_scheme, "sips");
 
   /* Select transport by scheme */
   if (sips && strcmp(tpn->tpn_proto, "*") == 0)
@@ -7968,14 +7965,14 @@
       /* No retries */;
     /* RFC3261, 18.1.1 */
     else if (err == EMSGSIZE && !orq->orq_try_tcp_instead) {
-      if (strcasecmp(tpn->tpn_proto, "udp") == 0 ||
-	  strcasecmp(tpn->tpn_proto, "*") == 0) {
+      if (su_casematch(tpn->tpn_proto, "udp") ||
+	  su_casematch(tpn->tpn_proto, "*")) {
 	outgoing_try_tcp_instead(orq);
 	continue;
       }
     }
     else if (err == ECONNREFUSED && orq->orq_try_tcp_instead) {
-      if (strcasecmp(tpn->tpn_proto, "tcp") == 0 && msg_size(msg) <= 65535) {
+      if (su_casematch(tpn->tpn_proto, "tcp") && msg_size(msg) <= 65535) {
 	outgoing_try_udp_instead(orq);
 	continue;
       }
@@ -8145,7 +8142,7 @@
   }
   else if (error == ECONNREFUSED && orq->orq_try_tcp_instead) {
     /* RFC3261, 18.1.1 */
-    if (strcasecmp(tpn->tpn_proto, "tcp") == 0 && msg_size(msg) <= 65535) {
+    if (su_casematch(tpn->tpn_proto, "tcp") && msg_size(msg) <= 65535) {
       outgoing_print_tport_error(orq, 5, "retrying with UDP after ",
 				 tpn, msg, error);
       outgoing_try_udp_instead(orq);
@@ -8723,7 +8720,7 @@
 {
   orq->orq_completed = 1;
 
-  outgoing_reset_timer(orq); /* Timer A/E */
+  outgoing_reset_timer(orq); /* Timer A / Timer E */
 
   if (orq->orq_stateless || orq->orq_reliable)
     return outgoing_terminate(orq);
@@ -8890,10 +8887,10 @@
       continue;
     if (orq->orq_method != method && orq->orq_method != method2)
       continue;
-    if (str0casecmp(orq->orq_from->a_tag, sip->sip_from->a_tag))
+    if (su_strcasecmp(orq->orq_from->a_tag, sip->sip_from->a_tag))
       continue;
     if (orq->orq_to->a_tag &&
-	str0casecmp(orq->orq_to->a_tag, sip->sip_to->a_tag))
+	su_strcasecmp(orq->orq_to->a_tag, sip->sip_to->a_tag))
       continue;
 
     if (orq->orq_method == sip_method_ack) {
@@ -8901,7 +8898,7 @@
 	continue;
     }
 
-    if (v && str0casecmp(orq->orq_branch + strlen("branch="), v->v_branch))
+    if (v && !su_casematch(orq->orq_branch + strlen("branch="), v->v_branch))
       continue;
 
     break;			/* match */
@@ -9012,7 +9009,7 @@
 	  return outgoing_duplicate(orq, msg, sip);
 
 	if (sa->sa_is_a_uas) {
-	  if (str0cmp(sip->sip_to->a_tag, orq->orq_tag) == 0)
+	  if (su_strcasecmp(sip->sip_to->a_tag, orq->orq_tag) == 0)
 	    /* Catch retransmission */
 	    return outgoing_duplicate(orq, msg, sip);
 	}
@@ -9333,7 +9330,7 @@
   if (orq->orq_destroyed) {
     if (orq->orq_status < 200)
       orq->orq_status = status;
-    outgoing_complete(orq);	/* Timer D/K */
+    outgoing_complete(orq);	/* Timer D / Timer K */
     return 0;
   }
 
@@ -9589,13 +9586,13 @@
 	 tport;
 	 tport = tport_next(tport)) {
       tp_name_t const *tpn = tport_name(tport);
-      if (strcmp(tpname, "*") && strcasecmp(tpn->tpn_proto, tpname))
+      if (strcmp(tpname, "*") && !su_casematch(tpn->tpn_proto, tpname))
 	continue;
       if (ident && (tpn->tpn_ident == NULL || strcmp(ident, tpn->tpn_ident)))
 	continue;
 
       for (j = 0; j < SIPDNS_TRANSPORTS; j++)
-	if (strcasecmp(tpn->tpn_proto, sipdns_tports[j].name) == 0)
+	if (su_casematch(tpn->tpn_proto, sipdns_tports[j].name))
 	  break;
 
       assert(j < SIPDNS_TRANSPORTS);
@@ -10021,8 +10018,8 @@
       break;
 
     /* Check if NAPTR matches our target */
-    if (strncasecmp(na->na_services, "SIP+", 4) &&
-	strncasecmp(na->na_services, "SIPS+", 5))
+    if (!su_casenmatch(na->na_services, "SIP+", 4) &&
+	!su_casenmatch(na->na_services, "SIPS+", 5))
       /* Not a SIP/SIPS service */
       continue;
 
@@ -10036,7 +10033,7 @@
        * but comparing the values in the transport list
        * match with those values that make any sense
        */
-      if (strcasecmp(na->na_services, sr->sr_tports[j]->service) != 0)
+      if (!su_casematch(na->na_services, sr->sr_tports[j]->service))
 	continue;
 
       tpn->tpn_proto = sr->sr_tports[j]->name;
@@ -10721,8 +10718,8 @@
 	irq->irq_method == sip_method_invite &&
 	strcmp(irq->irq_call_id->i_id, i->i_id) == 0 &&
 	(irq->irq_to->a_tag == NULL ||
-	 str0casecmp(irq->irq_to->a_tag, sip->sip_to->a_tag) == 0) &&
-	str0casecmp(irq->irq_from->a_tag, sip->sip_from->a_tag) == 0) {
+	 su_casematch(irq->irq_to->a_tag, sip->sip_to->a_tag)) &&
+	su_casematch(irq->irq_from->a_tag, sip->sip_from->a_tag)) {
 
       nta_reliable_t const *rel;
 
@@ -11146,8 +11143,8 @@
 		  __func__, resp->sip_status->st_status));
       return NULL;
     }
-    if (str0casecmp(resp->sip_to->a_tag, leg->leg_remote->a_tag) ||
-	str0casecmp(resp->sip_to->a_tag, oorq->orq_to->a_tag)) {
+    if (su_strcasecmp(resp->sip_to->a_tag, leg->leg_remote->a_tag) ||
+	su_strcasecmp(resp->sip_to->a_tag, oorq->orq_to->a_tag)) {
       SU_DEBUG_1(("%s: %u response To tag does not agree with dialog tag\n",
 		  __func__, resp->sip_status->st_status));
       return NULL;

Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta_check.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta_check.c	(original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta_check.c	Wed Feb 11 10:46:50 2009
@@ -219,14 +219,14 @@
   if (sip->sip_payload == NULL)
     return 0;
 
-  if (cd == NULL || strcasecmp(cd->cd_type, "session") == 0) {
+  if (cd == NULL || su_casematch(cd->cd_type, "session")) {
     sip_accept_t const *ab = session_accepts;
     char const *c_type;
 
     if (c)
       c_type = c->c_type;
     else if (sip->sip_payload->pl_len > 3 &&
-	     strncasecmp(sip->sip_payload->pl_data, "v=0", 3) == 0)
+	     su_casenmatch(sip->sip_payload->pl_data, "v=0", 3))
       /* Missing Content-Type, but it looks like SDP  */
       c_type = application_sdp;
     else
@@ -234,7 +234,7 @@
       ab = NULL, c_type = NULL;
 
     for (; ab; ab = ab->ac_next) {
-      if (strcasecmp(c_type, ab->ac_type) == 0)
+      if (su_casematch(c_type, ab->ac_type))
 	break;
     }
 
@@ -311,7 +311,7 @@
 			   method == sip_method_prack ||
 			   method == sip_method_update)) {
     for (ab = acceptable; ab; ab = ab->ac_next)
-      if (strcasecmp(application_sdp, ab->ac_type) == 0) {
+      if (su_casematch(application_sdp, ab->ac_type)) {
 	if (return_acceptable) *return_acceptable = ab;
 	return 0;
       }
@@ -322,7 +322,7 @@
       continue;
 
     for (ab = acceptable; ab; ab = ab->ac_next)
-      if (strcasecmp(ac->ac_type, ab->ac_type) == 0) {
+      if (su_casematch(ac->ac_type, ab->ac_type)) {
 	if (return_acceptable) *return_acceptable = ab;
 	return 0;
       }

Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_log.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_log.c	(original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_log.c	Wed Feb 11 10:46:50 2009
@@ -237,8 +237,8 @@
     log = su_log_default;
 
   while (s < end && *s != '\0') {
-    size_t n = strncspn(s, end - s, "\r\n");
-    size_t crlf = strnspn(s + n, end - s - n, "\r\n");
+    size_t n = su_strncspn(s, end - s, "\r\n");
+    size_t crlf = su_strnspn(s + n, end - s - n, "\r\n");
     if (n < 70) {
       memcpy(line, s, n);
       line[n] = '\0';

Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_print.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_print.c	(original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_print.c	Wed Feb 11 10:46:50 2009
@@ -214,8 +214,8 @@
   size_t n, total = 0, crlf = 1, actual;
 
   while (s < end && *s != '\0') {
-    n = strncspn(s, end - s, "\r\n");
-    crlf = strnspn(s + n, end - s - n, "\r\n");
+    n = su_strncspn(s, end - s, "\r\n");
+    crlf = su_strnspn(s + n, end - s - n, "\r\n");
     if (prefix)
       fputs(prefix, stream), total += strlen(prefix);
     actual = fwrite(s, 1, n + crlf, stream) ;

Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/sl_utils.h
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/sl_utils.h	(original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/sl_utils.h	Wed Feb 11 10:46:50 2009
@@ -38,7 +38,7 @@
 #include <stdio.h>
 
 #ifndef STRING0_H
-#include <sofia-sip/string0.h>
+#include <sofia-sip/su_string.h>
 #endif
 
 #ifndef SIP_H

Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/test_nta.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/test_nta.c	(original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/test_nta.c	Wed Feb 11 10:46:50 2009
@@ -62,7 +62,7 @@
 #include <sofia-sip/hostdomain.h>
 #include <sofia-sip/tport.h>
 
-#include <sofia-sip/string0.h>
+#include <sofia-sip/su_string.h>
 
 #include <stddef.h>
 #include <stdlib.h>
@@ -564,7 +564,7 @@
   TEST_1(ag->ag_mclass);
 
 #if SU_HAVE_IN6
-  if (str0cmp(getenv("ipv6"), "true") == 0) {
+  if (su_strmatch(getenv("ipv6"), "true")) {
     contact = "sip:[::]:*;comp=sigcomp";
     af = AF_INET6, sulen0 = sizeof (struct sockaddr_in6);
   }
@@ -1075,22 +1075,22 @@
   TEST_1(v = nta_agent_via(ag->ag_agent));
 
   for (; v; v = v->v_next) {
-    if (strcasecmp(v->v_protocol, sip_transport_udp) == 0) {
+    if (su_casematch(v->v_protocol, sip_transport_udp)) {
       if (udp)
 	v_udp_only = v;
       udp = 1;
       if (udp_comp == NULL)
 	udp_comp = v->v_comp;
     }
-    else if (strcasecmp(v->v_protocol, sip_transport_tcp) == 0) {
+    else if (su_casematch(v->v_protocol, sip_transport_tcp)) {
       tcp = 1;
       if (tcp_comp == NULL)
 	tcp_comp = v->v_comp;
     }
-    else if (strcasecmp(v->v_protocol, sip_transport_sctp) == 0) {
+    else if (su_casematch(v->v_protocol, sip_transport_sctp)) {
       sctp = 1;
     }
-    else if (strcasecmp(v->v_protocol, sip_transport_tls) == 0) {
+    else if (su_casematch(v->v_protocol, sip_transport_tls)) {
       tls = 1;
     }
   }
@@ -1454,7 +1454,7 @@
     TEST_P(ag->ag_latest_leg, ag->ag_default_leg);
 
     TEST_1(ag->ag_in_via);
-    TEST_1(strcasecmp(ag->ag_in_via->v_protocol, "SIP/2.0/UDP") == 0);
+    TEST_1(su_casematch(ag->ag_in_via->v_protocol, "SIP/2.0/UDP"));
     su_free(ag->ag_home, ag->ag_in_via), ag->ag_in_via = NULL;
   }
 
@@ -1787,13 +1787,13 @@
 
   TEST_1(v = nta_agent_via(ag->ag_agent));
   for (; v; v = v->v_next) {
-    if (strcasecmp(v->v_protocol, sip_transport_udp) == 0)
+    if (su_casematch(v->v_protocol, sip_transport_udp))
       udp = 1;
-    else if (strcasecmp(v->v_protocol, sip_transport_tcp) == 0)
+    else if (su_casematch(v->v_protocol, sip_transport_tcp))
       tcp = 1;
-    else if (strcasecmp(v->v_protocol, sip_transport_sctp) == 0)
+    else if (su_casematch(v->v_protocol, sip_transport_sctp))
       sctp = 1;
-    else if (strcasecmp(v->v_protocol, sip_transport_tls) == 0)
+    else if (su_casematch(v->v_protocol, sip_transport_tls))
       tls = 1;
   }
 

Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/test_nta_api.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/test_nta_api.c	(original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/test_nta_api.c	Wed Feb 11 10:46:50 2009
@@ -59,6 +59,7 @@
 #include <sofia-sip/msg_mclass.h>
 #include <sofia-sip/sofia_features.h>
 #include <sofia-sip/hostdomain.h>
+#include <sofia-sip/su_string.h>
 
 #include <stddef.h>
 #include <stdlib.h>
@@ -67,7 +68,6 @@
 #include <stdio.h>
 #include <assert.h>
 #include <time.h>
-#include "sofia-sip/string0.h"
 
 extern su_log_t nta_log[];
 extern su_log_t tport_log[];
@@ -763,14 +763,14 @@
 
   TEST_1(nta_agent_add_tport(agent, (url_string_t *)url, TAG_END()) == 0);
   TEST_1(v = nta_agent_via(agent)); TEST_1(!v->v_next);
-  TEST(strcasecmp(v->v_protocol, sip_transport_tcp), 0);
+  TEST(!su_casematch(v->v_protocol, sip_transport_tcp), 0);
   TEST_1(m = nta_agent_contact(agent));
   TEST_S(m->m_url->url_params, "transport=tcp");
 
   TEST_1(nta_agent_add_tport(agent, (url_string_t *)url,
 			     TPTAG_SERVER(0), TAG_END()) == 0);
   TEST_1(v = nta_agent_public_via(agent)); TEST_1(!v->v_next);
-  TEST(strcasecmp(v->v_protocol, sip_transport_tcp), 0);
+  TEST(!su_casematch(v->v_protocol, sip_transport_tcp), 0);
   TEST_1(host_has_domain_invalid(v->v_host));
   TEST_1(m = nta_agent_contact(agent));
   TEST_S(m->m_url->url_params, "transport=tcp");
@@ -778,14 +778,14 @@
   url->url_params = "transport=udp";
   TEST_1(nta_agent_add_tport(agent, (url_string_t *)url, TAG_END()) == 0);
   TEST_1(v = nta_agent_via(agent)); TEST_1(v = v->v_next);
-  TEST(strcasecmp(v->v_protocol, sip_transport_udp), 0);
+  TEST(!su_casematch(v->v_protocol, sip_transport_udp), 0);
 
   TEST_VOID(nta_agent_destroy(agent));
 
   TEST_1(agent = nta_agent_create(ag->ag_root, NONE, NULL, NULL, TAG_END()));
   TEST_1(nta_agent_add_tport(agent, (url_string_t *)url, TAG_END()) == 0);
   TEST_1(v = nta_agent_via(agent)); TEST_1(!v->v_next);
-  TEST(strcasecmp(v->v_protocol, sip_transport_udp), 0);
+  TEST(!su_casematch(v->v_protocol, sip_transport_udp), 0);
   TEST_1(m = nta_agent_contact(agent));
   TEST_S(m->m_url->url_params, "transport=udp");
   TEST_VOID(nta_agent_destroy(agent));
@@ -795,9 +795,9 @@
   TEST_1(agent = nta_agent_create(ag->ag_root, NONE, NULL, NULL, TAG_END()));
   TEST_1(nta_agent_add_tport(agent, (url_string_t *)url, TAG_END()) == 0);
   TEST_1(v = nta_agent_via(agent));
-  TEST(strcasecmp(v->v_protocol, sip_transport_tcp), 0);
+  TEST(!su_casematch(v->v_protocol, sip_transport_tcp), 0);
   TEST_1(v = v->v_next);
-  TEST(strcasecmp(v->v_protocol, sip_transport_udp), 0);
+  TEST(!su_casematch(v->v_protocol, sip_transport_udp), 0);
   TEST_1(m = nta_agent_contact(agent));
   TEST_1(!m->m_url->url_params);
   TEST_VOID(nta_agent_destroy(agent));
@@ -807,9 +807,9 @@
   TEST_1(agent = nta_agent_create(ag->ag_root, NONE, NULL, NULL, TAG_END()));
   TEST_1(nta_agent_add_tport(agent, (url_string_t *)url, TAG_END()) == 0);
   TEST_1(v = nta_agent_via(agent));
-  TEST(strcasecmp(v->v_protocol, sip_transport_udp), 0);
+  TEST(!su_casematch(v->v_protocol, sip_transport_udp), 0);
   TEST_1(v = v->v_next);
-  TEST(strcasecmp(v->v_protocol, sip_transport_tcp), 0);
+  TEST(!su_casematch(v->v_protocol, sip_transport_tcp), 0);
   TEST_1(m = nta_agent_contact(agent));
   TEST_1(!m->m_url->url_params);
   TEST_VOID(nta_agent_destroy(agent));
@@ -866,7 +866,7 @@
 
 
 /* Test that NULL host and/or port fields of user supplied Via header are
-   filled in automaticaly */
+   filled in automatically */
 int api_test_user_via_fillin(agent_t *ag)
 {
   su_home_t home[1];
@@ -879,7 +879,7 @@
   sip_via_t *via0, *via1;
   sip_via_t via[1];
   static char *via_params[] = { "param1=value1", "param2=value2" };
-  int i;
+  size_t i;
 
   BEGIN();
 
@@ -912,30 +912,30 @@
   /* create user Via template to be filled in by NTA */
   sip_via_init(via);
   via->v_protocol = "*";
-  for (i = 0; i < sizeof(via_params)/sizeof(via_params[0]); i++)
-      sip_via_add_param(home,via,via_params[i]); /* add param to the template */
+  for (i = 0; i < sizeof(via_params) / sizeof(via_params[0]); i++)
+    sip_via_add_param(home, via, via_params[i]); /* add param to the template */
 
   /* This creates a delayed response message */
   orq1 = nta_outgoing_tcreate(leg, outgoing_callback, ag, NULL,
-  		       SIP_METHOD_MESSAGE, 
-  		       URL_STRING_MAKE("sip:foo.bar;transport=none"),
-  		       SIPTAG_FROM_STR("<sip:bar.foo>"),
-  		       SIPTAG_TO_STR("<sip:foo.bar>"),
-               NTATAG_USER_VIA(1),
-               SIPTAG_VIA(via),
-  		       TAG_END());
+			      SIP_METHOD_MESSAGE,
+			      URL_STRING_MAKE("sip:foo.bar;transport=none"),
+			      SIPTAG_FROM_STR("<sip:bar.foo>"),
+			      SIPTAG_TO_STR("<sip:foo.bar>"),
+			      NTATAG_USER_VIA(1),
+			      SIPTAG_VIA(via),
+			      TAG_END());
   TEST_1(orq1);
   TEST_1(msg1 = nta_outgoing_getrequest(orq1));
   TEST_1(sip1 = sip_object(msg1));
   TEST_1(via1 = sip1->sip_via);
 
   /* check that template has been filled correctly */
-  TEST_S(via0->v_protocol,via1->v_protocol);
-  TEST_S(via0->v_host,via1->v_host);
-  TEST_S(via0->v_port,via1->v_port);
+  TEST_S(via0->v_protocol, via1->v_protocol);
+  TEST_S(via0->v_host, via1->v_host);
+  TEST_S(via0->v_port, via1->v_port);
   /* check that the parameter has been preserved */
   for (i = 0; i < sizeof(via_params)/sizeof(via_params[0]); i++)
-    TEST_S(via1->v_params[i],via_params[i]);
+    TEST_S(via1->v_params[i], via_params[i]);
 
   TEST_VOID(nta_outgoing_destroy(orq0));
   TEST_VOID(nta_outgoing_destroy(orq1));



More information about the Freeswitch-svn mailing list