< Previous by Date Date Index Next by Date >
  Thread Index Next in Thread >

[reSIProcate] RFC 3263, reSIProcate vs sipX


Hi all,

I've got a question about the SIP stack code.  This seemed like the right
list, my apologies if it should go to the user list.

I have a working SIP stack that does not support 3263 SRV and NAPTR lookups.
It only does a basic gethostbyname from DNS.  My mission is to add 3263
support, so I checked the most popular open source SIP stacks looking for a
DNS access class that I could pick up and drop into my stack.  The big ones
appear to be reSIProcate and sipX.  They both look good but have very
different designs, so I thought I'd check here for some help in picking one.

sipX has a class called SipSrvLookup that, at first glance, appears to do
exactly what I need.  On the other hand, reSIProcate looks like it has lot
more going on, so I wonder what functionality it must have that the other
does not.  I had more trouble figuring out where to start with this one, so
I have some questions that maybe yall can help with here:

- First, any general things to keep in mind in choosing between the two will
help.  I think I saw a FAQ on this somewhere, which led me to believe
reSIProcate has a lot more features, but I'm not sure particularly how that
applies to my case.  One thing I noticed is that reSIProcate has a lot more
abstraction around the DNS layer.  Does this buy you much?

- I need to call some method that will do "find me a SIP server using RFC
3263 methods if possible, otherwise gethostbyname."  In sipX this method
looks like SipSrvLookup::servers.  In reSIProcate, is it
DnsInterface::lookup?  That method returns a DnsResult object, which I guess
contains a list of servers that you search using its lookup method.
Hopefully I don't need to change my application code much.

- Once I identify the method I need to call, I need to pick out the
supporting classes that it needs.  I don't need the whole stack, just the
3263 part of it.  I guess this will be parts of resip/stack and rutil/dns?
Any help with this will simplify things a lot.

- I'm running on an ancient version of Montavista Linux with a 2.4.18
kernel, maybe soon to move to 2.4.20.  (No new kernel before its time...)  I
installed openssl version 0.9.8d, and did my configure and make.  I told it
to use DTLS, everything else default.  In resip/stack I got this error:

Making obj.debug.Linux.i686/MethodTypes.d
gperf -v > /dev/null 2>&1 && gperf -D --enum -E -L C++ -t -k '*'
--compare-strncmp -Z `echo MethodHash | sed -e 's/.*\///'` MethodHash.gperf
>  MethodHash.cxx
make[1]: *** [MethodHash.cxx] Error 127
make[1]: Leaving directory
`/home/dmason/sip/resiprocate/resiprocate-1.0.1/resip/stack'
make: *** [resiprocate] Error 2

Am I missing anything?  Here's my gcc -v:
Reading specs from /usr/lib/gcc-lib/i686-hardhat-linux/3.2.1/specs
Configured with: ../configure --host=i686-hardhat-linux
--build=i686-pc-linux-gnu --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin
--sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share
--includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec
--localstatedir=/var --sharedstatedir=/usr/share --mandir=/usr/share/man
--infodir=/usr/share/info --target=i686-hardhat-linux --enable-shared
--enable-languages=c,c++ --enable-threads=posix --enable-__cxa_atexit
--disable-multilib --with-cpu=pentium4 Thread model: posix gcc version 3.2.1
20020930 (MontaVista)

Thanks for your help!

Dave