Unable to follow podcast from Calckey and Kbin
Describe the bug
Problem: When trying to follow my newly set up castopod podcast from either Calckey or Kbin accounts, it never completes and the following is logged in the logs for castopod:
CRITICAL - 2023-06-22 19:39:15 --> Undefined property: stdClass::$mediaType
in ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php on line 276.
1 ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php(276): CodeIgniter\Debug\Exceptions->errorHandler()
2 ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php(229): create_actor_from_uri()
3 ROOTPATH/modules/Fediverse/Controllers/ActorController.php(78): get_or_create_actor_from_uri()
4 ROOTPATH/modules/Fediverse/Controllers/ActorController.php(56): Modules\Fediverse\Controllers\ActorController->inbox()
5 SYSTEMPATH/CodeIgniter.php(901): Modules\Fediverse\Controllers\ActorController->_remap()
6 SYSTEMPATH/CodeIgniter.php(457): CodeIgniter\CodeIgniter->runController()
7 SYSTEMPATH/CodeIgniter.php(340): CodeIgniter\CodeIgniter->handleRequest()
8 FCPATH/index.php(73): CodeIgniter\CodeIgniter->run()
CRITICAL - 2023-06-22 19:39:59 --> Attempt to read property "url" on null
in ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php on line 275.
1 ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php(275): CodeIgniter\Debug\Exceptions->errorHandler()
2 ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php(229): create_actor_from_uri()
3 ROOTPATH/modules/Fediverse/Controllers/ActorController.php(78): get_or_create_actor_from_uri()
4 ROOTPATH/modules/Fediverse/Controllers/ActorController.php(56): Modules\Fediverse\Controllers\ActorController->inbox()
5 SYSTEMPATH/CodeIgniter.php(901): Modules\Fediverse\Controllers\ActorController->_remap()
6 SYSTEMPATH/CodeIgniter.php(457): CodeIgniter\CodeIgniter->runController()
7 SYSTEMPATH/CodeIgniter.php(340): CodeIgniter\CodeIgniter->handleRequest()
8 FCPATH/index.php(73): CodeIgniter\CodeIgniter->run()
Some notes: My Calckey icon and avatar images end with extension .webp My Kbin avatar and banner images end with extension .png The urls for these images are quite long, but not excessively so. My castopod account is on a subdomain (one level) i.e. @podcast@podcast.maindomain.com No other fediverse services are served from this domain.
Steps to reproduce
- Search for podcast account from Calckey or Kbin
- Click Follow
- It does not complete.
- Observe the following logs:
CRITICAL - 2023-06-22 19:44:33 --> Undefined property: stdClass::$mediaType
in ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php on line 276.
1 ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php(276): CodeIgniter\Debug\Exceptions->errorHandler()
2 ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php(229): create_actor_from_uri()
3 ROOTPATH/modules/Fediverse/Controllers/ActorController.php(78): get_or_create_actor_from_uri()
4 ROOTPATH/modules/Fediverse/Controllers/ActorController.php(56): Modules\Fediverse\Controllers\ActorController->inbox()
5 SYSTEMPATH/CodeIgniter.php(901): Modules\Fediverse\Controllers\ActorController->_remap()
6 SYSTEMPATH/CodeIgniter.php(457): CodeIgniter\CodeIgniter->runController()
7 SYSTEMPATH/CodeIgniter.php(340): CodeIgniter\CodeIgniter->handleRequest()
8 FCPATH/index.php(73): CodeIgniter\CodeIgniter->run()
5. Following from kbin sees the same results.
### Expected behavior
Following would work and new updates will federate out to followers on Calckey or Kbin as expected.
### Actual behavior
Follow never completes and errors are logged in the logs as noted above.
### Relevant logs and/or screenshots
CRITICAL - 2023-06-22 19:39:15 --> Undefined property: stdClass::$mediaType in ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php on line 276. 1 ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php(276): CodeIgniter\Debug\Exceptions->errorHandler() 2 ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php(229): create_actor_from_uri() 3 ROOTPATH/modules/Fediverse/Controllers/ActorController.php(78): get_or_create_actor_from_uri() 4 ROOTPATH/modules/Fediverse/Controllers/ActorController.php(56): Modules\Fediverse\Controllers\ActorController->inbox() 5 SYSTEMPATH/CodeIgniter.php(901): Modules\Fediverse\Controllers\ActorController->_remap() 6 SYSTEMPATH/CodeIgniter.php(457): CodeIgniter\CodeIgniter->runController() 7 SYSTEMPATH/CodeIgniter.php(340): CodeIgniter\CodeIgniter->handleRequest() 8 FCPATH/index.php(73): CodeIgniter\CodeIgniter->run() CRITICAL - 2023-06-22 19:39:59 --> Attempt to read property "url" on null in ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php on line 275. 1 ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php(275): CodeIgniter\Debug\Exceptions->errorHandler() 2 ROOTPATH/modules/Fediverse/Helpers/fediverse_helper.php(229): create_actor_from_uri() 3 ROOTPATH/modules/Fediverse/Controllers/ActorController.php(78): get_or_create_actor_from_uri() 4 ROOTPATH/modules/Fediverse/Controllers/ActorController.php(56): Modules\Fediverse\Controllers\ActorController->inbox() 5 SYSTEMPATH/CodeIgniter.php(901): Modules\Fediverse\Controllers\ActorController->_remap() 6 SYSTEMPATH/CodeIgniter.php(457): CodeIgniter\CodeIgniter->runController() 7 SYSTEMPATH/CodeIgniter.php(340): CodeIgniter\CodeIgniter->handleRequest() 8 FCPATH/index.php(73): CodeIgniter\CodeIgniter->run()
Context
- Castopod: 1.40
- OS: Debian 12
- Browser: Chrome, Vivaldi
- Web server: Caddy
- My Calckey icon and avatar images end with extension .webp
- My Kbin avatar and banner images end with extension .png
- The urls for these images are quite long, but not excessively so.
- My castopod account is on a subdomain (one level) i.e. @podcast@podcast.maindomain.com
- No other fediverse services are served from this domain.
Possible fixes
if (property_exists($actorPayload, 'icon')) {
$newActor->avatar_image_url = $actorPayload->icon->url;
$newActor->avatar_image_mimetype = $actorPayload->icon->mediaType;
}
if (property_exists($actorPayload, 'image')) {
$newActor->cover_image_url = $actorPayload->image->url;
$newActor->cover_image_mimetype = $actorPayload->image->mediaType;
}
I believe that this should have some default checking done, especially based on the file-extension. As a reference to a different php-powered project: