diff --git a/apps/app_queue.c b/apps/app_queue.c
index e670df21f55eaf2640d0980dd80b5febf9d2cdc5..39371400cfcf4b02227ccff7b13726642e1b64e2 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -3971,9 +3971,9 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
 				char *gosub_args, *gosub_argstart;
 
 				/* Set where we came from */
-				ast_copy_string(qe->chan->context, "app_dial_gosub_virtual_context", sizeof(qe->chan->context));
-				ast_copy_string(qe->chan->exten, "s", sizeof(qe->chan->exten));
-				qe->chan->priority = 0;
+				ast_copy_string(peer->context, "app_queue_gosub_virtual_context", sizeof(peer->context));
+				ast_copy_string(peer->exten, "s", sizeof(peer->exten));
+				peer->priority = 0;
 
 				gosub_argstart = strchr(gosubexec, ',');
 				if (gosub_argstart) {
@@ -3990,8 +3990,8 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
 					}
 				}
 				if (gosub_args) {
-					res = pbx_exec(qe->chan, application, gosub_args);
-					ast_pbx_run(qe->chan);
+					res = pbx_exec(peer, application, gosub_args);
+					ast_pbx_run(peer);
 					free(gosub_args);
 					ast_debug(1, "Gosub exited with status %d\n", res);
 				} else