Hi!
I'm running ser-0.9.6, on FreeBSD 6.1-stable, database backend
is postgresql version 8.1.3.
Today I got errors in logfiles, saying:
messages.2.bz2:May 29 14:35:03 <XXX> /usr/local/sbin/ser[51448]:
ERROR:avpops:dbrow2avp: dbrow contains NULL fields
The similar problem reported in:
http://lists.iptel.org/pipermail/serusers/2005-May/019681.html
with much more detailed description of error, database contents
and config samples.
Patch is trivial, and looks more like a fix to copy'n'paste error:
in mysql/val.c function str2val states:
if (!_s) {
memset(_v, 0, sizeof(db_val_t));
VAL_TYPE(_v) = _t;
VAL_NULL(_v) = 1;
return 0;
}
VAL_NULL(_v) = 0;
and the last line mentions that 'well, that's value is not NULL'.
In postgresql/db_val.c, line 182, function str2valp, the same statement is the:
if (!_s) {
DLOG("str2valp", "got a null value");
VAL_TYPE(_v) = _t;
VAL_NULL(_v) = 1;
return 0;
}
without explicit notification that this is not-NULL value.
More than, nowhere else in this function VAL_NULL(_v) not set to 0.
So, if a value _v.val contained anyting but 0 at the function start,
resulting value will be threated as NULL despite the fact, that _s is NOT NULL.
Patch is obvious, just add VAL_NULL(_v)=0; after cited block (line 188) and
everyting will be ok.
At least for me it's ok for some hours :)
Hi, all.
I know this is a little bit out off Topic. I'm trying to install
CDRTool for CDR normalization and billing with SER. I get the things allmost
working (freeradius + MySQL + SER) But i can't get the CDRs normalized with
price. Can anybody please help me or post a CDRTool global.inc working file?
.
Thanks a lot in advance any help will be highly apreciated!
Hello,
We have a few hundred users registered to a openser we are running and
everything works fine, however i get som error messages in the logs I
would like to get rid of...
//sbin/openser[28867]: ERROR: get_hdr_field: bad to header
/sbin/openser[28867]: ERROR: bad header field
/sbin/openser[28867]: ERROR: get_hdr_field: bad to header
/sbin/openser[28867]: ERROR: bad header field
/sbin/openser[28867]: ERROR:parse_from_header: bad from header
/sbin/openser[28867]: xl_get_from: ERROR cannot parse FROM header
/sbin/openser[28867]: ERROR: get_hdr_field: bad to header
/sbin/openser[28867]: ERROR: bad header field
/sbin/openser[28867]: xl_get_to: ERROR cannot parse TO header
/sbin/openser[28867]: [REGISTER] from [<null>] to [<null>]
/sbin/openser[28867]: ERROR: get_hdr_field: bad to header
/sbin/openser[28867]: ERROR: bad header field
/sbin/openser[28867]: ERROR:maxfwd:is_maxfwd_present : parsing
MAX_FORWARD header failed!
/sbin/openser[28867]: ERROR:parse_from_header: bad from header
/sbin/openser[28867]: insert_RR(): From parsing failed
/sbin/openser[28867]: record_route(): Error while inserting Record-Route
line
/sbin/openser[28867]: ERROR: get_hdr_field: bad to header
/sbin/openser[28867]: ERROR: bad header field
/sbin/openser[28867]: find_first_route: Error while parsing headers
/sbin/openser[28867]: analyzing REGISTER request
/sbin/openser[28867]: ERROR: get_hdr_field: bad to header
/sbin/openser[28867]: ERROR: bad header field
/sbin/openser[28867]: find_credentials(): Error while parsing headers
/sbin/openser[28867]: pre_auth(): Error while looking for credentials
/sbin/openser[28867]: ERROR: get_hdr_field: bad to header
/sbin/openser[28867]: ERROR: bad header field
/sbin/openser[28867]: ERROR: get_hdr_field: bad to header
/sbin/openser[28867]: ERROR: bad header field
/sbin/openser[28867]: ERROR: build_res_buf_from_sip_req: alas,
parse_headers failed
/sbin/openser[28867]: pre_auth(): Error while sending 400 reply
/
Anyone has a clue what I can do to debug this to find out where the
request are coming from or what can be done to stop the invalid(?)
requests from being processed and clutter my logs?
Thanks
Lars Sundqvist
Hi, I'm having some doubts on how to use/do some things with
dispatcher module and failure route.
I'll try to explain my problem.
On my main route block I select the destination (using ds_select_dst)
to where I want to send the message, and indicate that responses
should pass through the failure_route, I also add a header with some
things that are needed by the next proxy. On the failure route when I
get 408 Time Out I mark the previous destination and select the next
destination. until here everything goes fine. After this I want to
change the message that I'm going to send to next proxy, for this I
need to remove the header that I inserted previously on the main route
block and access the destination URI that the ds_next_dst updates.
My first doubt is that when I print the destination URI it has the
previous destination ( the one used in the main route block) but when
it relay's the message it goes to the right destination (the one
returned from ds_next_dst), Is there any reason for this ? I'm using
$du to access it, is this wrong?
My second doubt is, what sip message do I have access to in the
failure route (the one I received or the one I sent out)? I ask this
because I try to remove the header I inserted in the main route block
and it does not remove anything but when I relay the message the
header I tried to remove goes on the message.
Thanks in advance,
José Carlos Silva
Hi guys,
I'd like to propose another possibility for a highly-available and
scalable system design based on SER:
The problems I've encountered for scalable systems are:
- Distribution of the user location and alias location among the nodes
(user location is based on registrations, alias location comes from
web interfaces and is used for call forwarding).
- Reloading up to date location tables after breakdown and recovery of a
node
So I'm just thinking loud about the following provisioning system:
- Write a client which fulfills the this demands:
- Receive one or more locations from SER via a SER module or from a
web application and distribute them to other
known clients. Take care of retransmissions if a client isn't
reachable or reports a temporary failure.
- Receive one or more locations from other clients and write
them into the SER FIFO. If writing into the FIFO fails, try to
write directly into the database (location-table, alias-table etc.).
Report a temporary failure if this also fails.
Maybe a centralized server should be used which receives the locations
from the clients and distributes them to other clients, so that the
nodes just know about the server and nothing about other nodes. This
would make integration of new nodes easy.
On the other hand, it's another single point of failure, so a
decentralized solution should be considered. But that would mean that
you've to inform every node about the existence of a new node.
The protocol used between the nodes should be simple and fast. So I
think SOAP drops out here. Maybe XMLRPC or ICE
(http://www.zeroc.com/ice.html) could be used.
One might think now why not just use replication on SIP layer, but
t_replicate only supports one peer and you've no possibility to get
locations on a node while it's down. Replication of other location
tables like the alias-table is also not possible.
I'd be willing to release these parts as GPL for creating an open
framework for carrier-grade SER integration, so any feedback,
improvements or flames are highly welcome.
Cheers,
Andy
Hi Gang.
The company I work for is interested in buying DIDs from Europe. Of course
the connection should be SIP.
If any of you is selling them, please contact me off the list.
Regards
Juan Ferrari
VoIP & Telecom Specialist
United World Telecom
Phone: +1561-276 7156 ext. 302
Hello to all
can someone recommend me a nice SIP client with video for windows??
I tried X-Lite 3.0 but it's a lousy piece of software.....
Does someone knows about a better software?
Regards
Joao Pereira
Glenn Dalgliesh wrote:
>This is from previous list
>
>"i Glenn,
>
>For this feature to work, you need to be sure that you do record_route() on
>the INVITE and that "append_fromtag" RR module param is not disable.
>
>regards,
>bogdan "
>
>
Yes i have read that thread. i always record_route all messages before
do things.
if (!method=="REGISTER")
record_route();
by the sample openser.cfg
and for be sure i have also forced:
modparam("rr","append_fromtag",1)
>-----Original Message-----
>From: users-bounces(a)openser.org [mailto:users-bounces@openser.org] On Behalf
>Of tele
>Sent: Wednesday, June 28, 2006 11:05 AM
>To: users(a)openser.org
>Subject: [Users] more on accounting
>
>Hi all,
>
>I'm using OpenSER v1.0.1 and i have done an accounting compatible with
>my billing system.
>Now i have problem with detection of flow direction for billing reason.
>
>i'm talking about openser 1.0.x:
>
>the problem is when the BYE come from callee.
>i know the problem is solved in openser1.1.x with the
>
>modparam("acc", "detect_direction", 1)
>
>i have read in modules documentation of 1.0.x that i can use
>is_direction() of RR module for detect call flow direction but it says
>that this must be called after loose_route()
>
>so for the accounting i must call setflag before loose_route() but what
>can i do if i want detect call flow
>before of exec setflag?
>
>Hmmm i think that i must install OpenSER 1.1.x and test with it
>
>:tele
>
>
>
>_______________________________________________
>Users mailing list
>Users(a)openser.org
>http://openser.org/cgi-bin/mailman/listinfo/users
>
>
>
Hi,
In the textops module doc
(http://openser.org/docs/modules/1.0.x/textops.html#AEN124) there is an
example that demonstrates how to replace URI in the header "To" with the
message URI:
# replace the uri in to: with the message uri (just an example) if (
subst('/^To:(.*)sip:[^@]*@[a-zA-Z0-9.]+(.*)$/t:\1\u\2/ig') ) {};
After I've fixed a small mistake (instead of /t: I put /To:) it worked.
But I don't understand how does it work. It looks like "u" is
substituted by URI from R-URI but I didn't find such core variable.
Could somebody explain me?
Thank you in advance,
Leonid Fainshtein
Thanks, I've looked into but it works only with 1.1.x version...!!!
What's the different with avp_db_store command, may I use it to store something in my SQL DB? I'll try to do but I have some problems, he doesn't register...
I have another question: I need to work over sdp messages, is possible to do a parsing, always using the scripts language...?
Any thought?
Thanks
Davide
-----Messaggio originale-----
Da: Daniel-Constantin Mierla [mailto:daniel@voice-system.ro]
Inviato: mercoledì 5 aprile 2006 19.15
A: D'Addelfio Davide
Cc: Jayesh Nambiar; Bogdan-Andrei Iancu; openser
Oggetto: Re: R: [Users] using AVPs to write into database
Hello,
On 04/05/06 18:01, D'Addelfio Davide wrote:
>
> Hi guys, I have a similar problem, maybe easier. I'm new in openser so
> I'd like to have some help.
>
> I'd like openser create a table in MySQL db when receive an INVITE, a
> row with from uri, method and something else, I've look into modules
> docs but I've not understanding at all...could you help me, please?
>
if you are using openser development version, then take a look at
avp_db_query() in avpops module
http://openser.org/docs/modules/1.1.x/avpops.html#AEN239
Cheers,
Daniel
> Thanks for reply
>
> Davide
>
> ------------------------------------------------------------------------
>
> *Da:* users-bounces(a)openser.org [mailto:users-bounces@openser.org]
> *Per conto di *Jayesh Nambiar
> *Inviato:* mercoledì 5 aprile 2006 15.53
> *A:* Bogdan-Andrei Iancu
> *Cc:* openser
> *Oggetto:* Re: [Users] using AVPs to write into database
>
> Hi Bogdan,
>
> Thanks for the reply and sorry for sending the earlier mail 4 times as
> yahoo was not responding peoperly.
>
> When I do an avp_write(), why does the avp name get stored in the uuid
> column?
>
> I am not using any uuid as of now. I also tried to add the username of
> the person who is calling but it again creates two rows, one with the
> value as
>
> username and other row with the value as forwarded number.
>
> I thought if there is a way to insert the username also, it wud be
> easier to check, if the incoming call for that user is to be forwarded
> or not.
>
> I get the following in my usr_preferences table after I dial 86
> followed by any number.
>
> +-----------+----------+--------+-----------+------+-----------------------------+---------------------+
> | uuid | username | domain | attribute | type | value | modified |
> +-----------+----------+--------+-----------+------+-----------------------------+---------------------+
> | s:callfwd | | | callfwd | 0 | sip:5515551478@202.80.61.10 |
> 2006-04-05 19:10:49 |
> +-----------+----------+--------+-----------+------+-----------------------------+---------------------+
>
> The script snippet is as follows:
>
> if(uri=~"^sip:86[0-9]*@") {
>
>
> strip(2);
> avp_write("$ruri", "s:callfwd");
> #avp_write("$from/username", "i:999");
> #avp_db_store("i:999", "i:/usr_preferences");
> avp_db_store("s:callfwd", "s:callfwd/usr_preferences");
> sl_send_reply("200", "OK");
> exit;
> };
>
>
> */Bogdan-Andrei Iancu <bogdan(a)voice-system.ro>/* wrote:
>
> Hi,
>
> you need two steps:
> 1) write the ruri (after strip) into an AVP - use avp_write()
> 2) write the avp into the db - use avp_db_store()
>
> regards,
> bogdan
>
> Jayesh Nambiar wrote:
>
> > Hi all,
> > I am trying to implement the call forwarding feature in openser. The
> > forwarding part is fine. But I have the follwing scenario:
> > Whenever a user needs to change his forwarding number, he should be
> > able to do so from his end device only.
> > For eg: He first presses 86 and then the 10 digit number to be
> > forwarded. Here the 86 has to be stripped and the 10 digit number
> > should be inserted into the call forward value column of the
> > preferences table.
> > Also if he wants to remove the forwarded number, he can do so by
> > pressing say for eg: 87. on receiving this number openser should
> > delete that value from the
> > table.
> > Is this possible. I tried to do the following, but somehow it
> does not
> > change the
> > value.
> > if(uri=~"^sip:86[0-9]*@") {
> > if(avp_db_load("$from/username", "s:callfwd")) { #check
> > if call-fwd feature is enabled for the user
> > log(1,"AVP condition returned true");
> > strip(2);
> > avp_write("$ruri", "s:callfwd");
> > avp_print();
> > log(1,"AVP written");
> > sl_send_reply("200", "OK");
> > exit;
> > };
> > };
> > Is avp_write the proper method or I guess avp_db_store can also help
> > me. The avp_print() function also does not show me anything in the
> > log. Are there any
> > logical mistakes or I have mis-interpreted the syntax of avpops
> functions.
> > Please help me in thsi regard.
> > Thanks a lot in advance.
> > Jayesh.
> >
> > ------------------------------------------------------------------------
> > Jiyo cricket on Yahoo! India cricket
> >
> > Yahoo! Messenger Mobile
> >
> > Stay in touch with your buddies all the time.
> >
> >------------------------------------------------------------------------
> >
> >_______________________________________________
> >Users mailing list
> >Users(a)openser.org
> >http://openser.org/cgi-bin/mailman/listinfo/users
> >
> >
>
> ------------------------------------------------------------------------
>
> Jiyo cricket on Yahoo! India cricket
> <http://us.rd.yahoo.com/mail/in/mailcricket/*http:/in.sports.yahoo.com/crick…>
> Yahoo! Messenger Mobile
> <http://us.rd.yahoo.com/mail/in/mailmobilemessenger/*http:/in.mobile.yahoo.c…>
> Stay in touch with your buddies all the time.
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users(a)openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
>