[Asterisk-Users] Bugfix for CVS-HEAD-06/26/04-21:56:45
programmer_ted
ted at fusionapple.com
Fri Jul 2 13:07:20 MST 2004
Dimitri: Strange...I haven't come across your problem before. Have you
tried bugging the list or checking the Bug Tracker?
Greg: Honest answer? I have the same problem entering FWD numbers in an
FWD gateway (DTMF issue). I'm sort of passively looking for a fix for
that, as it's not the most troublesome issue at the moment...if you come
across anything, let me know. You're using dtmfmode=inband for Broadvoice,
right? Hmm...that gives me an idea. I'll let you know if I figure it out.
At 06:20 AM 7/2/2004, you wrote:
>Dear Ted
> my problem is not related to Voip Provider i use two * box:
>- Box1 is my local network PBX with 2 BG phone , TDM400 FXS and E100P
>If i can from BG phone to TDM400 FXS i have oneway audio also if i call to
>E100P this happen with yestarday CVS HEAD, but if rollback to stable branch
>everything work (also with CVS HEAD of last week).
>Thanks in advance
>Dimitri
>
>On Friday 02 July 2004 01:19 am, programmer_ted wrote:
> > bkw: now, I'm pretty sure it's BroadVoice (or other SIP providers)
> > related. The only people having trouble appear to be using a SIP provider
> > for Asterisk. I'm drawing this conclusion from two factors: Chris and I
> > are both using BroadVoice, and it appears that those people not using SIP
> > providers don't experience the issue.
> >
> > At 10:36 AM 7/1/2004, you wrote:
> > >Ya I tried to duplicate this problem but couldn't... So It think it's a
> > >problem elsewhere but we shall see once mark looks at it.
> > >
> > >bkw
> > >
> > > > -----Original Message-----
> > > > From: asterisk-users-admin at lists.digium.com [mailto:asterisk-users-
> > > > admin at lists.digium.com] On Behalf Of programmer_ted
> > > > Sent: Thursday, July 01, 2004 12:19 PM
> > > > To: asterisk-users at lists.digium.com
> > > > Subject: Re: [Asterisk-Users] Bugfix for CVS-HEAD-06/26/04-21:56:45
> > > >
> > > > reseaux: update to the latest CVS version (from /usr/src, do cvs update
> > > > asterisk), and give me an email address I can send a patched
> > > > indications.c to. Then put the file I send you in /usr/src/asterisk
> > > > (overwrite the existing indications.c), and do "make; make install" as
> > > > root (without asterisk running). That should stop the bug from killing
> > > > your calls, but after talking to bkw_, I think the bugfix may just
> > > > cover up a larger bug. By the way, would you happen to be using
> > > > BroadVoice or another SIP provider for Asterisk?
> > > >
> > > > Holger: I'm going to file a bug report today. I asked a few questions
> > > > about it yesterday while talking to bkw_; just didn't have time to do
> > > > the report yesterday.
> > > >
> > > > At 04:17 AM 7/1/2004, you wrote:
> > > > >Dear Ted
> > > > > i have notice the same problem had you reported from monday,
> > > > > i have try to
> > > > >update to today CVS HEAD but nothing still buggy so i roolback to
> > > > > Stable
> > > >
> > > > V1.
> > > >
> > > > >Where i can find the pacth?
> > > > >Thanks in advance
> > > > >Dimitri
> > > > >
> > > > >On Wednesday 30 June 2004 08:39 pm, programmer_ted wrote:
> > > > > > Hiya,
> > > > > >
> > > > > > I sent this bugfix to the asterisk-dev mailing list, and modified
> > > > > > it
> > > >
> > > > as I
> > > >
> > > > > > noticed side effects, but now it appears to be finished. Nobody
> > > >
> > > > seemed to
> > > >
> > > > > > notice it there, so I thought I'd post here, as it seems to be
> > > >
> > > > something
> > > >
> > > > > > that will be needed as people update to the latest CVS version.
> > > >
> > > > So...read
> > > >
> > > > > > on :)
> > > > > >
> > > > > > Ted
> > > > > > programmer_ted at hotmail.com
> > > > > >
> > > > > > P.S. Read to the very end. The original bugfix has an annoying
> > > > > > side effect.
> > > > > >
> > > > > > >>>>>Hi,
> > > > > > >>>>>
> > > > > > >>>>>My friend and I were getting a warning when calling his Sipura
> > > >
> > > > from a
> > > >
> > > > > > >>>>>PSTN line (connecting to Asterisk through BroadVoice), that
> > > > > > >>>>> said:
> > > > > > >>>>>
> > > > > > >>>>>Asked to transmit frame type 64, while native formats is 4
> > > >
> > > > (read/write
> > > >
> > > > > > >>>>>= 4/4)
> > > > > > >>>>>
> > > > > > >>>>>and was followed by a hangup (type 64 is 16-bit Signed Linear
> > > >
> > > > PCM,
> > > >
> > > > > > >>>>>type 4 is G711u). I found that many people have had similar
> > > >
> > > > issues,
> > > >
> > > > > > >>>>>but these were never resolved. So, I figured that because
> > > >
> > > > Asterisk is
> > > >
> > > > > > >>>>>open-source, I'd dive into the code and try to fix the bug.
> > > > > > >>>>>
> > > > > > >>>>>After a couple of hours of familiarizing myself with the
> > > > > > >>>>> Asterisk
> > > >
> > > > code
> > > >
> > > > > > >>>>>and tracing the problem, I found that for some reason the tone
> > > > > > >>>>>generator, which uses 16-bit Signed Linear PCM, was still
> > > > > > >>>>> being allocated and playtones_generator (indications.c) was
> > > > > > >>>>> still
> > > >
> > > > getting
> > > >
> > > > > > >>>>>called, regardless that the Sipura doesn't take SLINEAR data
> > > > > > >>>>> (in
> > > >
> > > > my
> > > >
> > > > > > >>>>>case, it accepts G711u). So, I ended up adding an if
> > > > > > >>>>> conditional
> > > >
> > > > to
> > > >
> > > > > > >>>>>the beginning of the playtones_alloc function (indications.c)
> > > > > > >>>>> to
> > > >
> > > > check
> > > >
> > > > > > >>>>>if SLINEAR was supported by the channel, and if not, return 0
> > > >
> > > > (which,
> > > >
> > > > > > >>>>>when received by the ast_activate_generator function
> > > > > > >>>>> (channel.c), causes the channel generatordata to remain
> > > > > > >>>>> empty, effectively
> > > >
> > > > stopping
> > > >
> > > > > > >>>>>the SLINEAR data from being sent in the most nonintrusive way
> > > > > > >>>>> possible).
> > > > > > >>>>>
> > > > > > >>>>>NOTICE: this bugfix will work for similar issues involving
> > > > > > >>>>> format
> > > >
> > > > 64
> > > >
> > > > > > >>>>>(16-bit Signed Linear PCM) being sent even if channel
> > > >
> > > > capabilities
> > > >
> > > > > > >>>>>don't allow it, if the generator is involved - it's not
> > > > > > >>>>> limited
> > > >
> > > > to my
> > > >
> > > > > > >>>>>situation (dialing the Sipura from Asterisk).
> > > > > > >>>>>
> > > > > > >>>>>This patch should be applied to indications.c under the main
> > > >
> > > > asterisk
> > > >
> > > > > > >>>>>source directory (usually /usr/src/asterisk):
> > > > > > >>>>>
> > > > > > >>>>>68a69
> > > > > > >>>>>
> > > > > > >>>>> > if (!(chan->nativeformats & AST_FORMAT_SLINEAR))
> > > > > > >>>>> > return
> > > >
> > > > 0;
> > > >
> > > > > > >>>>>Oh, and finally, here's a shameless plug to a good friend's
> > > >
> > > > website
> > > >
> > > > > > >>>>>(which includes a VOIP forum!): http://outcast.ws
> > > > > > >>>>>
> > > > > > >>>>>Comments? Questions? :)
> > > > > > >>>>
> > > > > > >>>>Just a quick update. I was looking things over again and it
> > > >
> > > > appears
> > > >
> > > > > > >>>>this fix also disables the generator when I'm calling in on
> > > > > > >>>> PSTN
> > > >
> > > > over
> > > >
> > > > > > >>>>BroadVoice (when dialing the Sipura), not just disabling it for
> > > >
> > > > the
> > > >
> > > > > > >>>>Sipura. This basically disables the dialing sound while
> > > > > > >>>> waiting
> > > >
> > > > for
> > > >
> > > > > > >>>>the Sipura to pick up. I have an idea that I should have used
> > > > > > >>>>chan->capabilities rather than chan->nativeformats, but it's
> > > > > > >>>> too
> > > >
> > > > late
> > > >
> > > > > > >>>>to check at the moment. I'll try it out first thing tomorrow
> > > > > > >>>> and update you guys, but for now, that's one drawback of using
> > > > > > >>>> this
> > > >
> > > > fix.
> > > >
> > > > > > >>>I thought it over a little bit more and the optimum solution
> > > > > > >>> would
> > > >
> > > > be to
> > > >
> > > > > > >>>just translate the SLINEAR data to a format that is recognized
> > > > > > >>> by whoever is receiving the data, thus eliminating all
> > > > > > >>> drawbacks. I'm going to try using capabilities rather than
> > > > > > >>> nativeformats as a
> > > >
> > > > quick
> > > >
> > > > > > >>>workaround (after debugging to see if it'll work), and then work
> > > > > > >>> on adding the translating code to sip_write. Actually,
> > > > > > >>> thinking about
> > > >
> > > > it
> > > >
> > > > > > >>>again, it'd probably be best to just translate at the
> > > > > > >>>playtones_generator function. I'll keep you guys updated.
> > > > > > >>>
> > > > > > >>>...snipped non-relevant signature info etc...
> > > > > > >>
> > > > > > >>Learning as I go. It appears I don't have access to the
> > > >
> > > > capabilities
> > > >
> > > > > > >>value from the ast_channel structure. I'm just gonna go ahead
> > > > > > >> and
> > > >
> > > > have
> > > >
> > > > > > >>the SLINEAR data translate to the channel's writeformat.
> > > > > > >
> > > > > > >Ok, as I thought, PSTN over BroadVoice does not understand SLINEAR
> > > > > > >natively, which is why the dialing sound was also disabled when I
> > > >
> > > > dialed
> > > >
> > > > > > >the Sipura. I added some code to playtones_alloc (indications.c)
> > > > > > > so
> > > >
> > > > that
> > > >
> > > > > > >the write format is only set to SLINEAR if it's supported, and
> > > > > > > added
> > > >
> > > > some
> > > >
> > > > > > >code to playtones_generator to translate from SLINEAR to the
> > > >
> > > > channel's
> > > >
> > > > > > >writeformat if SLINEAR isn't supported natively by the channel.
> > > > > > > Of course, I also had to include the translate.h header.
> > > > > > >
> > > > > > >Conclusion: playtones_generator now works regardless of SLINEAR
> > > >
> > > > support by
> > > >
> > > > > > >the channel, as long as a translator path can be found from
> > > > > > > SLINEAR
> > > >
> > > > to the
> > > >
> > > > > > >channel's writeformat. If SLINEAR is supported, no translation
> > > > > > > takes place. This should fix some bugs where format 64 is being
> > > > > > > sent
> > > >
> > > > regardless
> > > >
> > > > > > >of codec allow settings in the configuration files.
> > > > > > >
> > > > > > >Apply this patch to indications.c:
> > > > > > >
> > > > > > >28a29
> > > > > > >
> > > > > > > > #include <asterisk/translate.h> /* Needed for bugfix */
> > > > > > >
> > > > > > >75c76
> > > > > > >< if (ast_set_write_format(chan, AST_FORMAT_SLINEAR)) {
> > > > > > >---
> > > > > > >
> > > > > > > > if ((chan->nativeformats & AST_FORMAT_SLINEAR) &&
> > > > > > >
> > > > > > > ast_set_write_format(chan, AST_FORMAT_SLINEAR)) {
> > > > > > >128c129,142
> > > > > > >< ast_write(chan, &ps->f);
> > > > > > >---
> > > > > > >
> > > > > > > > // Now, we have a finished SLINEAR frame that we need to
> > > > > > >
> > > > > > > translate, IF
> > > > > > >
> > > > > > > > // the channel doesn't support SLINEAR. Otherwise, we
> > > > > > > > need
> > > >
> > > > to
> > > >
> > > > > > > > just // write the SLINEAR frame.
> > > > > > > > if (!(chan->nativeformats & AST_FORMAT_SLINEAR)) {
> > > > > > > > struct ast_trans_pvt* transPath =
> > > > > > >
> > > > > > > ast_translator_build_path(chan->writeformat, AST_FORMAT_SLINEAR);
> > > > > > >
> > > > > > > > struct ast_frame* transFrame =
> > > >
> > > > ast_translate(transPath,
> > > >
> > > > > > > &ps->f, 0);
> > > > > > >
> > > > > > > > if (transFrame) {
> > > > > > > > ast_write(chan, transFrame);
> > > > > > > > ast_frfree(transFrame);
> > > > > > > > }
> > > > > > > > ast_translator_free_path(transPath);
> > > > > > > > }
> > > > > > > > else ast_write(chan, &ps->f);
> > > > > > >
> > > > > > >Hopefully, this fixes the problem for good.
> > > > > >
> > > > > > _______________________________________________
> > > > > > Asterisk-Users mailing list
> > > > > > Asterisk-Users at lists.digium.com
> > > > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > > > > > To UNSUBSCRIBE or update options visit:
> > > > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > > > >
> > > > >_______________________________________________
> > > > >Asterisk-Users mailing list
> > > > >Asterisk-Users at lists.digium.com
> > > > >http://lists.digium.com/mailman/listinfo/asterisk-users
> > > > >To UNSUBSCRIBE or update options visit:
> > > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > > >
> > > > _______________________________________________
> > > > Asterisk-Users mailing list
> > > > Asterisk-Users at lists.digium.com
> > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > > > To UNSUBSCRIBE or update options visit:
> > > > http://lists.digium.com/mailman/listinfo/asterisk-users
> > >
> > >_______________________________________________
> > >Asterisk-Users mailing list
> > >Asterisk-Users at lists.digium.com
> > >http://lists.digium.com/mailman/listinfo/asterisk-users
> > >To UNSUBSCRIBE or update options visit:
> > > http://lists.digium.com/mailman/listinfo/asterisk-users
> >
> > _______________________________________________
> > Asterisk-Users mailing list
> > Asterisk-Users at lists.digium.com
> > http://lists.digium.com/mailman/listinfo/asterisk-users
> > To UNSUBSCRIBE or update options visit:
> > http://lists.digium.com/mailman/listinfo/asterisk-users
>_______________________________________________
>Asterisk-Users mailing list
>Asterisk-Users at lists.digium.com
>http://lists.digium.com/mailman/listinfo/asterisk-users
>To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-users
More information about the asterisk-users
mailing list