diff --git a/apps/app_queue.c b/apps/app_queue.c
index 16e7d23f30fe23eb4d1407b9a26c9c22afffe3d2..71a809e513ebafc764fa24ecdd92df0c3bb47a16 100755
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -909,6 +909,7 @@ static int try_calling(struct queue_ent *qe, char *options, char *announceoverri
 	char *monitorfilename;
 	struct ast_channel *peer;
 	struct localuser *lpeer;
+	struct member *member;
 	int res = 0, bridge = 0;
 	int zapx = 2;
 	int x=0;
@@ -1026,7 +1027,8 @@ static int try_calling(struct queue_ent *qe, char *options, char *announceoverri
 		}
 		/* Update parameters for the queue */
 		recalc_holdtime(qe);
-		update_queue(qe->parent, lpeer->member);
+		member = lpeer->member;
+		update_queue(qe->parent, member);
 		hanguptree(outgoing, peer);
 		outgoing = NULL;
 		if (announce) {
@@ -1102,7 +1104,7 @@ static int try_calling(struct queue_ent *qe, char *options, char *announceoverri
 
 		if(bridge != AST_PBX_NO_HANGUP_PEER)
 			ast_hangup(peer);
-
+		update_queue(qe->parent, member);
 		if( bridge == 0 ) res=1; /* JDG: bridge successfull, leave app_queue */
 		else res = bridge; /* bridge error, stay in the queue */
 	}