res_parking: Replace Parker snapshots with ParkerDialString

This process also involved a large amount of rework regarding how to redial
the Parker when a channel leaves a parking lot due to timeout. An attended
transfer channel variable has been added to attended transfers to extensions
that will eventually park (but haven't at the time of transfer) as well.
This resolves one of the two BUGBUG comments remaining in res_parking.

(issues ASTERISK-21877)
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/2638/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@393704 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Jonathan Rose
2013-07-04 18:46:56 +00:00
parent fb03bf9b39
commit 93ed5ef0ff
17 changed files with 249 additions and 241 deletions

View File

@@ -79,13 +79,12 @@ static void parked_call_payload_destructor(void *obj)
struct ast_parked_call_payload *park_obj = obj;
ao2_cleanup(park_obj->parkee);
ao2_cleanup(park_obj->parker);
ao2_cleanup(park_obj->retriever);
ast_string_field_free_memory(park_obj);
}
struct ast_parked_call_payload *ast_parked_call_payload_create(enum ast_parked_call_event_type event_type,
struct ast_channel_snapshot *parkee_snapshot, struct ast_channel_snapshot *parker_snapshot,
struct ast_channel_snapshot *parkee_snapshot, const char *parker_dial_string,
struct ast_channel_snapshot *retriever_snapshot, const char *parkinglot,
unsigned int parkingspace, unsigned long int timeout,
unsigned long int duration)
@@ -106,11 +105,6 @@ struct ast_parked_call_payload *ast_parked_call_payload_create(enum ast_parked_c
ao2_ref(parkee_snapshot, +1);
payload->parkee = parkee_snapshot;
if (parker_snapshot) {
ao2_ref(parker_snapshot, +1);
payload->parker = parker_snapshot;
}
if (retriever_snapshot) {
ao2_ref(retriever_snapshot, +1);
payload->retriever = retriever_snapshot;
@@ -120,6 +114,10 @@ struct ast_parked_call_payload *ast_parked_call_payload_create(enum ast_parked_c
ast_string_field_set(payload, parkinglot, parkinglot);
}
if (parker_dial_string) {
ast_string_field_set(payload, parker_dial_string, parker_dial_string);
}
payload->parkingspace = parkingspace;
payload->timeout = timeout;
payload->duration = duration;