# cURL error 28: Operation timed out after 30000 milliseconds with 0 bytes received - Federated Nextcloud

**URL:** <https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088>\
**Category:** ℹ️ Support\
**Tags:** nc21, federated\
**Created:** [April 9, 2021, 12:18pm UTC](https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088 "2021-04-09T12:18:14Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Argon267](https://help.nextcloud.com/letter_avatar/argon267/32/5_5575768a8748004e209b776fc1b2916d.png) [@Argon267](https://help.nextcloud.com/u/Argon267)\
**Post date:** [April 9, 2021, 12:18pm UTC](https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088/1 "2021-04-09T12:18:14Z")

</div>

Nextcloud version: **21.0.1.1**  
Operating system and version: **Ubuntu 20.04**  
Apache or nginx version: **Apache 2.4.41**  
PHP version: **7.4**

The issue you are facing:  
Sharing files over a federated folder. Bigger files (\>500MB) result in an error (cURL error 28: Operation timed out after 30000 milliseconds with 0 bytes received).  
I try to share files between my two NC. NC1 is a VPS, NC2 is running on a QNAP NAS (Virtual Machine Ubuntu 20.04). Smaller files are no problem at all.

Is this the first time you’ve seen this error? _(Y/N)_:  
Yes

Steps to replicate it:

1. Federate Folder
2. Share big files \>500MB
3. 

The output of your Nextcloud log in **Admin \> Logging** :

````auto
{"reqId":"iQZMXS0s4pW09UosJDaW","level":3,"time":"2021-04-09T11:10:45+00:00","remoteAddr":"X","user":"X.Y","app":"no app in context","method":"MOVE","url":"/remote.php/dav/uploads/X.Y/web-file-upload-56368bb80eec6bcd1cefb876660b8d34-1617966380606/.file","message":{"Exception":"GuzzleHttp\\Exception\\ConnectException","Message":"cURL error 28: Operation timed out after 30000 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://X.Y.net/public.php/webdav/XY.rar",
"Code":0,"Trace":[{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":158,"function":"createRejection","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":110,"function":"finishError","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlHandler.php","line":47,"function":"finish","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/Proxy.php","line":28,"function":"__invoke","class":"GuzzleHttp\\Handler\\CurlHandler","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/Proxy.php","line":48,"function":"GuzzleHttp\\Handler\\{closure}","class":"GuzzleHttp\\Handler\\Proxy","type":"::","args":[" ***sensitive parameters replaced***"]},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php","line":64,"function":"GuzzleHttp\\Handler\\{closure}","class":"GuzzleHttp\\Handler\\Proxy","type":"::","args":[" ***sensitive parameters replaced***"]},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":31,"function":"__invoke","class":"GuzzleHttp\\PrepareBodyMiddleware","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":71,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":[" ***sensitive parameters replaced***"]},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":63,"function":"__invoke","class":"GuzzleHttp\\RedirectMiddleware","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php","line":75,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":[" ***sensitive parameters replaced***"]},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":331,"function":"__invoke","class":"GuzzleHttp\\HandlerStack","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":168,"function":"transfer","class":"GuzzleHttp\\Client","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":187,"function":"requestAsync","class":"GuzzleHttp\\Client","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Http/Client/Client.php","line":342,"function":"request","class":"GuzzleHttp\\Client","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Files/Storage/DAV.php","line":516,"function":"put","class":"OC\\Http\\Client\\Client","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Files/Storage/DAV.php","line":423,"function":"uploadFile","class":"OC\\Files\\Storage\\DAV","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Files/Storage/DAV.php","line":414,"function":"writeBack","class":"OC\\Files\\Storage\\DAV","type":"->"},{"function":"OC\\Files\\Storage\\{closure}","class":"OC\\Files\\Storage\\DAV","type":"->","args":[" ***sensitive parameters replaced***"]},
{"file":"/var/www/nextcloud/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php","line":119,"function":"call_user_func"},
{"function":"stream_close","class":"Icewind\\Streams\\CallbackWrapper","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Files/Storage/Common.php","line":871,"function":"fclose"},
{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php","line":629,"function":"writeStream","class":"OC\\Files\\Storage\\Common","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php","line":629,"function":"writeStream","class":"OC\\Files\\Storage\\Wrapper\\Wrapper","type":"->"},
{"file":"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php","line":629,"function":"writeStream","class":"OC\\Files\\Storage\\Wrapper\\Wrapper","type":"->"},
{"file":"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/File.php","line":207,"function":"writeStream","class":"OC\\Files\\Storage\\Wrapper\\Wrapper","type":"->"},
{"file":"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/Directory.php","line":156,"function":"put","class":"OCA\\DAV\\Connector\\Sabre\\File","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php","line":305,"function":"createFile","class":"OCA\\DAV\\Connector\\Sabre\\Directory","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php","line":133,"function":"copyNode","class":"Sabre\\DAV\\Tree","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php","line":163,"function":"copy","class":"Sabre\\DAV\\Tree","type":"->"},
{"file":"/var/www/nextcloud/apps/dav/lib/Upload/ChunkingPlugin.php","line":95,"function":"move","class":"Sabre\\DAV\\Tree","type":"->"},
{"file":"/var/www/nextcloud/apps/dav/lib/Upload/ChunkingPlugin.php","line":77,"function":"performMove","class":"OCA\\DAV\\Upload\\ChunkingPlugin","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"beforeMove","class":"OCA\\DAV\\Upload\\ChunkingPlugin","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":603,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpMove","class":"Sabre\\DAV\\CorePlugin","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":253,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},
{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":321,"function":"start","class":"Sabre\\DAV\\Server","type":"->"},
{"file":"/var/www/nextcloud/apps/dav/lib/Server.php","line":332,"function":"exec","class":"Sabre\\DAV\\Server","type":"->"},
{"file":"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php","line":35,"function":"exec","class":"OCA\\DAV\\Server","type":"->"},
{"file":"/var/www/nextcloud/remote.php","line":167,"args":["/var/www/nextcloud/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","Line":210,"CustomMessage":"--"},
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 OPR/75.0.3969.149","version":"21.0.1.1","id":"6070388ab2533"}```

````

The output of your config.php file in `/var/www/nextcloud/config/`

```auto
<?php
$CONFIG = array (
  'instanceid' => 'oc7c1ii1uo4f',
  'passwordsalt' => 'XY',
  'secret' => 'XY',
  'trusted_domains' =>
  array (
    0 => 'www.X-Y.de',
    1 => 'X-Y.de',
    2 => 'X.Y.de',
  ),
  'datadirectory' => '/var/www/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '21.0.1.1',
  'overwrite.cli.url' => 'https://www.X-Y.de',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'oc_X.Y',
  'dbpassword' => 'XY',
  'installed' => true,
  'maintenance' => false,
  'loglevel' => 0,
  'theme' => '',
  'allow_local_remote_servers' => true,
  'default_phone_region' => 'DE',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'updater.release.channel' => 'stable',
  'app_install_overwrite' =>
  array (
    0 => 'files_external_ipfs',
    1 => 'calendar',
    2 => 'cookbook',
    3 => 'dicomviewer',
    4 => 'files_frommail',
  ),
  'mail_from_address' => 'nextcloud',
  'mail_smtpmode' => 'smtp',
  'mail_sendmailmode' => 'smtp',
  'mail_domain' => 'X-Y.de',
  'mail_smtphost' => 'X.Y.net',
  'mail_smtpport' => '25',
  'mail_smtpauth' => 1,
  'mail_smtpname' => 'BLA@X-Y.de',
  'mail_smtppassword' => 'xyz',
  'mail_smtpsecure' => 'tls',
  'mail_smtpauthtype' => 'LOGIN',
  'onlyoffice' =>
  array (
    'verify_peer_off' => true,
  ),
  'updater.secret' => 'xyZ',
);

```

The output of your Apache/nginx/system log in `/var/log/nextcloud.error`:

```auto
[Fri Apr 09 13:10:45.830872 2021] [proxy_fcgi:error] [pid 841] (70008)Partial results are valid but processing is incomplete: [client X.X.X.X:X] AH01075: Error dispatching reques>

```

---

<div class="post-metadata">

**Author:** ![rinal13](https://help.nextcloud.com/letter_avatar/rinal13/32/5_5575768a8748004e209b776fc1b2916d.png) [@rinal13](https://help.nextcloud.com/u/rinal13)\
**Post date:** [November 29, 2021, 9:34am UTC](https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088/2 "2021-11-29T09:34:33Z")

</div>

I had the same issue. There is a performance issue at nextcloud with big federation.  
I overcome the issue by increasing the timeouts, but this has to be adjusted manually in the code.

May you try this.

1. Increase the timeout to get the folder structure at storage.php in apps/files\_sharing/lib/External

> Line 329: ‘timeout’ =\> 60,

1. Increase the timeout to get big file transfer working at client.php lib/private/Http/Client

> Line 80: RequestOptions::TIMEOUT =\> 120

---

<div class="post-metadata">

**Author:** ![fresh](https://help.nextcloud.com/letter_avatar/fresh/32/5_5575768a8748004e209b776fc1b2916d.png) [@fresh](https://help.nextcloud.com/u/fresh)\
**Post date:** [November 25, 2022, 4:29pm UTC](https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088/3 "2022-11-25T16:29:48Z")

</div>

This works. Thanks.

But it’s absolutely no fix for me. It will be reset after next app update.

**Nextcloud, please fix your bugs instead of implementing new features…**

I’m curious to see what will happen.

> [cURL time out by jlssmt · Pull Request #35461 · nextcloud/server · GitHub](https://github.com/nextcloud/server/pull/35461)

---

<div class="post-metadata">

**Author:** ![kesselb](https://help.nextcloud.com/user_avatar/help.nextcloud.com/kesselb/32/74519_2.png) [@kesselb](https://help.nextcloud.com/u/kesselb)\
**Post date:** [November 28, 2022, 10:08pm UTC](https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088/4 "2022-11-28T22:08:00Z")

</div>

> [@fresh](#):
>
> Nextcloud, please fix your bugs instead of implementing new features…

Your internet connection / the server’s uplink is slow. How should we fix that? 😉

---

<div class="post-metadata">

**Author:** ![fresh](https://help.nextcloud.com/letter_avatar/fresh/32/5_5575768a8748004e209b776fc1b2916d.png) [@fresh](https://help.nextcloud.com/u/fresh)\
**Post date:** [November 28, 2022, 11:12pm UTC](https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088/5 "2022-11-28T23:12:50Z")

</div>

@kesselb Do you really think that this error is due to the user and not the application?

---

<div class="post-metadata">

**Author:** ![kesselb](https://help.nextcloud.com/user_avatar/help.nextcloud.com/kesselb/32/74519_2.png) [@kesselb](https://help.nextcloud.com/u/kesselb)\
**Post date:** [November 29, 2022, 2:17pm UTC](https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088/6 "2022-11-29T14:17:45Z")

</div>

> [@fresh](#):
>
> Do you really think that this error is due to the user and not the application?

Not the user, but the infrastructure.

For federation, we assume that the peers can exchange information within a reasonable timespan.

The request to list a remote directory or file should not need 30 seconds to complete. Such a slow response makes the whole feature unusable after all.

---

<div class="post-metadata">

**Author:** ![fresh](https://help.nextcloud.com/letter_avatar/fresh/32/5_5575768a8748004e209b776fc1b2916d.png) [@fresh](https://help.nextcloud.com/u/fresh)\
**Post date:** [November 29, 2022, 2:35pm UTC](https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088/7 "2022-11-29T14:35:47Z")

</div>

@kesselb  
I have download: 50Mbit/s and upload 10Mbit/s. The same for my second (backup) server at another location. I know Germany is slow, but I think this speed should be fine. Otherwise, nextcloud should start adding gigabit connections to the minimum requirements 😉  
Like I said: IMO, this is a bug. I don’t know if this timeout is the right solution, but it is at least a solution. The error has been unresolved since mid-April 2021.

By the way: This error occurs only with big files. In my example in combination with backup app (huge backup files).

---

<div class="post-metadata">

**Author:** ![simonspa](https://help.nextcloud.com/user_avatar/help.nextcloud.com/simonspa/32/46378_2.png) [@simonspa](https://help.nextcloud.com/u/simonspa)\
**Post date:** [January 10, 2024, 8:02pm UTC](https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088/8 "2024-01-10T20:02:29Z")

</div>

FYI, set `davstorage.request_timeout` to something lerger and you’re set:

> <https://github.com/nextcloud/server/pull/38292>
>
> \* Resolves: #26071
> 
> \## Summary
> 
> Add the config variable for \`davstorage.requ…est\_timeout\` in order to define remote timeouts.
> Needed for nextcloud federation with large files.
> 
> 
> \## Details on errors:
> Basically, you encounter two types of errors when dealing with large files in federated shares (see below).
> In both cases you get a timeout because the put / get command is not finished in 30s (hard coded in the defaults; see lib/private/Http/Client/Client.php). This PR introduces the configuration variable \`davstorage.request\_timeout\` which replaces this default timeout in the get/put command of the DAV module. The DAV module is used by the federated share to transfer data between two cloud instances.
> 
> \### Download from Federated Share:
> 
> \`\`\`
> \[webdav\] Error: Sabre\\DAV\\Exception: cURL error 28: Operation timed out after 30000 milliseconds with 315250376 out of 1478242034 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://REMOTE\_CLOUD/public.php/webdav/SOME\_FILE\_Cut\_copy.mp4 at \<\<closure\>\>
> 
> 0. /var/www/cloud-html/apps/dav/lib/Connector/Sabre/File.php line 492
> OCA\\DAV\\Connector\\Sabre\\File-\>convertToSabreException()
> 1. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php line 85
> OCA\\DAV\\Connector\\Sabre\\File-\>get()
> 2. /var/www/cloud-html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php line 89
> Sabre\\DAV\\CorePlugin-\>httpGet()
> 3. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Server.php line 472
> Sabre\\DAV\\Server-\>emit()
> 4. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Server.php line 253
> Sabre\\DAV\\Server-\>invokeMethod()
> 5. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Server.php line 321
> Sabre\\DAV\\Server-\>start()
> 6. /var/www/cloud-html/apps/dav/lib/Server.php line 366
> Sabre\\DAV\\Server-\>exec()
> 7. /var/www/cloud-html/apps/dav/appinfo/v2/remote.php line 35
> OCA\\DAV\\Server-\>exec()
> 8. /var/www/cloud-html/remote.php line 172
> require\_once("/var/www/cloud- ... p")
> 
> Caused by:
> 
> GuzzleHttp\\Exception\\ConnectException: cURL error 28: Operation timed out after 30000 milliseconds with 315250376 out of 1478242034 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://REMOTE\_CLOUD/public.php/webdav/SOME\_FILE\_Cut\_copy.mp4 at \<\<closure\>\>
> 
> 0. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 158
> GuzzleHttp\\Handler\\CurlFactory::createRejection("\*\*\* sensitive parameters replaced \*\*\*")
> 1. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 110
> GuzzleHttp\\Handler\\CurlFactory::finishError()
> 2. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlHandler.php line 47
> GuzzleHttp\\Handler\\CurlFactory::finish()
> 3. /var/www/cloud-html/lib/private/Http/Client/DnsPinMiddleware.php line 150
> GuzzleHttp\\Handler\\CurlHandler-\>\_\_invoke()
> 4. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php line 35
> OC\\Http\\Client\\DnsPinMiddleware-\>OC\\Http\\Client\\{closure}("\*\*\* sensitive parameters replaced \*\*\*")
> 5. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Middleware.php line 31
> GuzzleHttp\\PrepareBodyMiddleware-\>\_\_invoke()
> 6. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php line 71
> GuzzleHttp\\Middleware::GuzzleHttp\\{closure}("\*\*\* sensitive parameters replaced \*\*\*")
> 7. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Middleware.php line 63
> GuzzleHttp\\RedirectMiddleware-\>\_\_invoke()
> 8. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php line 75
> GuzzleHttp\\Middleware::GuzzleHttp\\{closure}("\*\*\* sensitive parameters replaced \*\*\*")
> 9. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Client.php line 331
> GuzzleHttp\\HandlerStack-\>\_\_invoke()
> 10. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Client.php line 168
> GuzzleHttp\\Client-\>transfer()
> 11. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Client.php line 187
> GuzzleHttp\\Client-\>requestAsync("\*\*\* sensitive parameters replaced \*\*\*")
> 12. /var/www/cloud-html/lib/private/Http/Client/Client.php line 226
> GuzzleHttp\\Client-\>request()
> 13. /var/www/cloud-html/lib/private/Files/Storage/DAV.php line 358
> OC\\Http\\Client\\Client-\>get()
> 14. /var/www/cloud-html/lib/private/Files/Storage/Wrapper/Wrapper.php line 298
> OC\\Files\\Storage\\DAV-\>fopen()
> 15. /var/www/cloud-html/lib/private/Files/Storage/Wrapper/Availability.php line 314
> OC\\Files\\Storage\\Wrapper\\Wrapper-\>fopen()
> 16. /var/www/cloud-html/apps/files\_antivirus/lib/AvirWrapper.php line 77
> OC\\Files\\Storage\\Wrapper\\Availability-\>fopen()
> 17. /var/www/cloud-html/lib/private/Files/View.php line 1180
> OCA\\Files\_Antivirus\\AvirWrapper-\>fopen()
> 18. /var/www/cloud-html/lib/private/Files/View.php line 1006
> OC\\Files\\View-\>basicOperation()
> 19. /var/www/cloud-html/apps/dav/lib/Connector/Sabre/File.php line 490
> OC\\Files\\View-\>fopen()
> 20. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php line 85
> OCA\\DAV\\Connector\\Sabre\\File-\>get()
> 21. /var/www/cloud-html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php line 89
> Sabre\\DAV\\CorePlugin-\>httpGet()
> 22. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Server.php line 472
> Sabre\\DAV\\Server-\>emit()
> 23. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Server.php line 253
> Sabre\\DAV\\Server-\>invokeMethod()
> 24. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Server.php line 321
> Sabre\\DAV\\Server-\>start()
> 25. /var/www/cloud-html/apps/dav/lib/Server.php line 366
> Sabre\\DAV\\Server-\>exec()
> 26. /var/www/cloud-html/apps/dav/appinfo/v2/remote.php line 35
> OCA\\DAV\\Server-\>exec()
> 27. /var/www/cloud-html/remote.php line 172
> require\_once("/var/www/cloud- ... p")
> \`\`\`
> 
> \## Upload to Federated Share:
> 
> \`\`\`
> \[no app in context\] Error: GuzzleHttp\\Exception\\ConnectException: cURL error 28: Operation timed out after 30000 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://REMOTE\_CLOUD/public.php/webdav/SOME\_FILE\_Cut.mp4 at \<\<closure\>\>
> 
> 0. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 158
> GuzzleHttp\\Handler\\CurlFactory::createRejection("\*\*\* sensitive parameters replaced \*\*\*")
> 1. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 110
> GuzzleHttp\\Handler\\CurlFactory::finishError()
> 2. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlHandler.php line 47
> GuzzleHttp\\Handler\\CurlFactory::finish()
> 3. /var/www/cloud-html/lib/private/Http/Client/DnsPinMiddleware.php line 150
> GuzzleHttp\\Handler\\CurlHandler-\>\_\_invoke()
> 4. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php line 64
> OC\\Http\\Client\\DnsPinMiddleware-\>OC\\Http\\Client\\{closure}("\*\*\* sensitive parameters replaced \*\*\*")
> 5. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Middleware.php line 31
> GuzzleHttp\\PrepareBodyMiddleware-\>\_\_invoke()
> 6. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php line 71
> GuzzleHttp\\Middleware::GuzzleHttp\\{closure}("\*\*\* sensitive parameters replaced \*\*\*")
> 7. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Middleware.php line 63
> GuzzleHttp\\RedirectMiddleware-\>\_\_invoke()
> 8. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php line 75
> GuzzleHttp\\Middleware::GuzzleHttp\\{closure}("\*\*\* sensitive parameters replaced \*\*\*")
> 9. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Client.php line 331
> GuzzleHttp\\HandlerStack-\>\_\_invoke()
> 10. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Client.php line 168
> GuzzleHttp\\Client-\>transfer()
> 11. /var/www/cloud-html/3rdparty/guzzlehttp/guzzle/src/Client.php line 187
> GuzzleHttp\\Client-\>requestAsync("\*\*\* sensitive parameters replaced \*\*\*")
> 12. /var/www/cloud-html/lib/private/Http/Client/Client.php line 333
> GuzzleHttp\\Client-\>request()
> 13. /var/www/cloud-html/lib/private/Files/Storage/DAV.php line 514
> OC\\Http\\Client\\Client-\>put()
> 14. /var/www/cloud-html/lib/private/Files/Storage/DAV.php line 422
> OC\\Files\\Storage\\DAV-\>uploadFile()
> 15. /var/www/cloud-html/lib/private/Files/Storage/DAV.php line 413
> OC\\Files\\Storage\\DAV-\>writeBack()
> 16. \<\<closure\>\>
> OC\\Files\\Storage\\DAV-\>OC\\Files\\Storage\\{closure}("\*\*\* sensitive parameters replaced \*\*\*")
> 17. /var/www/cloud-html/3rdparty/icewind/streams/src/CallbackWrapper.php line 119
> call\_user\_func()
> 18. \<\<closure\>\>
> Icewind\\Streams\\CallbackWrapper-\>stream\_close("\*\*\* sensitive parameters replaced \*\*\*")
> 19. /var/www/cloud-html/lib/private/Files/Storage/Common.php line 883
> fclose("\*\*\* sensitive parameters replaced \*\*\*")
> 20. /var/www/cloud-html/lib/private/Files/Storage/Wrapper/Wrapper.php line 644
> OC\\Files\\Storage\\Common-\>writeStream()
> 21. /var/www/cloud-html/lib/private/Files/Storage/Wrapper/Wrapper.php line 644
> OC\\Files\\Storage\\Wrapper\\Wrapper-\>writeStream()
> 22. /var/www/cloud-html/apps/files\_antivirus/lib/AvirWrapper.php line 96
> OC\\Files\\Storage\\Wrapper\\Wrapper-\>writeStream()
> 23. /var/www/cloud-html/apps/dav/lib/Connector/Sabre/File.php line 248
> OCA\\Files\_Antivirus\\AvirWrapper-\>writeStream()
> 24. /var/www/cloud-html/apps/dav/lib/Connector/Sabre/Directory.php line 149
> OCA\\DAV\\Connector\\Sabre\\File-\>put()
> 25. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Tree.php line 307
> OCA\\DAV\\Connector\\Sabre\\Directory-\>createFile("\*\*\* sensitive parameters replaced \*\*\*")
> 26. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Tree.php line 133
> Sabre\\DAV\\Tree-\>copyNode()
> 27. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Tree.php line 163
> Sabre\\DAV\\Tree-\>copy()
> 28. /var/www/cloud-html/apps/dav/lib/Upload/ChunkingPlugin.php line 94
> Sabre\\DAV\\Tree-\>move()
> 29. /var/www/cloud-html/apps/dav/lib/Upload/ChunkingPlugin.php line 76
> OCA\\DAV\\Upload\\ChunkingPlugin-\>performMove()
> 30. /var/www/cloud-html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php line 89
> OCA\\DAV\\Upload\\ChunkingPlugin-\>beforeMove()
> 31. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php line 603
> Sabre\\DAV\\Server-\>emit()
> 32. /var/www/cloud-html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php line 89
> Sabre\\DAV\\CorePlugin-\>httpMove()
> 33. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Server.php line 472
> Sabre\\DAV\\Server-\>emit()
> 34. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Server.php line 253
> Sabre\\DAV\\Server-\>invokeMethod()
> 35. /var/www/cloud-html/3rdparty/sabre/dav/lib/DAV/Server.php line 321
> Sabre\\DAV\\Server-\>start()
> 36. /var/www/cloud-html/apps/dav/lib/Server.php line 366
> Sabre\\DAV\\Server-\>exec()
> 37. /var/www/cloud-html/apps/dav/appinfo/v2/remote.php line 35
> OCA\\DAV\\Server-\>exec()
> 38. /var/www/cloud-html/remote.php line 172
> require\_once("/var/www/cloud- ... p")
> \`\`\`
> 
> \## Checklist
> 
> \- Code is \[properly formatted\](https://docs.nextcloud.com/server/latest/developer\_manual/digging\_deeper/continuous\_integration.html#linting)
> \- \[Sign-off message\](https://github.com/src-d/guide/blob/master/developer-community/fix-DCO.md) is added to all commits
> \- \[\] Tests (\[unit\](https://docs.nextcloud.com/server/latest/developer\_manual/app\_development/tutorial.html#unit-tests), \[integration\](https://docs.nextcloud.com/server/latest/developer\_manual/app\_development/tutorial.html#integration-tests), api and/or acceptance) are included
> \- \[\] Screenshots before/after for front-end changes
> \- \[x\] Documentation (\[manuals\](https://github.com/nextcloud/documentation/) or wiki) has been updated or is not required
> \- \[\] \[Backports requested\](https://github.com/nextcloud/backportbot/#usage) where applicable (ex: critical bugfixes)

---

<div class="post-metadata">

**Author:** ![wwe](https://help.nextcloud.com/user_avatar/help.nextcloud.com/wwe/32/72963_2.png) [@wwe](https://help.nextcloud.com/u/wwe)\
**Post date:** [January 16, 2025, 9:17am UTC](https://help.nextcloud.com/t/curl-error-28-operation-timed-out-after-30000-milliseconds-with-0-bytes-received-federated-nextcloud/113088/9 "2025-01-16T09:17:58Z")

</div>


