Skip to content

[Bug]: Failed to upload big image in Talk on Android #59572

@Adefey

Description

@Adefey

⚠️ This issue respects the following points: ⚠️

Bug description

Image uploading from Android Nextcloud Talk client fails when image is big (>3MB). Image itself is saved into Talk directory but not sent in the chat. Also there is a response with status 403 from backend: Sabre\DAV\Exception\Forbidden probably due to dirty table reads in the database transaction. Upload of small photos works fine, looks like issue is happening when all parts of photo are uploaded and backend tries to perform some post processing (probably to remove upload directory - because I still see directories with file chunks)

Steps to reproduce

  1. Install Nextcloud in Docker (as in Additional info)
  2. Use Android client Talk v23.0.0 to send a photo from gallery of size 3..8 MB in chat
  3. Photo is not sent, client gets notification Failed to upload %filename, but the actual photo is uploaded into Talk directory of current user

Expected behavior

Photo sends in chat nornally same as for small photos (>1MB)

Nextcloud Server version

33

Operating system

Other

PHP engine version

PHP 8.4

Web server

Nginx

Database engine version

MariaDB

Is this bug present after an update or on a fresh install?

Fresh Nextcloud Server install

Are you using the Nextcloud Server Encryption module?

None

What user-backends are you using?

  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other

Configuration report

I have no name!@7527609758b5:/var/www/html$ ./occ config:list system
{
    "system": {
        "htaccess.RewriteBase": "\/",
        "default_phone_region": "RU",
        "memcache.local": "\\OC\\Memcache\\APCu",
        "apps_paths": [
            {
                "path": "\/var\/www\/html\/apps",
                "url": "\/apps",
                "writable": false
            },
            {
                "path": "\/var\/www\/html\/custom_apps",
                "url": "\/custom_apps",
                "writable": true
            }
        ],
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "localhost",
            "nextcloud.adefe.xyz"
        ],
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "33.0.2.2",
        "overwrite.cli.url": "https:\/\/nextcloud.adefe.xyz",
        "overwriteprotocol": "https",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpmode": "smtp",
        "mail_sendmailmode": "smtp",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "465",
        "mail_smtpsecure": "ssl",
        "mail_smtpauth": 1,
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "loglevel": 0,
        "maintenance": false,
        "theme": "",
        "maintenance_window_start": 1,
        "filelocking.enabled": true,
        "logfile": "\/var\/www\/html\/data\/nextcloud.log",
        "cache_path": "\/var\/www\/html\/data\/cache",
        "app_install_overwrite": [],
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "port": 6379,
            "timeout": 0,
            "password": "***REMOVED SENSITIVE VALUE***"
        },
        "backgroundjobs_mode": "cron",
        "db_logging": true,
        "log.condition": {
            "apps": [
                "dav"
            ]
        },
        "DOMAIN": "nextcloud.adefe.xyz"
    }
}

List of activated Apps

I have no name!@7527609758b5:/var/www/html$ ./occ app:list
Enabled:
  - activity: 6.0.0
  - audioplayer: 3.8.0
  - bruteforcesettings: 6.0.0
  - circles: 33.0.0
  - cloud_federation_api: 1.17.0
  - comments: 1.23.0
  - contacts: 8.4.3
  - contactsinteraction: 1.14.1
  - dashboard: 7.13.0
  - dav: 1.36.0
  - federatedfilesharing: 1.23.0
  - federation: 1.23.0
  - files: 2.5.0
  - files_downloadlimit: 5.1.0
  - files_pdfviewer: 6.0.0
  - files_reminders: 1.6.0
  - files_sharing: 1.25.2
  - files_trashbin: 1.23.0
  - files_versions: 1.26.0
  - firstrunwizard: 6.0.0
  - logreader: 6.0.0
  - lookup_server_connector: 1.21.0
  - mail: 5.7.7
  - nextcloud_announcements: 5.0.0
  - notifications: 6.0.0
  - notify_push: 1.3.1
  - oauth2: 1.21.0
  - password_policy: 5.0.0
  - photos: 6.0.0
  - previewgenerator: 5.13.0
  - privacy: 5.0.0
  - profile: 1.2.0
  - provisioning_api: 1.23.0
  - recommendations: 6.0.0
  - related_resources: 4.0.0
  - richdocuments: 10.1.2
  - serverinfo: 5.0.0
  - settings: 1.16.0
  - sharebymail: 1.23.0
  - spreed: 23.0.3
  - support: 5.0.0
  - survey_client: 5.0.0
  - systemtags: 1.23.0
  - text: 7.0.0
  - theming: 2.8.0
  - twofactor_backupcodes: 1.22.0
  - twofactor_totp: 15.0.0
  - updatenotification: 1.23.0
  - user_status: 1.13.0
  - viewer: 6.0.0
  - weather_status: 1.13.0
  - webhook_listeners: 1.5.0
  - workflowengine: 2.15.0
