Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

There was a problem

You must be a member of this account.

Call Threads waiting for with_next_message() hang indefinitely

#33

When a dialplan Thread is sleeping due to with_next_message(), a call hangup will NOT kill the Thread. The Thread stays alive for as long as the process does.

For the time being, this can be worked-around by manually catching hangups via AMI and sending a message to the dialplan which causes it to exit gracefully.

The framework-level solution I believe is to subclass the Queue class and use this custom subclass in for Call#inbox(). It will override the Queue#<<() method with an implementation that checks for the :cancel symbol and sets a property in the Queue subclass to disable any further use of with_next_message() by raising an exception. The :cancel message is still passed along to the Queue.

The documentation of with_next_message() (and its supporting methods) should mention that :cancel can be sent at any time.

Reported by Jay Phillips · August 29th, 2008 @ 02:12 AM

State: hold
Milestone: none
Assigned to: Jay Phillips Jay Phillips

Activity

  1. Jay Phillips
    Jay Phillips
    • State changed from new to open
    • Tag changed from dialplan to dialplan

    September 18th, 2008 @ 09:51 PM

  2. Jay Phillips
  3. Jay Phillips
    Jay Phillips
    • Title changed from Call Threads waiting for a message hang indefinitely to Call Threads waiting for with_next_message() hang indefinitely

    March 29th, 2009 @ 08:24 PM

  4. Jay Phillips
    Jay Phillips

    This just has to check the socket connections status. When the GServer socket disconnects, it should just update the Call object and put its inbox into the "closed" state.

    June 4th, 2009 @ 02:57 AM

  5. Ben Langfeld
    Ben Langfeld
    • State changed from open to hold
    • Milestone order changed from 0 to 0

    September 21st, 2011 @ 04:05 PM

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.