Hello all,
Im using ser, with esteras softphone, and a couple of cisco ata186's. I
have to say I really like ser, as it is small fast, and reliable without
being over complicated.
I would like to know what other ser users and developers use for pstn
gateways? I have a openline4 card from voictronix, but there is no
software support for sip (When I bought it I thought I would use h.323).
I have looked at cisco's pstn gateway modules, but was turned off them
because of price, and lack of clear straight forward information to name
but two reasons.
Ideally what I would like to have is a solution that would support at
least 4 pstn lines (expandable to maybe 8), that would run on FreeBSD
(or at worst linux), works well with sip & ser, with high quality audio,
and minimal delays when dialing in out.
TIA,
-Emil
Hi All,
I need to implement an used based dialplans module on SER, so that depending
on the user information stored in the database, a certain prefix should be
inserted in the called number. Has anyone had a similar issue?
Thanks
Fernando
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.474 / Virus Database: 272 - Release Date: 4/18/2003
Folks,
I am currently playing with t_on_negative feature trying to implement
overflow routing (i.e. if original destination returns an error, then
request should be adjusted somehow and redirected to some, possibly
different, destination). I've started with the following config:
route {
[...]
rewriteFromRoute();
if (method == "INVITE") {
addRecordRoute();
};
if (method == "INVITE) {
t_on_negative("1");
};
t_relay_to("address1", "port1");
}
reply_route[1] {
rewritehostport("address2:port2");
append_branch();
}
But quickly found that after transaction was redirected to
address2:port2, ACKs, BYEs, 200K and CANCELS are still being forwarded
to address1:port1, despite containing valid Route fields pointing to
address2:port2. Then I've modified it as follows to let ser use
information from that field to route ACKs, 200OKs and BYEs:
route {
[...]
rewriteFromRoute();
if (method == "INVITE") {
addRecordRoute();
};
if (method == "INVITE" || method == "CANCEL") {
# INVITEs and CANCELs
if (method == "INVITE) {
t_on_negative("1");
};
t_relay_to("address1", "port1");
} else {
# ACKs, 200OKs, BYEs
t_relay();
};
}
reply_route[1] {
rewritehostport("address2:port2");
append_branch();
}
For the most of the time everything works like a charm - if
address1:port1 is unreachable or replies with an error the request is
being redirected to the second destination, BUT if the initiating UA
tries to cancel transaction when transaction is already redirected but
before receiving final "200 OK" from the second destination, the
CANCEL request is forwarded to address1:port1, not to address2:port2
as it should be. I've tried to modify setup as follows, thinking that
maybe in the case of CANCEL explicit specification of proxy address
confuses ser, but no avail - in this case ser forwards the CANCEL
request to its own address and eventually it dies with Too Many Hops.
route {
[...]
rewriteFromRoute();
if (method == "INVITE") {
addRecordRoute();
};
if (method == "INVITE") {
# INVITEs
t_on_negative("1");
t_relay_to("address1", "port1");
} else {
# CANCELs, ACKs, 200OKs, BYEs
t_relay();
};
}
reply_route[1] {
rewritehostport("address2:port2");
append_branch();
}
I think that such behaviour arises from the fact that ser after
branching a transaction doesn't keep an address this transaction was
forwarded to. In my opinion, it needs to be corrected, so that after
receiving CANCEL from the UA that initiated transaction ser probably
should CANCEL *all* branches of this transaction. To do this it needs
to be able to tell exactly where to send CANCELs.
What do you think?
-Maxim
Hi,
Context: I am currently writing a module that allows me to connect to a
policy server -- not unlike CPL. It essentially routes the message out to
the server and then receives a response. I get the message out ok, and will
receive a complete sip message back. The module main function is called in
the ser.cfg.
Here are my questions:
1) how do I get a message that I have received -- say in char *msg_buf -- to
be the message that is used for further routing? The policy server might
have changed any header fields or even created a (or several) completely new
message(s).
2) can the module send back intermediate messages, such as 1xx info, while
it is still continuing its work? This is to provide the user with feedback
should things take while ...
3) I also want the module to react to SIP response messages (4xx and so). I
assumed providing a response_function would do this, but apparently not (I
had a simple one which was just LOGging some text to the system log, but it
never did create any entries). So how can I do this?
thanks,
Stephan
--
Dr Stephan Reiff-Marganiec
Research Fellow
Department of Computing Science; University of Stirling
email: srm(a)cs.stir.ac.uk tel: 01786 46 7448
--
The University of Stirling is a university established in Scotland by
charter at Stirling, FK9 4LA. Privileged/Confidential Information may
be contained in this message. If you are not the addressee indicated
in this message (or responsible for delivery of the message to such
person), you may not disclose, copy or deliver this message to anyone
and any action taken or omitted to be taken in reliance on it, is
prohibited and may be unlawful. In such case, you should destroy this
message and kindly notify the sender by reply email. Please advise
immediately if you or your employer do not consent to Internet email
for messages of this kind. Opinions, conclusions and other
information in this message that do not relate to the official
business of the University of Stirling shall be understood as neither
given nor endorsed by it.
thx for the help so far, but the adventure continues:
compiled latest ser from CVS on sol8 from scratch..
and still using the same ser.cfg
but can't start ser anymore, that's what the log shows:
0(15264) loading module /usr/local/lib/ser/modules/mysql.so
0(15264) loading module /usr/local/lib/ser/modules/sl.so
0(15264) loading module /usr/local/lib/ser/modules/tm.so
0(15264) loading module /usr/local/lib/ser/modules/rr.so
0(15264) loading module /usr/local/lib/ser/modules/maxfwd.so
0(15264) loading module /usr/local/lib/ser/modules/usrloc.so
0(15264) loading module /usr/local/lib/ser/modules/registrar.so
0(15264) loading module /usr/local/lib/ser/modules/auth.so
0(15264) find_param_export: found <db_mode> in module usrloc [/usr/local/lib/ser/modules/usrloc.so]
0(15264) find_param_export: found <calculate_ha1> in module auth [/usr/local/lib/ser/modules/auth.so]
0(15264) find_param_export: found <password_column> in module auth [/usr/local/lib/ser/modules/auth.so]
0(15264) find_export: found <mf_process_maxfwd_header> in module maxfwd_module [/usr/local/lib/ser/modules/maxfwd.so]
0(15264) find_export: found <sl_send_reply> in module sl_module [/usr/local/lib/ser/modules/sl.so]
0(15264) find_export: found <sl_send_reply> in module sl_module [/usr/local/lib/ser/modules/sl.so]
0(15264) find_export: <rewriteFromRoute> not found
0(15264) parse error (79,19-20): unknown command, missing loadmodule?
0(15264) find_export: found <www_authorize> in module auth [/usr/local/lib/ser/modules/auth.so]
0(15264) find_export: found <www_challenge> in module auth [/usr/local/lib/ser/modules/auth.so]
0(15264) find_export: found <save> in module registrar [/usr/local/lib/ser/modules/registrar.so]
0(15264) find_export: found <lookup> in module registrar [/usr/local/lib/ser/modules/registrar.so]
0(15264) find_export: found <sl_send_reply> in module sl_module [/usr/local/lib/ser/modules/sl.so]
0(15264) find_export: found <t_relay> in module tm [/usr/local/lib/ser/modules/tm.so]
0(15264) find_export: found <sl_reply_error> in module sl_module [/usr/local/lib/ser/modules/sl.so]
ERROR: bad config file (1 errors)
0(15264) INFO: signal 15 received
0(15264) Memory status (pkg):
0(15264) qm_status (72d38):
0(15264) heap size= 1022872
0(15264) used= 0, used+overhead=25704, free=997168
0(15264) max used (+overhead)= 25704
0(15264) dumping all allocked. fragments:
0(15264) dumping free list stats :
0(15264) hash= 521. fragments no.: 1
0(15264) -----------------------------
anyone a pointer to what i have missed?
tia again
-k
i was messing around with the postgres build over the last couple of days.
I've rebuilt it several times. A few make installs later I went back
to edit my ser.cfg file, it was overwritten by the new installation.
ouch...
---greg
Greg Fausak
Hi,
Is anyone aware of any IPv6 compliant SIP softphone? When will sipsak implement
this feature?
Jaime
*******************************************************************************
Important.
Confidentiality: This communication is intended for the above-named person and
may be confidential and/or legally privileged. Any opinions expressed in this
communication are not necessarily those of the company. If it has come to you
in error you must take no action based on it, nor must you copy or show it to
anyone; please delete/destroy and inform the sender immediately.
Monitoring/Viruses
Orange may monitor all incoming and outgoing emails in line with current
legislation. Although we have taken steps to ensure that this email and
attachments are free from any virus, we advise that in keeping with good
computing practice the recipient should ensure they are actually virus free.
Orange PCS Limited is a subsidiary of Orange SA and is registered in England No
2178917, with its address at St James Court, Great Park Road, Almondsbury Park,
Bradley Stoke, Bristol BS32 4QJ.
*******************************************************************************
I load the auth.so and the default config.
Uncomment those to use auth.so
But when I call up two user agents not register in the database.
The only difference is there a warning for registration.
They are still calling each other. Why?
Has anybody started on support for Postgres?
I've checked out the layering and it seems
to be a fairly modular project. I haven't coded
in C for quite some time, but I think I can handle
it. Any hints? Should I even try?
The only thing I can see having problems with is
the build/configure system. How do I hook in a new
module? How are include directories and new libraries
added? I was pretty good with make, gmake, imake in my day
but I can't seem to find the head of the Make tree!
---greg
Greg Fausak
I'm trying to understand stateful vs. stateless transactions.
A stateless 'transaction' simply lasts as long as it takes to process
the current sip request. It is then forgotten.
However, a stateful transaction I'm having a little problem grasping.
For instance, if I t_relay() an INVITE, logically the transaction is
started....so when the response comes it isn't delivered to the main
route {} block, but instead it is delivered to the awaiting stateful
t_relay(), probably keyed by callid. So, for instance:
INVITE <-
401 Unauthorized ->
Is this entire sequence a transaction? Right after this the UA sends
an ACK, this is a transaction unto itself?
ACK <-
The UA then sends :
INVITE <-
100 Trying ->
180 Ringing ->
200 OK ->
All of these messages are a 'transaction' handled by t_relay()? The next
transaction is:
ACK <-
Finally, the last transaction would be (as an example):
BYE <-
200 OK ->
So the ser route{} block would need to recognize and handle
INVITE
ACK
BYE
in this context. Is that correct? If I was running 'statelessly'
I would need to handle and send every single message listed?
---greg