Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Proxy lease refuses every iOS install/open: connection platform 'ios' compared with internal 'apple'

Cerrado Apto para principiantes
#2,962 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
typescript
Área
cli, mobile-dev

Línea de trabajo

Comienza en src/cli/commands/connection-runtime.ts, en applyResolvedDeviceSelector (alrededor de las líneas 888-898) y assertRequestedConnectionScope (alrededor de las líneas 955-961). Rastrea publicPlatformString y buildProxyDeviceKey y haz que la plataforma resuelta sea coherente con la plataforma pública de la conexión. Reprodúcelo con una concesión de proxy de iOS e instala o abre, y confirma que el comportamiento de Android no cambia.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

With a proxy lease, every iOS install and open on a remote connection is refused with:

Error (INVALID_ARGS): Active remote connection is already bound to a different platform. Re-run connect --force to replace it.

even though the connection was opened for iOS and the request targets that same iOS device. Android is unaffected.

Cause

When the lease state resolves a device, applyResolvedDeviceSelector copies the device's internal platform into the request flags:

https://github.com/callstack/agent-device/blob/76dbee0b9e39cec28d04a37a00db205758c1e706/src/cli/commands/connection-runtime.ts#L888-L898

For an iOS-family device that value is the internal apple, not the public ios. assertRequestedConnectionScope then compares it with the connection's stored public platform:

https://github.com/callstack/agent-device/blob/76dbee0b9e39cec28d04a37a00db205758c1e706/src/cli/commands/connection-runtime.ts#L955-L961

so ios !== apple and the request is refused. Android passes because its internal and public names are both android.

Repro

agent-device 0.21.12 (same code on main at 76dbee0): open a remote connection with platform: ios and a proxy lease, then run install <app> (or open) against the leased device. It fails right after the device lookup, before a lease is taken.

Possible fix

Store the public name in the flags, e.g. flags.platform = publicPlatformString(device) (already used by buildProxyDeviceKey in the same file), or normalize both sides before the comparison.

Context

Found through Stim (appandflow/stim#1096). Stim works around it by keeping iOS on the default 60 s lease (appandflow/stim#1127), which means large iOS apps can still hit #2946 (lease not renewed during upload); fixing this would let iOS use the longer proxy lease.

Lenguaje dominante
TypeScript
Estrellas
4.7k
Forks
304
Merge medio
11 h 25 min
PR fusionados (30 d)
545

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de callstack/agent-device

Todos los issues de callstack/agent-device

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.