refactor: sync sparse tlprofile runtime
This commit is contained in:
parent
5ecf4e912d
commit
25ab04a254
93 changed files with 2983 additions and 1615 deletions
|
|
@ -4,7 +4,7 @@ import (
|
|||
"errors"
|
||||
|
||||
"github.com/iamxvbaba/td/bin"
|
||||
"github.com/iamxvbaba/td/tg"
|
||||
"github.com/iamxvbaba/td/tlprofile"
|
||||
)
|
||||
|
||||
var ErrPrivateLayerRPCInvalid = errors.New("android private layer RPC is invalid")
|
||||
|
|
@ -12,13 +12,13 @@ var ErrPrivateLayerRPCInvalid = errors.New("android private layer RPC is invalid
|
|||
// AdaptPrivateLayerRPC invokes the provenance-locked static gotdgen overlay
|
||||
// from the generated unknown-method view. Nested values decode with the exact
|
||||
// connection profile and the canonical request is re-profiled by gotd core.
|
||||
func AdaptPrivateLayerRPC(view tg.LayerRPCUnknownMethodView) (tg.LayerOutboundCall, bool, error) {
|
||||
outbound, handled, err := view.AdaptClientRPCOverlay(tg.LayerClientRPCOverlayDrkloAndroid)
|
||||
func AdaptPrivateLayerRPC(view tlprofile.UnknownMethodView) (tlprofile.OutboundCall, bool, error) {
|
||||
outbound, handled, err := view.AdaptClientRPCOverlay(tlprofile.ClientRPCOverlayDrkloAndroid)
|
||||
if err == nil && !handled {
|
||||
outbound, handled, err = view.AdaptClientRPCOverlay(tg.LayerClientRPCOverlayDrkloAndroidTheme)
|
||||
outbound, handled, err = view.AdaptClientRPCOverlay(tlprofile.ClientRPCOverlayDrkloAndroidTheme)
|
||||
}
|
||||
if err != nil {
|
||||
return tg.LayerOutboundCall{}, handled, errors.Join(ErrPrivateLayerRPCInvalid, err)
|
||||
return tlprofile.OutboundCall{}, handled, errors.Join(ErrPrivateLayerRPCInvalid, err)
|
||||
}
|
||||
return outbound, handled, nil
|
||||
}
|
||||
|
|
@ -26,10 +26,10 @@ func AdaptPrivateLayerRPC(view tg.LayerRPCUnknownMethodView) (tg.LayerOutboundCa
|
|||
// UpgradePrivateLayerRPC is retained only for Router.Dispatch's legacy test
|
||||
// seam. Production admission uses AdaptPrivateLayerRPC above so its decode
|
||||
// shares the outer generated request budget.
|
||||
func UpgradePrivateLayerRPC(profile tg.LayerProfile, in *bin.Buffer, limits tg.LayerDecodeLimits) (*bin.Buffer, bool, error) {
|
||||
upgraded, handled, err := tg.AdaptClientRPCOverlayWithLimits(profile, tg.LayerClientRPCOverlayDrkloAndroid, in, limits)
|
||||
func UpgradePrivateLayerRPC(profile tlprofile.Profile, in *bin.Buffer, limits tlprofile.Limits) (*bin.Buffer, bool, error) {
|
||||
upgraded, handled, err := tlprofile.AdaptClientRPCOverlayWithLimits(profile, tlprofile.ClientRPCOverlayDrkloAndroid, in, limits)
|
||||
if err == nil && !handled {
|
||||
upgraded, handled, err = tg.AdaptClientRPCOverlayWithLimits(profile, tg.LayerClientRPCOverlayDrkloAndroidTheme, in, limits)
|
||||
upgraded, handled, err = tlprofile.AdaptClientRPCOverlayWithLimits(profile, tlprofile.ClientRPCOverlayDrkloAndroidTheme, in, limits)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, handled, errors.Join(ErrPrivateLayerRPCInvalid, err)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/iamxvbaba/td/bin"
|
||||
"github.com/iamxvbaba/td/tg"
|
||||
"github.com/iamxvbaba/td/tlprofile"
|
||||
)
|
||||
|
||||
func TestUpgradePrivateLayerRPCOnlyAcceptsAuditedAndroidConstructors(t *testing.T) {
|
||||
|
|
@ -20,7 +20,7 @@ func TestUpgradePrivateLayerRPCOnlyAcceptsAuditedAndroidConstructors(t *testing.
|
|||
private.PutID(0x7f3b18ea) // inputPeerEmpty
|
||||
|
||||
in := &bin.Buffer{Buf: private.Copy()}
|
||||
upgraded, ok, err := UpgradePrivateLayerRPC(tg.LayerProfileCanonical, in, tg.LayerDecodeLimits{})
|
||||
upgraded, ok, err := UpgradePrivateLayerRPC(tlprofile.ProfileCanonical, in, tlprofile.Limits{})
|
||||
if err != nil || !ok {
|
||||
t.Fatalf("upgrade private method = ok:%v err:%v", ok, err)
|
||||
}
|
||||
|
|
@ -33,13 +33,13 @@ func TestUpgradePrivateLayerRPCOnlyAcceptsAuditedAndroidConstructors(t *testing.
|
|||
|
||||
official := bin.Buffer{}
|
||||
official.PutID(0xb921bd04) // arbitrary non-private/official constructor
|
||||
if value, handled, err := UpgradePrivateLayerRPC(tg.LayerProfileCanonical, &official, tg.LayerDecodeLimits{}); value != nil || handled || err != nil {
|
||||
if value, handled, err := UpgradePrivateLayerRPC(tlprofile.ProfileCanonical, &official, tlprofile.Limits{}); value != nil || handled || err != nil {
|
||||
t.Fatalf("non-private method = value:%v handled:%v err:%v", value, handled, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGeneratedPrivateLayerRPCOverlayHasAllAuditedMethods(t *testing.T) {
|
||||
if got, want := tg.LayerClientRPCOverlayMethodCount(tg.LayerClientRPCOverlayDrkloAndroid), 15; got != want {
|
||||
if got, want := tlprofile.ClientRPCOverlayMethodCount(tlprofile.ClientRPCOverlayDrkloAndroid), 15; got != want {
|
||||
t.Fatalf("generated DrKLO method count = %d, want %d", got, want)
|
||||
}
|
||||
}
|
||||
|
|
@ -47,7 +47,7 @@ func TestGeneratedPrivateLayerRPCOverlayHasAllAuditedMethods(t *testing.T) {
|
|||
func TestUpgradePrivateLayerRPCRejectsMalformedBody(t *testing.T) {
|
||||
malformed := bin.Buffer{}
|
||||
malformed.PutID(0x41d41ade)
|
||||
_, ok, err := UpgradePrivateLayerRPC(tg.LayerProfileCanonical, &malformed, tg.LayerDecodeLimits{})
|
||||
_, ok, err := UpgradePrivateLayerRPC(tlprofile.ProfileCanonical, &malformed, tlprofile.Limits{})
|
||||
if !ok || !errors.Is(err, ErrPrivateLayerRPCInvalid) {
|
||||
t.Fatalf("malformed private method = ok:%v err:%v", ok, err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue