Re: [Asterisk-java-users] Hangup Detection
Brought to you by:
srt
From: Martin S. <ma...@be...> - 2008-07-28 19:07:16
|
Hi Deric, It sounds like you're overriding org.asteriskjava.fastagi.internal.AgiChannelImpl. Is that correct? If so, I think you've got a bad assumption -- the hangup() method you're overriding should *not* be called on a hungup channel. It's a helper-method to command the channel to hangup, so by calling it twice, you're asking an already-hungup channel to hang up again. You've mentioned that your getData() call is what hands you the first exception. How soon before that do you check if the channel is up? I would expect your getChannelStatus() to fail the same way your hangup() fails, as they both send commands that won't go through. Cheers, Martin Smith, Systems Developer ma...@be... Bureau of Economic and Business Research University of Florida (352) 392-0171 Ext. 221 > -----Original Message----- > From: ast...@li... > [mailto:ast...@li...] On > Behalf Of Deric Page > Sent: Monday, July 28, 2008 2:28 PM > To: ast...@li... > Subject: Re: [Asterisk-java-users] Hangup Detection > > > -----Original Message----- > > From: Martin Smith [mailto:ma...@be...] > > Sent: Monday, July 28, 2008 11:59 AM > > To: Deric Page; ast...@li... > > Subject: RE: [Asterisk-java-users] Hangup Detection > > > > Have you looked into what kind of exception you're > catching? I'm curious > > if it's really a broken pipe exception, or if that's just what the > > toString() for it prints as a nested exception. > > > Actually, it looks like I'm getting two errors: First is a > 'Channel Hung Up' > from my speakPrompt method on the line where I call > getData(). The second, > 'Broken Pipe', occurs in my override of the hangup() method > [called when > speakPrompt get's the 'Channel Hung Up' error]. All my > hangup() override does > is call to super.hangup() and log any errors that occur. > > Here are the stack traces from the two errors: > > > ****First Error**** > > org.asteriskjava.fastagi.AgiHangupException: Channel was hung up. > at > org.asteriskjava.fastagi.internal.AgiReaderImpl.readReply(AgiR > eaderImpl.java:98) > at > org.asteriskjava.fastagi.internal.AgiChannelImpl.sendCommand(A > giChannelImpl.java:100) > at > org.asteriskjava.fastagi.internal.AgiChannelImpl.getData(AgiCh > annelImpl.java:178) > at > org.asteriskjava.fastagi.AgiOperations.getData(AgiOperations.java:191) > at PayByPhoneScript.speakPrompt(PayByPhoneScript.java:225) > at PayByPhoneScript.getAccountFromCaller(PayByPhoneScript.java:267) > at PayByPhoneScript.getServices(PayByPhoneScript.java:73) > at PayByPhoneScript.service(PayByPhoneScript.java:54) > at > org.asteriskjava.fastagi.internal.AgiConnectionHandler.runScri > pt(AgiConnectionHandler.java:151) > at > org.asteriskjava.fastagi.internal.AgiConnectionHandler.run(Agi > ConnectionHandler.java:116) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadP > oolExecutor.java:885) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolE > xecutor.java:907) > at java.lang.Thread.run(Thread.java:619) > > > ****Second Error**** > org.asteriskjava.fastagi.AgiNetworkException: Unable to send > command to > Asterisk: Broken pipe > at > org.asteriskjava.fastagi.internal.AgiWriterImpl.sendCommand(Ag > iWriterImpl.java:51) > at > org.asteriskjava.fastagi.internal.AgiChannelImpl.sendCommand(A > giChannelImpl.java:99) > at > org.asteriskjava.fastagi.internal.AgiChannelImpl.hangup(AgiCha > nnelImpl.java:121) > at > org.asteriskjava.fastagi.AgiOperations.hangup(AgiOperations.java:68) > at PayByPhoneScript.hangup(PayByPhoneScript.java:170) > at PayByPhoneScript.speakPrompt(PayByPhoneScript.java:229) > at PayByPhoneScript.getAccountFromCaller(PayByPhoneScript.java:267) > at PayByPhoneScript.getServices(PayByPhoneScript.java:73) > at PayByPhoneScript.service(PayByPhoneScript.java:54) > at > org.asteriskjava.fastagi.internal.AgiConnectionHandler.runScri > pt(AgiConnectionHandler.java:151) > at > org.asteriskjava.fastagi.internal.AgiConnectionHandler.run(Agi > ConnectionHandler.java:116) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadP > oolExecutor.java:885) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolE > xecutor.java:907) > at java.lang.Thread.run(Thread.java:619) > Caused by: java.net.SocketException: Broken pipe > at java.net.SocketOutputStream.socketWrite0(Native Method) > at > java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) > at java.net.SocketOutputStream.write(SocketOutputStream.java:136) > at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202) > at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272) > at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276) > at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122) > at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212) > at java.io.BufferedWriter.flush(BufferedWriter.java:236) > at > org.asteriskjava.util.internal.SocketConnectionFacadeImpl.flus > h(SocketConnectionFacadeImpl.java:101) > at > org.asteriskjava.fastagi.internal.AgiWriterImpl.sendCommand(Ag > iWriterImpl.java:47) > ... 13 more > > Thanks again, > > Deric > der...@ni... > > > -------------------------------------------------------------- > ----------- > This SF.Net email is sponsored by the Moblin Your Move > Developer's challenge > Build the coolest Linux based applications with Moblin SDK & > win great prizes > Grand prize is a trip for two to an Open Source event > anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Asterisk-java-users mailing list > Ast...@li... > https://lists.sourceforge.net/lists/listinfo/asterisk-java-users > |