summaryrefslogtreecommitdiff
path: root/main/parking.c
diff options
context:
space:
mode:
authorJonathan Rose <jrose@digium.com>2013-07-04 18:46:56 +0000
committerJonathan Rose <jrose@digium.com>2013-07-04 18:46:56 +0000
commit93ed5ef0ffdffc342ef2e0670b9cf51686027401 (patch)
tree71e36bba6f8e575ed9aa542f4183f33cb816fce2 /main/parking.c
parentfb03bf9b39ad1f8b8bb50077cc54457edd8d6d9a (diff)
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
Diffstat (limited to 'main/parking.c')
-rw-r--r--main/parking.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/main/parking.c b/main/parking.c
index a3da860b7..02695cd01 100644
--- a/main/parking.c
+++ b/main/parking.c
@@ -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;