[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