~outloudvi

Wherever

https://outv.im

Virtual GiTuber | zh-hans-N, en-3, ja-0 | GPG 0xA725CB57CA65Cafe


#13 Cannot follow from Firefish/Calckey instances. 8 months ago

Comment by ~outloudvi on ~cloutier/bird.makeup

Seems that .NET's as dynamic is going that way - since there is no object property in an ActivityFollow struct, the dynamic cast failed in runtime. If this were the case, all fediverse instances should be impacted. I tried to comment out the part that sends out the Accept activity, and both Bird.Makeup and Misskey seem to be happy for now (an HTTP 202 response to the Undo activity seems to suffice at least for Misskey).

#13 Cannot follow from Firefish/Calckey instances. 8 months ago

Comment by ~outloudvi on ~cloutier/bird.makeup

I noticed the case when trying to re-follow some user via Misskey.

When un-following:

fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
      An unhandled exception has occurred while executing the request.
      Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'BirdsiteLive.ActivityPub.ActivityFollow' does not contain a definition for 'object'
         at CallSite.Target(Closure, CallSite, Object)
         at BirdsiteLive.Domain.UserService.UndoFollowRequestedAsync(String signature, String method, String path, String queryString, Dictionary`2 requestHeaders, ActivityUndoFollow activity, String body) in /src/BirdsiteLive.Domain/UserService.cs:line 291
         at BirdsiteLive.Controllers.UsersController.Inbox() in /src/BirdsiteLive/Controllers/UsersController.cs:line 294
         at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
         at BirdsiteLive.Middleware.SocialNetworkInterceptor.InvokeAsync(HttpContext context) in /src/BirdsiteLive/Middleware/SocialNetworkInterceptor.cs:line 25
         at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
         at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.<Invoke>g__Awaited|10_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task)

When re-following: Immediate after the re-follow, the database did create a relationship of my new followship. After a while, the relationship disappeared from the database.

It seems that Misskey's un-following request doesn't make Bird.Makeup happy and thus the dynamic casting failed. I'll later check the payload to see what is the exact mismatch.

#13 Cannot follow from Firefish/Calckey instances. 8 months ago

Comment by ~outloudvi on ~cloutier/bird.makeup

I tried to use my Misskey account to follow a not-yet-followed account on bird.makeup. It initially worked, but after several minutes bird.makeup doesn't show my follow anymore:

This account has 0 followers on the fediverse. The server with the most followers for this account is: N/A

I tried to selfhost one instance but haven't noticed such behavior. I'll continue testing the selfhosted version and report back if I found something.