At 10:06 PM 10/13/2003, Gavin Bensom wrote:
Jiri and all,
ser -V **** ser version info
version: ser 0.8.11 (i386/linux)
flags: STATS:Off, USE_IPV6, USE_TCP, DISABLE_NAGLE, DNS_IP_HACK,
SHM_MEM, SHM_MMAP, PKG_MALLOC, F_MALLOC, FAST_LOCK-ADAPTIVE_WAIT
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16,
MAX_URI_SIZE 1024, BUF_SIZE 65535
@(#) $Id: main.c,v 1.162.2.5 2003/08/27 16:04:35 andrei Exp $
main.c compiled on 21:37:39 Sep 1 2003 with gcc 3.2
OS ************
Red Hat 9
[root@jiffypop html]# uname -a
Linux jiffypop 2.4.20-20.9smp #1 SMP Mon Aug 18 11:32:15 EDT 2003 i686
i686 i386 GNU/Linux
I tried implementing voicemail by running SER twice simultaneouly on the same box. The
first is running with my ser.cfg [pid 24264 below], and the second is with a slight
variation of voicemail.cfg [pid 23911 below] as posted recently by Jiri.
This is all done with the 0.8.11 major release of SER. I didn't take the files from
CVS as suggested. I'll try that soon. Are there any changes in CVS which are
incompatible with the 0.8.11 database configuration? Are there any other changes which I
would have to be careful of with respect to compatibility?
The stable branch (the one with the special tag) is fully compatible to what we released
as 8.11. The same for SEMS. Really better use them as I tested the example I sent over
with them.
Two instances of SER running on the same box works fairly well. I occasionally get an
error via syslog which looks like this:
Oct 13 12:36:07 jiffypop Sems[23889]: Error: while getting return code from Ser
Below is an example of syslog output when a user is part of the voicemail group but has no
user locations in the location database.
Oct 13 12:33:50 jiffypop /usr/local/sbin/ser[24264]: no location-uri is in vm group
Oct 13 12:33:50 jiffypop /usr/local/sbin/ser[24264]: route[3]:no user location: foward to
voicemail
Oct 13 12:33:50 jiffypop ser[23911]: t_newtran created
Oct 13 12:33:50 jiffypop ser[23911]: **************** vm start - begin ******************
Oct 13 12:33:50 jiffypop ser[23911]: **************** vm start - end ******************
Oct 13 12:33:50 jiffypop /usr/local/sbin/ser[24263]: ACC: transaction answered:
from="V11 Main" <si
p:info@10.10.10.49>;tag=fcad7738-6281-77bd-a9bd-0c525a6382fa,
i-uri=sip:6670@10.10.10.49, method=IN
VITE, o-uri=sip:sgaudio@10.10.10.49:5090, code=200
Oct 13 12:33:50 jiffypop /usr/local/sbin/ser[24266]: no location-uri is in vm group
Oct 13 12:33:50 jiffypop /usr/local/sbin/ser[24266]: route[3]:no user location: foward to
voicemail
Oct 13 12:33:50 jiffypop /usr/local/sbin/ser[24266]: ACC: request acknowledged:
from="V11 Main" <si
p:info@10.10.10.49>;tag=fcad7738-6281-77bd-a9bd-0c525a6382fa,
i-uri=sip:sgaudio@10.10.10.49, method
=ACK, o-uri=sip:sgaudio@10.10.10.49:5090, code=200
Oct 13 12:33:52 jiffypop /usr/local/sbin/ser[24265]: no location-uri is in vm group
Oct 13 12:33:52 jiffypop /usr/local/sbin/ser[24265]: route[3]:no user location: foward to
voicemail
Oct 13 12:33:52 jiffypop ser[23909]: t_newtran created
Oct 13 12:33:52 jiffypop ser[23909]: **************** vm end - begin ******************
Oct 13 12:33:52 jiffypop ser[23909]: **************** vm end - end ******************
Oct 13 12:33:52 jiffypop /usr/local/sbin/ser[24266]: ACC: transaction answered:
from="V11 Main" <si
p:info@10.10.10.49>;tag=fcad7738-6281-77bd-a9bd-0c525a6382fa,
i-uri=sip:sgaudio@10.10.10.49, method
=BYE, o-uri=sip:sgaudio@10.10.10.49:5090, code=200
Below is an example of a call that gets transferred to voicemail via a failure_route
[timeout or "busy" reply]. Notice that the ****vm end - begin******* and *****vm
end - end ****** entries are missing. Essentially, the voicemail instance of SER isn't
processing the BYE messages. I'm not sure why. I guess the other instance of SER is
processing them.
Oct 13 12:29:07 jiffypop /usr/local/sbin/ser[24264]: failure_route[4]
Oct 13 12:29:07 jiffypop /usr/local/sbin/ser[24264]: route[4]:Call tried and failed:
forward to voi
cemail
Oct 13 12:29:07 jiffypop ser[23914]: t_newtran created
Oct 13 12:29:07 jiffypop ser[23914]: **************** vm start - begin ******************
Oct 13 12:29:07 jiffypop ser[23914]: **************** vm start - end ******************
Oct 13 12:29:14 jiffypop /usr/local/sbin/ser[24265]: ACC: transaction answered:
from=<sip:650218888
<mailto:4@10.10.10.5>;tag=12FB6358-82B>4@10.10.10.5>;tag=12FB6358-82B,
i-uri=sip:6633@10.10.10.49:5060;ftag=12FB6358-82B;lr=on, method=BYE
, o-uri=sip:gnoah@10.10.10.160:5060, code=200
I think these [above log messages] types of transactions are responsible for the above
mentioned SEMS error, but I'm not sure.
So I don't understand from your description -- is there anything what is not working
except
some error messages?
What I really need now is a way to deal with the timer
issue. Jiri, I don't think I need multiple timers. I never want SER to timeout calls
placed to the PSTN. I just want one timer which I can apply to selective transactions.
Well, there is _always_ a timer for every transaction and the timer has always
the same value. The only thing which can be made distinctive is how this timer
is handled.
Right now, the timer causes all calls to fail. I
understand that I can change processing on failure, and I am doing this, but it would be
very nice if the timer could be used only for specific transactions. I think this would
involve setting it through a function call instead of a modparam call, but I don't
know since I haven't actually looked at any code.
The timer can't be removed -- it has a kind of "garbage collection"
responsibility
and a server without timers would run out of memory very quickly.
What you could do is forwarding to gateway statelessly -- then, there would be
indeed no timer involved. I don't think, that makes sense though for a couple
of other reasons like accounting and/or tcp2udp forwarding.
I've also tried to just relay PSTN calls again
(re-relay) through a failure route after the timer expires, but that doesn't seem to
be working too well. Is this possible?
What does it mean "it doesn't seem to be working too well"?
Anyway, I think it really would not work -- it would end up
canceling and re-ringing the PSTN destination, which is a kind
of undesirable behviour.
So in summary, I don't think there is an easy option for single-instance
ser and multiple-timer. A really straight-forward option is support in
SER.
Also, I think its not necessary to implement the
"single-ser" config that is capable of running voicemail if this dual
configuration works well. Of cource, the "single-ser" config would make it a
little simpler for users.
I would actually love to have it, it is just a problem of my time.
-jiri