View Issue Details

IDProjectCategoryView StatusLast Update
0005436Talerexchangepublic2019-12-20 18:12
ReporterFlorian Dold Assigned ToChristian Grothoff Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionno change required 
Product Versiongit (master) 
Target Version0.6Fixed in Version0.6 
Summary0005436: implement curl connection pooling to enable keepalive
Descriptionlibcurl only does keepalive properly when we reuse curl_easy handles. Right now we create a new curl_easy handle every time. Instead there should be a pool.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Christian Grothoff

2018-10-06 11:45

manager   ~0013262

I've checked, and our assumption for filing this report is wrong: curl DOES re-use TCP connections (with HTTP keep alive) even if the curl-easy handle is not pooled. I've created some wireshark snapshots against the exchange-lib testcases that clearly show that connection re-use does happen. It seems to require the client to be rather fast at issuing a subsequent request, so the timeout seems very small (maybe even none), but regardless this shows that easy-handle pooling isn't actually required to avoid using always fresh TCP connections. Closing.

Issue History

Date ModifiedUsernameFieldChange
2018-09-21 18:10Florian DoldNew Issue
2018-09-21 18:10Florian DoldStatusnew => assigned
2018-09-21 18:10Florian DoldAssigned To => Christian Grothoff
2018-10-06 11:39Christian GrothoffSeverityminor => feature
2018-10-06 11:45Christian GrothoffNote Added: 0013262
2018-10-06 11:45Christian GrothoffStatusassigned => informing
2018-10-06 11:45Christian GrothoffResolutionopen => no change required
2018-10-06 11:45Christian GrothoffFixed in Version => 0.6
2018-10-06 11:45Christian GrothoffProduct Version => git (master)
2018-10-06 11:45Christian GrothoffTarget Version => 0.6
2019-12-20 18:12Christian GrothoffStatusinforming => closed