Re: [Sofia-sip-devel] nua: initializing SIP stack failed

2010-07-12 Thread Stefano Sabatini
In data Wednesday 2010-07-07 17:51:00 +0300, Pekka Pessi ha scritto:
 2010/6/30 Stefano Sabatini ssabat...@reilabs.com:
  Hi all, I'm running this simple code in Windows Vista:
  nta: master transport created
  tport(00F27958) to */*:*/sip
  tport(00F27958): calling tport_listen for udp
  tport(00F27958): new primary tport 00F28128
  tport(00F27958): bind(pf=2 udp/[192.168.0.1]): No such file or directory
  nta: bind(*:*;transport=*): No such file or directory
  nua: initializing SIP stack failed
 
 
  Can you suggest what the problem may be?
 
 For some reason binding a socket to IP address 192.168.0.1 fails.
 Where the address comes from? Does you Vista box try to share internet
 connection?
 
 If you can compile and run localinfo command, see what it prints?
 
 You can also modify
 
 NUTAG_URL(sip:stef...@*:*)
 
 so it explicitly mentions the IP address, e.g.,
 
 NUTAG_URL(sip:stef...@*:*;maddr=10.2.3.4)

Hi Pekka, yes that looked like a configuration issue, we fixed the
problem by hardcoding the address of the interface to be used, using
something like this:

NUTAG_URL(sip:X.Y.Z.W:*);

and *disabling* all the other interfaces. Sorry that I have no time to
investigate more on this...

Thanks, regards.

--
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [PATCH] Fix gai_strerror re-declaration in MinGW

2010-07-08 Thread Stefano Sabatini
On date Wednesday 2010-07-07 17:30:57 +0300, Pekka Pessi phoned this:
 2010/7/6 Stefano Sabatini ssabat...@reilabs.com:
  Hi, as in subject.
 
  The patch requires to run autoheader to re-generate the config.h.in
  file.
 
 Thanks for patch. I wonder if it is enough just to #undef
 gai_strerror? No need to check its declaration?

Exactly, this way the patch is much simpler.

Regards.
From 3ed1bea1f042248645e25d4b26f4f57dcf12f6ce Mon Sep 17 00:00:00 2001
From: Stefano Sabatini ssabat...@reilabs.com
Date: Tue, 6 Jul 2010 15:43:13 +0200
Subject: [PATCH 2/2] Undefine gai_strerror symbol if the function is not defined.

Avoid a re-definition issue and fix compilation in MinGW, where
gai_strerror is declared but not defined.
---
 libsofia-sip-ua/su/su_addrinfo.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/libsofia-sip-ua/su/su_addrinfo.c b/libsofia-sip-ua/su/su_addrinfo.c
index c8005c0..6637da3 100644
--- a/libsofia-sip-ua/su/su_addrinfo.c
+++ b/libsofia-sip-ua/su/su_addrinfo.c
@@ -820,6 +820,8 @@ freeaddrinfo(ai)
 #endif
 
 #if !HAVE_GAI_STRERROR
+#undef gai_strerror
+
 static
 char *
 gai_strerror(ecode)
-- 
1.7.1

--
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] su/su_win32_port.c compilation in MinGW

2010-07-08 Thread Stefano Sabatini
Hi all,

I cannot find a way of getting su_win32_port.c compiled and added to
libsofia_sip in MinGW.

This is causing the following failure:

gcc -Wall -g -O2 -I./win32/pthread -DWINVER=0x0501
-D_WIN32_WINNT=0x0501 -DIN_LIBSOFIA_SIP_UA -DIN_LIBSOFIA_SRES
-mms-bitfields -pipe -mno-cygwin 
-mwindows -mconsole -Wall -g -O0 -Wl,--enable-auto-image-base -o
stunc.exe stunc.o  ./.libs/libstun.a -L/c/x/y/sofia-sip_1_12_10/win32/pthread
../sresolv/.libs/libsresolv.a ../su/.libs/libsu.a -L./win32/pthread -lpthread -l
pthreadVC2 -lws2_32 -lwsock32
../su/.libs/libsu.a(su_port.o): In function `su_default_port_create':
c:\x\y\sofia-sip_1_12_10\libsofia-sip-ua\su/su_port.c:63:
undefined reference to `su_wsaevent_port_create'
../su/.libs/libsu.a(su_port.o): In function `su_default_clone_start':
c:\x\y\sofia-sip_1_12_10\libsofia-sip-ua\su/su_port.c:86:
undefined reference to `su_wsaevent_clone_start'
../su/.libs/libsu.a(su_port.o): In function `su_port_set_system_preferences':
c:\x\y\sofia-sip_1_12_10\libsofia-sip-ua\su/su_port.c:142:
 undefined reference to `su_wsaevent_port_create'
c:\x\y\sofia-sip_1_12_10\libsofia-sip-ua\su/su_port.c:143:
 undefined reference to `su_wsaevent_clone_start'
collect2: ld returned 1 exit status
make[4]: *** [stunc.exe] Error 1
make[4]: Leaving directory `/c/x/y/sofia-sip_1_12_10/libsofia-sip-ua/stun'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/c/x/y/sofia-sip_1_12_10/libso
fia-sip-ua/stun'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/c/x/y/sofia-sip_1_12_10/libsofia-sip-ua'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/c/x/y/sofia-sip_1_12_10'
make: *** [all] Error 2

Can you suggest how to fix this?

Regards.

--
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] su/su_win32_port.c compilation in MinGW