Disabled:
  - admin_audit: 1.23.0
  - app_api: 33.0.0 (installed 32.0.0)
  - calendar: 6.2.2 (installed 6.2.2)
  - deck: 1.17.0 (installed 1.17.0)
  - encryption: 2.21.0
  - extract: 1.3.6 (installed 1.3.6)
  - files_external: 1.25.1
  - files_rightclick: 0.15.1 (installed 1.6.0)
  - files_zip: 2.3.0 (installed 2.3.0)
  - suspicious_login: 11.0.0
  - testing: 1.23.0
  - twofactor_nextcloud_notification: 7.0.0
  - user_ldap: 1.24.0

Nextcloud Signing status

No errors have been found.

Nextcloud Logs

{"reqId":"l9IVRsQQXXIC9xUDpSCB","level":0,"time":"2026-04-10T16:57:43+00:00","remoteAddr":"172.70.153.140","user":"adefe","app":"no app in context","method":"MOVE","url":"/remote.php/dav/uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","scriptName":"/remote.php","message":"dirty table reads: SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)","userAgent":"Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0","version":"33.0.2.2","exception":{"Exception":"Exception","Message":"dirty table reads: SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)","Code":0,"Trace":[{"file":"/var/www/html/lib/private/DB/ConnectionAdapter.php","line":50,"function":"executeQuery","class":"OC\\DB\\Connection","type":"->","args":["SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)",{"dcValue1":"d41d8cd98f00b204e9800998ecf8427e","dcValue2":14},{"dcValue1":2,"dcValue2":1}]},{"file":"/var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php","line":268,"function":"executeQuery","class":"OC\\DB\\ConnectionAdapter","type":"->","args":["SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)",{"dcValue1":"d41d8cd98f00b204e9800998ecf8427e","dcValue2":14},{"dcValue1":2,"dcValue2":1}]},{"file":"/var/www/html/lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php","line":270,"function":"executeQuery","class":"OC\\DB\\QueryBuilder\\QueryBuilder","type":"->","args":[{"__class__":"OC\\DB\\ConnectionAdapter"}]},{"file":"/var/www/html/lib/private/Files/Cache/Cache.php","line":133,"function":"executeQuery","class":"OC\\DB\\QueryBuilder\\ExtendedQueryBuilder","type":"->","args":[]},{"file":"/var/www/html/lib/private/Files/Cache/Cache.php","line":1000,"function":"get","class":"OC\\Files\\Cache\\Cache","type":"->","args":[""]},{"file":"/var/www/html/lib/private/Files/Cache/Cache.php","line":985,"function":"calculateFolderSizeInner","class":"OC\\Files\\Cache\\Cache","type":"->","args":["",null]},{"file":"/var/www/html/lib/private/Files/Cache/Cache.php","line":931,"function":"calculateFolderSize","class":"OC\\Files\\Cache\\Cache","type":"->","args":["",null]},{"file":"/var/www/html/lib/private/Files/Cache/Updater.php","line":156,"function":"correctFolderSize","class":"OC\\Files\\Cache\\Cache","type":"->","args":[""]},{"file":"/var/www/html/lib/private/Files/View.php","line":305,"function":"remove","class":"OC\\Files\\Cache\\Updater","type":"->","args":["732c47c1e88a3756bc29a0f7ef5d582e"]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php","line":305,"function":"rmdir","class":"OC\\Files\\View","type":"->","args":["/732c47c1e88a3756bc29a0f7ef5d582e"]},{"file":"/var/www/html/apps/dav/lib/Upload/FutureFile.php","line":83,"function":"delete","class":"OCA\\DAV\\Connector\\Sabre\\Directory","type":"->","args":[]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php","line":182,"function":"delete","class":"OCA\\DAV\\Upload\\FutureFile","type":"->","args":[]},{"file":"/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php","line":77,"function":"move","class":"Sabre\\DAV\\Tree","type":"->","args":["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]},{"file":"/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php","line":59,"function":"performMove","class":"OCA\\DAV\\Upload\\ChunkingPlugin","type":"->","args":["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"beforeMove","class":"OCA\\DAV\\Upload\\ChunkingPlugin","type":"->","args":["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":603,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["beforeMove",["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpMove","class":"Sabre\\DAV\\CorePlugin","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["method:MOVE",[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Server.php","line":212,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/apps/dav/lib/Server.php","line":427,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->","args":[]},{"file":"/var/www/html/apps/dav/appinfo/v2/remote.php","line":25,"function":"exec","class":"OCA\\DAV\\Server","type":"->","args":[]},{"file":"/var/www/html/remote.php","line":151,"args":["/var/www/html/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/html/lib/private/DB/Connection.php","Line":407,"message":"dirty table reads: SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)","tables":"[\"oc_filecache\",\"oc_filecache_extended\",\"oc_files_versions\",\"oc_activity\",\"oc_files_metadata\",\"oc_files_metadata_index\",\"oc_jobs\",\"oc_preview_generation\"]","reads":"[\"oc_filecache\",\"oc_filecache_extended\",\"oc_files_metadata\"]","exception":"{\"class\":\"Exception\",\"message\":\"dirty table reads: SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)\",\"code\":0,\"file\":\"/var/www/html/lib/private/DB/Connection.php:407\",\"trace\":\"#0 /var/www/html/lib/private/DB/ConnectionAdapter.php(50): OC\\DB\\Connection->executeQuery('SELECT `filecac...', Array, Array)\\n#1 /var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php(268): OC\\DB\\ConnectionAdapter->executeQuery('SELECT `filecac...', Array, Array)\\n#2 /var/www/html/lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php(270): OC\\DB\\QueryBuilder\\QueryBuilder->executeQuery(Object(OC\\DB\\ConnectionAdapter))\\n#3 /var/www/html/lib/private/Files/Cache/Cache.php(133): OC\\DB\\QueryBuilder\\ExtendedQueryBuilder->executeQuery()\\n#4 /var/www/html/lib/private/Files/Cache/Cache.php(1000): OC\\Files\\Cache\\Cache->get('')\\n#5 /var/www/html/lib/private/Files/Cache/Cache.php(985): OC\\Files\\Cache\\Cache->calculateFolderSizeInner('', NULL)\\n#6 /var/www/html/lib/private/Files/Cache/Cache.php(931): OC\\Files\\Cache\\Cache->calculateFolderSize('', NULL)\\n#7 /var/www/html/lib/private/Files/Cache/Updater.php(156): OC\\Files\\Cache\\Cache->correctFolderSize('')\\n#8 /var/www/html/lib/private/Files/View.php(305): OC\\Files\\Cache\\Updater->remove('732c47c1e88a375...')\\n#9 /var/www/html/apps/dav/lib/Connector/Sabre/Directory.php(305): OC\\Files\\View->rmdir('/732c47c1e88a37...')\\n#10 /var/www/html/apps/dav/lib/Upload/FutureFile.php(83): OCA\\DAV\\Connector\\Sabre\\Directory->delete()\\n#11 /var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php(182): OCA\\DAV\\Upload\\FutureFile->delete()\\n#12 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(77): Sabre\\DAV\\Tree->move('uploads/adefe/7...', 'files/adefe/Tal...')\\n#13 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(59): OCA\\DAV\\Upload\\ChunkingPlugin->performMove('uploads/adefe/7...', 'files/adefe/Tal...')\\n#14 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Upload\\ChunkingPlugin->beforeMove('uploads/adefe/7...', 'files/adefe/Tal...')\\n#15 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(603): Sabre\\DAV\\Server->emit('beforeMove', Array)\\n#16 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpMove(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#17 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:MOVE', Array)\\n#18 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(212): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#19 /var/www/html/apps/dav/lib/Server.php(427): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#20 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#21 /var/www/html/remote.php(151): require_once('/var/www/html/a...')\\n#22 {main}\"}","CustomMessage":"dirty table reads: SELECT `filecache`.`fileid`, `storage`, `path`, `path_hash`, `filecache`.`parent`, `filecache`.`name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `filecache`.`etag`, `filecache`.`permissions`, `checksum`, `unencrypted_size`, `metadata_etag`, `creation_time`, `upload_time`, `meta`.`json` AS `meta_json`, `meta`.`sync_token` AS `meta_sync_token` FROM `*PREFIX*filecache` `filecache` LEFT JOIN `*PREFIX*filecache_extended` `fe` ON `filecache`.`fileid` = `fe`.`fileid` LEFT JOIN `*PREFIX*files_metadata` `meta` ON `filecache`.`fileid` = `meta`.`file_id` WHERE (`path_hash` = :dcValue1) AND (`storage` = :dcValue2)"}}
{"reqId":"l9IVRsQQXXIC9xUDpSCB","level":0,"time":"2026-04-10T16:57:43+00:00","remoteAddr":"172.70.153.140","user":"adefe","app":"webdav","method":"MOVE","url":"/remote.php/dav/uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","scriptName":"/remote.php","message":"Exception thrown: Sabre\\DAV\\Exception\\Forbidden","userAgent":"Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0","version":"33.0.2.2","exception":{"Exception":"Sabre\\DAV\\Exception\\Forbidden","Message":"","Code":0,"Trace":[{"file":"/var/www/html/apps/dav/lib/Upload/FutureFile.php","line":83,"function":"delete","class":"OCA\\DAV\\Connector\\Sabre\\Directory","type":"->","args":[]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php","line":182,"function":"delete","class":"OCA\\DAV\\Upload\\FutureFile","type":"->","args":[]},{"file":"/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php","line":77,"function":"move","class":"Sabre\\DAV\\Tree","type":"->","args":["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]},{"file":"/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php","line":59,"function":"performMove","class":"OCA\\DAV\\Upload\\ChunkingPlugin","type":"->","args":["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"beforeMove","class":"OCA\\DAV\\Upload\\ChunkingPlugin","type":"->","args":["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":603,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["beforeMove",["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpMove","class":"Sabre\\DAV\\CorePlugin","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["method:MOVE",[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Server.php","line":212,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/apps/dav/lib/Server.php","line":427,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->","args":[]},{"file":"/var/www/html/apps/dav/appinfo/v2/remote.php","line":25,"function":"exec","class":"OCA\\DAV\\Server","type":"->","args":[]},{"file":"/var/www/html/remote.php","line":151,"args":["/var/www/html/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php","Line":307,"message":"","exception":"{\"class\":\"Sabre\\DAV\\Exception\\Forbidden\",\"message\":\"\",\"code\":0,\"file\":\"/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php:307\",\"trace\":\"#0 /var/www/html/apps/dav/lib/Upload/FutureFile.php(83): OCA\\DAV\\Connector\\Sabre\\Directory->delete()\\n#1 /var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php(182): OCA\\DAV\\Upload\\FutureFile->delete()\\n#2 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(77): Sabre\\DAV\\Tree->move('uploads/adefe/7...', 'files/adefe/Tal...')\\n#3 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(59): OCA\\DAV\\Upload\\ChunkingPlugin->performMove('uploads/adefe/7...', 'files/adefe/Tal...')\\n#4 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Upload\\ChunkingPlugin->beforeMove('uploads/adefe/7...', 'files/adefe/Tal...')\\n#5 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(603): Sabre\\DAV\\Server->emit('beforeMove', Array)\\n#6 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpMove(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#7 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:MOVE', Array)\\n#8 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(212): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#9 /var/www/html/apps/dav/lib/Server.php(427): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#10 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#11 /var/www/html/remote.php(151): require_once('/var/www/html/a...')\\n#12 {main}\"}","CustomMessage":"Exception thrown: Sabre\\DAV\\Exception\\Forbidden"}}
{"reqId":"l9IVRsQQXXIC9xUDpSCB","level":1,"time":"2026-04-10T16:57:43+00:00","remoteAddr":"172.70.153.140","user":"adefe","app":"no app in context","method":"MOVE","url":"/remote.php/dav/uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","scriptName":"/remote.php","message":"Uncaught exception","userAgent":"Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0","version":"33.0.2.2","exception":{"Exception":"Sabre\\DAV\\Exception\\Forbidden","Message":"","Code":0,"Trace":[{"file":"/var/www/html/apps/dav/lib/Upload/FutureFile.php","line":83,"function":"delete","class":"OCA\\DAV\\Connector\\Sabre\\Directory","type":"->","args":[]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php","line":182,"function":"delete","class":"OCA\\DAV\\Upload\\FutureFile","type":"->","args":[]},{"file":"/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php","line":77,"function":"move","class":"Sabre\\DAV\\Tree","type":"->","args":["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]},{"file":"/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php","line":59,"function":"performMove","class":"OCA\\DAV\\Upload\\ChunkingPlugin","type":"->","args":["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"beforeMove","class":"OCA\\DAV\\Upload\\ChunkingPlugin","type":"->","args":["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":603,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["beforeMove",["uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file","files/adefe/Talk/1000053315 (2).jpg"]]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpMove","class":"Sabre\\DAV\\CorePlugin","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["method:MOVE",[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Server.php","line":212,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/apps/dav/lib/Server.php","line":427,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->","args":[]},{"file":"/var/www/html/apps/dav/appinfo/v2/remote.php","line":25,"function":"exec","class":"OCA\\DAV\\Server","type":"->","args":[]},{"file":"/var/www/html/remote.php","line":151,"args":["/var/www/html/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php","Line":307,"message":"Uncaught exception","exception":"{\"class\":\"Sabre\\DAV\\Exception\\Forbidden\",\"message\":\"\",\"code\":0,\"file\":\"/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php:307\",\"trace\":\"#0 /var/www/html/apps/dav/lib/Upload/FutureFile.php(83): OCA\\DAV\\Connector\\Sabre\\Directory->delete()\\n#1 /var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php(182): OCA\\DAV\\Upload\\FutureFile->delete()\\n#2 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(77): Sabre\\DAV\\Tree->move('uploads/adefe/7...', 'files/adefe/Tal...')\\n#3 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(59): OCA\\DAV\\Upload\\ChunkingPlugin->performMove('uploads/adefe/7...', 'files/adefe/Tal...')\\n#4 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Upload\\ChunkingPlugin->beforeMove('uploads/adefe/7...', 'files/adefe/Tal...')\\n#5 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(603): Sabre\\DAV\\Server->emit('beforeMove', Array)\\n#6 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpMove(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#7 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:MOVE', Array)\\n#8 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(212): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#9 /var/www/html/apps/dav/lib/Server.php(427): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#10 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#11 /var/www/html/remote.php(151): require_once('/var/www/html/a...')\\n#12 {main}\"}","CustomMessage":"Uncaught exception"}}

Additional info

Nextcloud version: Nextcloud Hub 26 Winter (33.0.2)
Talk version: 23.0.3
Signalling version: 2.1.1~docker
Stun: stun.nextcloud.com:443

Nextcloud is installed with docker.

docker-compose.yml:

services:
  db:
    image: mariadb:latest
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - ./db:/var/lib/mysql:z
    env_file: config.txt

  app:
    user: "1000:1000"
    image: nextcloud:latest
    restart: always
    depends_on:
      - db
    volumes:
      - ./nextcloud_data:/var/www/html:z
    env_file: config.txt
    environment:
      - PHP_MEMORY_LIMIT=1000M
    ports:
      - 19980:80
    deploy:
      resources:
        limits:
          memory: 10G

  redis:
    image: redis:alpine
    restart: always
    env_file:
      - config.txt
    command: sh -c 'exec redis-server --requirepass "$$REDIS_PASSWORD"'
    volumes:
      - ./redis_data:/data

  cron:
    user: "1000:1000"
    image: nextcloud:latest
    restart: always
    volumes:
      - ./nextcloud_data:/var/www/html:z
      - ./cron.sh:/cron.sh
    environment:
      - PHP_MEMORY_LIMIT=5000M
    entrypoint: /cron.sh

  nextcloud-talk:
    image: ghcr.io/nextcloud-releases/aio-talk:latest
    init: true
    ports:
      - 3478:3478/tcp
      - 3478:3478/udp
      - 8181:8081/tcp
    env_file: config.txt
    restart: unless-stopped

volumes:
  nextcloud:

nginx config for nextcloud.adefe.xyz:

server {
    if ($host = nextcloud.adefe.xyz) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    server_name nextcloud.adefe.xyz;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name nextcloud.adefe.xyz;
    keepalive_timeout 70;
    client_max_body_size 4G;
    client_body_timeout 7200s;
    fastcgi_buffers 64 4k;
    proxy_buffering off;
    ssl_certificate /etc/letsencrypt/live/nextcloud.adefe.xyz/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/nextcloud.adefe.xyz/privkey.pem; # managed by Certbot

 
   location / {
          proxy_pass http://127.0.0.1:19980;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "Upgrade";
          add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_cache off;
          client_max_body_size 4G;
          proxy_read_timeout 3600s;
          proxy_send_timeout 3600s;
    }

    location ^~ /.well-known {
          location = /.well-known/carddav { return 301 /remote.php/dav/; }
          location = /.well-known/caldav  { return 301 /remote.php/dav/; }
          location /.well-known/acme-challenge/ { try_files $uri =404; }
    
          proxy_pass http://127.0.0.1:19980;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
}
}

nginx config for signal.nextcloud.adefe.xyz:

server {
    if ($host = signal.nextcloud.adefe.xyz) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    server_name signal.nextcloud.adefe.xyz;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name signal.nextcloud.adefe.xyz;

    keepalive_timeout 90;
    client_body_timeout 720s;
    fastcgi_buffers 64 4k;
    proxy_buffering off;
 
    ssl_certificate /etc/letsencrypt/live/signal.nextcloud.adefe.xyz/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/signal.nextcloud.adefe.xyz/privkey.pem; # managed by Certbot

 
   location / {
          proxy_pass http://127.0.0.1:8181;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "Upgrade";
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          client_max_body_size 1G;
          proxy_read_timeout 3600s;
          proxy_send_timeout 3600s;
          }
}

Logs of Nextcloud from docker:

app-1  | 172.70.153.141 - adefe [10/Apr/2026:20:13:47 +0300] "GET /index.php/avatar/tesen_desk/512/dark HTTP/1.1" 200 7513 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1  | 172.70.153.141 - adefe [10/Apr/2026:20:13:48 +0300] "GET /index.php/avatar/tesen_desk/512/dark HTTP/1.1" 200 7513 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1  | 172.70.153.177 - adefe [10/Apr/2026:20:13:49 +0300] "HEAD /remote.php/dav/files/adefe/Talk/1000053315.jpg HTTP/1.1" 200 777 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1  | 172.70.153.161 - adefe [10/Apr/2026:20:13:49 +0300] "HEAD /remote.php/dav/files/adefe/Talk/1000053315%20(2).jpg HTTP/1.1" 200 797 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1  | 172.70.153.148 - adefe [10/Apr/2026:20:13:50 +0300] "GET /remote.php/dav/files/adefe/Talk/1000053315%20(3).jpg HTTP/1.1" 404 670 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1  | 172.70.153.141 - - [10/Apr/2026:20:13:50 +0300] "MKCOL /remote.php/dav/uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e HTTP/1.1" 405 755 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1  | 172.70.153.141 - - [10/Apr/2026:20:13:50 +0300] "PROPFIND /remote.php/dav/uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e HTTP/1.1" 207 1260 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"
app-1  | 172.70.153.141 - - [10/Apr/2026:20:13:50 +0300] "MOVE /remote.php/dav/uploads/adefe/732c47c1e88a3756bc29a0f7ef5d582e/.file HTTP/1.1" 403 600 "-" "Mozilla/5.0 (Android) Nextcloud-Talk v23.0.0"

Metadata

Metadata

Assignees

No one assigned

    Labels

    0. Needs triagePending check for reproducibility or if it fits our roadmap33-feedbackbug

    Type

    No fields configured for Bug.

    Projects

    Status

    Triaged

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions