1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00
curl/lib
Dániel Bakai de05bcb706 multi: fix queueing of pending easy handles
Multi handles repeatedly invert the queue of pending easy handles when
used with CURLMOPT_MAX_TOTAL_CONNECTIONS. This is caused by a multistep
process involving Curl_splaygetbest and violates the FIFO property of
the multi handle.
This patch fixes this issue by redefining the "best" node in the
context of timeouts as the "smallest not larger than now", and
implementing the necessary data structure modifications to do this
effectively, namely:
 - splay nodes with the same key are now stored in a doubly-linked
   circular list instead of a non-circular one to enable O(1)
   insertion to the tail of the list
 - Curl_splayinsert inserts nodes with the same key to the tail of
   the same list
 - in case of multiple nodes with the same key, the one on the head of
   the list gets selected
2017-04-04 23:37:18 +02:00
..
vauth NTLM: check for features with #ifdef instead of #if 2017-03-29 20:16:09 +02:00
vtls schannel: fix unused variable warning 2017-03-30 10:35:46 +02:00
.gitignore VC: remove the makefile.vc6 build infra 2017-01-23 14:27:32 +01:00
amigaos.c s/cURL/curl 2016-10-18 13:59:54 +02:00
amigaos.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
arpa_telnet.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
asyn-ares.c ares: Curl_resolver_wait_resolv: clear *entry first in function 2017-03-07 08:08:55 +01:00
asyn-thread.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
asyn.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
base64.c base64: check for integer overflow on large input 2016-10-31 08:46:35 +01:00
checksrc.pl tests: checksrc compliance 2016-12-19 02:31:59 -05:00
CMakeLists.txt CMake: Try to (un-)hide private library symbols 2016-09-10 00:35:38 +02:00
config-amigaos.h config-amigaos.h: (embarrassed) made the line shorter 2016-12-18 23:46:17 +01:00
config-dos.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
config-mac.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
config-os400.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
config-riscos.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
config-symbian.h checksrc: white space edits to comply to stricter checksrc 2016-11-24 23:58:22 +01:00
config-tpf.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
config-vxworks.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
config-win32.h spelling fixes 2017-03-26 23:56:23 +02:00
config-win32ce.h spelling fixes 2017-03-26 23:56:23 +02:00
conncache.c llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
conncache.h llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
connect.c connect: fix unreferenced parameter warning 2017-03-30 10:14:34 +02:00
connect.h connect: fix unreferenced parameter warning 2017-03-30 10:14:34 +02:00
content_encoding.c Improve code readbility 2017-03-13 23:11:45 +01:00
content_encoding.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
cookie.c Improve code readbility 2017-03-13 23:11:45 +01:00
cookie.h cookies: getlist() now holds deep copies of all cookies 2016-10-31 08:46:35 +01:00
curl_addrinfo.c Improve code readbility 2017-03-13 23:11:45 +01:00
curl_addrinfo.h unix_socket: add support for abstract unix domain socket 2017-01-13 16:25:20 +01:00
curl_base64.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
curl_config.h.cmake CMake: Add DarwinSSL support 2017-03-05 14:42:53 +01:00
curl_des.c use *.sourceforge.io and misc URL updates 2017-02-06 19:21:05 +00:00
curl_des.h openssl: remove most BoringSSL #ifdefs. 2016-02-09 08:46:36 +01:00
curl_endian.c Declare endian read functions argument as a const pointer. 2016-11-24 16:14:21 +01:00
curl_endian.h Declare endian read functions argument as a const pointer. 2016-11-24 16:14:21 +01:00
curl_fnmatch.c Improve code readbility 2017-03-13 23:11:45 +01:00
curl_fnmatch.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_gethostname.c checksrc: move open braces to comply with function declaration style 2016-11-24 23:58:22 +01:00
curl_gethostname.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_gssapi.c checksrc: white space edits to comply to stricter checksrc 2016-11-24 23:58:22 +01:00
curl_gssapi.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
curl_hmac.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
curl_ldap.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_md4.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_md5.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_memory.h spelling fixes 2017-03-26 23:56:23 +02:00
curl_memrchr.c memdebug: Ensure curl/curl.h is included before curl_memory.h 2016-04-01 13:21:12 +01:00
curl_memrchr.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_multibyte.c curl_multibyte: fix compiler error 2016-05-20 16:50:04 +02:00
curl_multibyte.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_ntlm_core.c NTLM: check for features with #ifdef instead of #if 2017-03-29 20:16:09 +02:00
curl_ntlm_core.h NTLM: check for features with #ifdef instead of #if 2017-03-29 20:16:09 +02:00
curl_ntlm_wb.c use *.sourceforge.io and misc URL updates 2017-02-06 19:21:05 +00:00
curl_ntlm_wb.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_printf.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_rtmp.c URLs: change more http to https 2016-02-04 18:46:54 -05:00
curl_rtmp.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_sasl.c curl_sasl: declare mechtable static 2017-04-04 22:59:34 +02:00
curl_sasl.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
curl_sec.h checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
curl_setup_once.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_setup.h include: curl/system.h is a run-time version of curlbuild.h 2017-04-03 23:24:39 +02:00
curl_sspi.c curl_sspi.c: Updated function description comments 2016-08-31 11:57:28 +01:00
curl_sspi.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
curl_threads.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
curl_threads.h checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
curlx.h strcase: make the tool use curl_str[n]equal instead 2016-10-31 21:51:19 +01:00
dict.c fix potential use of uninitialized variables 2017-03-04 21:37:03 +01:00
dict.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
dotdot.c memdebug: Ensure curl/curl.h is included before curl_memory.h 2016-04-01 13:21:12 +01:00
dotdot.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
easy.c easy: silence compiler warning 2017-04-04 02:43:21 -04:00
easyif.h typedefs: use the full structs in internal code... 2016-06-22 10:28:41 +02:00
escape.c Improve code readbility 2017-03-13 23:11:45 +01:00
escape.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
file.c Improve code readbility 2017-03-13 23:11:45 +01:00
file.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
fileinfo.c URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
fileinfo.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
firefox-db2pem.sh URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
formdata.c Improve code readbility 2017-03-13 23:11:45 +01:00
formdata.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
ftp.c llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
ftp.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
ftplistparser.c llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
ftplistparser.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
getenv.c win: Basic support for Universal Windows Platform apps 2016-08-21 13:56:22 +02:00
getinfo.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
getinfo.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
gopher.c fix potential use of uninitialized variables 2017-03-04 21:37:03 +01:00
gopher.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
hash.c hash: move key into hash struct to reduce mallocs 2017-04-04 15:37:37 +02:00
hash.h hash: move key into hash struct to reduce mallocs 2017-04-04 15:37:37 +02:00
hmac.c checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
hostasyn.c internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
hostcheck.c Improve code readbility 2017-03-13 23:11:45 +01:00
hostcheck.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
hostip4.c checksrc: white space edits to comply to stricter checksrc 2016-11-24 23:58:22 +01:00
hostip6.c internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
hostip.c spelling fixes 2017-03-26 23:56:23 +02:00
hostip.h spelling fixes 2017-03-26 23:56:23 +02:00
hostsyn.c internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
http2.c http2: silence unused parameter warnings 2017-03-30 18:13:20 +02:00
http2.h http2: Fix crashes when parent stream gets aborted 2016-11-28 15:06:17 +01:00
http_chunks.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
http_chunks.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
http_digest.c lib: fix MSVC compiler warnings 2016-12-21 11:07:26 +01:00
http_digest.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
http_negotiate.c proxy: Support HTTPS proxy and SOCKS+HTTP(s) 2016-11-24 23:41:44 +01:00
http_negotiate.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
http_ntlm.c use *.sourceforge.io and misc URL updates 2017-02-06 19:21:05 +00:00
http_ntlm.h http_ntlm: Renamed from curl_ntlm.[c|h] 2016-03-27 17:58:50 +01:00
http_proxy.c Improve code readbility 2017-03-13 23:11:45 +01:00
http_proxy.h proxy: Support HTTPS proxy and SOCKS+HTTP(s) 2016-11-24 23:41:44 +01:00
http.c http: do not treat FTPS over CONNECT as HTTPS 2017-03-28 17:04:16 +02:00
http.h http2: disable server push if not requested 2017-01-15 11:45:32 +00:00
idn_win32.c idn_win32: Use boolean based success codes 2016-03-11 07:24:39 +00:00
if2ip.c checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
if2ip.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
imap.c spelling fixes 2017-03-26 23:56:23 +02:00
imap.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
inet_ntop.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
inet_ntop.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
inet_pton.c checksrc: warn for assignments within if() expressions 2016-12-14 01:29:44 +01:00
inet_pton.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
krb5.c checksrc: white space edits to comply to stricter checksrc 2016-11-24 23:58:22 +01:00
ldap.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
libcurl.plist
libcurl.rc *.rc: escape non-ASCII/non-UTF-8 character for clarity 2017-01-19 11:35:48 +00:00
libcurl.vers.in
llist.c llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
llist.h llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
Makefile.am VC: remove the makefile.vc6 build infra 2017-01-23 14:27:32 +01:00
makefile.amiga
Makefile.b32 spelling fixes 2017-03-26 23:56:23 +02:00
makefile.dj URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
Makefile.inc Curl_rand: fixed and moved to rand.c 2016-11-14 08:23:52 +01:00
Makefile.m32 makefile.m32: add crypt32 for winssl builds 2016-06-01 10:39:13 +02:00
Makefile.netware spelling fixes 2017-03-26 23:56:23 +02:00
Makefile.vxworks build: updated dependencies in makefiles. 2014-12-05 14:54:25 +01:00
Makefile.Watcom build: Updated all makefiles and project files for the new vauth directory 2016-03-25 09:11:59 +00:00
md4.c checksrc: warn for assignments within if() expressions 2016-12-14 01:29:44 +01:00
md5.c checksrc: warn for assignments within if() expressions 2016-12-14 01:29:44 +01:00
memdebug.c spelling fixes 2017-03-26 23:56:23 +02:00
memdebug.h memdebug.h: remove inclusion of other headers 2016-04-29 15:33:46 +02:00
mk-ca-bundle.pl mk-ca-bundle.vbs: Fix UTF-8 output 2016-10-30 01:01:29 -04:00
mk-ca-bundle.vbs mk-ca-bundle.vbs: Fix UTF-8 output 2016-10-30 01:01:29 -04:00
mprintf.c Improve code readbility 2017-03-13 23:11:45 +01:00
multi.c llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
multihandle.h llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
multiif.h lib: fix compiler warnings after de4de4e3c7 2016-11-18 10:11:55 +01:00
netrc.c strcasecompare: all case insensitive string compares ignore locale now 2016-10-31 08:46:35 +01:00
netrc.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
non-ascii.c checksrc: white space edits to comply to stricter checksrc 2016-11-24 23:58:22 +01:00
non-ascii.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
nonblock.c Improve code readbility 2017-03-13 23:11:45 +01:00
nonblock.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
nwlib.c checksrc: warn for assignments within if() expressions 2016-12-14 01:29:44 +01:00
nwos.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
objnames-test08.sh URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
objnames-test10.sh URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
objnames.inc spelling fixes 2017-03-26 23:56:23 +02:00
openldap.c internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
parsedate.c strcasecompare: all case insensitive string compares ignore locale now 2016-10-31 08:46:35 +01:00
parsedate.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
pingpong.c spelling fixes 2017-03-26 23:56:23 +02:00
pingpong.h spelling fixes 2017-03-26 23:56:23 +02:00
pipeline.c llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
pipeline.h llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
pop3.c URL: only accept ";options" in SMTP/POP3/IMAP URL schemes 2017-02-10 14:51:53 +01:00
pop3.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
progress.c spelling fixes 2017-03-26 23:56:23 +02:00
progress.h speed caps: not based on average speeds anymore 2016-09-04 13:11:23 +02:00
rand.c spelling fixes 2017-03-26 23:56:23 +02:00
rand.h rand: pass in number of randoms as an unsigned argument 2016-11-21 07:51:42 +01:00
rtsp.c spelling fixes 2017-03-26 23:56:23 +02:00
rtsp.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
security.c ftp-gss: check for init before use 2016-12-24 23:35:43 +01:00
select.c select: use correct SIZEOF_ constant 2017-03-30 08:49:30 +02:00
select.h lib: fix compiler warnings after de4de4e3c7 2016-11-18 10:11:55 +01:00
sendf.c pause: handle mixed types of data when paused 2017-03-28 13:27:49 +02:00
sendf.h http_proxy: Fix proxy CONNECT hang on pending data 2016-12-19 02:26:52 -05:00
setup-os400.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
setup-vms.h checksrc: move open braces to comply with function declaration style 2016-11-24 23:58:22 +01:00
share.c typedefs: use the full structs in internal code... 2016-06-22 10:28:41 +02:00
share.h checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
sigpipe.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
slist.c memdebug: Ensure curl/curl.h is included before curl_memory.h 2016-04-01 13:21:12 +01:00
slist.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
smb.c NTLM: check for features with #ifdef instead of #if 2017-03-29 20:16:09 +02:00
smb.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
smtp.c URL: only accept ";options" in SMTP/POP3/IMAP URL schemes 2017-02-10 14:51:53 +01:00
smtp.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
sockaddr.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
socks_gssapi.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
socks_sspi.c checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
socks.c Improve code readbility 2017-03-13 23:11:45 +01:00
socks.h proxy: Support HTTPS proxy and SOCKS+HTTP(s) 2016-11-24 23:41:44 +01:00
speedcheck.c Improve code readbility 2017-03-13 23:11:45 +01:00
speedcheck.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
splay.c multi: fix queueing of pending easy handles 2017-04-04 23:37:18 +02:00
splay.h multi: fix queueing of pending easy handles 2017-04-04 23:37:18 +02:00
ssh.c ssh: fix narrowing conversion warning 2017-03-30 18:45:28 +02:00
ssh.h internals: rename the SessionHandle struct to Curl_easy 2016-06-22 10:28:41 +02:00
strcase.c Improve code readbility 2017-03-13 23:11:45 +01:00
strcase.h proxy: Support HTTPS proxy and SOCKS+HTTP(s) 2016-11-24 23:41:44 +01:00
strdup.c realloc: use Curl_saferealloc to avoid common mistakes 2016-11-11 10:03:48 +01:00
strdup.h realloc: use Curl_saferealloc to avoid common mistakes 2016-11-11 10:03:48 +01:00
strerror.c checksrc: warn for assignments within if() expressions 2016-12-14 01:29:44 +01:00
strerror.h idn: switch to libidn2 use and IDNA2008 support 2016-10-31 08:46:35 +01:00
strtok.c URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
strtok.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
strtoofft.c checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
strtoofft.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
system_win32.c spelling fixes 2017-03-26 23:56:23 +02:00
system_win32.h win32: Introduced centralised verify windows version function 2016-06-04 21:24:09 +01:00
telnet.c telnet: (win32) fix read callback return variable 2017-04-01 00:14:05 +02:00
telnet.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
tftp.c Improve code readbility 2017-03-13 23:11:45 +01:00
tftp.h URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
timeval.c Improve code readbility 2017-03-13 23:11:45 +01:00
timeval.h timeval: prefer time_t to hold seconds instead of long 2016-11-12 13:32:21 +01:00
transfer.c llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
transfer.h speed caps: not based on average speeds anymore 2016-09-04 13:11:23 +02:00
url.c url: don't free postponed data on connection reuse 2017-04-04 16:03:26 -04:00
url.h url: proxy: Use 443 as default port for https proxies 2016-11-25 10:01:58 +01:00
urldata.h llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
version.c curl_version_info: add CURL_VERSION_HTTPS_PROXY 2016-11-26 17:28:53 +01:00
warnless.c warnless: suppress compiler warning 2017-02-28 09:10:18 +01:00
warnless.h warnless.h: Removed spurious character from commit 696bc6b9c9 2016-03-26 11:35:07 +00:00
wildcard.c llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
wildcard.h llist: replace Curl_llist_alloc with Curl_llist_init 2017-04-04 15:27:45 +02:00
x509asn1.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
x509asn1.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00