Return to LanScape's home page Go back a page...       Active TopicsActive Topics   Display List of Forum MembersMember List   Knowledge Base SearchSearch   HelpHelp  RegisterRegister  LoginLogin

LanScape VOIP Media Engine™ - Technical Support
 LanScape Support Forum -> LanScape VOIP Media Engine™ - Technical Support
Subject Topic: Two Samples Bug Report Post ReplyPost New Topic
Author
Message << Prev Topic | Next Topic >>
Jalal
Vetran
Vetran


Joined: April 24 2006
Location: Iran
Posts: 188
Posted: February 26 2007 at 9:19am | IP Logged Quote Jalal

Hi

We have encountered two bugs in your sample files.

1- SingleLine PhoneDlg.cpp :
In DtmfGeneratorCallback function there is an infinite loop that terminates only when TransmitInCallIvrData and WriteAudioOutData return SipSuccess. But there is a situation which they don't return success and this loop makes program to halt. When we hold an incoming call and we try play a DTMF program halts.

2- Common\PhoneBase.cpp :
Code:

case SipFarEndHoldOn:

                                            // the far end has put us on hold. at this time, our rtp
                                            // transmitter for this phone line is disabled and transmitted
                                            // rtp data from this end is consuming network bandwidth. our rtp
                                            // receiver is still accepting data however.
                                            pCPhoneBase->FarEndHoldOn(pCPhoneBase->hSipEngine,PhoneLine,&LineState);

                                            break;


                                      case SipFarEndHoldOff:

                                            // the far end has removed us from "on hold". our rtp
                                            // tranceiver for this phone line will be enabled if we
                                            // are not locally held as well.
                                            pCPhoneBase->FarEndHoldOn(pCPhoneBase->hSipEngine,PhoneLine,&LineState);

                                            break;


In this file both SipFarEndHoldOff and SipFarEndHoldOn states call FarEndHoldOn!!! You should change SipFarEndHoldOff to call FarEndHoldOff.

BTW: I think the number of bugs we have reported yet is enough to let you give us a license upgrade reward.

Thanks
Jalal Abedinejad
Back to Top View Jalal's Profile Search for other posts by Jalal Visit Jalal's Homepage
 
support
Administrator
Administrator


Joined: January 26 2005
Location: United States
Posts: 1666
Posted: February 26 2007 at 12:12pm | IP Logged Quote support

Hi Jalal,

Thanks for the additional feedback. As far as a “license upgrade reward” for reporting bugs, we will check into that. We generally need to receive currency for our products. That way we can pay our heating and lighting bills. :)


Sample app – DTMF callback infinite loop:
There is no need for that loop anyway. The code below removes the infinite loop and is sufficient. We will update the sample code.

Code:

// Called by the dtmf generator. This callback sends dtmf generated sample blocks
// to the telephony engine's audio subsystem for playback and to the phone line
// if a call is active.
//
void _stdcall DtmfGeneratorCallback(DTMF_GEN_DATA *pGeneratorData)
{
     CSingleLinePhoneDlg *pDlg;
     TELEPHONY_RETURN_VALUE AudioOutStatus;
     TELEPHONY_RETURN_VALUE TxIvrStatus;

     pDlg = (CSingleLinePhoneDlg *)pGeneratorData->pUserSpecifiedData;


     // output DTMF tones to local audio output and
     // to phone line if a call is active.
     AudioOutStatus = WriteAudioOutData(pDlg->hAudioOut,pGeneratorData->pSam pleBuffer);

     if(AudioOutStatus != SipSuccess)
     {
           // handle the error.
     }


     // see if we are in a phone call.
     if(pDlg->CallIsActive)
     {
           // send the generated DTMF signals out the phone line.
           TxIvrStatus = TransmitInCallIvrData(pDlg->hIvrTransmit,pGeneratorData-& gt;pSampleBuffer);

           if(TxIvrStatus == SipNoCallActive)
           {
                 // assume the call is in the hold state.
           }
           else if(TxIvrStatus != SipSuccess)
           {
                 // handle the error.
           }
     }
}




SipFarEndHoldOn and SipFarEndHoldOff virtual handlers:

You are correct! Good eye. We will update the sample code for the next release.


Note: The samples are for elaboration. We don’t treat this code as mission critical and provide it “as is”.

Again, thank you for pointing out these issues.


Support
Back to Top View support's Profile Search for other posts by support Visit support's Homepage
 
Jalal
Vetran
Vetran


Joined: April 24 2006
Location: Iran
Posts: 188
Posted: February 27 2007 at 7:41am | IP Logged Quote Jalal

Hi

You >>>
Note: The samples are for elaboration. We don’t treat this code as mission critical and provide it “as is”.

Me >>>
You are correct and I know this. But sometimes the bugs that exist in the samples makes customers confused so that they think that this is the DLL bug. We always check your sample binaries as a reference when we encounter a problem in our implemented Media Engine softwares. So when a bug is seen in both our software and your sample the first think is that this is the Media Engine DLL bug. As far as the samples are bug free we can decide whether we have implemented incorrectly or it is the Media Engine bug.

I think most of your customers including us use the sample common codes in their own softwares.

Do you know how much does it help you, when you know there is a bug in some part of your software that would be fixed in your next release? An example of this situation would be http://www.lanscapecorp.com/forum/forum_posts.asp?TID=250&PN =1 thread.

Thanks
Jalal Abedinejad
Back to Top View Jalal's Profile Search for other posts by Jalal Visit Jalal's Homepage
 
support
Administrator
Administrator


Joined: January 26 2005
Location: United States
Posts: 1666
Posted: February 27 2007 at 8:59am | IP Logged Quote support

Hi Jalal,

Yes. Your points are correct and well taken.

Support
Back to Top View support's Profile Search for other posts by support Visit support's Homepage
 

If you wish to post a reply to this topic you must first login
If you are not already registered you must first register

  Post ReplyPost New Topic
Printable version Printable version

Forum Jump
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot delete your posts in this forum
You cannot edit your posts in this forum
You cannot create polls in this forum
You cannot vote in polls in this forum






Contact LanScape Hear what the Lawyers have to say How youm may use this site Read your privacy rights