grpc / grpc/grpc-java

BinderTransport's TRANSPORT_ATTR_LOCAL_ADDR is different than its peer's TRANSPORT_ATTR_REMOTE_ADDR

Offen
#12,347 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
binder
Vorherrschende Sprache
Java
Sterne
12.1k
Forks
4k
Ø Merge
2 T. 17 Std.
Gemergte PRs (30 T.)
37

Beschreibung

Today:
- BinderClientTransport's remote is the AndroidComponentAddress passed to bindService(), which makes sense.
- BinderServerTransport's local is its server's "listening" address, a meaningless concept constructed by calling `AndroidComponentAddress.forContext()` on the Service. This is basically an Intent with a ComponentName but no other fields set. Meaningless, because without considering the onBind() implementation and the setup there's no reason to believe any client could actually bind to such an Intent.

In the other direction
- BinderServerTransport's remote is a `BoundClientAddress` wrapper around the client's uid, which makes sense.
- BinderClientTransport's local is another case of `AndroidComponentAddress.forContext()` called on the client's source Context. This address is meaningless because it can't

This asymmetry is one of the reasons why AbstractTransportTest.socketStats() currently fails.

We could fix this by letting BinderClientTransport's local be a `BoundClientAddress` wrapper around its own UID.

I don't know what to do about BinderServerTransport's local. The client's actual bind Intent *is* mostly available from onBind() but we encourage Services to ignore it and always return the same `BinderServer.getHostBinder()`.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, die Adressbehandlung in BinderClientTransport und BinderServerTransport zu vergleichen, und führe dann AbstractTransportTest.socketStats() aus, um die Asymmetrie zu reproduzieren. Überprüfe die Verwendung von AndroidComponentAddress und BoundClientAddress und kläre, welche lokalen und entfernten Adressen jeder Transport melden sollte, damit die Erwartungen des Tests an die Socket-Statistiken konsistent sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
android, java
Bereich
mobile-dev, networking
Issue-Typ
Bug
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.