2010-07-08 Thread Stefano Sabatini
On date Thursday 2010-07-08 10:43:28 +0200, Stefano Sabatini phoned this:
 Hi all,
 
 I cannot find a way of getting su_win32_port.c compiled and added to
 libsofia_sip in MinGW.
 
 This is causing the following failure:
 
 gcc -Wall -g -O2 -I./win32/pthread -DWINVER=0x0501
 -D_WIN32_WINNT=0x0501 -DIN_LIBSOFIA_SIP_UA -DIN_LIBSOFIA_SRES
 -mms-bitfields -pipe -mno-cygwin 
 -mwindows -mconsole -Wall -g -O0 -Wl,--enable-auto-image-base -o
 stunc.exe stunc.o  ./.libs/libstun.a -L/c/x/y/sofia-sip_1_12_10/win32/pthread
 ../sresolv/.libs/libsresolv.a ../su/.libs/libsu.a -L./win32/pthread -lpthread 
 -l
 pthreadVC2 -lws2_32 -lwsock32
 ../su/.libs/libsu.a(su_port.o): In function `su_default_port_create':
 c:\x\y\sofia-sip_1_12_10\libsofia-sip-ua\su/su_port.c:63:
 undefined reference to `su_wsaevent_port_create'
 ../su/.libs/libsu.a(su_port.o): In function `su_default_clone_start':
 c:\x\y\sofia-sip_1_12_10\libsofia-sip-ua\su/su_port.c:86:
 undefined reference to `su_wsaevent_clone_start'
 ../su/.libs/libsu.a(su_port.o): In function `su_port_set_system_preferences':
 c:\x\y\sofia-sip_1_12_10\libsofia-sip-ua\su/su_port.c:142:
  undefined reference to `su_wsaevent_port_create'
 c:\x\y\sofia-sip_1_12_10\libsofia-sip-ua\su/su_port.c:143:
  undefined reference to `su_wsaevent_clone_start'
 collect2: ld returned 1 exit status
 make[4]: *** [stunc.exe] Error 1
 make[4]: Leaving directory `/c/x/y/sofia-sip_1_12_10/libsofia-sip-ua/stun'
 make[3]: *** [all] Error 2
 make[3]: Leaving directory `/c/x/y/sofia-sip_1_12_10/libso
 fia-sip-ua/stun'
 make[2]: *** [all-recursive] Error 1
 make[2]: Leaving directory `/c/x/y/sofia-sip_1_12_10/libsofia-sip-ua'
 make[1]: *** [all-recursive] Error 1
 make[1]: Leaving directory `/c/x/y/sofia-sip_1_12_10'
 make: *** [all] Error 2
 
 Can you suggest how to fix this?

Found a way which works for me, it feels a bit unelegant and I'm not
sure this is the best solution (no auto* expertise). You need to run
autoreconf to update libsofia-sip-ua/su/Makefile.in.

Regards.
From 1c7dfdb69706c224f7eea82fb06562d927b04550 Mon Sep 17 00:00:00 2001
From: Stefano Sabatini ssabat...@reilabs.com
Date: Thu, 8 Jul 2010 15:49:25 +0200
Subject: [PATCH 2/2] Compile and link su_win32_port.c when the target OS is MinGW.

Fix linking in MinGW.
---
 configure.ac   |2 ++
 libsofia-sip-ua/su/Makefile.am |3 +++
 2 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/configure.ac b/configure.ac
index 4f48650..f81fde4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,6 +26,8 @@ AC_SUBST(LIBVER_SOFIA_SIP_UA_GLIB_REV, [0])
 AC_SUBST(LIBVER_SOFIA_SIP_UA_GLIB_AGE, [0])
 AC_SUBST(LIBVER_SOFIA_SIP_UA_GLIB_SOVER, [3]) # CUR-AGE
 
+AM_CONDITIONAL(TARGET_OS_MINGW32, test x$target_os = xmingw32)
+
 ## calls AC_CANONICAL_ macros that are required by AM_INIT_AUTOMAKE
 SAC_CANONICAL_SYSTEM_CACHE_CHECK
 
diff --git a/libsofia-sip-ua/su/Makefile.am b/libsofia-sip-ua/su/Makefile.am
index db3a331..8775699 100644
--- a/libsofia-sip-ua/su/Makefile.am
+++ b/libsofia-sip-ua/su/Makefile.am
@@ -76,6 +76,9 @@ libsu_la_SOURCES = \
 	su_md5.c su_uniqueid.c su_bm.c smoothsort.c su_string.c string0.c \
 	$(OSXSOURCES)
 
+if TARGET_OS_MINGW32
+libsu_la_SOURCES += su_win32_port.c
+endif
 
 EXTRA_libsu_la_SOURCES = \
 			memmem.c strtoull.c \
-- 
1.7.1

--
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [PATCH] Fix configuration under MinGW

2010-07-08 Thread Stefano Sabatini
On date Tuesday 2010-07-06 19:35:38 +0300, Pekka Pessi phoned this:
 2010/7/6 Stefano Sabatini ssabat...@reilabs.com:
  this patch fixes the configuration problem as reported here:
  http://thread.gmane.org/gmane.comp.telephony.sofia-sip.devel/3853
 
 Thanks for the patch.
 
 -CFLAGS=$CFLAGS -I\$(top_srcdir)/win32/pthread -DWINVER=0x0501 \
 +CFLAGS=$CFLAGS -I${srcdir}/win32/pthread -DWINVER=0x0501 \
 
 Can you actually compile sofia-sip with this? It seems to me that the
 relative srcdir does dot work when make descends deeper into source
 tree.

Mmh no, indeed compilation was failing with a libtool error (I had to
hack the generated libtool script to fix it, as reported in another
thread).

So it seems that the patch defined in sac-general.m4 needs to be
*absolute*. I tried to use $abs_srcdir but that is expanded to the
empty string, then I hacked this:

abs_srcdir=`(cd $srcdir  pwd)`
CFLAGS=$CFLAGS -I${abs_srcdir}/win32/pthread -DWINVER=0x0501 \ ...

and now it is working (configure and libtool and all).

Now I need to understand why it isn't expanding $abs_srcdir...

Regards.

--
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [PATCH] Fix configuration under MinGW

2010-07-06 Thread Stefano Sabatini
Hi all,

this patch fixes the configuration problem as reported here:
http://thread.gmane.org/gmane.comp.telephony.sofia-sip.devel/3853

$LIBS and $CFLAGS need to be expanded at the configuration level,
otherwise when using them during configuration they will be wrong,
resulting in many failing tests and in a fatal error which happens
in the code from configure.ac:

if test $ac_cv_c_ll_format = yes; then
  AC_DEFINE([LLU], [%llu], [Format (%llu) for unsigned long long])dnl
  AC_DEFINE([LLI], [%lli], [Format (%lli) for long long])dnl
  AC_DEFINE([LLX], [%llx], [Format (%llx) for long long hex])dnl
else
  AC_MSG_ERROR(printf cannot handle 64-bit integers)
fi

This is what you can find in config.log:

configure:24311: gcc -o conftest.exe -g -O2 -I./win32/pthread -DWINVER=0x0501
-D_WIN32_WINNT=0x0501 -DIN_LIBSOFIA_SIP_UA -DIN_LIBSOFIA_SRES   -mms-bitfields
-pipe -mno-cygwin -mwindows -mconsole -Wall -g -O0   -Wl,--enable-auto-image-bas
e conftest.c -L$(top_srcdir)/win32/pthread -lpthreadVC2 -lws2_32-lwsock3
2 5
c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: cannot fin
d -lpthreadVC2
collect2: ld returned 1 exit status
configure:24311: $? = 1
configure: program exited with status 1
configure: failed program was:

Patch attached, regards.
From 7d74c8b50b33469667006c50e902e690620ce5dd Mon Sep 17 00:00:00 2001
Message-Id: 7d74c8b50b33469667006c50e902e690620ce5dd.1278413394.git.stefano.sabatini-l...@poste.it
From: Stefano Sabatini stefano.sabatini-l...@poste.it
Date: Tue, 6 Jul 2010 12:28:11 +0200
Subject: [fix-mingw-compilation PATCH] Fix configuration in MinGW.

CFLAGS and LIBS need to be expanded at configuration time, otherwise
many configure test will fail and the configure will abort with the
message:
configure: error: printf cannot handle 64-bit integers
---
 m4/sac-general.m4 |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/m4/sac-general.m4 b/m4/sac-general.m4
index b494de1..de0ba9a 100644
--- a/m4/sac-general.m4
+++ b/m4/sac-general.m4
@@ -359,12 +359,12 @@ fi
 ])
 
 if test $ac_cc_environment = mingw32 ; then
-CFLAGS=$CFLAGS -I\$(top_srcdir)/win32/pthread -DWINVER=0x0501 \
+CFLAGS=$CFLAGS -I${srcdir}/win32/pthread -DWINVER=0x0501 \
 	-D_WIN32_WINNT=0x0501 -DIN_LIBSOFIA_SIP_UA -DIN_LIBSOFIA_SRES \
 	-mms-bitfields \
 	-pipe -mno-cygwin -mwindows -mconsole -Wall -g -O0
 LDFLAGS=$LDFLAGS -Wl,--enable-auto-image-base
-LIBS=-L\$(top_srcdir)/win32/pthread -lpthreadVC2 -lws2_32 \
+LIBS=-L${srcdir}/win32/pthread -lpthreadVC2 -lws2_32 \
 	-lwsock32
 MINGW_ENVIRONMENT=1
 AC_SUBST(MINGW_ENVIRONMENT)
-- 
1.7.1

--
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [PATCH] Fix gai_strerror re-declaration in MinGW

2010-07-06 Thread Stefano Sabatini
Hi, as in subject.

The patch requires to run autoheader to re-generate the config.h.in
file.

Regards.
From c75913c29b31450936a366f4b918bb29cde461e7 Mon Sep 17 00:00:00 2001
Message-Id: c75913c29b31450936a366f4b918bb29cde461e7.1278424181.git.ssabat...@reilabs.com
In-Reply-To: df35791318679319f17f1ad01b104a6dca265786.1278424181.git.ssabat...@reilabs.com
References: df35791318679319f17f1ad01b104a6dca265786.1278424181.git.ssabat...@reilabs.com
From: Stefano Sabatini ssabat...@reilabs.com
Date: Tue, 6 Jul 2010 15:43:13 +0200
Subject: [fix-mingw-compilation PATCH 2/2] Avoid gai_strerror redefinition if it has been already declared.

Fix compilation on MinGW (where it is declared but not defined).
---
 libsofia-sip-ua/su/su_addrinfo.c |4 
 m4/sac-general.m4|6 ++
 2 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/libsofia-sip-ua/su/su_addrinfo.c b/libsofia-sip-ua/su/su_addrinfo.c
index c8005c0..4663fee 100644
--- a/libsofia-sip-ua/su/su_addrinfo.c
+++ b/libsofia-sip-ua/su/su_addrinfo.c
@@ -820,6 +820,10 @@ freeaddrinfo(ai)
 #endif
 
 #if !HAVE_GAI_STRERROR
+#if HAVE_DECL_GAI_STRERROR
+#undef gai_strerror
+#endif
+
 static
 char *
 gai_strerror(ecode)
diff --git a/m4/sac-general.m4 b/m4/sac-general.m4
index de0ba9a..ec42733 100644
--- a/m4/sac-general.m4
+++ b/m4/sac-general.m4
@@ -359,6 +359,9 @@ fi
 ])
 
 if test $ac_cc_environment = mingw32 ; then
+
+AC_CHECK_DECLS([gai_strerror], [], [], [[#include ws2tcpip.h]])
+
 CFLAGS=$CFLAGS -I${srcdir}/win32/pthread -DWINVER=0x0501 \
 	-D_WIN32_WINNT=0x0501 -DIN_LIBSOFIA_SIP_UA -DIN_LIBSOFIA_SRES \
 	-mms-bitfields \
@@ -370,7 +373,10 @@ MINGW_ENVIRONMENT=1
 AC_SUBST(MINGW_ENVIRONMENT)
 AC_DEFINE([HAVE_MINGW], [1], [Define to 1 if you are compiling in MinGW environment])
 AC_DEFINE([HAVE_WIN32], [1], [Define to 1 if you have WIN32])
+else
+AC_CHECK_DECLS([gai_strerror])
 fi
+
 AM_CONDITIONAL([HAVE_MINGW32], [test x$ac_cc_environment != x])
 ])dnl
 
-- 
1.7.1

--
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Is sofia-sip dead?

2010-07-02 Thread Stefano Sabatini
On date Monday 2010-06-28 22:24:24 +0300, Pekka Pessi phoned this:
 2010/6/18 Stefano Sabatini ssabat...@reilabs.com:
  On date Thursday 2010-06-17 01:26:51 -0400, Michael Jerris phoned this:
  sofia-sip is not dead.  The repository is in the process of moving
  to a new repo.  I expect a chunk of patches to be merged in soon, I
  was discussing this with the maintainer last week.
 
  Mike
 
  On Jun 16, 2010, at 9:27 PM, Daniel Jabbour wrote:
 
   Hi,
  
   I am just getting started with a SIP application that I'm writing
   for a personal project. I am getting ready to use Sofia-SIP as my
   app's library. However, I noticed:
  
   * Sofia-Sip's CVS on SF is 18+ months old, and the latest release in CVS 
   was 1.12.9
   * Links on the download page for snapshots, release notes archive, etc 
   are broken
   * The latest packaged source release is 1.12.10
  
   So, if the latest release is greater than the version tagged in
   CVS, where is development taking place? Has the repository moved?
   Is Nokia working entirely in-house? Or is Sofia-SIP dead?
  
   Any thoughts would be greatly appreciated.
 
  The last darcs commit:
  Tue Sep 29 14:24:17 CEST 2009  Pekka Pessi first.l...@nokia.com
 
   Bug report and original patch by Timo Bruhn.
 
  and there hasn't been much activity from the maintainers in the last
  months and the project somehow didn't managed to get a significant
  community of developers/contributors.
 
  That said, there are many projects depending on sofia-sip, so I hope
  that there will be enough interest to keep the project alive and
  possibly make it better, switching to a less obscure SCCS may help.
 
 Well, yes, we are currently trying to switch over to git. The git
 repository is available at
 
 http://gitorious.org/sofia-sip
 
 The master branch currently contains the more or less the same commits
 as the darcs repository at sofia-sip.org. It would be useful to
 mention also that on the sf.net.
 
 The next features (and bug fixes) mostly involve DNS resolving and
 transport handling. There seems to be some nasty bugs in transport
 handling that might be hard to fix unless some backwards-incompatible
 changes are made. At the same time it would me nice to get
 multiprocessing support and perhaps complete the hooks for a SigComp
 library.

Hi Pekka,

I tried:
http://gitorious.org/sofia-sip

but I see it contains exactly the same commits as the darcs repo, same
for the mjerris branch.

I'm trying in these days to compile sofia-sip in MinGW, which
currently fails during configuration with the message:
configure: error: printf cannot handle 64-bit integers

It seems that Mike already fixed that:
http://jira.freeswitch.org/browse/SFSIP-131

so I'd like to see how he fixed the problem (and possibly get it
integrated into the main sofia-sip repo) rather than re-invent the
same solution from scratch.

Regards.

--
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] nua: initializing SIP stack failed

2010-06-30 Thread Stefano Sabatini
Hi all, I'm running this simple code in Windows Vista:

--8--
root = su_root_create(NULL);
su_root_release(root);

if (!root) {
fprintf(stderr, Impossible to create a root thread, aborting.);
exit(1);
}

nua = nua_create(root,
 event_callback,   /* Callback for processing 
events */
 NULL, /* Additional data to pass 
to callback */
 NUTAG_URL(sip:stef...@*:*), /* try to bind to all the 
host interfaces */
 TAG_END());
--8--

And I'm getting this trace:

su_socket_port_init(00F23320, 101E62F8) called
su_pthread_port_init(00F23320, 101E62F8) called
su_socket_port_init(00F25428, 101E62F8) called
su_pthread_port_init(00F25428, 101E62F8) called
soa_create(default, 00F25D70, 00F25E80) called
soa_set_params(static::00F26400, ...) called
soa_set_params(static::00F26400, ...) called
nta_agent_create: initialized hash tables
nta_agent_create: initialized transports
nta_agent_create: initialized random identifiers
nta_agent_create: initialized timer
Adding nameserver: 10.xx.x.254
nta_agent_create: initialized resolver
tport_create(): 00F27958
nta: master transport created
tport(00F27958) to */*:*/sip
tport(00F27958): calling tport_listen for udp
tport(00F27958): new primary tport 00F28128
tport(00F27958): bind(pf=2 udp/[192.168.0.1]): No such file or directory
nta: bind(*:*;transport=*): No such file or directory
nua: initializing SIP stack failed
sres_sofia_update(00F27648, -1, -1)
sres_sofia_update(, -1, -1)
tport(00F27958)
su_wsevent_port_deinit(00F25428) called

Can you suggest what the problem may be?

The same code runs fine on Linux and on other Windows Machine (namely
Windows XP, but it may be unrelated to the OS used).

Regards.

--
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Is sofia-sip dead?

2010-06-18 Thread Stefano Sabatini
On date Thursday 2010-06-17 01:26:51 -0400, Michael Jerris phoned this:
 sofia-sip is not dead.  The repository is in the process of moving
 to a new repo.  I expect a chunk of patches to be merged in soon, I
 was discussing this with the maintainer last week.
 
 Mike
 
 On Jun 16, 2010, at 9:27 PM, Daniel Jabbour wrote:
 
  Hi,
  
  I am just getting started with a SIP application that I'm writing
  for a personal project. I am getting ready to use Sofia-SIP as my
  app's library. However, I noticed:
  
  * Sofia-Sip's CVS on SF is 18+ months old, and the latest release in CVS 
  was 1.12.9
  * Links on the download page for snapshots, release notes archive, etc are 
  broken
  * The latest packaged source release is 1.12.10
  
  So, if the latest release is greater than the version tagged in
  CVS, where is development taking place? Has the repository moved?
  Is Nokia working entirely in-house? Or is Sofia-SIP dead?
  
  Any thoughts would be greatly appreciated.

The last darcs commit:
Tue Sep 29 14:24:17 CEST 2009  Pekka Pessi first.l...@nokia.com
  
  Bug report and original patch by Timo Bruhn.

and there hasn't been much activity from the maintainers in the last
months and the project somehow didn't managed to get a significant
community of developers/contributors.

That said, there are many projects depending on sofia-sip, so I hope
that there will be enough interest to keep the project alive and
possibly make it better, switching to a less obscure SCCS may help.

Regards.

--
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] su_types.h+config.h+windows compilation issues

2010-06-18 Thread Stefano Sabatini
Hi all,

I'm trying to use sofia-sip, compiling a project in Windows using
MinGW (which would allow an Eclipse-based development environment).

I'm using MS VS2005 for compiling libsofia-sip, as compilation with
MinGW fails (see thread:
Problem compiling sofia-sip 1.12.10 for MinGW
http://thread.gmane.org/gmane.comp.telephony.sofia-sip.devel/3853
).

I fail to see if the config.h, when compiling with VS, has to be set
by hand or if it is generated automatically as per the linux
configuration.

Furthermore, I'm failing to compile against sofia-sip headers, as
MinGW already defines its inttypes and su_types.h is re-defining them.

Even compiling with VS I believe those re-definitions should be
avoided and I remember having had problems with them in the past.

I suggest to require the user to install this instead:
http://code.google.com/p/msinttypes/downloads/list

The re-definition trick looks to me basically flawed, for example if a
program uses more than one lib, and each one re-defines the int types,
there will always be multiple definition problems whenever the headers
of both the libs are included.

Regards.

--
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] Problem compiling sofia-sip 1.12.10 for MinGW

2010-06-10 Thread Stefano Sabatini
Hi,

see the related thread:
[1] http://thread.gmane.org/gmane.comp.telephony.sofia-sip.devel/3344

I have still the problem with the 64-bit integers, it tells it cannot
handle them, I simply disabled the check in the auto-generated
configure file.

Then I get the error:

su_addrinfo.c:825: error: redefinition of 'gai_strerrorA'
c:\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/ws2tcpip.h:308: note:
previous definition of 'gai_strerrorA' was here
make[4]: *** [su_addrinfo.lo] Error 1
make[4]: Leaving directory `/home/ssabatini/src/reilabs/flash2sip/contrib/sofia-
sip_1_12_10/libsofia-sip-ua/su'
make[3]: *** [all] Error 2

I applied the same workaround suggested in [1], I set
HAVE_GAI_STRERROR to 1 in config.h, but now I get this error:

 gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../../libsofia-sip-ua/su/sofia-sip -Wall
-g -O2 -I../../win32/pthread -DWINVER=0x0501 -D_WIN32_WINNT=0x0501 -DIN_LIBSOFIA
_SIP_UA -DIN_LIBSOFIA_SRES -mms-bitfields -pipe -mno-cygwin -mwindows -mconsole
-Wall -g -O0 -MT su_taglist.lo -MD -MP -MF .deps/su_taglist.Tpo -c su_taglist.c
 -DDLL_EXPORT -DPIC -o .libs/su_taglist.o
su_taglist.c: In function 't_snprintf':
su_taglist.c:153: warning: unknown conversion type character 'l' in format
su_taglist.c:153: warning: too many arguments for format
su_taglist.c: In function 't_size_snprintf':
su_taglist.c:1273: warning: format '%lu' expects type 'long unsigned int', but a
rgument 4 has type 'unsigned int'
su_taglist.c: In function 't_socket_snprintf':
su_taglist.c:1484: error: 'LLI' undeclared (first use in this function)
su_taglist.c:1484: error: (Each undeclared identifier is reported only once
su_taglist.c:1484: error: for each function it appears in.)
make[4]: *** [su_taglist.lo] Error 1

I'd like to know if these problems have been worked out in the current
darcs version, and in general I'd like to know which is the state of
activity / maintainance of the project.

Regards.

--
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Safe free of nua_magic_t in a multithreaded application

2010-06-10 Thread Stefano Sabatini
On date Tuesday 2010-04-27 12:38:53 +0200, Stefano Sabatini phoned this:
 On date Tuesday 2010-04-27 10:21:27 +0100, Dan O'Donovan phoned this:
  Hi Stefano
  
  Would it be possible for you to implement a reference counter in the object
  that your nua handle magic is pointing to?
  You would need to be sure to increment/decrement it in a thread-safe way of
  course.
  Then, only free the nua handle magic when your reference counter has reached
  0.
  
  This would be similar to what Sofia does for the memory associated with the
  nua handles themselves.
 
 That was another attempt, I was using nua_magic_t to store an index
 containing a reference to an object from a thread-safe collection, and
 it seemed to work fine but for the fact that I was doing the unsafe
 cast void * - unsigned int.
 
 In other words I was putting an unique integer identifier in the magic
 of the nua_handle:
 nua_handle_t *handle = nua_handle(nua, (void *)an_unsigned_int, ta_tags(ta));
 
 and extracting that index from the nua_magic when dealing with the nua
 handle in the sofia nua event callback.
 
 Note that the unsafe conversion problem maybe would be addressable
 by allowing to define NUA_HANDLE_MAGIC_T like the type of the
 object effectively stored in the nua handle magic, e.g.:
 #define NUA_HANDLE_MAGIC_T (struct hairy_weird_stuff *)
 or:
 #define NUA_HANDLE_MAGIC_T (unsigned int)
 
 rather than the type of the object *pointed to* by the magic:
 #define NUA_HANDLE_MAGIC_T struct hairy_weird_stuff

Follow up: I fixed the problem in the application I wrote by making
the sofia-sip thread destroy the handle, rather than delegating
another thread to do it.

Regards.

--
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] Safe free of nua_magic_t in a multithreaded application

2010-04-27 Thread Stefano Sabatini
Hi all,

I'm facing this problem in a multithreaded application, with a thread
running the sofia sip event callback (thread A), and another thread
(thread B) managing the deallocation of the nua handles.

The problem is that when a nua handle is destroyed by thread B, thread
A may still be processing a message associated to the nua handle and
the corresponding nua handle magic which is being destroyed by thread
B.

Currently I'm simply skipping the destruction of the nua handle magic,
which results in a leak. If I destroy the nua handle magic in thread B
this may result in an occasional crash when thread A tries to access
the nua handle magic which is being destroyed.

A possible solution would be to delay the destruction of the nua
handle magic after the corresponding nua handle has been destroyed,
this way I would be pretty sure that the thread A is not anymore
processing messages associated to the destroyed nua handle, but as you
may guess this may not work in case of slowdowns.

So the problem seems that when I'm processing nua handle+magic in
thread A I'm not sure if nua handle+magic still exist.

