[Freeswitch-trunk] [commit] r3780 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/sip libsofia-sip-ua/su
Freeswitch SVN
mikej at freeswitch.org
Thu Dec 21 11:55:05 EST 2006
Author: mikej
Date: Thu Dec 21 11:55:03 2006
New Revision: 3780
Added:
freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/test_sip_msg.c
Modified:
freeswitch/trunk/libs/sofia-sip/ (props changed)
freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/ (props changed)
freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/Makefile.am
freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/Makefile.in
freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_timer.c
Log:
update to current sofia darcs, fix partial rename of sip_test_msg->test_sip_msg
Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/Makefile.am
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/Makefile.am (original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/Makefile.am Thu Dec 21 11:55:03 2006
@@ -17,7 +17,7 @@
noinst_LTLIBRARIES = libsip.la
check_PROGRAMS = torture_sip \
- sip_test_msg validator date_test
+ test_sip_msg validator date_test
# ----------------------------------------------------------------------
# Rules for building the targets
@@ -58,7 +58,7 @@
../su/libsu.la
torture_sip_LDFLAGS = -static
-sip_test_msg_LDFLAGS = -static
+test_sip_msg_LDFLAGS = -static
date_test_LDFLAGS = -static
# ----------------------------------------------------------------------
@@ -93,9 +93,9 @@
# ----------------------------------------------------------------------
# Tests
-#TESTS = torture_sip run_sip_test_msg run_date_test
+TESTS = torture_sip run_test_sip_msg run_date_test
-#dist_noinst_SCRIPTS = run_sip_test_msg run_date_test
+dist_noinst_SCRIPTS = run_test_sip_msg run_date_test
# ----------------------------------------------------------------------
# Sofia specific rules
Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/Makefile.in
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/Makefile.in (original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/Makefile.in Thu Dec 21 11:55:03 2006
@@ -25,8 +25,9 @@
# ---------------------------------------------------
-SOURCES = $(libsip_la_SOURCES) date_test.c sip_test_msg.c torture_sip.c validator.c
+SOURCES = $(libsip_la_SOURCES) date_test.c test_sip_msg.c torture_sip.c validator.c
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -50,10 +51,11 @@
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
-check_PROGRAMS = torture_sip$(EXEEXT) sip_test_msg$(EXEEXT) \
+check_PROGRAMS = torture_sip$(EXEEXT) test_sip_msg$(EXEEXT) \
validator$(EXEEXT) date_test$(EXEEXT)
-DIST_COMMON = $(nobase_include_sofia_HEADERS) $(srcdir)/../sofia.am \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
+DIST_COMMON = $(dist_noinst_SCRIPTS) $(nobase_include_sofia_HEADERS) \
+ $(srcdir)/../sofia.am $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in ChangeLog
subdir = libsofia-sip-ua/sip
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/sac-general.m4 \
@@ -80,10 +82,10 @@
date_test_LDADD = $(LDADD)
date_test_DEPENDENCIES = libsip.la ../msg/libmsg.la ../bnf/libbnf.la \
../url/liburl.la ../su/libsu.la
-sip_test_msg_SOURCES = sip_test_msg.c
-sip_test_msg_OBJECTS = sip_test_msg.$(OBJEXT)
-sip_test_msg_LDADD = $(LDADD)
-sip_test_msg_DEPENDENCIES = libsip.la ../msg/libmsg.la \
+test_sip_msg_SOURCES = test_sip_msg.c
+test_sip_msg_OBJECTS = test_sip_msg.$(OBJEXT)
+test_sip_msg_LDADD = $(LDADD)
+test_sip_msg_DEPENDENCIES = libsip.la ../msg/libmsg.la \
../bnf/libbnf.la ../url/liburl.la ../su/libsu.la
torture_sip_SOURCES = torture_sip.c
torture_sip_OBJECTS = torture_sip.$(OBJEXT)
@@ -95,6 +97,7 @@
validator_LDADD = $(LDADD)
validator_DEPENDENCIES = libsip.la ../msg/libmsg.la ../bnf/libbnf.la \
../url/liburl.la ../su/libsu.la
+SCRIPTS = $(dist_noinst_SCRIPTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/libsofia-sip-ua/su/sofia-sip
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@@ -106,9 +109,9 @@
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libsip_la_SOURCES) date_test.c sip_test_msg.c \
+SOURCES = $(libsip_la_SOURCES) date_test.c test_sip_msg.c \
torture_sip.c validator.c
-DIST_SOURCES = $(libsip_la_SOURCES) date_test.c sip_test_msg.c \
+DIST_SOURCES = $(libsip_la_SOURCES) date_test.c test_sip_msg.c \
torture_sip.c validator.c
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
@@ -314,7 +317,7 @@
../su/libsu.la
torture_sip_LDFLAGS = -static
-sip_test_msg_LDFLAGS = -static
+test_sip_msg_LDFLAGS = -static
date_test_LDFLAGS = -static
# ----------------------------------------------------------------------
@@ -345,6 +348,11 @@
tests/test35.txt tests/test36.txt tests/test37.txt tests/test38.txt \
tests/test39.txt tests/test40.txt tests/test41.txt tests/test42.txt
+
+# ----------------------------------------------------------------------
+# Tests
+TESTS = torture_sip run_test_sip_msg run_date_test
+dist_noinst_SCRIPTS = run_test_sip_msg run_date_test
AM_CFLAGS = $(CWFLAG) $(SOFIA_CFLAGS)
DISTCLEANFILES = $(BUILT_SOURCES)
@@ -373,13 +381,6 @@
# ----------------------------------------------------------------------
-# Tests
-
-#TESTS = torture_sip run_sip_test_msg run_date_test
-
-#dist_noinst_SCRIPTS = run_sip_test_msg run_date_test
-
-# ----------------------------------------------------------------------
# Sofia specific rules
MSG_PARSER_AWK = $(srcdir)/../msg/msg_parser.awk
AWK_SIP_AWK = $(AWK) -f $(MSG_PARSER_AWK) module=sip
@@ -439,9 +440,9 @@
date_test$(EXEEXT): $(date_test_OBJECTS) $(date_test_DEPENDENCIES)
@rm -f date_test$(EXEEXT)
$(LINK) $(date_test_LDFLAGS) $(date_test_OBJECTS) $(date_test_LDADD) $(LIBS)
-sip_test_msg$(EXEEXT): $(sip_test_msg_OBJECTS) $(sip_test_msg_DEPENDENCIES)
- @rm -f sip_test_msg$(EXEEXT)
- $(LINK) $(sip_test_msg_LDFLAGS) $(sip_test_msg_OBJECTS) $(sip_test_msg_LDADD) $(LIBS)
+test_sip_msg$(EXEEXT): $(test_sip_msg_OBJECTS) $(test_sip_msg_DEPENDENCIES)
+ @rm -f test_sip_msg$(EXEEXT)
+ $(LINK) $(test_sip_msg_LDFLAGS) $(test_sip_msg_OBJECTS) $(test_sip_msg_LDADD) $(LIBS)
torture_sip$(EXEEXT): $(torture_sip_OBJECTS) $(torture_sip_DEPENDENCIES)
@rm -f torture_sip$(EXEEXT)
$(LINK) $(torture_sip_LDFLAGS) $(torture_sip_OBJECTS) $(torture_sip_LDADD) $(LIBS)
@@ -475,9 +476,9 @@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sip_tag.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sip_tag_class.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sip_tag_ref.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sip_test_msg.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sip_time.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sip_util.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_sip_msg.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/torture_sip.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/validator.Po at am__quote@
@@ -579,6 +580,79 @@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list='$(TESTS)'; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
distdir: $(DISTFILES)
$(mkdir_p) $(distdir)/.. $(distdir)/images $(distdir)/sofia-sip $(distdir)/tests
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -609,9 +683,10 @@
done
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(include_sofiadir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
@@ -695,7 +770,7 @@
uninstall-am: uninstall-info-am uninstall-nobase_include_sofiaHEADERS
-.PHONY: CTAGS GTAGS all all-am check check-am clean \
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
clean-checkPROGRAMS clean-generic clean-libtool \
clean-noinstLTLIBRARIES ctags distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
Added: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/test_sip_msg.c
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/test_sip_msg.c Thu Dec 21 11:55:03 2006
@@ -0,0 +1,293 @@
+/*
+ * This file is part of the Sofia-SIP package
+ *
+ * Copyright (C) 2005 Nokia Corporation.
+ *
+ * Contact: Pekka Pessi <pekka.pessi at nokia.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+/**@SIP_PARSER
+ *
+ * @file test_sip_msg.c Simple SIP message parser/printer tester.
+ *
+ * @author Pekka Pessi <Pekka.Pessi at nokia.com>.
+ *
+ * @date Created: Fri Feb 18 10:25:08 2000 ppessi
+ */
+
+#include "config.h"
+
+/* Avoid casting sip_t to msg_pub_t and sip_header_t to msg_header_t */
+#define MSG_PUB_T struct sip_s
+#define MSG_HDR_T union sip_header_u
+
+#include "sofia-sip/sip_parser.h"
+#include "sofia-sip/msg_mclass.h"
+#include "sofia-sip/msg_mclass_hash.h"
+#include <sofia-sip/sip_header.h>
+#include <sofia-sip/sip_util.h>
+#include <sofia-sip/msg_addr.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <assert.h>
+
+int diff(const char *olds, const char *news, int *linep, int *pos)
+{
+ const char *o, *n;
+
+ *linep = 0;
+
+ for (o = olds, n = news; *o && *n && *o == *n ; o++, n++) {
+ if (*o == '\n') ++*linep;
+ }
+
+ *pos = o - olds;
+
+ return *o != *n;
+}
+
+int test_msg_class(msg_mclass_t *mc)
+{
+ int i, j, N;
+
+ N = mc->mc_hash_size;
+
+ /* Check parser table sanity */
+ for (i = 0; i < N; i++) {
+ /* Verify each header entry */
+ msg_hclass_t *hc = mc->mc_hash[i].hr_class;
+
+ if (hc == NULL)
+ continue;
+
+ /* Short form */
+ if (hc->hc_short[0])
+ assert(mc->mc_short[hc->hc_short[0] - 'a'].hr_class == hc);
+
+ /* Long form */
+ for (j = MC_HASH(hc->hc_name, N); j != i; j = (j + 1) % N)
+ assert(mc->mc_hash[j].hr_class);
+ }
+
+ return 0;
+}
+
+char * url_print(url_t *url, char buf[1024])
+{
+ url_e(buf, 1024, url);
+
+ return buf;
+}
+
+void print_contact(FILE *f, sip_contact_t *m)
+{
+ char const * const *p;
+ char buf[1024];
+ const char *sep = "\tContact: ";
+
+ for (;m; m = m->m_next) {
+ int quoted_url = 0;
+ fputs(sep, f); sep = ", ";
+
+ if (m->m_display) {
+ quoted_url = 1;
+ fprintf(f, "\"%s\" <", m->m_display);
+ }
+ url_print(m->m_url, buf);
+ if (!quoted_url && strpbrk(buf, ",;?")) {
+ fputs("<", f);
+ }
+ fputs(buf, f);
+ if (quoted_url) fputs(">", f);
+
+ if (m->m_params)
+ for (p = m->m_params; *p; p++)
+ fprintf(f, " ;%s", *p);
+
+ if (m->m_comment)
+ fprintf(f, " (%s)", m->m_comment);
+ }
+
+ fputs("\n", f);
+}
+
+void print_via(FILE *f, sip_via_t *v)
+{
+ char const * const *p;
+ char const * sep = "\tVia: ";
+
+ for (;v; v = v->v_next) {
+ fputs(sep, f); sep = ", ";
+
+ fprintf(f, "%s %s", v->v_protocol, v->v_host);
+ if (v->v_port)
+ fprintf(f, ":%s", v->v_port);
+
+ if (v->v_params)
+ for (p = v->v_params; *p; p++)
+ fprintf(f, " ;%s", *p);
+ if (v->v_comment)
+ fprintf(f, " (%s)", v->v_comment);
+ }
+
+ fputs("\n", f);
+}
+
+int main(int argc, char *argv[])
+{
+ char urlbuf[1024];
+ size_t n;
+ int m, tcp;
+ sip_t *sip;
+ int exitcode = 0;
+ msg_mclass_t *sip_mclass = sip_default_mclass();
+ msg_t *msg = msg_create(sip_mclass, MSG_FLG_EXTRACT_COPY);
+ msg_iovec_t iovec[1];
+
+ tcp = argv[1] && strcmp(argv[1], "-t") == 0;
+
+ test_msg_class(sip_mclass);
+
+ for (n = 0, m = 0;;) {
+ if (msg_recv_iovec(msg, iovec, 1, 1, 0) < 0) {
+ perror("msg_recv_iovec");
+ exit(1);
+ }
+ assert(iovec->mv_len >= 1);
+
+ n = read(0, iovec->mv_base, 1);
+
+ if (n < 0) {
+ perror("test_sip_msg read");
+ exit(1);
+ }
+
+ msg_recv_commit(msg, n, n == 0);
+
+ if (tcp)
+ m = msg_extract(msg);
+
+ if (n == 0 || m < 0)
+ break;
+ }
+
+ if (!tcp)
+ m = msg_extract(msg);
+
+ sip = msg_object(msg);
+ if (sip)
+ fprintf(stdout, "sip flags = %x\n", sip->sip_flags);
+
+ if (m < 0) {
+ fprintf(stderr, "test_sip_msg: parsing error ("MOD_ZD")\n", n);
+ exit(1);
+ }
+
+ if (sip->sip_flags & MSG_FLG_TRUNC) {
+ fprintf(stderr, "test_sip_msg: message truncated\n");
+ exit(1);
+ }
+
+ if (msg_next(msg)) {
+ fprintf(stderr, "test_sip_msg: stuff after message\n");
+ exit(1);
+ }
+
+#if 0
+ fprintf(stderr, "test_sip_msg: %d headers (%d short ones), %d unknown\n",
+ msg->mh_n_headers, msg->mh_n_short, msg->mh_n_unknown);
+
+ if (msg->mh_payload) {
+ fprintf(stderr, "\twith payload of %d bytes\n",
+ msg->mh_payload->pl_len);
+ }
+#endif
+
+ if (MSG_HAS_ERROR(sip->sip_flags) || sip->sip_error) {
+ fprintf(stderr, "test_sip_msg: parsing error\n");
+ exit(1);
+ }
+ else if (sip_sanity_check(sip) < 0) {
+ fprintf(stderr, "test_sip_msg: message failed sanity check\n");
+ exit(1);
+ }
+
+ if (sip->sip_request) {
+ fprintf(stdout, "\trequest %s (%d) %s %s\n",
+ sip->sip_request->rq_method_name,
+ sip->sip_request->rq_method,
+ url_print(sip->sip_request->rq_url, urlbuf),
+ sip->sip_request->rq_version);
+ if (sip->sip_request->rq_url->url_type == url_unknown) {
+ exitcode = 1;
+ fprintf(stderr, "test_sip_msg: invalid request URI\n");
+ }
+ }
+
+ if (sip->sip_status)
+ fprintf(stdout, "\tstatus %s %03d %s\n",
+ sip->sip_status->st_version,
+ sip->sip_status->st_status,
+ sip->sip_status->st_phrase);
+
+ if (sip->sip_cseq)
+ fprintf(stdout, "\tCSeq: %u %s (%d)\n",
+ sip->sip_cseq->cs_seq,
+ sip->sip_cseq->cs_method_name,
+ sip->sip_cseq->cs_method);
+
+ if (sip->sip_call_id)
+ fprintf(stdout, "\tCall-ID: %s (%x)\n",
+ sip->sip_call_id->i_id,
+ sip->sip_call_id->i_hash);
+
+ if (sip->sip_from)
+ fprintf(stdout, "\tFrom: %s@%s%s%s\n",
+ sip->sip_from->a_user ? sip->sip_from->a_user : "[nobody]",
+ sip->sip_from->a_host ? sip->sip_from->a_host : "[nowhere]",
+ sip->sip_from->a_tag ? " ;tag=" : "",
+ sip->sip_from->a_tag ? sip->sip_from->a_tag : "");
+
+ if (sip->sip_to)
+ fprintf(stdout, "\tTo: %s@%s%s%s\n",
+ sip->sip_to->a_user ? sip->sip_to->a_user : "[nobody]",
+ sip->sip_to->a_host ? sip->sip_to->a_host : "[nowhere]",
+ sip->sip_to->a_tag ? " ;tag=" : "",
+ sip->sip_to->a_tag ? sip->sip_to->a_tag : "");
+
+ if (sip->sip_contact)
+ print_contact(stdout, sip->sip_contact);
+ if (sip->sip_via)
+ print_via(stdout, sip->sip_via);
+
+ if (sip->sip_content_length) {
+ fprintf(stdout, "\tcontent length %u\n",
+ sip->sip_content_length->l_length);
+ }
+
+ if (msg_next(msg)) {
+ fprintf(stderr, "test_sip_msg: extra stuff after valid message\n");
+ exit(1);
+ }
+
+ return exitcode;
+}
Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_timer.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_timer.c (original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_timer.c Thu Dec 21 11:55:03 2006
@@ -578,6 +578,8 @@
{
su_duration_t tout;
+ t = timers_first(t);
+
if (!t)
return SU_DURATION_MAX;
More information about the Freeswitch-trunk
mailing list