Holding Bin
About
The Holding Bin is a nice place to store useful information before there exists a final destination for it. Many of these notes and ideas come from the development team and power users on the IRC channel or mailing list and are too valuable to be lost to time.
If you see a section that now has a page that is a good place to contain it, please move it to there and embellish the narrative to make it readable and useful.
Some of the following items need explanation by developers or other research to be transferred to a final Confluence page.
Debian vs Others
(08:05:31) strata: i decided to give freeswitch a try last night after experimenting with asterisk for a while.
(08:06:09) strata: the fact that debian 8 is considered a "reference implementation" with centos install docs essentially being "meh. just use debian 8" and freebsd install docs being about the same...
(08:06:44) strata: this concerns me. if freeswitch has problems compiling on anything except the "reference implementation OS", what other problems does it have?
(08:07:22) strata: code that can't even cross distro boundaries probably has a host of other problems.
(10:47:05) SwK: strata, the reason the reference implementation is on Debian 8 and not Centos is because Centos doesn't have there required up-to-date libraries required for all the features on FreeSWITCH to work... if you dont want all the features, we already build FreeSWITCH on Centos7 64 and provide RPMs...
(10:48:02) SwK: strata, now if you want 100% feature parity with Centos and Debian, you're going to be getting a lotta packages to work on Centos and upgrading so many packages that by the time it's done you really won't be running Centos7 anymore it'll be Centos 7.5
(10:48:08) strata: why wouldn't you just create a freeswitch repo and put the up to date libraries in there with the freeswitch pacakge? (on centos)
(10:48:33) SwK: and I dont mean centos 7.5 as in what they are calling point 5 but what's 1/2 way to centos 8 which they haven't announced yet
(10:49:07) SwK: strata, I'd be more than happy to do that if someone wanted to fund the man month of work that's going to be required re-packaging all the updated libraries
(10:49:10) troffasky: strata, "just"? presumably it's a fair bit of work
(10:50:04) strata left the room ("WeeChat 1.3").
(10:50:07) SwK: strata, even on debian there's close to a full gig of dependancy tarballs alone
(10:51:15) SwK: and there were only a small handfull of packages we needed to update and push fixes upstream to Debian for
(10:51:53) SwK: with Centos some of the packages we need for 100% feature parity we can't even redistribute due to patent and licensing issues... debian figured out how to work around those issues somehow
(10:55:39) troffasky: speaking of debian...how does freeswitch fare on stretch/sid?
(10:56:06) SwK: troffasky, havent tried it lately...
(10:56:16) SwK: they are way unstable at this point
(10:56:34) BoteMan: Admittedly, the "Installation" tree in Confluence should be reorganized to explain this at the top level, then direct users to the best installation path. Currently, it retains the old method where the choice of linux distribution was broader.
N.A.T.
Lots of good network address translation discussion in FreeSWITCH Cookbook. Import to Confluence.
DNS vs IP Address
(17:39:34) SwK: jglover, there are settings in the directory and on the sofia profiles for what domains they support... the stuff in vars.xml is just an example...
(17:40:27) jglover: SwK: I think the issue is that my domain names are being set in the hosts file
(17:40:41) jglover: Im trying to simulate production locally and I'm wondering if that's screwing things up
(17:40:55) jglover: when I use the ip address it works perfectly
(17:41:11) BoteMan: I found that if FreeSWITCH uses a DNS name, the phones had better register using that name and not i.p. addresses or it won't work :-(
(17:41:38) SwK: BoteMan, theres a setting for that too lol
(17:41:56) BoteMan: I KNEW IT!!
(17:42:25) SwK: jglover, not sure... but if you are using IPs on phones then doing something else in the FS configs like bote said you can have issues
(17:42:35) SwK: that's where the force domain settings on the sofia profiles come into play
(17:43:18) jglover: I'm trying to set things up using the multi-tenant directions, so I have commented out the three force options as outlined in the docs
(17:43:34) jglover: and set the domain to be test.local
(17:43:54) jglover: and changed the directory domains to reflect that
(17:43:59) SwK: then you have to force other settings in the phones
(17:44:08) SwK: like force a proxy setting and domain
(17:44:21) jglover: hm. I don't understand how that works.
(17:44:31) SwK: if you have the force options turned off
(17:44:41) SwK: then freeswitch matches the user on the domain they send
(17:45:00) SwK: so if they are trying to register to test.local and there is no test.local domain in the directory they can't register
(17:45:48) SwK: but if you have mydomain.com in the directory and not in DNS then the phones cant find it, so you use the proxy settings in the phone to specify the IP of the FS box and the phone still sends the correct domain but to an overridden IP address
(17:46:10) SwK: its like saying hey use this hostname but instead of doing the DNS lookup just send it to this IP over here
(17:46:14) jglover: so, this is not related to freeswitch, but the phones (x-lite and zoiper) don't seem to be even trying to connect to test.local. I am using tcpdump to monitor connections
(17:46:49) jglover: otherwise I do actually know what you're talking about, because I've seen similar errors via fs_cli
(17:47:20) jglover: it's strange. if I use 192.168.2.227:5080 then they connect perfectly but test.local:5080 i get nothing
(17:47:47) jglover: if I do nmap on that host however, I get a ping
(17:47:54) jglover: anyways, that's not really related to FS
(17:49:31) SwK: jglover, the proxy settings on the soft phone are relative to the that piece of software... I know there is a proxy setting on them, but without looking at each one I couldnt tell you what i tis
(17:49:43) SwK: usually it's in the advanced section of the sip client config
(17:51:07) BoteMan: Yeah, the phones can't see the /etc/hosts on the FreeSWITCH box so they have no idea what test.local resolves to.
(17:51:26) jglover: BoteMan: I have it resolved on my computer as well
(17:51:28) jglover: it's in both
(17:52:40) jglover: I have this guess that perhaps they are just doing a DNS lookup for domains that don't look like ip addresses. but could be wrong.
(17:52:49) jglover: It seems bizarre that I wouldn't even get a ping.
(17:53:14) jglover: in that case the domain would resolve to nothing (obviously, invalid TLD) and I would get a 503, which is what's happening.
mod_commands
tone_stream
I discovered in XML_Switch_Configuration an example of the ability to impart attack fade-in and release fade-out to generated tone sequences, but I'm not entirely sure how it works.It also appears in the stock config files that install with a fresh copy of FS.
<action application="playback" data="tone_stream://v=-10;%(100,0,941.0,1477.0);v=-3;>=26;+=1;%(1400,0,350,440)"/>
=> See TGML for complete listing of parameters and definitions!!
Caller*ID
There are at least 10,791,253 different expressions of Caller*ID in FreeSWITCH. Here are the ones that I have been able to divine through trial-and-error.
Example:
${caller_id_name}
caller_id_name - Caller*ID name inbound from leg A caller phone; neither setting in extension nor exporting sends data to Leg B
caller_id_number - Caller*ID number inbound from leg A caller phone; neither setting in extension nor exporting sends data to Leg B
*effective_caller_id_name - null until set in the dialplan or a script, automatically exported to Leg B *DEPRECATED per anthm
*effective_caller_id_number - null until set in the dialplan or a script, automatically exported to Leg B *DEPRECATED per anthm
outbound_caller_id_name - neither setting in extension nor exporting sends data to Leg B
outbound_caller_id_number - neither setting in extension nor exporting sends data to Leg B
outbound_caller_name - system-wide variable set in vars.xml; used by conference outdial, NOT by bridge even when exported
outbound_caller_id - system-wide variable set in vars.xml; used by conference outdial, NOT by bridge even when exported; note the absence of "number" on the end
Logging
Information on setting loglevel and the interaction of the various log and debug settings needs to be much easier to find.
The prefix "variable_" is displayed in CDRs and other places to indicate that the value is a variable. To work with the variable in code strip off the prefix "variable_" and use the result.
Multiple Calls
leg_delay_start can delay ringing of selected outbound calls to permit other calls an earlier chance to get call, but variables are only documented on that linked page
mod_sofia
As of 2014.05.19
Here is the reference material for two sofia parameters.
Auth-messages has been in the source for quite a while but not documented.
Auth-subscritptions is brand new.
Please add these to new wiki after RussT gives the OK, it's currently being worked in FS-6466 -Authenticate to see issue details
auth-messages
"true" or "false"
If true the user agent will authenticate MESSAGE requests using Digest access authentication
<param name="auth-messages" value="false"/>
auth-subscriptions
"true" or "false"
If true the user agent will authenticate SUBSCRIBE requests using Digest access authentication
<param name="auth-subscriptions" value="false"/>
sofia global debug presence
-ERR Usage: siptrace <on|off>|capture <on|off>|watchdog <on|off>|debug <sla|presence|none
Sofia
\[10:41\] <@bkw\_\_> sofia\_contact(\*/${dialed\_user}@${dialed\_domain})
\[10:41\] <@bkw\_\_> its the \*/
01\[10:43\] <BoteMan> What does that \*/ in the sofia\_contact string do? Is that a regex that gets stuffed with something?
\[10:43\] <@bkw\_\_> BoteMan: looks for the user in all profiles
\[10:43\] <@bkw\_\_> BoteMan: you can specify a profile name or \*
\[10:44\] <witchdoc> bkw\_\_: hmm i tried both methods. sofia\_contact and user/username
\[10:44\] <witchdoc> both failed with : mod\_dptools.c:3943 Can't find user \[[karsten@somewhere.domain](mailto:karsten@somewhere.domain)\]
\[10:44\] <@bkw\_\_> user/ is just a proxy for dial-string in the directory
\[10:47\] <witchdoc> BoteMan: did you have alphanumeric usernames?
\[10:47\] <BoteMan> Nope. Just plain numerals.
\[10:47\] <@bkw\_\_> witchdoc: shouldn't matter
01\[10:48\] <BoteMan> Ultimately found that sofia/internal looks in the public context because that's what's in sip\_profiles/internal.xml
01\[10:48\] <BoteMan> But user/ does some magic and looks in "default" context
\[10:48\] <witchdoc> bkw\_\_: it matters, cos FS is on register caseinsensitive but in the dialplan it is casesensitive
\[10:48\] <@bkw\_\_> witchdoc: no its not
\[10:48\] <witchdoc> yes it is, sure
\[10:48\] <@bkw\_\_> witchdoc: examples
\[10:48\] <@bkw\_\_> are you using regex to match these case sensitive thingys?
\[10:49\] <witchdoc> bkw\_\_: for example - i have an username like "Username123" - the user registered with "uSerName123" - it is allowed to do so.
\[10:49\] <@bkw\_\_> then in dialplan how art thou matching this?
\[10:49\] <witchdoc> bkw\_\_: if i dialed "Username123" with sofia/profile/Username123 - it failed
\[10:50\] <witchdoc> bkw\_\_: so i matched the dialplan with the ?i magic
\[10:50\] <@bkw\_\_> oh you need to learn the difference between **auth-user** and **user**
\[10:50\] <@bkw\_\_> <param name="inbound-reg-force-matching-username" value="true"/>
\[10:50\] <@bkw\_\_> will prevent that sillyness
\[10:50\] <@bkw\_\_> at least thats the INTENT
\[10:51\] <witchdoc> bkw\_\_: i have this already enabled
\[10:52\] <witchdoc> bkw\_\_: and as i started with 1.2.8 or so, this sillyness was allready there
\[10:52\] <@bkw\_\_> if (zstr(username) || zstr(to\_user) || strcasecmp(to\_user, username)) {
\[10:52\] <@bkw\_\_> LOL, I think thats a bug to use strcasecmp there
\[10:52\] <@bkw\_\_> witchdoc: I would file a JIRA
\[10:52\] <@bkw\_\_> because User1234 and uSER1234 aren't the same in my book.
\[10:53\] <@bkw\_\_> because that needs a little discussion.
\[10:53\] <@bkw\_\_> because it says 'Optional check that auth name == SIP username'
\[10:53\] <@bkw\_\_> User1234 != uSER1234
\[10:54\] <witchdoc> in kamailio (1.5) it is allowed
\[10:54\] <@bkw\_\_> REALLY?
\[10:54\] <witchdoc> thats the problem, cos i migrated from that to FS and it breaks
\[10:54\] <witchdoc> YES
\[10:54\] <@bkw\_\_> file jira either way, this is a good item to debate
\[10:58\] <witchdoc> bkw\_\_: hmm only <action application="bridge" data="sofia/external/${dialed\_extension}%${domain\_name}"/> as dialstring works. i get crazy...
\[10:58\] <pantera\_neagra> witchdoc: is @ not %
\[10:59\] <witchdoc> pantera\_neagra: that dialstring \*works\*! if i know the profile
\[10:59\] <@bkw\_\_> pantera\_neagra: % is valid
\[10:59\] <@bkw\_\_> witchdoc: run sofia\_contact at fs\_cli
\[10:59\] <@bkw\_\_> sofia\_contact \*/user@domain
\[10:59\] <@bkw\_\_> does that return anything?
\[11:00\] <@bkw\_\_> pantera\_neagra: [FAQ: What is the difference between using a % and @ in a sofia dial string?](../../Miscellaneous/FAQ/index.mdx#q-what-is-the-difference-between-using-a--and--in-a-sofia-dial-string)
\[11:00\] <@bkw\_\_> witchdoc: guessing you forgot to alias the domain to your profile?
\[11:00\] <witchdoc> error/user\_not\_registered
\[11:00\] <@bkw\_\_> herpa derp
\[11:00\] <@bkw\_\_> witchdoc: sofia status says?
\[11:00\] <witchdoc> bkw\_\_: i think so
\[11:00\] <@bkw\_\_> is domain an alias to the profile?
\[11:01\] <@bkw\_\_> pastebin sofia status please
\[11:01\] <pantera\_neagra> bkw\_\_: lol i'm stupid :D
\[11:04\] <witchdoc> bkw\_\_: is an alias of my sipdomain an must-have for every profile?
FreeSWITCH version 1.4
Build differences
Moving libraries from in-tree to system libs
WebRTC
send_info
(12:57:06) lirakis_: yeah i see a send_info_function
(12:57:32) anthm: yes
(12:57:32) babak: Hi anybody knows how to enable ECT Expicit Call Transfer feature of Libpri on freeswitch? it is very usfull service to eliminate tromboned calls
(12:58:09) anthm: you just call send_info app with arg of data you want in the body
(12:58:12) lirakis_: anthm, just no docs for it in the wiki. ill root around and edit the wiki page after i figure it out
(12:58:15) lirakis_: anthm, thanks
(12:58:21) anthm: the content-type is fixed to freeswitch/data
(12:58:23) lirakis_: going ot test that now
(13:03:04) lirakis_: must set fs_send_unsupported_info
Networking
(00:42:36) SwK: the Juniper M7's are old but for about 2K to 2500 you got something that's not gonna fall over under high PPS loads from RTP
(00:42:51) NYSolutions: Gigabit?
(00:42:54) SwK: yeah
(00:43:00) SwK: multi-gigabit Ethernet uplinks
(00:43:27) coppice: if you are handling voip, the critical spec for any switch or router is **PPS**
(00:43:27) SwK: you get the right RE (route engine) in the M7s they have 2GB of ram for handling a couple of views
(00:43:33) SwK: (bgp views that is)
(00:43:43) SwK: coppice: yes it is, most people dont get that
(00:44:09) SwK: coppice: they don't get that they'll saturate their 400K PPS Cisco 3845 long before they saturate their gig-e interconnects
(00:44:33) coppice: most low end 1G routers choke at about 20M of VoIP
(00:44:47) coppice: and quite a few higher end ones
(00:52:32) SwK: NYSolutions: M7's are rated at 7million pps heh
(00:52:47) NYSolutions: what does MX give you more?
(00:53:09) SwK: more flexibility and much newer hardware
(00:53:38) SwK: pretty much all the M series is EOL from juniper but they are pennies on the dollar vs MX stuff
(00:54:15) SwK: most of the lower end M series arent just EOL they are EOSupport from jtac
(00:54:44) SwK: but they just dont die heh
(00:57:08) NYSolutions: I wish I could find something decent on ebay for a few hundred $
(00:57:27) SwK: you aren't going to find that for what you are probably doing
(00:57:35) SwK: which is dual homed for voip
(00:58:18) NYSolutions: Don't have the $ for this [http://www.ebay.com/itm/JUNIPER-MX80-ROUTER-CHASSIS-MX80-T-AC-U-S-VERSION-/301026717266?pt=US%5FEnterprise%5FRouters&hash=item4616972e52](http://www.ebay.com/itm/JUNIPER-MX80-ROUTER-CHASSIS-MX80-T-AC-U-S-VERSION-/301026717266?pt=US%5FEnterprise%5FRouters&hash=item4616972e52)
(00:58:35) SwK: yeah I dont either
(00:58:56) SwK: thast why I have the old M7s
(01:00:31) SwK: its not the chasis thats expensive… its the damned PICs
(01:00:52) SwK: Juniper PIC = Cisco WIC
(01:01:39) NYSolutions: How about using a pfsence at the edge?
(01:04:08) SwK: i wouldnt
(01:09:24) NYSolutions: I may try this [http://www.amazon.com/Ubiquiti-ERPRO-8-EdgeMAX-Gigabit-Rackmount/dp/B00IA5J8M8/ref=sr%5F1%5F1?ie=UTF8&qid=1400821479&sr=8-1&keywords=ERPRO-8](http://www.amazon.com/Ubiquiti-ERPRO-8-EdgeMAX-Gigabit-Rackmount/dp/B00IA5J8M8/ref=sr%5F1%5F1?ie=UTF8&qid=1400821479&sr=8-1&keywords=ERPRO-8)
(01:11:56) coppice: the ubiquity stuff claims very respectable PPS figures
(01:15:04) SwK: ubnt seems to have some pretty sharp people working there