I wonder if it would be possible to make nua send a final message to
the nua thread *after* nua_handle has been destroyed with
nua_handle_destroy() or a corresponding command. If this would be
possible, then I could safely destroy the handle in thread B, and let
thread A destroy the nua handle magic in thread A when this final
message is received.

Can you say if this would be feasible, or suggest a valid solution to
the problem?

TAI, regards.

--
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Safe free of nua_magic_t in a multithreaded application

2010-04-27 Thread Stefano Sabatini
On date Tuesday 2010-04-27 10:21:27 +0100, Dan O'Donovan phoned this:
 Hi Stefano
 
 Would it be possible for you to implement a reference counter in the object
 that your nua handle magic is pointing to?
 You would need to be sure to increment/decrement it in a thread-safe way of
 course.
 Then, only free the nua handle magic when your reference counter has reached
 0.
 
 This would be similar to what Sofia does for the memory associated with the
 nua handles themselves.

That was another attempt, I was using nua_magic_t to store an index
containing a reference to an object from a thread-safe collection, and
it seemed to work fine but for the fact that I was doing the unsafe
cast void * - unsigned int.

In other words I was putting an unique integer identifier in the magic
of the nua_handle:
nua_handle_t *handle = nua_handle(nua, (void *)an_unsigned_int, ta_tags(ta));

and extracting that index from the nua_magic when dealing with the nua
handle in the sofia nua event callback.

Note that the unsafe conversion problem maybe would be addressable
by allowing to define NUA_HANDLE_MAGIC_T like the type of the
object effectively stored in the nua handle magic, e.g.:
#define NUA_HANDLE_MAGIC_T (struct hairy_weird_stuff *)
or:
#define NUA_HANDLE_MAGIC_T (unsigned int)

rather than the type of the object *pointed to* by the magic:
#define NUA_HANDLE_MAGIC_T struct hairy_weird_stuff

Thanks for the help, regards.

--
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] How to implement a non standard header parsing

2009-05-25 Thread Stefano Sabatini
On date Friday 2009-05-22 17:02:13 +0200, Stefano Sabatini phoned this:
 Hi all,
 
 I'd like to add to an application the management of a non standard
 header, say for example X-Fruit-Of-The-Week.
 
 In sofia-sip/libsofia-sip-ua/sip/ADD-A-HEADER there is a terse
 description of the procedure to follow. Problem is that it implies the
 creation of a separate library, and the execution of the
 msg_parser.awk script on it, which looks a little... overkill.
 
 Are you aware of a simpler solution? Running the awk script on a
 source .c.in file may be fine, but possibly I would like to avoid the
 need to create an autoconf/mess project just for adding an
 X-Fruit-Of-The-Week header management to sofia.
 
 Have anyone never tried it and/or have a working example?

No need to extend the parser for just that.

I discovered the SIPTAG_HEADER_STR() which is just perfect for this
task:

nua_invite(h,
   SIPTAG_HEADER_STR(X-Fruit-Of-The-Week: apple),
   NUTAG_MEDIA_ENABLE(1),
   TAG_END());

Regards.

--
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers  brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing,  
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA,  Big Spaceship. http://www.creativitycat.com 
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Audio streaming!!!

2009-05-22 Thread Stefano Sabatini
On date Tuesday 2009-05-12 18:52:57 +, gilles Djomo Sawa phoned this:
 Hello,
 i want to extend my Sip-phone with a audio commmunication.
 Can someone help me?

Have look at the sofsip-cli package, it's a simple implementation
using libgstreamer for the audio media (libsofia-sip only deals with
*signalation*, you need a media library for dealing with the media,
check for example libgstreamer or FFmpeg).

Regards.

--
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers  brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing,  
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA,  Big Spaceship. http://www.creativitycat.com 
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] How to implement a non standard header parsing

2009-05-22 Thread Stefano Sabatini
Hi all,

I'd like to add to an application the management of a non standard
header, say for example X-Fruit-Of-The-Week.

In sofia-sip/libsofia-sip-ua/sip/ADD-A-HEADER there is a terse
description of the procedure to follow. Problem is that it implies the
creation of a separate library, and the execution of the
msg_parser.awk script on it, which looks a little... overkill.

Are you aware of a simpler solution? Running the awk script on a
source .c.in file may be fine, but possibly I would like to avoid the
need to create an autoconf/mess project just for adding an
X-Fruit-Of-The-Week header management to sofia.

Have anyone never tried it and/or have a working example?

Many thanks in advance.

--
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers  brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing,  
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA,  Big Spaceship. http://www.creativitycat.com 
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] How to get the state of a nua_handle

2009-03-05 Thread Stefano Sabatini
Hi Pekka, and thanks for replying.

On date Tuesday 2009-03-03 20:35:50 +0200, Pekka Pessi phoned this:
 2009/3/3 Stefano Sabatini ssabat...@reilabs.com:
  I was investigating about how to get the state of a nua_handle,
  couldn't find nothing about it.
 
 The current state is not very well defined, nor it is kept in handle.

I'm having this problem in a disconnection scenario, I need to know
the state of the SIP dialog when the user provides a disconnection
request, this may be done both when the ACK is already arrived or when
the ACK hasn't still been sent.

For this reason I need to know in which state the handle is, and send
a BYE or a CANCEL consistently with the current state.

sofsip_cli bookeeps this information in the ssc_oper_s struct
(ssc_oper.h), I also tried the i_state event management approach but
it is not correct, since the i_state event (setting the state in the
operation context/magic) is processed by the sofia event handler
*after* the actual event which causes the state transition.

So I wonder if it would make sense to set this information in the
handle itself, when the various nua_invite/nua_ack/... operations are
performed, rather than re-implement that logic in every app.

Or maybe I'm just confused.

  I also wonder if it is possible for example to extract other
  informations related to it, for example the Call-ID of a dialog.
 
 nua_handle_make_replaces() returns a Replaces header, you can get
 Call-ID from it.
 
 I'll gladly accept patch for something like
 
 char *nua_handle_make_call_id(nua_handle_t *nh)

Do you mean a function to *set* the call_id for example in a just
created handle?

But do you think would be also possible to define a function to *get*
the call_id of an already created handle? nua_handle_make_replaces
looks overkill for just that.

[...]

Kind regards.

--
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Help!!!

2009-03-05 Thread Stefano Sabatini
On date Thursday 2009-03-05 12:34:57 +, gilles Djomo Sawa phoned this:
 Hello,

 i've tried to write a small code for a server registration and an
 authentication. I have 2 files(*.h and *.cpp) and in these files i
 have initialized my callback function. My questions are: Can be the
 callback in an another file that the main function?

You can using the extern keyword for that. Example:

main.c:
// declaration
extern void callback(...);

callback.c:
// definition
void callback(...) { ... };

 After that i implemented header and source files, how can i use nua
 or nta to test my programm?  i get also some conversion problem with
 the callback function. (conversion in callback_f is not possible)!
 best regards

Have a look at the sofsip_cli implementation, that's a relatively
simple application meant to show how to use libsofia-sip.

Regards.

--
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] How to get the state of a nua_handle

2009-03-03 Thread Stefano Sabatini
Hi all,

I was investigating about how to get the state of a nua_handle,
couldn't find nothing about it.

I also wonder if it is possible for example to extract other
informations related to it, for example the Call-ID of a dialog.

Then looking in the code (nua/nua_stack.h) I found the macro:

#define NH_STATUS(nh) \
  (nh)-nh_status, \
  (nh)-nh_phrase, \
  SIPTAG_WARNING_STR(nh-nh_warning)

The nh_status is not defined in nua_handle_s, and the macro NH_STATUS
looks like it is never used in the code, so maybe this is just a
fossil.

Regards.

--
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] Move documentation from *.c to *.h

2009-03-02 Thread Stefano Sabatini
Is it OK what in subject?

I think the rationale is quite obvious, docs should be documented in
the interface rather than in the implementation, also this avoids
duplication.

If that's OK I'll post here some patches for doing that, one header at
a time.

Regards.
-- 
Stefano Sabatini
http://www.reilabs.com

--
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] How to debug sofia-sip

2009-01-16 Thread Stefano Sabatini
On date Thursday 2009-01-15 19:35:44 +0200, Pekka Pessi phoned this:
 2009/1/14 Stefano Sabatini ssabat...@reilabs.com:
  I'm trying to debug sofia-sip.
 
  I'm configuring with this command:
 
  CFLAGS=$CFLAGS -ggdb -O0 ./configure --prefix=$HOME
 
  and I can see the symbols in the output libs and the same for the
  lines of code (using nm -sol), yet it seems I cannot enter the
  sofia functions with gdb.
 
  What am I missing? Do I need some special trick when configuring in
  order to be able to debug sofia?
 
 Nope, I do that all the time. ;-) Are you sure that you are loading
 with the library you have compiled with debug options, or does your
 application pull in a system library, for instance?

Doh, I'm stupid, I forgot to reset my LD_LIBRARY_PATH to some
meaningful value, now gdb and sofia are working as good pals and I
can debug sofia.

Much thanks!

Regards

--
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] How to catch a REGISTER timeout condition?

2009-01-14 Thread Stefano Sabatini
On date Monday 2009-01-12 16:19:06 +0200, Pekka Pessi phoned this:
 2009/1/12 Stefano Sabatini ssabat...@reilabs.com:
  the attached sample catches the timeout event, which is sent
  non-unexpectedly as a nua_r_register event with status 408 (the
  application crashes with an assert when it is called nua_shutdown(), I
  don't know exactly when it should be called).
 
 If you really want, you can make difference between network-sent 408
 and internally-generated 408 with nta_sip_is_internal().
  
  Grepping the log I got this sequence of values for the retransmissions
  timer:
  nta: timer set next to 1000 ms
  nta: timer set next to 2000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 489 ms
  nta: timer set next to 500 ms
  nta: timer set next to 1000 ms
  nta: timer set next to 2000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 488 ms
  nta: timer set next to 500 ms
  nta: timer set next to 1000 ms
  nta: timer set next to 2000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
  nta: timer set next to 4000 ms
 
 
  using sofia sip 1.12.9, while I expect the sequence:
  500
  1000
  2000
  4000
  8000
  16000
  32000
 
  Am I missing something or there is some bug in the stack?
 
 The timer E and maximum retransmission time should cap at SIP T2,
 which is 4 seconds. RFC 4321 contains everything that you really did
 not want to know about SIP retransmissions and why they are like they
 are.
 
 Also, it looks like the stack retries multiple times, which is
 probably because there is multiple DNS records available for your
 server (and it can not reach any of them).

Thanks again Pekka,

yes I was sending the REGISTER request to google to test it.

Just another question, is there some mechanism in sofia to
automatically store the expires time sent back by the REGISTER
response, and re-do the registration when it is almost expiring, or do
I have to do it in the application?

Regards.

--
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] How to debug sofia-sip

2009-01-14 Thread Stefano Sabatini
Hi again,

I'm trying to debug sofia-sip.

I'm configuring with this command:

CFLAGS=$CFLAGS -ggdb -O0 ./configure --prefix=$HOME

and I can see the symbols in the output libs and the same for the
lines of code (using nm -sol), yet it seems I cannot enter the
sofia functions with gdb.

What am I missing? Do I need some special trick when configuring in
order to be able to debug sofia?

Thanks in advance, regards.

--
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] How to catch a REGISTER timeout condition?

2009-01-14 Thread Stefano Sabatini
On date Wednesday 2009-01-14 14:16:28 +0200, Pekka Pessi phoned this:
 2009/1/14 Stefano Sabatini ssabat...@reilabs.com:
  Just another question, is there some mechanism in sofia to
  automatically store the expires time sent back by the REGISTER
  response, and re-do the registration when it is almost expiring, or do
  I have to do it in the application?
 
 That is job for nua...

Do you mean that this is *already* implemented or that it *should* be
implemented in nua?

Regards.

--
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] How to catch a REGISTER timeout condition?

2009-01-12 Thread Stefano Sabatini
On date Thursday 2009-01-08 17:37:21 +0200, Pekka Pessi phoned this:
 2009/1/8 Stefano Sabatini ssabat...@reilabs.com:
  I mean that when the REGISTER recipient doesn't reply, sofia-sip sends
  again and again the REGISTER. I would like to catch this condition say
  after N tries and when a certain timeout expires, and notify the
  sofia-sip stack of this.
 
  Currently I see no way to say to the stack to stop to send the
  REGISTER requests.
 
 The retransmissions are done as specified in RFC 3261. NTATAG_SIP_T1()
 defines the initial retransmission timer (500 ms), NTATAG_SIP_T1X64()
 defines the timeout (as the name implies it is 64 times T1 or 32
 seconds).

Hi Pekka and friends,

the attached sample catches the timeout event, which is sent
non-unexpectedly as a nua_r_register event with status 408 (the
application crashes with an assert when it is called nua_shutdown(), I
don't know exactly when it should be called).

As Inca Rose noted, the timeout defined by NTATAG_SIP_T1 and
NTATAG_SIP_T1X64 is defined *per user* rather than *per transaction*,
so in this case will be used that defined in the nua object.

Also as the RFC states it is duty of the agent to *retransmit* the 
REGISTER request when it expires (the expiration time may be specified
in the request, otherwise it is set per registrar policy).

Maybe I'm missin something in the RFC, but the timeout specifics is
defined in the section 17.1.1., page 125, where it states:

   If an unreliable transport is being
   used, the client transaction MUST start timer A with a value of T1.
   If a reliable transport is being used, the client transaction SHOULD
   NOT start timer A (Timer A controls request retransmissions).  For
   any transport, the client transaction MUST start timer B with a value
   of 64*T1 seconds (Timer B controls transaction timeouts).

   When timer A fires, the client transaction MUST retransmit the
   request by passing it to the transport layer, and MUST reset the
   timer with a value of 2*T1.
   [...]
   If the client transaction is still in the Calling state when timer
   B fires, the client transaction SHOULD inform the TU that a timeout
   has occurred.  The client transaction MUST NOT generate an ACK.  The
   value of 64*T1 is equal to the amount of time required to send seven
   requests in the case of an unreliable transport.

Grepping the log I got this sequence of values for the retransmissions
timer:
nta: timer set next to 1000 ms
nta: timer set next to 2000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 489 ms
nta: timer set next to 500 ms
nta: timer set next to 1000 ms
nta: timer set next to 2000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 488 ms
nta: timer set next to 500 ms
nta: timer set next to 1000 ms
nta: timer set next to 2000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 495 ms
nta: timer set next to 500 ms
nta: timer set next to 1000 ms
nta: timer set next to 2000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 4000 ms
nta: timer set next to 496 ms
nta: timer set next to 5000 ms

using sofia sip 1.12.9, while I expect the sequence:
500
1000
2000
4000
8000
16000
32000

Am I missing something or there is some bug in the stack?

Again many thanks in advance, regards.
#include stdlib.h
#include stdio.h
#include sofia-sip/nua.h
#include sofia-sip/su_log.h
#include sofia-sip/soa.h
#include sofia-sip/nua_tag.h
#include sofia-sip/sip_header.h

/**
 * Processes incoming events. This callback will be called by the SIP
 * stack.
 */
void event_callback(nua_event_t   event,
int   status,
char const   *phrase,
nua_t*nua,
nua_magic_t  *magic,
nua_handle_t *nh,
nua_hmagic_t *hmagic,
sip_t const  *sip,
tagi_ttags[])
{
static unsigned int count = 1;
msg_t* msg = NULL;

/* msg = nua_current_request(nua); */
printf(Event: number(%d) name(%s) status(%d) phrase(%s)\n,
   count++, nua_event_name(event), status, phrase);

switch (event) {
case nua_r_register:
if (status == 408) {
printf(Timeout detected\n);
su_root_break((su_root_t *)magic

Re: [Sofia-sip-devel] How to catch a REGISTER timeout condition?

2009-01-08 Thread Stefano Sabatini
On date Wednesday 2009-01-07 19:49:38 +0200, Pekka Pessi phoned this:
 2009/1/7 Stefano Sabatini ssabat...@reilabs.com:
  I wonder if it is actually possible to catch somehow a REGISTER
  timeout condition. Currently the behaviour of the sofia-sip stack
  seems to try the REGISTER again and again when it fails.
 
  Is it possible to set a timeout (either setting it in the nua handle
  either in some operation handle) or do I need to set a timeout in the
  application?
 
 There are plenty. What kind of error condition you have, like, you get
 no response, or does the response trigger a new request to be sent?

Sorry, I didn't explain myself.

I mean that when the REGISTER recipient doesn't reply, sofia-sip sends
again and again the REGISTER. I would like to catch this condition say
after N tries and when a certain timeout expires, and notify the
sofia-sip stack of this.

Currently I see no way to say to the stack to stop to send the
REGISTER requests.

Thanks, regards.

--
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] How to catch a REGISTER timeout condition?

2009-01-07 Thread Stefano Sabatini
Hi all,

I wonder if it is actually possible to catch somehow a REGISTER
timeout condition. Currently the behaviour of the sofia-sip stack
seems to try the REGISTER again and again when it fails.

Is it possible to set a timeout (either setting it in the nua handle
either in some operation handle) or do I need to set a timeout in the
application?

Also if this feature is not implemented, as I think, would be such
feature acceptable in sofia?

Thanks in advance, regards.

--
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Sofsip-cli and GUI question

2008-12-11 Thread Stefano Sabatini
On date Thursday 2008-12-11 11:22:16 +0800, mingcheng hu phoned this:
 Hi, all
   I want to write a soft phone  .The idea is to modify
 sofsip_cli(reusing the functionality in C),writing a GUI bindings for these
 C functions.
   The problem is how do I send a event from GUI to sofia event callback?

In your application you may need two threads, the application thread
which manages user/GUI events, and eventually executes sofia-sip/NUA
operations, and the sofia-sip/NUA thread which manages SIP events and
eventually executes application specific operations (e.g., ring a
tone, refresh a view).

Every thread manages its own events, so you don't need to send events
to the other thread, you just need to perform some action
(e.g. nua_invite, nua_message) and this will create some corresponding
event which will be managed by the other thread (e.g. a state change,
an incoming nua_r_invite 180/200 event).

HTH, regards.
-- 
Stefano Sabatini
http://www.reilabs.com

--
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] Redirecting the log of tport module

2008-12-10 Thread Stefano Sabatini
Hi all,

I've been able to redirect the log of sofia-sip su module using the
public symbol su_log_global and su_redirect_log().

I would like to do the same with the tport module, this in order to
have the SIP messages on a unique log file, thus simplifying
debugging.

Unfortunately the tport module hasn't a public tport_log symbol, but a
private one defined in tport/tport_logging.c so I can't redirect its log to
my logging system, and I have to use instead the env variables TPORT_LOG 
(which enables it), TPORT_DEBUG (level of debugging), TPORT_DUMP (the name of
the file).

I wonder if there is some way to redirect the tport log, if that's not
possible I'd like to know from the devs which way they suggest to
accomplish that modifying the source, maybe simply making tport_log
public should do the trick.

Regards and thanks again for the cool bits.

--
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [BUG] SIP uri params specified in the TO_TAG_STR wrongly detected as the To header params

2008-11-21 Thread Stefano Sabatini
Hi all,

according to RFC 3261, 8.1.1.1 Request-URI:

| The initial request URI of the message SHOULD be set to the value of
| the URI in the To field.

On the other hand sofia sip seems to get confused when parsing the
TO_TAG, and it consider the uri params like header params.

Making this clear with an example:

nua_invite(op-handle,
   SIPTAG_FROM_STR(Alice sip:[EMAIL PROTECTED]),
   SIPTAG_TO_STR(sip:[EMAIL PROTECTED];foo=bar),
   NUTAG_MEDIA_ENABLE(0),
   TAG_END());

will issue the following INVITE message:

   INVITE sip:[EMAIL PROTECTED] SIP/2.0
   Via: SIP/2.0/UDP 10.88.3.67;rport;branch=z9hG4bKmKgXBK495Byyp
   Max-Forwards: 70
   From: Alice sip:[EMAIL PROTECTED];tag=m4KHeHvHZeU8Q
   To: sip:[EMAIL PROTECTED];foo=bar
   Call-ID: 8f686cee-3254-122c-6ebf-001a4b5c8ed5
   CSeq: 107512154 INVITE
   Contact: sip:10.88.3.67
   User-Agent: sofia-sip/1.12.9
   Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, PRACK, MESSAGE, SUBSCRIBE, NOTIFY, 
REFER, UPDATE
   Supported: timer, 100rel
   Min-SE: 120
   Content-Length: 0

foo=bar is consiedered as an *header* param, while it was specified as
an *uri* param.

In order to get the correct behaviour (uri params in the request line)
I have to specify the sip uri in the To tag like this:

SIPTAG_TO_STR(sip:[EMAIL PROTECTED];foo=bar), in which case I got:

   INVITE sip:[EMAIL PROTECTED];foo=bar SIP/2.0
   Via: SIP/2.0/UDP 10.88.3.67;rport;branch=z9hG4bK4S4Be5m0UB9HS
   Max-Forwards: 70
   From: Alice sip:[EMAIL PROTECTED];tag=4tjrS2F4397pp
   To: sip:[EMAIL PROTECTED];foo=bar
   Call-ID: f27c4f9b-3254-122c-0e84-001a4b5c8ed5
   CSeq: 107512237 INVITE
   Contact: sip:10.88.3.67
   User-Agent: sofia-sip/1.12.9
   Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, PRACK, MESSAGE, SUBSCRIBE, NOTIFY, 
REFER, UPDATE
   Supported: timer, 100rel
   Min-SE: 120
   Content-Length: 0

I think this is a bug in sofia-sip.

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [BUG] SIP uri params specified in the TO_TAG_STR wrongly detected as the To header params

2008-11-21 Thread Stefano Sabatini
On date Friday 2008-11-21 13:55:39 +0200, [EMAIL PROTECTED] phoned this:
 Hi, 
 
 -Original Message-
 From: ext Stefano Sabatini [mailto:[EMAIL PROTECTED] 
 Sent: Friday, November 21, 2008 12:00 PM
 To: sofia-sip-devel Mailing List
 Subject: [Sofia-sip-devel] [BUG] SIP uri params specified in 
 the TO_TAG_STRwrongly detected as the To header params
 
 On the other hand sofia sip seems to get confused when parsing the
 TO_TAG, and it consider the uri params like header params.
 
 Making this clear with an example:
 
 nua_invite(op-handle,
SIPTAG_FROM_STR(Alice sip:[EMAIL PROTECTED]),
SIPTAG_TO_STR(sip:[EMAIL PROTECTED];foo=bar),
NUTAG_MEDIA_ENABLE(0),
TAG_END());
 
 will issue the following INVITE message:
 
INVITE sip:[EMAIL PROTECTED] SIP/2.0
Via: SIP/2.0/UDP 10.88.3.67;rport;branch=z9hG4bKmKgXBK495Byyp
Max-Forwards: 70
From: Alice sip:[EMAIL PROTECTED];tag=m4KHeHvHZeU8Q
To: sip:[EMAIL PROTECTED];foo=bar
Call-ID: 8f686cee-3254-122c-6ebf-001a4b5c8ed5
CSeq: 107512154 INVITE
Contact: sip:10.88.3.67
User-Agent: sofia-sip/1.12.9
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, PRACK, MESSAGE, 
 SUBSCRIBE, NOTIFY, REFER, UPDATE
Supported: timer, 100rel
Min-SE: 120
Content-Length: 0
 
 foo=bar is consiedered as an *header* param, while it was specified as
 an *uri* param.
 
 In order to get the correct behaviour (uri params in the request line)
 I have to specify the sip uri in the To tag like this:
 
 SIPTAG_TO_STR(sip:[EMAIL PROTECTED];foo=bar), in which case I got:
 
INVITE sip:[EMAIL PROTECTED];foo=bar SIP/2.0
Via: SIP/2.0/UDP 10.88.3.67;rport;branch=z9hG4bK4S4Be5m0UB9HS
Max-Forwards: 70
From: Alice sip:[EMAIL PROTECTED];tag=4tjrS2F4397pp
To: sip:[EMAIL PROTECTED];foo=bar
Call-ID: f27c4f9b-3254-122c-0e84-001a4b5c8ed5
CSeq: 107512237 INVITE
Contact: sip:10.88.3.67
User-Agent: sofia-sip/1.12.9
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, PRACK, MESSAGE, 
 SUBSCRIBE, NOTIFY, REFER, UPDATE
Supported: timer, 100rel
Min-SE: 120
Content-Length: 0
 
 I think this is a bug in sofia-sip.
 
 I disagree. SIPTAG_TO_STR accepts the value for the entire To: header, not 
 just the URI.
 If you want more discretion, form a sip_to_t structure and pass it to 
 SIPTAG_TO. 

Yes, that was the reason, as also explained by Pekka, it makes
perfect sense now.

Many thanks, regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [NEWBIE] How to print a SIP message

2008-11-20 Thread Stefano Sabatini
On date Tuesday 2008-08-05 11:40:44 +0200, Stefano Sabatini phoned this:
 On Mon, Aug 4, 2008 at 8:07 PM, Pekka Pessi [EMAIL PROTECTED] wrote:
  2008/7/30 Stefano Sabatini [EMAIL PROTECTED]:
  On 7/30/08, Stefano Sabatini [EMAIL PROTECTED] wrote:
  On Wed, Jul 30, 2008 at 10:31 AM, Stefano Sabatini
  [EMAIL PROTECTED] wrote:
  Hi all,
  can you say if there is a simple way to convert a sip_t object to a char*
  and viceversa?
 
  For example I would like to print all the incoming SIP messages from
  the the event callback function.
  [...]
 
  From a textual representation to a msg_t and to a sip_t:
  msg_data = ...;
  msg_t* msg = msg_make (sip_default_mclass(), 0, msg_data, sizeof 
  (msg_data));
  if (!msg) {
 fprintf(stderr, Impossible to parse message\n);
 exit(1);
  }
  sip_t* sip = sip_object(msg);
 
  Still I don't know if there exists a function which returns a textual
  representation of a message,
  there is a sip_header_as_string(home, sip) function but not one which
  prints the whole message.
 
  Try msg_as_string()..
 
 Yes, I don't know how I missed it (mmh maybe because I was looking for
 something like sip_msg_as_string in sip...).

How can I get a msg_t from a sip_t?

I can convert a msg_t - sip_t using sip_object, but how can I perform
the inverse conversion?

All I want to do is to simply print out the sip_t message received by
the event callback, so the solution looks either convert sip_t -
msg_t and use msg_as_string() either to print sip_t using some to text
conversion function, which I can't find.
 
  Also how can I get the headers from a sip_t struct, and how can I
  iterate thrugh them?
 
  sip_t has pointers to each header fields, e.g., sip_via is pointer to
  a list of Via header fields. You can iterate through Via header fields
  with a loop like this:
 
  sip_t *sip = sip_object(sip);
  sip_via_t *via;
 
  for (via = sip-sip_via; via; via = via-v_next) {
   ...
  }

There is a supposed way to convert such header field structure to a
string?
Suppose that I want for example to convert sip-sip_from to a
corresponding string, which is the supposed way to do it (apart to
manually concat the various pieces found in that struct, which doesn't
look like the way to go)?

  If you want to iterate through each header field in the message, you
  should start from msg_chain_head(msg) and then proceed in order, e.g.,
 
  for (next = msg_chain_head(msg); *next; next = (*next)-sh_next) {
   sip_header_t *sh = (*next);
   msg_hclass_t const *hc = sh-sh_class;
   if (sip_is_via(sh) {
 sip_via_t const*via = (sip_via_t *)sh;
 
   }
   ...
  }
 
  The list of all the message components (chain) also includes some
  non-header elements, like request-line, status-line and message body.
  There is also some complications with so called list headers like
  Require, their values are combined with their first occurrence, so
  headers like
 
  Require: 100rel
  Supported: timer
  Require: xyzzy
 
  will have one sip_require_t structure with tokens 100rel and
  xyzzy, one sip_supported_t structure with timer and a dummy
  sip_require_t structure in the chain.
 
 Thanks so much for the detailed answer!

Thanks again, regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [NEWBIE] How to print a SIP message

2008-11-20 Thread Stefano Sabatini
On date Thursday 2008-11-20 10:49:21 +0100, Stefano Sabatini phoned this:
 On date Tuesday 2008-08-05 11:40:44 +0200, Stefano Sabatini phoned this:
  On Mon, Aug 4, 2008 at 8:07 PM, Pekka Pessi [EMAIL PROTECTED] wrote:
[...]
 How can I get a msg_t from a sip_t?
 
 I can convert a msg_t - sip_t using sip_object, but how can I perform
 the inverse conversion?
 
 All I want to do is to simply print out the sip_t message received by
 the event callback, so the solution looks either convert sip_t -
 msg_t and use msg_as_string() either to print sip_t using some to text
 conversion function, which I can't find.
  
   Also how can I get the headers from a sip_t struct, and how can I
   iterate thrugh them?
  
   sip_t has pointers to each header fields, e.g., sip_via is pointer to
   a list of Via header fields. You can iterate through Via header fields
   with a loop like this:
  
   sip_t *sip = sip_object(sip);
   sip_via_t *via;
  
   for (via = sip-sip_via; via; via = via-v_next) {
...
   }
 
 There is a supposed way to convert such header field structure to a
 string?

Auto replying to myself: the sip_header_as_string() is the supposed
way to perform such conversion.

 Suppose that I want for example to convert sip-sip_from to a
 corresponding string, which is the supposed way to do it (apart to
 manually concat the various pieces found in that struct, which doesn't
 look like the way to go)?

char* sip_from_str = sip_header_as_string(home, (const 
sip_header_t*)sip-sip_from);

[...]

Still missing the answer to the first question.

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [NEWBIE] How to print a SIP message

2008-11-20 Thread Stefano Sabatini
On date Thursday 2008-11-20 10:49:21 +0100, Stefano Sabatini phoned this:
[...]
 How can I get a msg_t from a sip_t?
 
 I can convert a msg_t - sip_t using sip_object, but how can I perform
 the inverse conversion?

Again auto-replying to myself...

Contemplating the sip module doc picture I finally got for the first
time a complete understanding of the msg_t struct.

I don't know if there is function for such a conversion, anyway it
shouldn't too hard to define a function to create a msg_t struct and
fill the fields in order to create (maybe even refactorizing some code
from msg_as_string()).

As suggested by Pessa in a previous mail, for example it should be
possible to iterate through the headers contained in sip_t, print a
representation of them (e.g. using sip_header_as_string()) and fill a
buffer which will be equivalent to the original buffer.

 All I want to do is to simply print out the sip_t message received by
 the event callback, so the solution looks either convert sip_t -
 msg_t and use msg_as_string() either to print sip_t using some to text
 conversion function, which I can't find.

Even without to access the sip_t struct there is a solution using the
nua_current_request() function. Sofia-sip somehow stores the current
message processed (the name is misleading, since it also stores
response messages), the following snippet may be executed for example
at the beginning of the event callback:

/* print the incoming message */
int msg_size = 0;
msg_t* msg = nua_current_request(nua);
if (msg) {
char * msg_str = msg_as_string(home, msg, NULL, 0, msg_size);
printf (SIP message:\n
%s\n, msg_str);
}

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Problem compiling a little application with visual studio 2005

2008-09-24 Thread Stefano Sabatini
On date Monday 2008-09-22 14:53:16 +0530, Subbu Rajendran phoned this:
 I also faced a similar issue. I tried to compile the sofia sip code
 to create the library and then link the generated lib to my
 application. I got these errors when trying to compile the sofia sip
 code. I am not able to completely re-collect how I fixed this, but
 give this a try. Hope this helps you.
 
 1. In order to compile the code with Windows 2000 SDK you have to
 install so called IPv6 Technology Preview for Windows 2000. The
 preview contains updated IPv6 API in tpipv6.h and wspiapi.h
 header files.
 http://msdn.microsoft.com/downloads/sdks/platform/tpipv6.asp
 
 I used visual studio .net 2003.
 
 2.  Open the .\sofia-sip\win32\SofiaSIP.dsw to open the complete
 list of projects. This includes sofia sip library project (DLLs 
 static libraries) and few test programs.
 
 3. The following paths to be added to the list of include directories
 .\libsofia-sip-ua\bnf
 .\libsofia-sip-ua\http
 .\libsofia-sip-ua\ipt
 .\libsofia-sip-ua\iptsec
 .\libsofia-sip-ua\msg
 .\libsofia-sip-ua\nea
 .\libsofia-sip-ua\nta
 .\libsofia-sip-ua\nth
 .\libsofia-sip-ua\nua
 .\libsofia-sip-ua\sdp
 .\libsofia-sip-ua\sip
 .\libsofia-sip-ua\soa
 .\libsofia-sip-ua\sresolv
 .\libsofia-sip-ua\stun
 .\libsofia-sip-ua\su
 .\libsofia-sip-ua\tport
 .\libsofia-sip-ua\url
 .\win32\pthread
 
 4. Add libraries ws2_32.lib  Iphlpapi.lib to the dependency list

[...]
 From: Francesco Lamonica [mailto:[EMAIL PROTECTED]
 Sent: Monday, September 22, 2008 2:05 PM
 To: sofia-sip-devel Mailing List
 Subject: Re: [Sofia-sip-devel] Problem compiling a little application with 
 visual studio 2005
 
 Hi Stefano,
 I am no VS2005 expert either but i had a few problems on lib
 dependencies as well, what windows lib are you linking against right
 now? (you can check it in the project properties under the LINKER
 section)
[...]

Hi guys,
the problem was in the compilation of sip_options_static, we had had
to add the dependency on ws232_32.lib and Ipphlpapi.lib and
Advapi32.lib (settable through the linker options), the library were
already installed on the system.

After setting those dependencies, the project finally compiled!!
Hurra!

Thanks so much for your time and help Subbu, Francesco and Mike.

Regards.
-- 
Stefano Sabatini
http://www.reilabs.com

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Using SOFIA-SIP just as a parser

2008-09-24 Thread Stefano Sabatini
On date Wednesday 2008-09-24 15:46:21 +0200, elisa_murgia phoned this:
 -- Initial Header ---
 
 From  : elisa_murgia [EMAIL PROTECTED]
 To  : sofia-sip-devel sofia-sip-devel@lists.sourceforge.net
 Cc  : 
 Date  : Wed, 24 Sep 2008 12:31:47 +0200
 Subject : Re: [Sofia-sip-devel] Using SOFIA-SIP just as a parser
 
 Another thing I noticed:
 
 I've made a test putting an incomplete sip-message inside a string and then 
 
 msg_t* msg=msg_make(...)
 
 int i=msg_extract(msg);
 
 
 Now msg_extract returns always 1, as it was complete. I'd expected a 0.
 More: making 
 
 sip_t sip=sip_object(msg);
 
 with some full fields and others empty.
 
 How is it possible??

From sofia-sip documentation:

|msg_t* msg_make(msg_mclass_t const *mc,
|   intflags,
|   void const *data,
|   ssize_tlen) 
|
|Parse a text message with parser mc. The data is copied and it is not modified 
or referenced by the parsed message.
[...]
|Return values:
|   A   pointer to a freshly allocated and parsed message.
|
|Upon parsing error, the header structure may be left incomplete. The
|MSG_FLG_ERROR is set in msg_object(msg)-msg_flags.

So you have to check that flag to understand if the parsing went fine.

Behaviour of msg_extract() with an incomplete msg_t is undefined, at
least I think so.

[...]

Regards.
-- 
Stefano Sabatini
http://www.reilabs.com

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Initialize sofia in the main context thread and run it in another thread

2008-09-18 Thread Stefano Sabatini
On date Friday 2008-09-12 18:50:45 +0300, Pekka Pessi phoned this:
 2008/9/9 Stefano Sabatini [EMAIL PROTECTED]:
  So it seems that the only solution is to initialize and run the stack
  in the same thread context. Is this correct or am I missing something?
 
 Call su_root_release() on the thread creating the root and stack and
 then su_root_obtain() in the thread running it.

Thank you Pekka, yes it works fine (but I still feel the need for a
tutorial on sofia-sip threading/tasks/clones management...:-().

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] Problem compiling a little application with visual studio 2005

2008-09-18 Thread Stefano Sabatini
Hi all,

I'm getting this building problems when compiling a little application
with Visual Studio 2005 on Windows Vista which links against
libsofia-sip (last checkout, 1.12.9).

I got so far to compile libsofia-ua for win32 without hassles.

These are the errors I get when compiling:

1Linking...
1   Creating library .\Debug/sip_options_static.lib and object 
.\Debug/sip_options_static.exp
1libsofia_sip_ua_static.lib(sres.obj) : error LNK2019: unresolved external 
symbol [EMAIL PROTECTED] referenced in function _sres_parse_win32_ip
1libsofia_sip_ua_static.lib(sres.obj) : error LNK2019: unresolved external 
symbol [EMAIL PROTECTED] referenced in function _sres_parse_win32_reg
1libsofia_sip_ua_static.lib(sres.obj) : error LNK2019: unresolved external 
symbol [EMAIL PROTECTED] referenced in function _sres_parse_win32_reg
1libsofia_sip_ua_static.lib(sres.obj) : error LNK2019: unresolved external 
symbol [EMAIL PROTECTED] referenced in function 
_sres_parse_win32_reg_parse_dnsserver
1libsofia_sip_ua_static.lib(su_localinfo.obj) : error LNK2019: unresolved 
external symbol [EMAIL PROTECTED] referenced in function _win_localinfo
1.\Debug/sip_options_static.exe : fatal error LNK1120: 5 unresolved externals
1Build log was saved at 
file://c:\Users\fooobar\Documents\programmi\sofia-sip-1.12.9\win32\utils\sip_options_static\Debug\BuildLog.htm
1sip_options_static - 6 error(s), 0 warning(s)

I think the problem derives from some missing libs/DLLs, can you
suggest how to fix the problem (for example which are the libs/DLLs
I'm missing if that's the case)?

(Sorry I'm definitively not a Visual Studio expert).

Many thanks in advance, best regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Initialize sofia in the main context thread and run it in another thread

2008-09-12 Thread Stefano Sabatini
On date Friday 2008-09-12 10:57:00 +0300, [EMAIL PROTECTED] phoned this:
 Hi,
 
 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] On 
 Behalf Of ext Rémi BUISSON
 Sent: Friday, September 12, 2008 9:32 AM
 To: sofia-sip-devel@lists.sourceforge.net
 Subject: Re: [Sofia-sip-devel] Initialize sofia in the main 
 context thread and run it in another thread
 
 DBus works on windows and you can attach both DBus loop and sofia-sip 
 loop to a GMainLoop (glib works on windows to).
 
 An example is Telepathy-SofiaSIP:
 http://telepathy.freedesktop.org/wiki/Components
 
 We disable threading in Sofia-SIP, and it works wonderfully in the
 common main loop alongside DBus-Glib.

Yes but consider for example a gateway, when you don't want the sofia
sip loop running in the main process thread, but in a new thread as
the threads which manage the other protocols but SIP.

Ideally the main thread should only init the various protocol handlers
and make their event loops start, each one in a separate thread.

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Running the sofia-sip event loop in a thread context

2008-09-08 Thread Stefano Sabatini
On date Monday 2008-09-08 11:36:29 +0200, Stefano Sabatini phoned this:
 On date Monday 2008-09-08 10:31:43 +0200, Stefano Sabatini wrote:
  On date Monday 2008-09-08 10:08:39 +0200, Stefano Sabatini wrote:
   On date Friday 2008-09-05 12:10:10 +0200, Stefano Sabatini wrote:
On 9/5/08, Stefano Sabatini [EMAIL PROTECTED] wrote:
 Hi all,

 I have a multithreaded application, and I need to run the sofia-sip
 event loop not in the main process context, but in the context of a
 thread.
[...]

Well this time I checked the Gmane archive and I found this:
http://thread.gmane.org/gmane.comp.telephony.sofia-sip.devel/2534/focus=2536

Quoting Pekka from it:
|You can use threads w/ Sofia in two alternative ways:
|
|1/ You create thread by your self, and call su_root_create() by
|yourself. Then call su_root_run()/su_root_step() to process su_root_t
|stuff. When you want to exit from thread, you should call
|su_root_break() (if su_root_run()ing) and then su_root_destroy().
|
|2/ You call su_clone_start() and get su_clone_t reference. A new
|thread is created. When you'd want to get rid of that thread, you call
|su_clone_wait() from the main thread.

I can't opt for solution 1, since I need to create the root in the
main thread, then run it with a Run() command.

For the solution 2: when su_clone_start() is invoked, the init
function defined is executed and the main thread waits for its
termination, then how can I specify which function should execute the
new thread?

Regards.
-- 
Stefano Sabatini
http://www.reilabs.com

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] Running the sofia-sip event loop in a thread context

2008-09-05 Thread Stefano Sabatini
Hi all,

I have a multithreaded application, and I need to run the sofia-sip
event loop not in the main process context, but in the context of a
thread.

I implemented it this way.
I implemented a method Run() which instantiates the thread instance
and makes it execute su_root_run(),  and a Stop() method which
executes su_root_break() and wait for the thread termination.

Unfortunately this apporach seems not to work, as I get this message
from the sofia stack:
nua(0x8729740): signal r_invite
SIPEngineTest: su_base_port.c:322: su_base_port_run: Assertion
`su_port_own_thread(self)' failed.

and the process gets terminated by the SIGABRT signal.

I'm currently stuck with it, can someone help/provide some hint?

Many thanks in advance.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] How to free a sdp_session_t struct

2008-09-02 Thread Stefano Sabatini
On Tue, Sep 2, 2008 at 11:21 AM,  [EMAIL PROTECTED] wrote:
 Hi

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of ext Stefano Sabatini
Sent: Monday, September 01, 2008 6:56 PM
To: sofia-sip-devel@lists.sourceforge.net
Subject: Re: [Sofia-sip-devel] How to free a sdp_session_t struct

So if I understood it correctly I need to keep an home just for every
sdp_session_t.

 Well, you can use one home for multiple objects.

Well, indeed I have an home defined in the main application context.

When the application home is cleaned at the deinitialization of the
application, then the home is freed, the problem
is that when the execution is running I'd continue to keep allocating
sdp sessions in it without to be able to
free them.

For a server application meant to stay alive this could end up in a
memory exhaustion problem.

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] How to free a sdp_session_t struct

2008-09-01 Thread Stefano Sabatini
On Fri, Aug 29, 2008 at 5:27 PM,  [EMAIL PROTECTED] wrote:
 Hi,

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of ext Stefano Sabatini
Sent: Friday, August 29, 2008 6:24 PM
To: sofia-sip-devel@lists.sourceforge.net
Subject: [Sofia-sip-devel] How to free a sdp_session_t struct

Hi all sofia-sippers,

I'm looking for the best method to free an sdp_session_t struct.

I see there is an sdp_session_dup() function, and there are
sdp_printer_free() and sdp_parser_free(), so I was expecting some
method such as sdp_session_free().

Missing that, then I wonder if its absence means something, for
example that there is some convenient method to free an sdp_session_t.

Can you give some hint?

 Free the home used for allocating the session.

Hi, and thanks for the reply.
Yes that's a solution, nonetheless it looks still weird to me, to have
to use an home just for that seems
overkill.

Also, I wonder which is the supposed way to fill an SDP from scratch.
I can't see any specific function for doing that (e.g. add a
connection, add a media etc.)
and doing it manually is tedious.

So I suppose that the supposed way to create an SDP from scratch is to
write it down in its textual form *then*
convert it using an sdp_parser_t, otherwise maybe I have to use some
higher level function not provided in
the sdp module (soa?).

Am I right?

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] How to free a sdp_session_t struct

2008-09-01 Thread Stefano Sabatini
On Mon, Sep 1, 2008 at 9:24 AM, Stefano Sabatini [EMAIL PROTECTED] wrote:
 On Fri, Aug 29, 2008 at 5:27 PM,  [EMAIL PROTECTED] wrote:
 Hi,

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of ext Stefano Sabatini
Sent: Friday, August 29, 2008 6:24 PM
To: sofia-sip-devel@lists.sourceforge.net
Subject: [Sofia-sip-devel] How to free a sdp_session_t struct

Hi all sofia-sippers,

I'm looking for the best method to free an sdp_session_t struct.

I see there is an sdp_session_dup() function, and there are
sdp_printer_free() and sdp_parser_free(), so I was expecting some
method such as sdp_session_free().

Missing that, then I wonder if its absence means something, for
example that there is some convenient method to free an sdp_session_t.

Can you give some hint?

 Free the home used for allocating the session.

 Hi, and thanks for the reply.
 Yes that's a solution, nonetheless it looks still weird to me, to have
 to use an home just for that seems
 overkill.

There is also this problem. Assuming that I have to pass around the
allocated home, I can't use a stack allocated home, so I
have to use su_home_new() (here choosing an arbitrary size value...).

Then I think there is no way to know the home used by an sdp_session_t
object, so I would have to pass around the home
object to which the sdp_session_t is bound, which is pretty awkward,
*either* to have a memleak.

[...]

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] How to free a sdp_session_t struct

2008-09-01 Thread Stefano Sabatini
On 9/1/08, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
 Hi,

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of ext Stefano Sabatini
Sent: Monday, September 01, 2008 3:44 PM
To: sofia-sip-devel@lists.sourceforge.net
Subject: Re: [Sofia-sip-devel] How to free a sdp_session_t struct

 Free the home used for allocating the session.

 Hi, and thanks for the reply.
 Yes that's a solution, nonetheless it looks still weird to
me, to have
 to use an home just for that seems
 overkill.

 There is also this problem. Assuming that I have to pass around the
 allocated home, I can't use a stack allocated home, so I
 have to use su_home_new() (here choosing an arbitrary size value...).

 Then I think there is no way to know the home used by an
sdp_session_t
 object, so I would have to pass around the home
 object to which the sdp_session_t is bound, which is pretty awkward,
 *either* to have a memleak.

Another solution could be to pass around sdp_parser_t rather than
sdp_session_t, then
use sdp_session() to get the sdp_session_t from the parser and free
both parser and
session with sdp_parser_free(), do you think this is an
acceptable solution?

But still this looks like a strange solution and not particularly
convenient (why to pass around the whole parser if what I need is just
the session?), and is the reason for which I was looking for an
sdp_session_free() function.

 I guess you don't really want to keep the parser state.
 A home is a pool for allocated memory in the Sofia stack, so yes, you need
 to pass it around to wherever you free the sdp_session_t.

Thanks for the reply Mikhail.

So if I understood it correctly I need to keep an home just for every
sdp_session_t.

So my next obvious question is: it would be possible to change the API
and implement an
sdp_session_free() function? The sdp_session_t could inherit the home
of the sdp_parser which
creates it, or if created from scratch (sdp_session_create(home)?) it
would require an home as argument.

Not sure if this is possible to do without to break backward compatibility.

And still I have the sensation I'm doing something very strange with
my code, if no one ever had felt the necessity for a such facility
(I'm using the sdp_session_t to store an SDP in a C-language-friendly
manner)...

Kind regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] How to free a sdp_session_t struct

2008-08-29 Thread Stefano Sabatini
Hi all sofia-sippers,

I'm looking for the best method to free an sdp_session_t struct.

I see there is an sdp_session_dup() function, and there are
sdp_printer_free() and sdp_parser_free(), so I was expecting some
method such as sdp_session_free().

Missing that, then I wonder if its absence means something, for
example that there is some convenient method to free an sdp_session_t.

Can you give some hint?

Thanks in advance, regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] Missing the nua_callstate_proceeding - nua_callstate_completing state transition

2008-08-07 Thread Stefano Sabatini
Hi all,

now I'm facing this other problem.

I'm thinking about the better place where to activate the media.

I thought that a good idea could be to activate the media just after I
receive the answer to the SDP offer, at this point I have all the
information required to activate the receiving and transmitting media
elements, information which is stored in the local and remote SDPs.

So when I receive the SDP response I expect the nua callstate to
transition from:
proceeding - completing

What I experience instead is this:

nta: received 200 OK for INVITE (102932847)
nta: 200 OK is going to a transaction
tport_release(0x804eb58): 0x8052710 by 0x8053360 with 0x8054d20
nta: timer set to 32000 ms
nua(): refresh session after 901 seconds (in [895..905])
nua(): refresh session after 901 seconds
soa_set_remote_sdp(static::0x80514c0, (nil), 0x8055626, 156) called
soa_process_answer(static::0x80514c0) called
soa_static_offer_answer_action(0x80514c0, soa_process_answer): called
soa_sdp_mode_set(0x8052f88, 0x8055ae8, ): called
soa_static(0x80514c0, soa_process_answer): upgrade codecs with remote
description
soa_static(0x80514c0, soa_process_answer): storing local description
soa_activate(static::0x80514c0, (nil)) called
nua(0x8051180): INVITE: processed SDP answer in 200 OK
^^

Missing proceeding - completing transition??

soa_activate(static::0x80514c0, (nil)) called
nta: selecting scheme sip
tport_tsend(0x804eb58) tpn = */10.xx.x.204:5060
tport_resolve addrinfo = 10.xx.x.204:5060
tport_by_addrinfo(0x804eb58): not found by name */10.xx.x.204:5060
tport_vsend returned 302
nta: sent ACK (102932847) to */10.xx.x.204:5060
nua(0x8051180): call state changed: proceeding - ready, received answer
^

Here it passes from the proceeding to the ready state.

soa_get_remote_sdp(static::0x80514c0, [0xb7a11c30], [0xb7a11c2c],
[(nil)]) called
soa_get_params(static::0x80514c0, ...) called
nua: nua_application_event: entering
[...]

Because of this the switch case block for nua_callstate_completing in
my *_i_state event handler isn't executed.

I wonder, am I missing something obvious or is it a bug (BTW I'm using
libsofia-sip darcs head)?

Thanks again for your patience, best regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Missing the nua_callstate_proceeding - nua_callstate_completing state transition

2008-08-07 Thread Stefano Sabatini
On Thu, Aug 7, 2008 at 12:09 PM, Stefano Sabatini [EMAIL PROTECTED] wrote:
 Hi all,

 now I'm facing this other problem.

 I'm thinking about the better place where to activate the media.

 I thought that a good idea could be to activate the media just after I
 receive the answer to the SDP offer, at this point I have all the
 information required to activate the receiving and transmitting media
 elements, information which is stored in the local and remote SDPs.

 So when I receive the SDP response I expect the nua callstate to
 transition from:
 proceeding - completing

 What I experience instead is this:

 nta: received 200 OK for INVITE (102932847)
 nta: 200 OK is going to a transaction
 tport_release(0x804eb58): 0x8052710 by 0x8053360 with 0x8054d20
 nta: timer set to 32000 ms
 nua(): refresh session after 901 seconds (in [895..905])
 nua(): refresh session after 901 seconds
 soa_set_remote_sdp(static::0x80514c0, (nil), 0x8055626, 156) called
 soa_process_answer(static::0x80514c0) called
 soa_static_offer_answer_action(0x80514c0, soa_process_answer): called
 soa_sdp_mode_set(0x8052f88, 0x8055ae8, ): called
 soa_static(0x80514c0, soa_process_answer): upgrade codecs with remote
 description
 soa_static(0x80514c0, soa_process_answer): storing local description
 soa_activate(static::0x80514c0, (nil)) called
 nua(0x8051180): INVITE: processed SDP answer in 200 OK
 ^^

 Missing proceeding - completing transition??

 soa_activate(static::0x80514c0, (nil)) called
 nta: selecting scheme sip
 tport_tsend(0x804eb58) tpn = */10.xx.x.204:5060
 tport_resolve addrinfo = 10.xx.x.204:5060
 tport_by_addrinfo(0x804eb58): not found by name */10.xx.x.204:5060
 tport_vsend returned 302
 nta: sent ACK (102932847) to */10.xx.x.204:5060
 nua(0x8051180): call state changed: proceeding - ready, received answer
 ^

 Here it passes from the proceeding to the ready state.

 soa_get_remote_sdp(static::0x80514c0, [0xb7a11c30], [0xb7a11c2c],
 [(nil)]) called
 soa_get_params(static::0x80514c0, ...) called
 nua: nua_application_event: entering
 [...]

 Because of this the switch case block for nua_callstate_completing in
 my *_i_state event handler isn't executed.

 I wonder, am I missing something obvious or is it a bug (BTW I'm using
 libsofia-sip darcs head)?

I missed this bit of information from the docs:

Unless the auto-ack mode is explicitly turned  off by application the
client does not stay in completing state, but proceeds immediately to
next state transition.

So that's the expected behaviour since I didn't turned off the auto-ack mode.

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [NEWBIE] How to print a SIP message

2008-08-05 Thread Stefano Sabatini
On Mon, Aug 4, 2008 at 8:07 PM, Pekka Pessi [EMAIL PROTECTED] wrote:
 2008/7/30 Stefano Sabatini [EMAIL PROTECTED]:
 On 7/30/08, Stefano Sabatini [EMAIL PROTECTED] wrote:
 On Wed, Jul 30, 2008 at 10:31 AM, Stefano Sabatini
 [EMAIL PROTECTED] wrote:
 Hi all,
 can you say if there is a simple way to convert a sip_t object to a char*
 and viceversa?

 For example I would like to print all the incoming SIP messages from
 the the event callback function.
 [...]

 From a textual representation to a msg_t and to a sip_t:
 msg_data = ...;
 msg_t* msg = msg_make (sip_default_mclass(), 0, msg_data, sizeof (msg_data));
 if (!msg) {
fprintf(stderr, Impossible to parse message\n);
exit(1);
 }
 sip_t* sip = sip_object(msg);

 Still I don't know if there exists a function which returns a textual
 representation of a message,
 there is a sip_header_as_string(home, sip) function but not one which
 prints the whole message.

 Try msg_as_string()..

Yes, I don't know how I missed it (mmh maybe because I was looking for
something like sip_msg_as_string in sip...).

 Also how can I get the headers from a sip_t struct, and how can I
 iterate thrugh them?

 sip_t has pointers to each header fields, e.g., sip_via is pointer to
 a list of Via header fields. You can iterate through Via header fields
 with a loop like this:

 sip_t *sip = sip_object(sip);
 sip_via_t *via;

 for (via = sip-sip_via; via; via = via-v_next) {
  ...
 }

 If you want to iterate through each header field in the message, you
 should start from msg_chain_head(msg) and then proceed in order, e.g.,

 for (next = msg_chain_head(msg); *next; next = (*next)-sh_next) {
  sip_header_t *sh = (*next);
  msg_hclass_t const *hc = sh-sh_class;
  if (sip_is_via(sh) {
sip_via_t const*via = (sip_via_t *)sh;

  }
  ...
 }

 The list of all the message components (chain) also includes some
 non-header elements, like request-line, status-line and message body.
 There is also some complications with so called list headers like
 Require, their values are combined with their first occurrence, so
 headers like

 Require: 100rel
 Supported: timer
 Require: xyzzy

 will have one sip_require_t structure with tokens 100rel and
 xyzzy, one sip_supported_t structure with timer and a dummy
 sip_require_t structure in the chain.

Thanks so much for the detailed answer!
Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] sofsip_cli : how is activated the sending of RTP packets?

2008-08-04 Thread Stefano Sabatini
On Fri, Aug 1, 2008 at 4:05 PM, Michael Jerris [EMAIL PROTECTED] wrote:
 Look at the i_state callback.

Hi,
that was only the first step, what I couldn't understand was all the GST part.

After diving into the libgstreamer metaphysics:
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html

I'm finally starting to figure out the big scheme of things.

I'm reporting it (a probably partly wrong) description of it, both for
the archive and for fostering comments.

ssc_media_activate() in ssc_media.c is called by the ssc_invite()
method, and this call the activate method of the media subsystem
object.

Looking at the gst media subsystem as defined in ssc_media_gst.[hc],
the activate method corresponds to the priv_activate_gst callback().
What it does is to fill the information relative to the local and
remote SDP, then it calls priv_setup_rtpelements().

This function bind the application to the local UDP port for receiving
(farsight_netsocket_bind_udp_port()), create the netsocket object and
register on it the
signal handler priv_cb_ready, which is called when a ready signal
is delivered to the netsocket object:
g_signal_connect (G_OBJECT (netsocket), ready,
  G_CALLBACK (priv_cb_ready), self)

For what regards the priv_cb_ready, this creates multimedia pipeline
which works like this:
RX: udp_source - rtp_depayloader - decoder - audio_sink
TX: alsa_source - encoder - rtp_payloader - udp_sink

calls the callback functions:
  priv_update_rx_elements(self);
  priv_update_tx_elements(self);

and finally sets the state of the pipeline to GST_STATE_PLAYING.

The priv_update_?x_elements() functions take the SDP from the context
and set it in the media elements, in the case of
priv_update_tx_elements if the SDP isn't set
(as when the first invite is sent, we need to await for the response
SDP before to be able to send media), I think the transmitting
elements stay inactive.

Finally when the respone to the invite arrives, ssc_sip.c:ssc_i_state
will call the set methods on the media subsystem object:
  if (l_sdp) {
g_return_if_fail(answer_sent || offer_sent);
g_object_set(G_OBJECT(ssc-ssc_media), localsdp, l_sdp, NULL);
/* printf(%s: local SDP updated:\n%s\n\n, ssc-ssc_name, l_sdp); */
  }

  if (r_sdp) {
g_return_if_fail(answer_recv || offer_recv);
g_object_set(G_OBJECT(ssc-ssc_media), remotesdp, r_sdp, NULL);
/* printf(%s: remote SDP updated:\n%s\n\n, ssc-ssc_name, r_sdp); */
  }

ssc_media.c:ssc_media_set_property () is called, which call
ssc_media_refresh(self);

In the case of ssc_media_gst() such method corresponds to the priv_refresh_gst:

static int priv_refresh_gst(SscMedia *parent)
{
  SscMediaGst *self = SSC_MEDIA_GST (parent);
  int res = 0;

  /* XXX: no RX hot updates supported yet */
  priv_update_tx_elements(self);

  return res;
}

which simply update the transmitting elements, setting the target RTP
destination and likely actually activating the trasmitting elements.

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] Correct parameter for nua_invite()

2008-08-01 Thread Stefano Sabatini
On Fri, Aug 1, 2008 at 10:55 AM, Stefano Sabatini [EMAIL PROTECTED] wrote:
 On date Monday 2008-07-28 08:15:48 +, Fan Xing wrote:
 I wrote a simple test code using sofia_sip to make a voip
 call. However, when I execute the code, it is hang there ' entering
 main loop for processing of messages'.

 First suggestion: use
 su_log_set_level(NULL, 9);

 to increase verbosity of sofia-sip, that's bloody helpful.

 I suspect I made some some mistakes when using the nua_invite function. In 
 my makecall() function,  I called nua_invite like this:
 int makecall(char const *name, char const *url)

 {
//create operation context, operation handle, etc..
 nua_invite(op, NUTAG_URL (url),  SOATAG_ADDRESS('0.0.0.0:8000'), 
 NUTAG_EARLY_MEDIA (1), TAG_END ());
 }

 I think the problem here is that you didn't specify any SDP
 capabilities, try for example with:

   nua_invite(op,
  SOATAG_USER_SDP_STR(m=audio 5004 RTP/AVP 0 8),
  NUTAG_URL(to_url),Thanks a lot, ssabatini:-) You are right, when 
 I add SOATAG_USER_SDP_STR in the input parameter, it works.

I'm replying here to a mail sent privately by Fan to me:
Thanks a lot, ssabatini:-) You are right, when I add SOATAG_USER_SDP_STR in 
the input parameter, it works.

But, there is one problem. The caller can not receive the sound from the 
callee (the configuration on the machine is correct, for example, if I run 
sofsip_cli, it works). Is it because I did not put the correct value for the 
SOATAG_USER_SDP_STR? I use Ubuntu.

sofia-sip doesn't manage the media *at all*, you have to provide a
media subsystem to your own application as sofsip_cli does using
libgstreamer to provide the media framework.

I suggest you to study the code of sofsip_cli and look at how the
problem is addressed there, then eventually post here questions if you
need some help.

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [PATCH] sofsip-cli: fix some typos in src/sdp_utils.c

2008-07-31 Thread Stefano Sabatini
Hi,
as in subject, regards.
--- old-sofsip-cli/src/sdp_utils.c	2008-07-31 15:10:46.0 +0200
+++ new-sofsip-cli/src/sdp_utils.c	2008-07-31 15:10:46.0 +0200
@@ -21,10 +21,9 @@
  *
  */
 
-/[EMAIL PROTECTED] sdpg_utils.c
+/[EMAIL PROTECTED] sdp_utils.c
  * 
- * Utilizies for glib/gstreamer applications handling 
- * for handling SDP.
+ * Utilities for glib/gstreamer applications for handling SDP.
  *
  * @author Kai Vehmanen [EMAIL PROTECTED]
  */

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [NEWBIE] How to print a SIP message

2008-07-30 Thread Stefano Sabatini
Hi all,
can you say if there is a simple way to convert a sip_t object to a char*
and viceversa?

For example I would like to print all the incoming SIP messages from
the the event callback function.

(Well, I'm diving just now into docs/code, nonetheless a little help
would make life a little easier.)

Many thanks in advance, regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [NEWBIE] How to print a SIP message

2008-07-30 Thread Stefano Sabatini
On Wed, Jul 30, 2008 at 10:31 AM, Stefano Sabatini
[EMAIL PROTECTED] wrote:
 Hi all,
 can you say if there is a simple way to convert a sip_t object to a char*
 and viceversa?

 For example I would like to print all the incoming SIP messages from
 the the event callback function.

 (Well, I'm diving just now into docs/code, nonetheless a little help
 would make life a little easier.)

 Many thanks in advance, regards.

Sorry to ping, I'm not sure if this message did arrive the first time
(I'm managing problems with Sourceforge ML lately, seems I cannot send
mails using my provider SMTP server, and so painfullly falling back to
the Gmail web interface).

As I'm exploring the problem I discovered the test program
sip/test_sip_msg.c, but nothing similar to a converter msg_t/sip_t -
char*, so I'm still
stuck with this problem.

Regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [NEWBIE] How to print a SIP message

2008-07-30 Thread Stefano Sabatini
On 7/30/08, Stefano Sabatini [EMAIL PROTECTED] wrote:
 On Wed, Jul 30, 2008 at 10:31 AM, Stefano Sabatini
 [EMAIL PROTECTED] wrote:
 Hi all,
 can you say if there is a simple way to convert a sip_t object to a char*
 and viceversa?

 For example I would like to print all the incoming SIP messages from
 the the event callback function.
[...]

From a textual representation to a msg_t and to a sip_t:
msg_data = ...;
msg_t* msg = msg_make (sip_default_mclass(), 0, msg_data, sizeof (msg_data));
if (!msg) {
fprintf(stderr, Impossible to parse message\n);
exit(1);
}
sip_t* sip = sip_object(msg);

Still I don't know if there exists a function which returns a textual
representation of a message,
there is a sip_header_as_string(home, sip) function but not one which
prints the whole message.

Also how can I get the headers from a sip_t struct, and how can I
iterate thrugh them?

Thanks in advance, regards.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] What's the name of a soa_session_t?

2008-07-30 Thread Stefano Sabatini
Hi,

a soa_session_t is created using the soa_create() function.

Documentation says:
soa_session_t* soa_create   (   char const * name,
su_root_t * root,
soa_magic_t *   magic   
)   

Create a soa session.

Then according to the name you assign to it may fail to create the object.

Do you have an explanation for the meaning of the name param?

Many thanks in advance, as always.

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [PATCH] Fix misc typos in src/ssc_sip.c

2008-07-04 Thread Stefano Sabatini
Hi all,
as in subject.

Regards.
--- old-sofsip-cli/src/ssc_sip.c	2008-07-04 09:29:49.0 +0200
+++ new-sofsip-cli/src/ssc_sip.c	2008-07-04 09:29:49.0 +0200
@@ -700,7 +700,7 @@
 /**
  * Sends an outgoing INVITE request.
  *
- * @param cli context pointer
+ * @param ssc context pointer
  * @param destination SIP URI
  */
 void ssc_invite(ssc_t *ssc, const char *destination)
@@ -848,7 +848,7 @@
   state == sm_active) {
 
 /* SDP O/A case 1: outgoing invite
- *  - get a an description of the network addresses
+ *  - get a description of the network addresses
  *and available media and codecs
  *  - pass this information to nua_invite() in the 
  *SOATAG_USER_SDP_STR() tag
@@ -1619,7 +1619,7 @@
   ssc_oper_t *op;
 
   if (!registrar  (op = ssc_oper_find_by_method(ssc, sip_method_register))) {
-printf(%s: REGISTER %s - updating existing registrationk\n, ssc-ssc_name, op-op_ident);
+printf(%s: REGISTER %s - updating existing registration\n, ssc-ssc_name, op-op_ident);
 nua_register(op-op_handle, TAG_NULL());
 return;
   }

-
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [BUGREPORT] sofsip-cli: invite, zap, new invites are never sent

2008-07-04 Thread Stefano Sabatini
Hi all,
to reproduce this issue simply send an invite, zap it, then send
another invite: you get the message:
UA: INVITE to sip:[EMAIL PROTECTED] pending

but then no invite message is sent (as you can verify with wireshark
for example).

If the operation is terminated with a bye, new invites go just fine,
unfortunately I couldn't get to understand what's going wrong as long
as my grasp of the libgobject thing is rather shallow.

BTW, if you prefer I can use the sourceforge tracking system for both
patches and bugreports.

Regards.

-
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [PATCH] sofsip_cli: Implement ssc_i_options event callback

2008-07-04 Thread Stefano Sabatini

Hi, this implement a basic callback to manage incoming options events.

Please note that maybe this isn't the correct approach, indeed with
this approach sofsip_cli always returns 200 OK, while RFC 3261 states:

|The response to an OPTIONS is constructed using the standard rules for
|a SIP response as discussed in Section 8.2.6.  The response code
|chosen MUST be the same that would have been chosen had the request
|been an INVITE.  That is, a 200 (OK) would be returned if the UAS is
|ready to accept a call, a 486 (Busy Here) would be returned if the UAS
|is busy, etc.  This allows an OPTIONS request to be used to determine
|the basic state of a UAS, which can be an indication of whether the
|UAS will accept an INVITE request.

Can you suggest how can I access the global state of the application
(for example: ready, busy, etc.)?

BTW, I noted that even when the incoming options event is not managed,
I got this message from the receiving application:

sofsip UA: unknown event 'nua_i_options' (10): 200 OK
   ::tag_null: 0

then a response message is currently sent. How can I override this
mechanism, for example how can I control which kind of response
message to send? (For example in the abovementioned case, when I want
to send a message telling the application is busy.)

Thanks in advance for any advice, regards.
--- old-sofsip-cli/src/ssc_sip.c	2008-07-04 14:20:10.0 +0200
+++ new-sofsip-cli/src/ssc_sip.c	2008-07-04 14:20:10.0 +0200
@@ -145,6 +145,9 @@
 void ssc_r_notify(int status, char const *phrase, nua_t *nua, ssc_t *ssc,
 		   nua_handle_t *nh, ssc_oper_t *op, sip_t const *sip,
 		   tagi_t tags[]);
+void ssc_i_options(int status, char const *phrase, nua_t *nua, ssc_t *ssc,
+		   nua_handle_t *nh, ssc_oper_t *op, sip_t const *sip,
+		   tagi_t tags[]);
 void ssc_r_options(int status, char const *phrase, nua_t *nua, ssc_t *ssc,
 		   nua_handle_t *nh, ssc_oper_t *op, sip_t const *sip,
 		   tagi_t tags[]);
@@ -466,6 +469,10 @@
 ssc_r_unregister(status, phrase, nua, ssc, nh, op, sip, tags);
 break;
 
+  case nua_i_options:
+ssc_i_options(status, phrase, nua, ssc, nh, op, sip, tags);
+break;
+
   case nua_r_options:
 ssc_r_options(status, phrase, nua, ssc, nh, op, sip, tags);
 break;
@@ -1234,6 +1241,17 @@
 }
 
 /**
+ * Callback to an incoming OPTIONS request.
+ */
+void ssc_i_options(int status, char const *phrase,
+		   nua_t *nua, ssc_t *ssc,
+		   nua_handle_t *nh, ssc_oper_t *op, sip_t const *sip,
+		   tagi_t tags[])
+{
+  printf(%s: OPTIONS received\n, ssc-ssc_name);
+}
+
+/**
  * Callback to an outgoing OPTIONS request.
  */
 void ssc_r_options(int status, char const *phrase,

-
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [PATCH] Fix the environment variable name for sofsip_cli conf-ssc_certdir

2008-07-02 Thread Stefano Sabatini
Hi all, as in subject,

I think this fixes a bug.

Regards.
--- old-sofsip-cli/src/sofsip_cli.c	2008-07-02 11:25:50.0 +0200
+++ new-sofsip-cli/src/sofsip_cli.c	2008-07-02 11:25:50.0 +0200
@@ -301,7 +301,7 @@
   conf-ssc_aor = getenv(SOFSIP_ADDRESS);
   conf-ssc_proxy = getenv(SOFSIP_PROXY);
   conf-ssc_registrar = getenv(SOFSIP_REGISTRAR);
-  conf-ssc_certdir = getenv(SOFSIP_ADDRESS);
+  conf-ssc_certdir = getenv(SOFSIP_CERTDIR);
   conf-ssc_stun_server = getenv(SOFSIP_STUN_SERVER);
 
   /* step: process command line arguments */

-
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [PATCH] Implement a --verbose option in sofsip_cli

2008-07-02 Thread Stefano Sabatini
Hi,
as in subject.

This should make debugging easier, I'm not sure this is the better way
to define the logging level, please provide some feedback if you think
something could be done better.

Best regards.
--- old-sofsip-cli/src/ssc_sip.h	2008-07-02 14:45:49.0 +0200
+++ new-sofsip-cli/src/ssc_sip.h	2008-07-02 14:45:49.0 +0200
@@ -108,6 +108,7 @@
   const char   *ssc_aor;/** Public SIP address aka AOR (SIP URI) */
   const char   *ssc_certdir;	/** Directory for TLS certs (directory path) */
   const char   *ssc_contact;	/** SIP contact URI (local address to use) */
+  const char   *ssc_su_log_level;	/** sofia-sip SU logging verboseness level */
   const char   *ssc_media_addr;	/** Media address (hostname, IP address) */
   const char   *ssc_media_impl;	/** Media address (hostname, IP address) */
   const char   *ssc_proxy;	/** SIP outbound proxy (SIP URI) */

--- old-sofsip-cli/src/sofsip_cli.c	2008-07-02 14:45:49.0 +0200
+++ new-sofsip-cli/src/sofsip_cli.c	2008-07-02 14:45:49.0 +0200
@@ -285,6 +285,7 @@
   /* long, short, flags, arg, arg_data, desc, arg_desc */
   GOptionEntry options[] = {
 { autoanswer, 'a', 0, G_OPTION_ARG_NONE, conf-ssc_autoanswer, Auto-answer to calls, NULL },
+{ verbose, 'v', 0, G_OPTION_ARG_INT, conf-ssc_su_log_level, Set the sofia-sip logging verboseness level (0 to 9), integer},
 { register, 'R', 0, G_OPTION_ARG_NONE, conf-ssc_register, Register at startup, NULL },
 { contact, 'c', 0, G_OPTION_ARG_STRING, conf-ssc_contact, SIP contact, local address to bind to (optional), SIP-URI },
 { media-addr, 'm', 0, G_OPTION_ARG_STRING, conf-ssc_media_addr, media address (optional), address  },
@@ -323,6 +324,8 @@
 }
   }
 
+  su_log_set_level(NULL, (unsigned int)conf-ssc_su_log_level);
+
   su_wait_create(cli-cli_input, 0, SU_WAIT_IN); 
   if (su_root_register(cli-cli_root, 
 		   cli-cli_input, 

-
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [NEWBIE] Can't send an invite

2008-06-18 Thread Stefano Sabatini
On date Monday 2008-06-09 15:51:11 +0200, Stefano Sabatini wrote:
 On date Friday 2008-06-06 14:50:26 +0200, Stefano Sabatini wrote:
  On date Friday 2008-06-06 13:38:57 +0200, Timo Bruhn wrote:
  [...]
   Hi Stefano,
   
   maybe this helps you:
   
   nua_invite(handle,  NUTAG_MEDIA_ENABLE(0), TAG_END());
   
   As far as i know this deactivates the SDP offer/answer engine for the 
   call, which would wait for user sdp and won't
   send the invite if none is provided. You can activate the engine later in 
   the call with:
   nua_set_hparams(handle, NUTAG_MEDIA_ENABLE(1), TAG_END());
  
  Yes in this way it worked fine.
   
   By the way: if you destroy the handle directly after calling 
   nua_invite(), sofia will end the call. Maybe this causes some
   trouble, two. Perhaps it would be better to destroy the handle in the 
   event callback.
  
  Good point, I'll simply leave that for now (I still have to understand
  how to associate an arriving message of a dialog to an already sent
  one).
  
  BTW, which is the simpler way to print an incoming message in the
  event callback function?
 [...]
  Since I enabled the sofia-sip logging facility, now I can see:
  
  make sip-inviter; and env TPORT_DEBUG=1 sip-inviter sip:xx.xx.x.204:5060
  gcc -g -O0 -I/home/stefano/include/sofia-sip-1.12  -L/home/stefano/lib 
  -lsofia-sip-ua   -o sip-inviter sip-inviter.c
  su_port_create(0x804a008): epoll_create() = 0: OK
  su_socket_port_init(0x804a008, 0xb7f62f80) called
  su_pthread_port_init(0x804a008, 0xb7f62f80) called
  nua: nua_create: entering
  su_port_create(0x804a790): epoll_create() = 0: OK
  su_socket_port_init(0x804a790, 0xb7f62f80) called
  su_pthread_port_init(0x804a790, 0xb7f62f80) called
  nua: nua_stack_init: entering
  nua: nua_stack_set_params: entering
  soa_create(default, 0x804ac18, 0x804acb0) called
  soa_set_params(static::0x804b0a0, ...) called
  soa_set_params(static::0x804b0a0, ...) called
  nta_agent_create: initialized hash tables
  nta_agent_create: initialized transports
  nta_agent_create: initialized random identifiers
  nta_agent_create: initialized timer
  nta_agent_create: initialized resolver
  nta: master transport created
  nta: bound to (localhost:5060;transport=*)
  nta: agent_init_via: SIP/2.0/udp localhost (sip)
  nta: agent_init_via: SIP/2.0/tcp localhost (sip)
  nta: Via fields initialized
  nta: Contact header created
  nua_register: Adding contact URL 'localhost' to list.
  nua: nh_create_handle: entering
  Sending the invite to sip:10.88.3.204:5060...
  nua: nua_invite: entering
  nua(0x804d8b8): sent signal r_invite
  nua: nua_handle_destroy: entering
  nua(0x804d8b8): sent signal r_destroy
  nua: nua_stack_set_params: entering
  nta_leg_tcreate(0x804e050)
  nua(0x804d8b8): adding session usage
  nta: selecting scheme sip
  nta: INVITE (100259833): Invalid argument (22) with */[xx.xx.x.204]:5060
  
  Do you have any hint about this? What's the meaning of the 22 code?
 
 It turned out that the problem was that the stack doesn't seem to
 recognize as valid an IP address (using latest Sofia darcs). It is
 this a limitation of sofia-sip or is it an error from myself?  
 
 Anyway maybe a more clear message in the function
 tport_prepare_and_send in would be nice.
 
 Well so I put in my /etc/hosts a name for the hardsipphone I'm
 sending the invite to, and now I get:
 
 
 Starting program: /home/stefano/src/Sandbox/C/libsofia/sip-inviter sip:[EMAIL 
 PROTECTED]:5060
 [Thread debugging using libthread_db enabled]
 su_port_create(0x804a008): epoll_create() = 0: OK
 su_socket_port_init(0x804a008, 0xb7f42f80) called
 su_pthread_port_init(0x804a008, 0xb7f42f80) called
 nua: nua_create: entering
 [New Thread 0xb7ac86b0 (LWP 19128)]
 [New Thread 0xb7ac7b90 (LWP 19133)]
 su_port_create(0x804a790): epoll_create() = 0: OK
 su_socket_port_init(0x804a790, 0xb7f42f80) called
 su_pthread_port_init(0x804a790, 0xb7f42f80) called
 nua: nua_stack_init: entering
 nua: nua_stack_set_params: entering
 soa_create(default, 0x804ac18, 0x804acb0) called
 soa_set_params(static::0x804b0a0, ...) called
 soa_set_params(static::0x804b0a0, ...) called
 nta_agent_create: initialized hash tables
 nta_agent_create: initialized transports
 nta_agent_create: initialized random identifiers
 nta_agent_create: initialized timer
 nta_agent_create: initialized resolver
 tport_create(): 0x804c328
 nta: master transport created
 tport_bind_server(0x804c328) to */localhost:5060/sip
 tport_bind_server(0x804c328): calling tport_listen for udp
 tport_alloc_primary(0x804c328): new primary tport 0x804cea8
 tport_listen(0x804cea8): listening at udp/127.0.0.1:5060/sip
 tport_bind_server(0x804c328): calling tport_listen for tcp
 tport_alloc_primary(0x804c328): new primary tport 0x804d1b0
 tport_listen(0x804d1b0): listening at tcp/127.0.0.1:5060/sip
 nta: bound to (localhost:5060;transport=*)
 nta: agent_init_via: SIP/2.0/udp localhost

Re: [Sofia-sip-devel] [NEWBIE] How to use the resolver simple interface

2008-06-18 Thread Stefano Sabatini
On date Thursday 2008-06-12 13:40:25 +0300, Pekka Pessi wrote:
 2008/6/10 Stefano Sabatini [EMAIL PROTECTED]:
  I'm trying to understand how the sresolv simple interface works.
 
 Simple interface is intended for cases where your main loop is
 running with su_root_t.
 You can try to use blocking interface, see utils/sip-dig.c for an example.

Thank you Pekka,

here it is a complete example of use of the blocking interface.
somehow extrapolated by sip-dig.c.

I'm posting it for the archive.

---8-
#include sofia-sip/sresolv.h
#include sofia-sip/su_log.h
#include sofia-sip/url.h
#include stdlib.h
#include stdio.h

int main(int argc, char** argv)
{
url_t *url;

if (argc = 1) {
fprintf(stderr, Missing the address to resolve);
exit(1);
}
const char* url_str = argv[1];
/* parse the string and fill accordingly all the fields of the url struct */
url = url_hdup(NULL, (void *)url_str);

if (url  url-url_type == url_unknown)
  url_sanitize(url);

/* Initialize Sofia-SIP library and create event loop */
su_init ();
su_log_set_level(NULL, 9);
/* root = su_root_create(NULL); */
/* at first I need to create the DNS resolver object */


/* blocking interface */
/* instantiate the resolver */
sres_resolver_t* sres = sres_resolver_new(NULL);
if(!sres) {
fprintf(stderr, Impossible to instantiate a resolver, exiting);
exit(1);
}

/* then I need the sres_record_t struct where to put the request for the 
query */
sres_record_t** answers= NULL;

const char *resolvaddr = NULL;
if (host_is_ip_address(url-url_host)) {
/* it's already resolved, no need to ask the DNS server */
printf(%s\n, url-url_host);
exit(0);
}

if (sres_blocking_query(sres, sres_type_a, url-url_host, 0, answers)  0) 
{
fprintf(stderr, Impossible to resolve address: %s, url);
exit(1);
}

int i;
char addr[64];
for (i = 0; answers[i]; i++) {
/* sofia redefines the inet_ntop if it isn't already defined in the 
system */
su_inet_ntop(AF_INET, answers[i]-sr_a-a_addr, addr, sizeof addr);
printf(%s\n, addr);
}

sres_free_answers(sres, answers);
sres_resolver_unref(sres);

exit(0);
}
---8-


Regards.

-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


[Sofia-sip-devel] [NEWBIE] How to use the resolver simple interface

2008-06-10 Thread Stefano Sabatini
Hi all,

I'm trying to understand how the sresolv simple interface works.
For this reason I wrote this small application in my sandbox, it
compiles but of course it doesn't do what I'd like to do.

I checked the doxy for sres_resolver_create() but they're quite
incomplete either I'm too dumb to understand how to properly use it.

I think this interface should work by registering some handler when
waiting for the DNS query, but I cuouldn't figure out how to register
that.

Also I would like if possible a simple description about the tags in
the sres_resolver_create (that is what they're meant to contain).

Here it is the application.
8---
#include sofia-sip/sresolv.h
#include sofia-sip/su_log.h
#include stdlib.h
#include stdio.h

int main(int argc, char** argv)
{
/* the main thread of the application which handles all the incoming events 
*/  
su_root_t *root;

su_log_set_level(NULL, 9);

if (argc = 1) {
fprintf(stderr, Missing the address to resolve);
exit(1);
}
const char* address = argv[1];

/* Initialize Sofia-SIP library and create event loop */
su_init ();
root = su_root_create(NULL);
/* at first I need to create the DNS resolver object */

sres_resolver_t* res = sres_resolver_create(root,
etc/resolv.conf,
TAG_NULL());

/* when should I take care of the destruction of the resolver object? */
/* I think I should register somewhere an handler which manages the 
response of the
 * query, then invoke its destruction from there */
/* sres_resolver_destroy(res); */

/* waits for godot */
while(1)
sleep(1);

exit(0);
}
8---

Maybe I'm just too lazy and I should simply read the code, I'm doing
it but I'm still far from getting a good grasp of how the whole system
works.

By the way, I also noticed that the doxy documentation is scattered
through C and header files (while I'd expect it to be defined only in
the headers), is there a particular reason for this?

I should be very grateful for any hint you can provide.

Best regards.

-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel


Re: [Sofia-sip-devel] [NEWBIE] Can't send an invite

2008-06-06 Thread Stefano Sabatini
On date Friday 2008-06-06 13:38:57 +0200, Timo Bruhn wrote:
[...]
 Hi Stefano,
 
 maybe this helps you:
 
 nua_invite(handle,  NUTAG_MEDIA_ENABLE(0), TAG_END());
 
 As far as i know this deactivates the SDP offer/answer engine for the call, 
 which would wait for user sdp and won't
 send the invite if none is provided. You can activate the engine later in the 
 call with:
 nua_set_hparams(handle, NUTAG_MEDIA_ENABLE(1), TAG_END());

Yes in this way it worked fine.
 
 By the way: if you destroy the handle directly after calling nua_invite(), 
 sofia will end the call. Maybe this causes some
 trouble, two. Perhaps it would be better to destroy the handle in the event 
 callback.

Good point, I'll simply leave that for now (I still have to understand
how to associate an arriving message of a dialog to an already sent
one).

BTW, which is the simpler way to print an incoming message in the
event callback function?

Here it is my new try:
8- 
#include stdlib.h
#include stdio.h
#include sofia-sip/nua.h
#include sofia-sip/su_log.h

/* This callback will be called by SIP stack to
 * process incoming events
 */
void event_callback(nua_event_t   event,
int   status,
char const   *phrase,
nua_t*nua,
nua_magic_t  *magic,
nua_handle_t *nh,
nua_hmagic_t *hmagic,
sip_t const  *sip,
tagi_ttags[])
{
static unsigned int count = 1;
printf (arrived request number %d\n
I have received an event %s status %d %s\n,
count++, nua_event_name(event), status, phrase);

nua_handle_destroy(handle);
}

/**
 * Creates a communication handle, sends an INVITE request and destroys it.
 */
int send_invite (nua_t *nua, const char* callee)
{
nua_handle_t *handle;

/* create an handle */
handle = nua_handle(nua, NULL,
SIPTAG_TO_STR(callee),
TAG_END());

if (!handle) {
fprintf(stderr, Failed to instantiate an handle for the invite\n);
fprintf(stderr, Maybe another instance of a sip client running on the 
same port?\n);
return -1;
}

fprintf(stderr, Sending the invite to %s...\n, callee);
nua_invite(handle,
   NUTAG_MEDIA_ENABLE(0), /* disable SDP media offer
   TAG_END());
nua_handle_destroy(handle);
return 0;
}

int main (int argc, char *argv[])
{
su_root_t *root;
nua_t *nua;

su_log_set_level(NULL, 9);

if (argc = 1) {
fprintf(stderr, Missing the destination target);
exit(1);
}

const char* callee = argv[1];

/* Initialize Sofia-SIP library and create event loop */

su_init ();
root = su_root_create (NULL);

nua = nua_create(root, /* Event loop */
 event_callback, /* Callback for processing events */
 NULL, /* Additional data to pass to callback */
 NUTAG_URL(sip:localhost:5060),
 TAG_END()); /* Last tag should always finish the sequence 
*/

/* send an invite to a remote sip client */
send_invite (nua, callee);

/* Run event loop */
su_root_run (root);

/* Destroy allocated resources */
nua_destroy (nua);
su_root_destroy (root);
su_deinit ();

return 0;
}
8- 

Since I enabled the sofia-sip logging facility, now I can see:

make sip-inviter; and env TPORT_DEBUG=1 sip-inviter sip:xx.xx.x.204:5060
gcc -g -O0 -I/home/stefano/include/sofia-sip-1.12  -L/home/stefano/lib 
-lsofia-sip-ua   -o sip-inviter sip-inviter.c
su_port_create(0x804a008): epoll_create() = 0: OK
su_socket_port_init(0x804a008, 0xb7f62f80) called
su_pthread_port_init(0x804a008, 0xb7f62f80) called
nua: nua_create: entering
su_port_create(0x804a790): epoll_create() = 0: OK
su_socket_port_init(0x804a790, 0xb7f62f80) called
su_pthread_port_init(0x804a790, 0xb7f62f80) called
nua: nua_stack_init: entering
nua: nua_stack_set_params: entering
soa_create(default, 0x804ac18, 0x804acb0) called
soa_set_params(static::0x804b0a0, ...) called
soa_set_params(static::0x804b0a0, ...) called
nta_agent_create: initialized hash tables
nta_agent_create: initialized transports
nta_agent_create: initialized random identifiers
nta_agent_create: initialized timer
nta_agent_create: initialized resolver
nta: master transport created
nta: bound to (localhost:5060;transport=*)
nta: agent_init_via: SIP/2.0/udp localhost (sip)
nta: agent_init_via: SIP/2.0/tcp localhost (sip)
nta: Via fields initialized
nta: Contact header created
nua_register: Adding contact URL 'localhost' to list.
nua: nh_create_handle: entering
Sending the invite to sip:10.88.3.204:5060...
nua: nua_invite: entering
nua(0x804d8b8): sent signal r_invite
nua: 

[Sofia-sip-devel] [NEWBIE] Can't send an invite

2008-06-05 Thread Stefano Sabatini
Hi all,

this is my first post here, I have a very newbie usage question and I
don't know if this is the right place wether to ask, so please tell me
if this is the case.

I'm writing a little application in my sandbox to understand the basic
mechanisms of sofia-sip, here it is the code:

---8---
#include stdlib.h
#include stdio.h
#include sofia-sip/nua.h

/* This callback will be called by SIP stack to
 * process incoming events
 */
void event_callback(nua_event_t   event,
int   status,
char const   *phrase,
nua_t*nua,
nua_magic_t  *magic,
nua_handle_t *nh,
nua_hmagic_t *hmagic,
sip_t const  *sip,
tagi_ttags[])
{
static unsigned int count = 1;
printf (arrived request number %d\n
I have received an event %s status %d %s\n,
count++, nua_event_name(event), status, phrase);

/* how to print a message? */
}

/**
 * Creates a communication handle, sends an INVITE request and destroys it.
 */
int send_invite (nua_t *nua, const char* callee)
{
nua_handle_t *handle;

/* create an handle */
handle = nua_handle(nua, NULL,
SIPTAG_TO_STR(callee),
TAG_END());

if (!handle) {
fprintf(stderr, Failed to instantiate an handle for the invite\n);
return -1;
}

fprintf(stderr, Sending the invite...\n);
nua_invite(handle,
   TAG_END());

nua_handle_destroy(handle);
return 0;
}

int main (int argc, char *argv[])
{
su_root_t *root;
nua_t *nua;

if (argc = 1) {
fprintf(stderr, Missing the destination target);
exit(1);
}

const char* callee = argv[1];

/* Initialize Sofia-SIP library and create event loop */

su_init ();
root = su_root_create (NULL);

nua = nua_create(root, /* Event loop */
 event_callback, /* Callback for processing events */
 NULL, /* Additional data to pass to callback */
 NUTAG_URL(sip:localhost:5060),
 TAG_END()); /* Last tag should always finish the sequence 
*/

/* send an invite to a remote sip client */
send_invite (nua, callee);

/* Run event loop */
su_root_run (root);

/* Destroy allocated resources */
nua_destroy (nua);
su_root_destroy (root);
su_deinit ();

exit(0);
}
---8---

It simply takes the first command line arguments and send an invite to
that address.

The problem is that although I can see:
[EMAIL PROTECTED] ~/s/S/C/libsofia sip-inviter sip:10.xx.x.204:5060
Sending the invite...

I don't see any SIP messages (using wireshark), also when I set a
bogus calle such as:
[EMAIL PROTECTED] ~/s/S/C/libsofia sip-inviter sip:foo:5060
Sending the invite...

I got the same result and no complain from sofia-sip, as I would
expect if it can't resolve the address.

What am I missing?

Many thanks in advance, best regards.

-
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
___
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel