12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276 |
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
- Changelog
- Version 7.79.1 (22 Sep 2021)
- Daniel Stenberg (22 Sep 2021)
- - RELEASE-NOTES: synced
-
- curl 7.79.1 release
- - THANKS: added names from the 7.79.1 release
- - test897: verify delivery of IMAP post-body header content
-
- The "content" is delivered as "body" by curl, but the envelope continues
- after the body and the rest of it should be delivered as header.
-
- The IMAP server can now get 'POSTFETCH' set to include more data to
- include after the body and test 897 is done to verify that such "extra"
- header data is in fact delivered by curl as header.
-
- Ref: #7284 but fails to reproduce the issue
-
- Closes #7748
- - KNOWN_BUGS: connection migration doesn't work
-
- Closes #7695
- - RELEASE-NOTES: synced
- - http: fix the broken >3 digit response code detection
-
- When the "reason phrase" in the HTTP status line starts with a digit,
- that was treated as the forth response code digit and curl would claim
- the response to be non-compliant.
-
- Added test 1466 to verify this case.
-
- Regression brought by 5dc594e44f73b17
- Reported-by: Glenn de boer
- Fixes #7738
- Closes #7739
- Jay Satiro (17 Sep 2021)
- - strerror: use sys_errlist instead of strerror on Windows
-
- - Change Curl_strerror to use sys_errlist[errnum] instead of strerror to
- retrieve the error message on Windows.
-
- Windows' strerror writes to a static buffer and is not thread-safe.
-
- Follow-up to 2f0bb86 which removed most instances of strerror in favor
- of calling Curl_strerror (which calls strerror_r for other platforms).
-
- Ref: https://github.com/curl/curl/pull/7685
- Ref: https://github.com/curl/curl/commit/2f0bb86
-
- Closes https://github.com/curl/curl/pull/7735
- Daniel Stenberg (16 Sep 2021)
- - dist: provide lib/.checksrc in the tarball
-
- So that debug builds work (checksrc really)
-
- Reported-by: Marcel Raad
- Reported-by: tawmoto on github
- Fixes #7733
- Closes #7734
- - TODO: Improve documentation about fork safety
-
- Closes #6968
- - hsts: CURLSTS_FAIL from hsts read callback should fail transfer
-
- ... and have CURLE_ABORTED_BY_CALLBACK returned.
-
- Extended test 1915 to verify.
-
- Reported-by: Jonathan Cardoso
- Fixes #7726
- Closes #7729
- - test1184: disable
-
- The test should be fine and it works for me repeated when run manually,
- but clearly it causes CI failures and it needs more research.
-
- Reported-by: RiderALT on github
- Fixes #7725
- Closes #7732
- - Curl_http2_setup: don't change connection data on repeat invokes
-
- Regression from 3cb8a748670ab88c (releasde in 7.79.0). That change moved
- transfer oriented inits to before the check but also erroneously moved a
- few connection oriented ones, which causes problems.
-
- Reported-by: Evangelos Foutras
- Fixes #7730
- Closes #7731
- - RELEASE-NOTES: synced
-
- and bump to 7.79.1
- Kamil Dudka (16 Sep 2021)
- - tests/sshserver.pl: make it work with openssh-8.7p1
-
- ... by not using options with no argument where an argument is required:
-
- === Start of file tests/log/ssh_server.log
- curl_sshd_config line 6: no argument after keyword "DenyGroups"
- curl_sshd_config line 7: no argument after keyword "AllowGroups"
- curl_sshd_config line 10: Deprecated option AuthorizedKeysFile2
- curl_sshd_config line 29: Deprecated option KeyRegenerationInterval
- curl_sshd_config line 39: Deprecated option RhostsRSAAuthentication
- curl_sshd_config line 40: Deprecated option RSAAuthentication
- curl_sshd_config line 41: Deprecated option ServerKeyBits
- curl_sshd_config line 45: Deprecated option UseLogin
- curl_sshd_config line 56: no argument after keyword "AcceptEnv"
- curl_sshd_config: terminating, 3 bad configuration options
- === End of file tests/log/ssh_server.log
-
- === Start of file log/sftp_server.log
- curl_sftp_config line 33: Unsupported option "rhostsrsaauthentication"
- curl_sftp_config line 34: Unsupported option "rsaauthentication"
- curl_sftp_config line 52: no argument after keyword "sendenv"
- curl_sftp_config: terminating, 1 bad configuration options
- Connection closed.
- Connection closed
- === End of file log/sftp_server.log
-
- Closes #7724
- Daniel Stenberg (15 Sep 2021)
- - hsts: handle unlimited expiry
-
- When setting a blank expire string, meaning unlimited, curl would pass
- TIME_T_MAX to getime_r() when creating the output, while on 64 bit
- systems such a large value cannot be convetered to a tm struct making
- curl to exit the loop with an error instead. It can't be converted
- because the year it would represent doesn't fit in the 'int tm_year'
- field!
-
- Starting now, unlimited expiry is instead handled differently by using a
- human readable expiry date spelled out as "unlimited" instead of trying
- to use a distant actual date.
-
- Test 1660 and 1915 have been updated to help verify this change.
-
- Reported-by: Jonathan Cardoso
- Fixes #7720
- Closes #7721
- - curl_multi_fdset: make FD_SET() not operate on sockets out of range
-
- The VALID_SOCK() macro was made to only check for FD_SETSIZE if curl was
- built to use select(), even though the curl_multi_fdset() function
- always and unconditionally uses FD_SET and needs the check.
-
- Reported-by: 0xee on github
- Fixes #7718
- Closes #7719
- - FAQ: add GOPHERS + curl works on data, not files
- Version 7.79.0 (14 Sep 2021)
- Daniel Stenberg (14 Sep 2021)
- - RELEASE-NOTES: synced
-
- For the 7.79.0 release
- - THANKS: add contributors from 7.79.0 release cycle
- - FAQ: add two dev related questions
-
- 8.1 Why does curl use C89?
- 8.2 Will curl be rewritten?
-
- Spell-checked-by: Paul Johnson
- Closes #7715
- - zuul.d/jobs: disable three tests for *-openssl-disable-proxy
-
- ... as they mysteriously seem to permfail without being related to
- proxy.
-
- Closes #7714
- - [Patrick Monnerat brought this change]
- ftp,imap,pop3,smtp: reject STARTTLS server response pipelining
-
- If a server pipelines future responses within the STARTTLS response, the
- former are preserved in the pingpong cache across TLS negotiation and
- used as responses to the encrypted commands.
-
- This fix detects pipelined STARTTLS responses and rejects them with an
- error.
-
- CVE-2021-22947
-
- Bug: https://curl.se/docs/CVE-2021-22947.html
- - [Patrick Monnerat brought this change]
- ftp,imap,pop3: do not ignore --ssl-reqd
-
- In imap and pop3, check if TLS is required even when capabilities
- request has failed.
-
- In ftp, ignore preauthentication (230 status of server greeting) if TLS
- is required.
-
- Bug: https://curl.se/docs/CVE-2021-22946.html
-
- CVE-2021-22946
- - [z2_ on hackerone brought this change]
- mqtt: clear the leftovers pointer when sending succeeds
-
- CVE-2021-22945
-
- Bug: https://curl.se/docs/CVE-2021-22945.html
- - zuul: bump the rustls job to use v0.7.2
-
- ... and add -lm when using a rust library.
-
- Closes #7701
- - RELEASE-PROCEDURE: add release dates from now to 8.0.0 in 2023
- - SECURITY-PROCESS: tweak a little to match current practices
-
- Closes #7713
- - http_proxy: fix the User-Agent inclusion in CONNECT
-
- It should not refer to the uagent string that is allocated and created
- for the end server http request, as that pointer may be cleared on
- subsequent CONNECT requests.
-
- Added test case 1184 to verify.
-
- Reported-by: T200proX7 on github
- Fixes #7705
- Closes #7707
- - Curl_hsts_loadcb: don't attempt to load if hsts wasn't inited
-
- Reported-by: Jonathan Cardoso
- Fixes #7710
- Closes #7711
- - [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: fix build with ngtcp2 and nghttp3
-
- ngtcp2_conn_client_new and nghttp3_conn_client_new are now macros.
- Check the wrapped functions instead.
-
- ngtcp2_stream_close callback now takes flags parameter.
-
- Closes #7709
- - write-out.d: clarify size_download/upload
-
- They show the number of "body" bytes transfered.
- Fixes #7702
- Closes #7706
- - http2: Curl_http2_setup needs to init stream data in all invokes
-
- Thus function was written to avoid doing multiple connection data
- initializations, which is fine, but since it also initiates stream
- related data it is crucial that it doesn't skip those even if called
- again for the same connection. Solved by moving the stream
- initializations before the "doing-it-again" check.
-
- Reported-by: Inho Oh
- Fixes #7630
- Closes #7692
- - url: fix compiler warning in no-verbose builds
-
- Follow-up from 2f0bb864c12
-
- Closes #7700
- - non-ascii: fix build errors from strerror fix
-
- Follow-up to 2f0bb864c12
-
- Closes #7697
- - parse_args: redo the warnings for --remote-header-name combos
-
- ... to avoid the memory leak risk pointed out by scan-build.
-
- Follow-up from 7a3e981781d6c18a
-
- Closes #7698
- - ngtcp2: adapt to new size defintions upstream
-
- Reviewed-by: Tatsuhiro Tsujikawa
- Closes #7699
- - rustls: add strerror.h include
-
- Follow-up to 2f0bb864c12
- - docs: the security list is reached at security at curl.se now
-
- Also update the FAQ section a bit to encourage users to rather submit
- security issues on hackerone than sending email.
-
- Closes #7689
- Marc Hoersken (9 Sep 2021)
- - runtests: add option -u to error on server unexpectedly alive
-
- Let's try to actually handle the server unexpectedly alive
- case by first making them visible on CI builds as failures.
-
- This is needed to detect issues with killing of the test
- servers completely including nested process chains with
- multiple PIDs per test server (including bash and perl).
-
- On Windows/cygwin platforms this is especially helpful with
- debugging PID mixups due to cygwin using its own PID space.
-
- Reviewed-by: Daniel Stenberg
- Closes #7180
- Daniel Stenberg (9 Sep 2021)
- - opts docs: unify phrasing in NAME header
-
- - avoid writing "set ..." or "enable/disable ..." or "specify ..."
- *All* options for curl_easy_setopt() are about setting or enabling
- things and most of the existing options didn't use that way of
- description.
-
- - start with lowercase letter, unless abbreviation. For consistency.
-
- - Some additional touch-ups
-
- Closes #7688
- - strerror.h: remove the #include from files not using it
- - lib: don't use strerror()
-
- We have and provide Curl_strerror() internally for a reason: strerror()
- is not necessarily thread-safe so we should always try to avoid it.
-
- Extended checksrc to warn for this, but feature the check disabled by
- default and only enable it in lib/
-
- Closes #7685
- Daniel Gustafsson (8 Sep 2021)
- - cirrus: Add FreeBSD 13.0 job and disable sanitizer build
-
- As alluded to the in the now removed comment, a 13.0 image became
- available and is now ready to be used.
-
- The sanitizer builds were running on the 12.1 image which since has
- been removed from the config, leaving the builds not running at all.
- When enabled it turns out that they don't actually work due to very
- long timeouts in executing the tests, so keep the disabled for now
- but a bit more controlled.
-
- Closes #7592
- Daniel Stenberg (8 Sep 2021)
- - copyrights: update copyright year ranges
- - RELEASE-NOTES: synced
- - INTERNALS: c-ares has a new home: c-ares.org
- - docs: remove experimental mentions from HSTS and MQTT
-
- Reported-by: Jonathan Cardoso
- Bug: https://github.com/curl/curl/pull/6700#issuecomment-913792863
- Closes #7681
- - [Cao ZhenXiang brought this change]
- curl: add warning for incompatible parameters usage
-
- --continue-at - and --remote-header-name are known incompatible parameters
-
- Closes #7674
- - [git-bruh brought this change]
- examples/*hiperfifo.c: fix calloc arguments to match function proto
-
- Closes #7678
- - INTERNALS: bump c-ares requirement to 1.16.0
-
- Since ba904db0705c93 we use ares_getaddrinfo, added in c-ares 1.16.0
- - curl: stop retry if Retry-After: is longer than allowed
-
- If Retry-After: specifies a period that is longer than what fits within
- --retry-max-time, then stop retrying immediately.
-
- Added test 366 to verify.
-
- Reported-by: Kari Pahula
- Fixes #7675
- Closes #7676
- - [Michał Antoniak brought this change]
- mbedtls: avoid using a large buffer on the stack
-
- Use dynamic memory allocation for the buffer used in checking "pinned
- public key". The PUB_DER_MAX_BYTES parameter with default settings is
- set to a value greater than 2kB.
-
- Co-authored-by: Daniel Stenberg
- Closes #7586
- - configure: make --disable-hsts work
-
- The AC_ARG_ENABLE() macro itself uses a variable called
- 'enable_[option]', so when our script also used a variable with that
- name for the purpose of storing what the user wants, it also
- accidentally made it impossible to switch off the feature with
- --disable-hsts. Fix this by renaming our variable.
-
- Reported-by: Michał Antoniak
- Fixes #7669
- Closes #7672
- Jay Satiro (5 Sep 2021)
- - config.d: note that curlrc is used even when --config
-
- Bug: https://github.com/curl/curl/pull/7666#issuecomment-912214751
- Reported-by: Viktor Szakats
-
- Closes https://github.com/curl/curl/pull/7667
- Daniel Stenberg (4 Sep 2021)
- - RELEASE-NOTES: synced
- - test1173: check references to libcurl options
-
- ... that they refer to actual existing libcurl options.
-
- Reviewed-by: Daniel Gustafsson
- Closes #7656
- - CURLOPT_UNIX_SOCKET_PATH.3: remove nginx reference, add see also
-
- Closes #7656
- - opt-docs: verify man page sections + order
-
- In every libcurl option man page there are now 8 mandatory sections that
- must use the right name in the correct order and test 1173 verifies
- this. Only 14 man pages needed adjustments.
-
- The sections and the order is as follows:
-
- - NAME
- - SYNOPSIS
- - DESCRIPTION
- - PROTOCOLS
- - EXAMPLE
- - AVAILABILITY
- - RETURN VALUE
- - SEE ALSO
-
- Reviewed-by: Daniel Gustafsson
- Closes #7656
- - opt-docs: make sure all man pages have examples
-
- Extended manpage-syntax.pl (run by test 1173) to check that every man
- page for a libcurl option has an EXAMPLE section that is more than two
- lines. Then fixed all errors it found and added examples.
-
- Reviewed-by: Daniel Gustafsson
- Closes #7656
- - get.d: provide more useful examples
-
- Closes #7668
- - page-header: add GOPHERS, simplify wording in the 1st para
-
- Closes #7665
- - connect: get local port + ip also when reusing connections
-
- Regression. In d6a37c23a3c (7.75.0) we removed the duplicated storage
- (connection + easy handle), so this info needs be extracted again even
- for re-used connections.
-
- Add test 435 to verify
-
- Reported-by: Max Dymond
- Fixes #7660
- Closes #7662
- Marcel Raad (2 Sep 2021)
- - multi: fix compiler warning with `CURL_DISABLE_WAKEUP`
-
- `use_wakeup` is unused in this case.
-
- Closes https://github.com/curl/curl/pull/7661
- Daniel Stenberg (1 Sep 2021)
- - tests: adjust the tftpd output to work with hyper mode
-
- By making them look less like http headers, the hyper mode "tweak"
- doesn't interfere.
-
- Enable test 2002 and 2003 in hyper builds (and 1280 which is unrelated
- but should be enabled).
-
- Closes #7658
- Daniel Gustafsson (1 Sep 2021)
- - [Gisle Vanem brought this change]
- openssl: annotate SSL3_MT_SUPPLEMENTAL_DATA
-
- This adds support for the previously unhandled supplemental data which
- in -v output was printed like:
-
- TLSv1.2 (IN), TLS header, Unknown (23):
-
- These will now be printed with proper annotation:
-
- TLSv1.2 (OUT), TLS header, Supplemental data (23):
-
- Closes #7652
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Daniel Stenberg (1 Sep 2021)
- - curl.1: provide examples for each option
-
- The file format for each option now features a "Example:" header that
- can provide one or more examples that get rendered appropriately in the
- output. All options MUST have at least one example or gen.pl complains
- at build-time.
-
- This fix also does a few other minor format and consistency cleanups.
-
- Closes #7654
- - progress: make trspeed avoid floats
-
- and compiler warnings for data conversions.
-
- Reported-by: Michał Antoniak
- Fixes #7645
- Closes #7653
- - test365: verify response with chunked AND Content-Length headers
- - http: ignore content-length if any transfer-encoding is used
-
- Fixes #7643
- Closes #7649
- - RELEASE-NOTES: synced
- - Revert "http2: skip immediate parsing of payload following protocol switch"
-
- This reverts commit 455a63c66f188598275e87d32de2c4e8e26b80cb.
-
- Reported-by: Tk Xiong
- Fixes #7633
- Closes #7648
- - KNOWN_BUGS: HTTP/3 doesn't support client certs
-
- Closes #7625
- - mailing lists: move from cool.haxx.se to lists.haxx.se
- - http_proxy: only wait for writable socket while sending request
-
- Otherwise it would wait socket writability even after the entire CONNECT
- request has sent and make curl basically busy-loop while waiting for a
- response to come back.
-
- The previous fix attempt in #7484 (c27a70a591a4) was inadequate.
-
- Reported-by: zloi-user on github
- Reported-by: Oleguer Llopart
- Fixes #7589
- Closes #7647
- - http: disallow >3-digit response codes
-
- Make the built-in HTTP parser behave similar to hyper and reject any
- HTTP response using more than 3 digits for the response code.
-
- Updated test 1432 accordingly.
- Enabled test 1432 in the hyper builds.
-
- Closes #7641
- - [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: stop buffering crypto data
-
- Stop buffering crypto data because libngtcp2 now buffers submitted
- crypto data.
-
- Closes #7637
- - test1280: CRLFify the response to please hyper
-
- Closes #7639
- - tests: enable test 1129 for hyper builds
-
- Closes #7638
- - curl: better error message when -O fails to get a good name
-
- Due to how this currently works internally, it needs a working initial
- file name to store contents in, so it may still fail even with -J is
- used (and thus accepting a name from content-disposition:) if the file
- name part of the URL isn't "good enough".
-
- Fixes #7628
- Closes #7635
- - curl_easy_setopt: tweak the string copy wording
-
- Reported-by: Yaobin Wen
- Fixes #7632
- Closes #7634
- - RELEASE-NOTES: synced
- - [Don J Olmstead brought this change]
- cmake: sync CURL_DISABLE options
-
- Adds the full listing of CURL_DISABLE options to the CMake build. Moves
- all option code, except for CURL_DISABLE_OPENSSL_AUTO_LOA_CONFIG which
- resides near OpenSSL configuration, to the same block of code. Also
- sorts the options here and in the cmake config header.
-
- Additionally sorted the CURL-DISABLE listing and fixed the
- CURL_DISABLE_POP3 option.
-
- Closes #7624
- Jay Satiro (25 Aug 2021)
- - KNOWN_BUGS: FTPS upload data loss with TLS 1.3
-
- Bug: https://github.com/curl/curl/issues/6149
- Reported-by: Bylon2@users.noreply.github.com
-
- Closes https://github.com/curl/curl/pull/7623
- Daniel Stenberg (24 Aug 2021)
- - cmake: avoid poll() on macOS
-
- ... like we do in configure builds. Since poll() on macOS is not
- reliable enough.
-
- Reported-by: marc-groundctl
- Fixes #7595
- Closes #7619
- - c-hyper: handle HTTP/1.1 => HTTP/1.0 downgrade on reused connection
-
- Enable test 1074
-
- Closes #7617
- - c-hyper: deal with Expect: 100-continue combined with POSTFIELDS
-
- Enable test 1130 and 1131
-
- Closes #7616
- - [a1346054 brought this change]
- tests: be explicit about using 'python3' instead of 'python'
-
- This fixes running tests in virtualenvs (or on distros) that no longer
- have a symlink from python to python2 or python3.
-
- Closes #7602
- - [a1346054 brought this change]
- scripts: invoke interpreters through /usr/bin/env
-
- Closes #7602
- - DISABLED: enable 11 more tests for hyper builds
-
- Closes #7612
- - setopt: enable CURLOPT_IGNORE_CONTENT_LENGTH for hyper
-
- Since this option is also used for FTP, it needs to work to set for
- applications even if hyper doesn't support it for HTTP. Verified by test
- 1137.
-
- Updated docs to specify that the option doesn't work for HTTP when using
- the hyper backend.
-
- Closes #7614
- - test1138: remove trailing space to make work with hyper
-
- Closes #7613
- - libcurl-errors.3: clarify two CURLUcode errors
-
- CURLUE_BAD_HANDLE and CURLUE_BAD_PARTPOINTER should be for "bad" or
- wrong pointers in a generic sense, not just for NULL pointers.
-
- Reviewed-by: Jay Satiro
-
- Ref: #7605
- Closes #7611
- Jay Satiro (23 Aug 2021)
- - symbols-in-versions: fix CURLSSLBACKEND_QSOSSL last used version
-
- ... and also change the 'Removed' column name to 'Last' since that
- column is for the last version to contain the symbol.
-
- Closes https://github.com/curl/curl/pull/7609
- Daniel Stenberg (23 Aug 2021)
- - urlapi.c:seturl: assert URL instead of using if-check
-
- There's no code flow possible where this can happen. The assert makes
- sure it also won't be introduced undetected in the future.
-
- Closes #7610
- - curl-openssl.m4: show correct output for OpenSSL v3
-
- Using 3.0.0 versions configure should now show this:
-
- checking for OpenSSL headers version... 3.0.0 - 0x300
- checking for OpenSSL library version... 3.0.0
- checking for OpenSSL headers and library versions matching... yes
-
- This output doesn't actually change what configure generates but is only
- "cosmetic".
-
- Reported-by: Randall S. Becker
- Fixes #7606
- Closes #7608
- Jay Satiro (22 Aug 2021)
- - mksymbolsmanpage.pl: Fix showing symbol's last used version
-
- Prior to this change the symbol's deprecated version was erroneously
- shown as its last used version.
-
- Bug: https://github.com/curl/curl/commit/4e53b94#commitcomment-55239509
- Reported-by: i-ky@users.noreply.github.com
- Daniel Stenberg (21 Aug 2021)
- - mksymbolsmanpage.pl: match symbols case insenitively
-
- Follow-up to 4e53b9430c750 which made this bug show.
-
- Reported-by: i-ky
- Bug: https://github.com/curl/curl/commit/4e53b9430c7504de8984796e2a2091ec16f27136#commitcomment-55239253
- Closes #7607
- - asyn-ares: call ares_freeaddrinfo() to clean up addrinfo results
-
- As this leaks memory otherwise
-
- Follow-up to ba904db0705c931
-
- Closes #7599
- - [Ehren Bendler brought this change]
- wolfssl: clean up wolfcrypt error queue
-
- If wolfSSL is built in certain ways (OPENSSL_EXTRA or Debug), the error
- queue gets added on to for each session and never freed. Fix it by
- calling ERR_clear_error() like in vtls/openssl when needed. This func is
- a no-op in wolfcrypt if the error queue is not enabled.
-
- Closes #7594
- - man pages: remove trailing whitespaces
-
- Extended test 1173 (via the manpage-syntax.pl script) to detect and warn
- for them.
-
- Ref: #7602
- Reported-by: a1346054 on github
- Closes #7604
- - mailmap: add Gleb Ivanovsky
- - config.d: escape the backslash properly
-
- Closes #7603
- - [Don J Olmstead brought this change]
- curl_setup.h: sync values for HTTP_ONLY
-
- The values for HTTP_ONLY differed between CMakeLists.txt and
- curl_setup.h. Sync them and sort the values in curl_setup.h to make it
- easier to spot differences.
-
- Closes #7601
- Jay Satiro (21 Aug 2021)
- - configure: set classic mingw minimum OS version to XP
-
- - If the user has not specified a minimum OS version (via WINVER or
- _WIN32_WINNT macros) then set it to Windows XP.
-
- Prior to this change classic MinGW defaulted the minimum OS version
- to Windows NT 4.0 which is way too old. At least Windows XP is needed
- for getaddrinfo (which resolves hostnames to IPv6 addresses).
-
- Ref: https://github.com/curl/curl/issues/7483#issuecomment-891597034
-
- Closes https://github.com/curl/curl/pull/7581
- - schannel: Work around typo in classic mingw macro
-
- - Define ALG_CLASS_DHASH (the typo from the include) to ALG_CLASS_HASH.
-
- Prior to this change there was an incomplete fix to ignore the
- CALG_TLS1PRF macro on those versions of MinGW where it uses the
- ALG_CLASS_DHASH typoed macro.
-
- Ref: 48cf45c
- Ref: https://osdn.net/projects/mingw/ticket/38391
- Ref: https://github.com/curl/curl/issues/2924
-
- Closes https://github.com/curl/curl/pull/7580
- Daniel Stenberg (20 Aug 2021)
- - RELEASE-NOTES: synced
- - http_proxy: fix user-agent and custom headers for CONNECT with hyper
-
- Enable test 287
-
- Closes #7598
- - c-hyper: initial support for "dumping" 1xx HTTP responses
-
- With the use hyper_request_on_informational()
-
- Enable test 155 and 158
-
- Closes #7597
- Marc Hoersken (18 Aug 2021)
- - tests/*server.pl: flush output before executing subprocess
-
- Also avoid shell processes staying around by using exec.
- This is necessary to avoid output data being buffering
- inside the process chain of Perl, Bash/Shell and our
- test server binaries. On non-Windows systems the exec
- will also make the subprocess replace the intermediate
- shell, but on Windows it will at least bind the processes
- together since there is no real fork or exec available.
-
- See: https://cygwin.com/cygwin-ug-net/highlights.html
- and: https://docs.microsoft.com/cpp/c-runtime-library/exec-wexec-functions
- Ref: https://github.com/curl/curl/pull/7530#issuecomment-900949010
-
- Reviewed-by: Daniel Stenberg
- Reviewed-by: Jay Satiro
- Closes #7530
- - CI: use GitHub Container Registry instead of Docker Hub
-
- Avoid limits on Docker Hub and improve image pull/download speed.
-
- Closes #7587
- Daniel Stenberg (18 Aug 2021)
- - openssl: when creating a new context, there cannot be an old one
-
- Remove the previous handling that would call SSL_CTX_free(), and instead
- add an assert that halts a debug build if there ever is a context
- already set at this point.
-
- Closes #7585
- Jay Satiro (18 Aug 2021)
- - KNOWN_BUGS: Renegotiate from server may cause hang for OpenSSL backend
-
- Closes https://github.com/curl/curl/issues/6785
- Viktor Szakats (17 Aug 2021)
- - docs/BINDINGS: URL update
- Marc Hoersken (17 Aug 2021)
- - tests/server/*.c: align handling of portfile argument and file
-
- 1. Call the internal variable portname (like pidname) everywhere.
- 2. Have a variable wroteportfile (like wrotepidfile) everywhere.
- 3. Make sure the file is cleaned up on exit (like pidfile).
- 4. Add parameter --portfile to usage outputs everywhere.
-
- Reviewed-by: Daniel Stenberg
-
- Replaces #7523
- Closes #7574
- Daniel Gustafsson (17 Aug 2021)
- - KNOWN_BUGS: Fix a number of typos in KNOWN_BUGS
-
- Fixes a set of typos found in section 11.3.
- Daniel Stenberg (17 Aug 2021)
- - getparameter: fix the --local-port number parser
-
- It could previously get tricked into parsing the uninitialized stack
- based buffer.
-
- Reported-by: Brian Carpenter
- Closes #7582
- - KNOWN_BUGS: Can't use Secure Transport with Crypto Token Kit
-
- Closes #7048
- - [Jan Verbeek brought this change]
- curl: add warning for ignored data after quoted form parameter
-
- In an argument like `-F 'x=@/etc/hostname;filename="foo"abc'` the `abc`
- is ignored. This adds a warning if the ignored data isn't all
- whitespace.
-
- Closes #7394
- Jay Satiro (17 Aug 2021)
- - codeql: fix error "Resource not accessible by integration"
-
- - Enable codeql writing security-events.
-
- GitHub set the default permissions to read, apparently since earlier
- this year.
-
- Ref: https://github.com/github/codeql-action/issues/464
- Ref: https://github.blog/changelog/2021-04-20-github-actions-control-permissions-for-github_token/
-
- Fixes https://github.com/curl/curl/issues/7575
- Closes https://github.com/curl/curl/pull/7576
- - tool_operate: Fix --fail-early with parallel transfers
-
- - Abort via progress callback to fail early during parallel transfers.
-
- When a critical error occurs during a transfer (eg --fail-early
- constraint) then other running transfers will be aborted via progress
- callback and finish with error CURLE_ABORTED_BY_CALLBACK (42). In this
- case, the callback error does not become the most recent error and a
- custom error message is used for those transfers:
-
- curld --fail --fail-early --parallel
- https://httpbin.org/status/404 https://httpbin.org/delay/10
-
- curl: (22) The requested URL returned error: 404
- curl: (42) Transfer aborted due to critical error in another transfer
-
- > echo %ERRORLEVEL%
- 22
-
- Fixes https://github.com/curl/curl/issues/6939
- Closes https://github.com/curl/curl/pull/6984
- Daniel Stenberg (17 Aug 2021)
- - [Sergey Markelov brought this change]
- sectransp: support CURLINFO_CERTINFO
-
- Fixes #4130
- Closes #7372
- - ngtcp2: remove the acked_crypto_offset struct field init
-
- ... as it is gone from the API upstream.
-
- Closes #7578
- - misc: update incorrect copyright year ranges
-
- Closes #7577
- - KNOWN_BUGS: HTTP/3 quiche upload large file fails
-
- Closes #7532
- - KNOWN_BUGS: CMake build with MIT Kerberos does not work
-
- Closes #6904
- - TODO: add asynch getaddrinfo support
-
- Closes #6746
- - RELEASE-NOTES: synced
- - [Artur Sinila brought this change]
- http2: revert call the handle-closed function correctly on closed stream
-
- Reverts 252790c5335a221
-
- Assisted-by: Gergely Nagy
- Fixes #7400
- Closes #7525
- - [Patrick Monnerat brought this change]
- auth: do not append zero-terminator to authorisation id in kerberos
-
- RFC4752 Section 3.1 states "The authorization identity is not terminated
- with a zero-valued (%x00) octet". Although a comment in code said it may
- be needed anyway, nothing confirms it. In addition, servers may consider
- it as part of the identity, causing a failure.
-
- Closes #7008
- - [Patrick Monnerat brought this change]
- auth: use sasl authzid option in kerberos
-
- ... instead of deriving it from active ticket.
- Closes #7008
- - [Patrick Monnerat brought this change]
- auth: we do not support a security layer after kerberos authentication
-
- Closes #7008
- - [Patrick Monnerat brought this change]
- auth: properly handle byte order in kerberos security message
-
- Closes #7008
- - [z2_ brought this change]
- x509asn1: fix heap over-read when parsing x509 certificates
-
- Assisted-by: Patrick Monnerat
- Closes #7536
- - KNOWN_BUGS: Disconnects don't do verbose
-
- Closes #6995
- - mailmap: fixup Michał Antoniak
- - [Michał Antoniak brought this change]
- build: fix compiler warnings
-
- For when CURL_DISABLE_VERBOSE_STRINGS and DEBUGBUILD flags are both
- active.
-
- - socks.c : warning C4100: 'lineno': unreferenced formal parameter
- (co-authored by Daniel Stenberg)
-
- - mbedtls.c: warning C4189: 'port': local variable is initialized but
- not referenced
-
- - schannel.c: warning C4189: 'hostname': local variable is initialized
- but not referenced
-
- Cloes #7528
- - [Gleb Ivanovsky brought this change]
- CODE_STYLE-md: fix bold font style
-
- Markdown gets confused with abundance of asterisks, so use underscores
- instead.
-
- Reviewed-by: Daniel Gustafsson
- Closes #7569
- - [Gleb Ivanovsky brought this change]
- CODE_STYLE-md: add missing comma
-
- Reviewed-by: Daniel Gustafsson
- Closes #7570
- - [Daniel Gustafsson brought this change]
- examples/ephiperfifo.c: simplify signal handler
-
- The signal handler registered for SIGINT is only handling SIGINT
- so there isn't much need for inspecting the signo. While there,
- rename the handler to be more specific.
-
- g_should_exit should really be of sig_atomic_t type, but relying
- on autoconf in the examples seems like a bad idea so keep that
- for now.
-
- Reviewed-by: Daniel Stenberg
- Closes #7310
- - c-hyper: initial step for 100-continue support
-
- Enabled test 154
-
- Closes #7568
- - [Ikko Ashimine brought this change]
- vtls: fix typo in schannel_verify.c
-
- occurence -> occurrence
-
- Closes #7566
- - [Emil Engler brought this change]
- curl_url_get.3: clarify about path and query
-
- The current man-page lacks some details regarding the obtained path and
- query.
-
- Closes #7563
- - c-hyper: fix header value passed to debug callback
-
- Closes #7567
- Viktor Szakats (12 Aug 2021)
- - cleanup: URL updates
-
- - replace broken URL with the one it was most probably pointing to
- when added (lib/tftp.c)
- - replace broken URL with archive.org link (lib/curl_ntlm_wb.c)
- - delete unnecessary protocol designator from archive.org URL
- (docs/BINDINGS.md)
-
- Closes #7562
- Daniel Stenberg (12 Aug 2021)
- - [April King brought this change]
- DEPRECATE.md: linkify curl-library mailing list
-
- Closes #7561
- - [Barry Pollard brought this change]
- output.d: add method to suppress response bodies
-
- Closes #7560
- - TODO: remove 'c-ares deviates on http://1346569778'
-
- Fixed since 56a037cc0ad1b2 (7.77.0)
- - [Colin O'Dell brought this change]
- BINDINGS.md: update links to use https where available
-
- Closes #7558
- - asyn-ares.c: move all version number checks to the top
-
- ... and use #ifdef [feature] in the code as per our guidelines.
- - ares: use ares_getaddrinfo()
-
- ares_getaddrinfo() is the getaddrinfo() cloned provided by c-ares, introduced
- in version 1.16.0.
-
- With older c-ares versions, curl invokes ares_gethostbyname() twice - once for
- IPv4 and once for IPv6 to resolve both addresses, and then combines the
- returned results.
-
- Reported-by: jjandesmet
- Fixes #7364
- Closes #7552
- - [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: utilize crypto API functions to simplify
-
- Closes #7551
- - [megatronking brought this change]
- ngtcp2: reset the oustanding send buffer again when drained
-
- Closes #7538
- Michael Kaufmann (10 Aug 2021)
- - progress: fix a compile warning on some systems
-
- lib/progress.c:380:40: warning: conversion to 'long double' from
- 'curl_off_t {aka long long int}' may alter its value [-Wconversion]
-
- Closes #7549
- Daniel Stenberg (10 Aug 2021)
- - RELEASE-NOTES: synced
- - http: consider cookies over localhost to be secure
-
- Updated test31.
- Added test 392 to verify secure cookies used for http://localhost
-
- Reviewed-by: Daniel Gustafsson
- Fixes #6733
- Closes #7263
- - TODO: erase secrets from heap/stack after use
-
- Closes #7268
- Jay Satiro (10 Aug 2021)
- - hostip: Make Curl_ipv6works function independent of getaddrinfo
-
- - Do not assume IPv6 is not working when getaddrinfo is not present.
-
- The check to see if IPv6 actually works is now independent of whether
- there is any resolver that can potentially resolve a hostname to IPv6.
-
- Prior to this change if getaddrinfo() was not found at compile time then
- Curl_ipv6works() would be defined as a macro that returns FALSE.
-
- When getaddrinfo is not found then libcurl is built with CURLRES_IPV4
- defined instead of CURLRES_IPV6, meaning that it cannot do IPv6 lookups
- in the traditional way. With this commit if libcurl is built with IPv6
- support (ENABLE_IPV6) but without getaddrinfo (CURLRES_IPV6), and the
- IPv6 stack is actually working, then it is possible for libcurl to
- resolve IPv6 addresses by using DoH.
-
- Ref: https://github.com/curl/curl/issues/7483#issuecomment-890765378
-
- Closes https://github.com/curl/curl/pull/7529
- - test1565: fix windows build errors
-
- - Use our wait_ms() instead of sleep() since Windows doesn't have the
- latter.
-
- - Use a separate variable to keep track of whether the pthread_t thread
- id is valid.
-
- On Windows pthread_t is not an integer type. pthread offers no macro for
- invalid pthread_t thread id, so validity is kept track of separately.
-
- Closes https://github.com/curl/curl/pull/7527
- - [Jeremy Falcon brought this change]
- winbuild/README.md: clarify GEN_PDB option
-
- - Document that GEN_PDB option creates an external database.
-
- Ref: https://github.com/curl/curl/issues/7502
- Daniel Stenberg (9 Aug 2021)
- - [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: replace deprecated functions with nghttp3_conn_shutdown_stream_read
-
- Closes #7546
- - [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: rework the return value handling of ngtcp2_conn_writev_stream
-
- Rework the return value handling of ngtcp2_conn_writev_stream and treat
- NGTCP2_ERR_STREAM_SHUT_WR separately.
-
- Closes #7546
- - configure: error out if both ngtcp2 and quiche are specified
-
- Reported-by: Vincent Grande
- See #7539
- Closes #7545
- - [Jeff Mears brought this change]
- easy: use a custom implementation of wcsdup on Windows
-
- ... so that malloc/free overrides from curl_global_init are used for
- wcsdup correctly.
-
- Closes #7540
- - zuul: add an mbedtls3 CI job
-
- Closes #7544
- - [Benau brought this change]
- mbedTLS: initial 3.0.0 support
-
- Closes #7428
- - RELEASE-NOTES: synced
- - configure.ac: revert bad nghttp2 library detection improvements
-
- This reverts commit b4b34db65f9f8, 673753344c5f and 29c7cf79e8b.
-
- The logic is now back to assuming that the nghttp2 lib is called nghttp2 and
- nothing else.
-
- Reported-by: Rui Pinheiro
- Reported-by: Alex Crichton
- Fixes #7514
- Closes #7515
- - happy-eyeballs-timeout-ms.d: polish the wording
-
- Reported-by: Josh Soref
- Fixes #7433
- Closes #7542
- - [modbw brought this change]
- mbedtls_threadlock: fix unused variable warning
-
- Closes #7393
- - [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: compile with the latest ngtcp2 and nghttp3
-
- Closes #7541
- Marc Hoersken (31 Jul 2021)
- - CI/cirrus: reduce compile time with increased parallism
-
- Cirrus CI VMs have 2 CPUs, let's use them also for Windows builds.
-
- Reviewed-by: Daniel Stenberg
- Closes #7505
- Daniel Stenberg (30 Jul 2021)
- - [Bin Lan brought this change]
- tool/tests: fix potential year 2038 issues
-
- The length of 'long' in a 32-bit system is 32 bits, which cannot be used
- to save timestamps after 2038. Most operating systems have extended
- time_t to 64 bits.
-
- Remove the castings to long.
-
- Closes #7466
- - compressed.d: it's a request, not an order
-
- Clarified
-
- Reported-by: Dan Jacobson
- Reviewed-by: Daniel Gustafsson
- Fixes #7516
- Closes #7517
- - [Bernhard M. Wiedemann brought this change]
- tests: make three tests pass until 2037
-
- after 2038 something in test1915 fails on 32-bit OSes
-
- Closes #7512
- Daniel Gustafsson (30 Jul 2021)
- - connect: remove superfluous conditional
-
- Commit dbd16c3e2 cleaned up the logic for traversing the addrinfos,
- but the move left a conditional on ai which no longer is needed as
- the while loop reevaluation will cover it.
-
- Closes #7511
- Reviewed-by: Carlo Marcelo Arenas Belón
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Daniel Stenberg (29 Jul 2021)
- - RELEASE-NOTES: synced
-
- and bump curlver to 7.79.0 for next release
- Marc Hoersken (29 Jul 2021)
- - tests/*server.py: remove pidfile on server termination
-
- Avoid pidfile leaking/laying around after server already exited.
-
- Reviewed-by: Daniel Stenberg
- Closes #7506
- Daniel Gustafsson (27 Jul 2021)
- - tool_main: fix typo in comment
-
- The referred to library is NSPR, so fix the switched around characters.
- Daniel Stenberg (28 Jul 2021)
- - [Aleksandr Krotov brought this change]
- bearssl: support CURLOPT_CAINFO_BLOB
-
- Closes #7468
- - curl.1: mention "global" flags
-
- Mention options that are "global". A global command line option is one
- that doesn't get reset at --next uses and therefore don't need to be
- used again.
-
- Reported-by: Josh Soref
-
- Fixes #7457
- Closes #7510
- - CURLOPT_DOH_URL.3: CURLOPT_OPENSOCKETFUNCTION is not inherited
-
- Reported-by: Daniel Woelfel
- Fixes #7441
- Closes #7509
- - KNOWN_BUGS: add more HTTP/3 problems
-
- Closes #7351
- Closes #7339
- Closes #7125
- Marc Hoersken (27 Jul 2021)
- - CI/azure: reduce compile time with increased parallism
-
- Azure Pipelines CI VMs have 2 CPUs, let's use them.
-
- Closes #7489
- Jay Satiro (27 Jul 2021)
- - [Josh Soref brought this change]
- docs: fix grammar
-
- Fixes https://github.com/curl/curl/issues/7444
- Fixes https://github.com/curl/curl/issues/7451
- Fixes https://github.com/curl/curl/issues/7465
- Closes https://github.com/curl/curl/pull/7495
- - mail-rcpt.d: fix grammar
-
- Remove confusing sentence that says to specify an e-mail address for
- mail transfer, since that's implied.
-
- Reported-by: Josh Soref
-
- Fixes https://github.com/curl/curl/issues/7452
- Closes https://github.com/curl/curl/pull/7495
- Daniel Stenberg (27 Jul 2021)
- - c-hyper: remove the hyper_executor_poll() loop from Curl_http
-
- 1. it's superfluous
- 2. it didn't work identically to the Curl_hyper_stream one which could
- cause problems like #7486
-
- Pointed-out-by: David Cook
- Closes #7499
- - curl-openssl.m4: check lib64 for the pkg-config file
-
- OpenSSL recently started putting the libs in $prefix/lib64 on 'make
- install', so we check that directory for pkg-config data if the 'lib'
- check fails.
-
- Closes #7503
- - CURLOPT_SSL_CTX_*.3: tidy up the example
-
- Use the proper code style. Don't store return codes that aren't read.
- Copy the same example into CURLOPT_SSL_CTX_FUNCTION.3 as well.
-
- Closes #7500
- - example/cookie_interface: fix scan-build printf warning
-
- Follow-up to 4b79c4fb565
-
- Fixes #7497
- Closes #7498
- - [Josh Soref brought this change]
- limit-rate.d: clarify base unit
-
- Fixes #7439
- Closes #7494
- - [Carlo Marcelo Arenas Belón brought this change]
- examples/cookie_interface: avoid printfing time_t directly
-
- time_t representation is undefined and varies on bitsize and signedness,
- and as of C11 could be even non integer.
-
- instead of casting to unsigned long (which would truncate in systems
- with a 32bit long after 2106) use difftime to get the elapsed time as a
- double and print that (without decimals) instead.
-
- alternatively a cast to curl_off_t and its corresponding print
- formatting could have been used (at least in POSIX) but portability and
- curl agnostic code was prioritized.
-
- Closes #7490
- Marc Hoersken (25 Jul 2021)
- - tests/servers: remove obsolete pid variable
-
- Variable is not used since pidfile handling moved to util.[ch]
-
- Reviewed-by: Jay Satiro
- Closes #7482
- - tests/servers: use our platform-aware pid for server verification
-
- The pid used for server verification is later stored as pid2 in
- the hash of running test servers and therefore used for shutdown.
-
- The pid used for shutdown must be the platform-aware (Win32) pid
- to avoid leaking test servers while running them using Cygwin/msys.
-
- Reviewed-by: Jay Satiro
- Closes #7481
- - tests/runtests.pl: cleanup copy&paste mistakes and unused code
-
- Reviewed-by: Jay Satiro
- Part of #7481
- Daniel Stenberg (25 Jul 2021)
- - RELEASE-NOTES: synced
-
- bumped to 7.78.1 for next release
- - http_proxy: clear 'sending' when the outgoing request is sent
-
- ... so that Curl_connect_getsock() will know how to wait for the socket
- to become readable and not writable after the entire CONNECT request has
- been issued.
-
- Regression added in 7.77.0
-
- Reported-by: zloi-user on github
- Assisted-by: Jay Satiro
- Fixes #7155
- Closes #7484
- Jay Satiro (25 Jul 2021)
- - [Josh Soref brought this change]
- openssl: fix grammar
-
- Closes https://github.com/curl/curl/pull/7480
- - configure.ac: tweak nghttp2 library name fix again
-
- - Change extraction to handle multiple library names returned by
- pkg-config (eg a possible scenario with pkg-config --static).
-
- Ref: https://github.com/curl/curl/pull/7472
-
- Closes https://github.com/curl/curl/pull/7485
- Dan Fandrich (23 Jul 2021)
- - Get rid of the unused HAVE_SIG_ATOMIC_T et. al.
-
- It was added in 2006 but I see no evidence it was ever used.
- Jay Satiro (23 Jul 2021)
- - docs: change max-filesize caveat again
-
- - Add protocols field to max-filesize.d.
-
- - Revert wording on unknown file size caveat and do not discuss specific
- protocols in that section.
-
- Partial revert of ecf0225. All max-filesize options now have the list of
- protocols and it's clearer just to have that list without discussing
- specific protocols in the caveat.
-
- Reported-by: Josh Soref
-
- Ref: https://github.com/curl/curl/issues/7453#issuecomment-884128762
- Daniel Stenberg (22 Jul 2021)
- - [Christian Weisgerber brought this change]
- configure: tweak nghttp2 library name fix
-
- commit 29c7cf79e8b44cf (shipped in 7.78.0) introduced a problem by
- assuming that LIB_H2 does not have any leading whitespace. At least
- OpenBSD's native pkg-config can produce such whitespace, though:
-
- $ pkg-config --libs-only-l libnghttp2
- -lnghttp2
-
- As a result, the configure check for libnghttp2 will erroneously fail.
-
- Bug: https://curl.se/mail/lib-2021-07/0050.html
- Closes #7472
- - [Bastian Krause brought this change]
- docs/MQTT: update state of username/password support
-
- PR #7243 implemented username/password support for MQTT, so let's drop
- these items from the caveats.
-
- Signed-off-by: Bastian Krause <bst@pengutronix.de>
-
- Closes #7474
- - [Oleg Pudeyev brought this change]
- CURLMOPT_TIMERFUNCTION.3: remove misplaced "time"
-
- Closes #7470
- Version 7.78.0 (21 Jul 2021)
- Daniel Stenberg (21 Jul 2021)
- - RELEASE-NOTES: synced
-
- curl 7.78.0 release
- - winbuild/MakefileBuild.vc: bump copyright year
- Jay Satiro (21 Jul 2021)
- - docs: mention max-filesize options also apply to MQTT transfers
-
- Also make it clearer that the caveat 'if the file size is unknown it
- the option will have no effect' may apply to protocols other than FTP
- and HTTP.
-
- Reported-by: Josh Soref
-
- Fixes https://github.com/curl/curl/issues/7453
- - [Josh Soref brought this change]
- docs/cmdline: fix grammar and typos
- - [Josh Soref brought this change]
- dump-header.d: Drop suggestion to use for cookie storage
-
- Since --cookie-jar is the preferred way to store cookies, no longer
- suggest using --dump-header to do so.
-
- Co-authored-by: Daniel Stenberg
-
- Closes https://github.com/curl/curl/issues/7414
- - [Josh Soref brought this change]
- doc/cmdline: fix grammar and typos
-
- Closes https://github.com/curl/curl/pull/7454
- Closes https://github.com/curl/curl/pull/7455
- Closes https://github.com/curl/curl/pull/7456
- Closes https://github.com/curl/curl/pull/7459
- Closes https://github.com/curl/curl/pull/7460
- Closes https://github.com/curl/curl/pull/7461
- Closes https://github.com/curl/curl/pull/7462
- Closes https://github.com/curl/curl/pull/7463
- Daniel Stenberg (20 Jul 2021)
- - vtls: fix connection reuse checks for issuer cert and case sensitivity
-
- CVE-2021-22924
-
- Reported-by: Harry Sintonen
- Bug: https://curl.se/docs/CVE-2021-22924.html
- - sectransp: check for client certs by name first, then file
-
- CVE-2021-22926
-
- Bug: https://curl.se/docs/CVE-2021-22926.html
-
- Assisted-by: Daniel Gustafsson
- Reported-by: Harry Sintonen
- - telnet: fix option parser to not send uninitialized contents
-
- CVS-2021-22925
-
- Reported-by: Red Hat Product Security
- Bug: https://curl.se/docs/CVE-2021-22925.html
- Jay Satiro (20 Jul 2021)
- - connect: fix wrong format specifier in connect error string
-
- 0842175 (not in any release) used the wrong format specifier (long int)
- for timediff_t. On an OS such as Windows libcurl's timediff_t (usually
- 64-bit) is bigger than long int (32-bit). In 32-bit Windows builds the
- upper 32-bits of the timediff_t were erroneously then used by the next
- format specifier. Usually since the timeout isn't larger than 32-bits
- this would result in null as a pointer to the string with the reason for
- the connection failing. On other OSes or maybe other compilers it could
- probably result in garbage values (ie crash on deref).
-
- Before:
- Failed to connect to localhost port 12345 after 1201 ms: (nil)
-
- After:
- Failed to connect to localhost port 12345 after 1203 ms: Connection refused
-
- Closes https://github.com/curl/curl/pull/7449
- - winbuild: support alternate nghttp2 static lib name
-
- - Support both nghttp2.lib and nghttp2_static.lib for static nghttp2.
-
- nghttp2 briefly changed its static lib name to nghttp2_static, but then
- made the _static suffix optional.
-
- Ref: https://github.com/nghttp2/nghttp2/pull/1394
- Ref: https://github.com/nghttp2/nghttp2/pull/1418
- Ref: https://github.com/nghttp2/nghttp2/issues/1466
-
- Reported-by: Pierre Yager
-
- Fixes https://github.com/curl/curl/issues/7446
- Closes https://github.com/curl/curl/pull/7447
- - [Josh Soref brought this change]
- docs/cmdline: fix grammar and typos
-
- Closes https://github.com/curl/curl/pull/7432
- Closes https://github.com/curl/curl/pull/7436
- Closes https://github.com/curl/curl/pull/7438
- Closes https://github.com/curl/curl/pull/7440
- Closes https://github.com/curl/curl/pull/7445
- - [Josh Soref brought this change]
- delegation.d: mention what happens when used multiple times
-
- Closes https://github.com/curl/curl/pull/7408
- - [Josh Soref brought this change]
- create-file-mode.d: mention what happens when used multiple times
-
- Closes https://github.com/curl/curl/pull/7407
- - [Josh Soref brought this change]
- config.d: split comments and option-per line
-
- Closes https://github.com/curl/curl/pull/7405
- Daniel Stenberg (19 Jul 2021)
- - misc: copyright year range updates
- - mailmap: add Tobias and Timur
- Daniel Gustafsson (18 Jul 2021)
- - [Josh Soref brought this change]
- docs: spell out directories instead of dirs in create-dirs
-
- Write out directories rather than using the dirs abbrevation. Also
- use plural form consistently, even if the code in the end might just
- create a single directory.
-
- Closes #7406
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
- - [Tobias Nyholm brought this change]
- docs: correct spelling errors and a broken link
-
- Update grammar and spelling in docs and source code comments.
-
- Closes: #7427
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Marc Hoersken (18 Jul 2021)
- - CI/cirrus: install impacket from PyPI instead of FreeBSD packages
-
- Availability of impacket as FreeBSD package is too flaky.
-
- Stick to legacy version of cryptography which still
- supports OpenSSL version 1.0.2 due to FreeBSD 11.
-
- Reviewed-by: Daniel Stenberg
-
- Closes #7418
- Daniel Stenberg (18 Jul 2021)
- - [Josh Soref brought this change]
- docs/cmdline: mention what happens when used multiple times
-
- For --dns-ipv4-addr, --dns-ipv6-addr and --dns-servers
-
- Closes #7410
- Closes #7411
- Closes #7412
- - [Michał Antoniak brought this change]
- lib: fix compiler warnings with CURL_DISABLE_NETRC
-
- warning C4189: 'netrc_user_changed': local variable is initialized but
- not referenced
-
- warning C4189: 'netrc_passwd_changed': local variable is initialized but
- not referenced
-
- Closes #7423
- - disable-epsv.d: remove duplicate "(FTP)"
-
- ... since the tooling adds that to the output based on the "Protocols:"
- tag.
- - [Max Zettlmeißl brought this change]
- docs: make the documentation for --etag-save match the program behaviour
-
- When using curl with the option `--etag-save` I expected it to save the
- ETag without its surrounding quotes, as stated by the documentation in
- the repository and by the generated man pages.
-
- My first endeavour was to fix the program, but while investigating the
- history of the relevant parts, I discovered that curl once saved the
- ETag without the quotes. This was undone by Daniel Stenberg in commit
- `98c94596f5928840177b6bd3c7b0f0dd03a431af`, therefore I decided that in
- this case the documentation should be adjusted to match the behaviour of
- curl.
-
- The changed save behaviour also made parts of the `--etag-compare`
- documentation wrong or superfluous, so I adjusted those accordingly.
-
- Closes #7429
- - [Josh Soref brought this change]
- write-out.d: add missing periods
-
- Closes #7404
- - [Josie Huddleston brought this change]
- easy: during upkeep, attach Curl_easy to connections in the cache
-
- During the protocol-specific parts of connection upkeep, some code
- assumes that the data->conn pointer already is set correctly. However,
- there's currently no guarantee of that in the code.
-
- This fix temporarily attaches each connection to the Curl_easy object
- before performing the protocol-specific connection check on it, in a
- similar manner to the connection checking in extract_if_dead().
-
- Fixes #7386
- Closes #7387
- Reported-by: Josie Huddleston
- - [Josh Soref brought this change]
- cleanup: spell DoH with a lowercase o
-
- Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
-
- Closes #7413
- - [Josh Soref brought this change]
- TheArtOfHttpScripting: polish
-
- - add missing backticks and comma
-
- - fix proxy description:
-
- * example proxy isn't local
- * locally doesn't really make sense
-
- Closes #7416
- - [Josh Soref brought this change]
- form.d: add examples of `,`/`;` for file[name]
-
- Fixes #7415
- Closes #7417
- - [Michał Antoniak brought this change]
- mbedtls: Remove unnecessary include
-
- - curl_setup.h: all references to mbedtls_md4* functions and structures
- are in the md4.c. This file already includes the <mbedtls/md4.h> file
- along with the file existence control (defined (MBEDTLS_MD4_C))
-
- - curl_ntlm_core.c: unnecessary include - repeated below
-
- Closes #7419
- - RELEASE-NOTES: synced
- Jay Satiro (16 Jul 2021)
- - [User Sg brought this change]
- multi: fix crash in curl_multi_wait / curl_multi_poll
-
- Appears to have been caused by 51c0ebc (precedes 7.77.0) which added a
- VALID_SOCK check to one of the loops through the sockets but not the
- other.
-
- Reported-by: sylgal@users.noreply.github.com
- Authored-by: sylgal@users.noreply.github.com
-
- Fixes https://github.com/curl/curl/issues/7379
- Closes https://github.com/curl/curl/pull/7389
- - [Daniel Gustafsson brought this change]
- tool_help: remove unused define
-
- The PRINT_LINES_PAUSE macro is no longer used, and has been mostly
- cleaned out but one occurrence remained.
-
- Closes https://github.com/curl/curl/pull/7380
- - [Sergey Markelov brought this change]
- build: fix compiler warnings when CURL_DISABLE_VERBOSE_STRINGS
-
- fix compiler warnings about unused variables and parameters when
- built with --disable-verbose.
-
- Closes https://github.com/curl/curl/pull/7377
- - [Andrea Pappacoda brought this change]
- build: fix IoctlSocket FIONBIO check
-
- Prior to this change HAVE_IOCTLSOCKET_CAMEL_FIONBIO mistakenly checked
- for (lowercase) ioctlsocket when it should have checked for IoctlSocket.
-
- Closes https://github.com/curl/curl/pull/7375
- - [Timur Artikov brought this change]
- configure: fix nghttp2 library name for static builds
-
- Don't hardcode the nghttp2 library name,
- because it can vary, be "nghttp2_static" for example.
-
- Fixes https://github.com/curl/curl/issues/7367
- Closes https://github.com/curl/curl/pull/7368
- Gisle Vanem (16 Jul 2021)
- - [PellesC] fix _lseeki64() macro
- - [SChannel] Use '_tcsncmp()' instead
-
- Revert previous change for PellesC.
-
- Instead replace all use of `_tcsnccmp()` with `_tcsncmp()`.
- - [PellesC] missing '_tcsnccmp'
-
- PellesC compiler does not have this macro in it's `<tchar.h>`
- Daniel Gustafsson (14 Jul 2021)
- - TODO: add mention of mbedTLS 3 incompatibilities
-
- Wyatt OʼDay reported in #7385 that mbedTLS isn't backwards compatible
- and curl no longer builds with it. Document the need to fix our support
- until so has been done.
-
- Closes #7390
- Fixes #7385
- Reported-by: Wyatt OʼDay
- Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
- - docs: fix inconsistencies in EGDSOCKET documentation
-
- Only the OpenSSL backend actually use the EGDSOCKET, and also use
- TLS consistently rather than mixing SSL and TLS. While there, also
- fix a minor spelling nit.
-
- Closes: #7391
- Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
- - [Борис Верховский brought this change]
- docs: document missing arguments to commands
-
- This is a followup to commit f410b9e538129e77607fef1 fixing a few
- more commands which takes arguments.
-
- Closes #7382
- Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
- - [Randolf J brought this change]
- docs: fix incorrect argument name reference
-
- The documentation for the read callback was erroneously referencing
- the nitems argument by nmemb. The error was introduced in commit
- ce0881edee3c7.
-
- Closes #7383
- Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
- - [Борис Верховский brought this change]
- tool_help: Document that --tlspassword takes a password
-
- Closes #7378
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- - scripts: Fix typo in release-notes instructions
-
- The command to run had a typo in the pathname which prevented copy
- pasting it to work, which has annoyed me enough to fix this now.
- - RELEASE-NOTES: synced
- Jay Satiro (10 Jul 2021)
- - write-out.d: Clarify urlnum is not unique for de-globbed URLs
-
- Reported-by: Коваленко Анатолий Викторович
-
- Fixes https://github.com/curl/curl/issues/7342
- Closes https://github.com/curl/curl/pull/7369
- Daniel Gustafsson (3 Jul 2021)
- - [William Desportes brought this change]
- docs: Fix typos
-
- Closes: #7370
- Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
- Daniel Stenberg (8 Jul 2021)
- - [Jonathan Wernberg brought this change]
- Revert "ftp: Expression 'ftpc->wait_data_conn' is always false"
-
- The reverted commit introduced a logic error in code that was
- correct.
-
- The client using libcurl would notice the error since FTP file
- uploads in active transfer mode would somtimes complete with
- success despite no transfer having been performed and the
- "uploaded" file thus not being on the remote server afterwards.
-
- The FTP server would notice the error because it receives a
- RST on the data connection it has established with the client
- before any data was transferred at all.
-
- The logic error happens if the STOR response from the server have
- arrived by the time ftp_multi_statemach() in the affected code path
- is called, but the incoming data connection have not arrived yet.
- In that case, the processing of the STOR response will cause
- 'ftpc->wait_data_conn' to be set to TRUE, contradicting the comment
- in the code. Since 'complete' will also be set, later logic would
- believe the transfer was done.
-
- In most cases, the STOR response will not have arrived yet when
- the affected code path is executed, or the incoming connection will
- also have arrived, and thus the error would not express itself.
- But if the speed difference of the device using libcurl and the
- FTP server is exactly right, the error may happen as often as in
- one out of hundred file transfers.
-
- This reverts commit 49f3117a238b6eac0e22a32f50699a9eddcb66ab.
-
- Bug: https://curl.se/mail/lib-2021-07/0025.html
- Closes #7362
- - msnprintf: return number of printed characters excluding null byte
-
- ... even when the output is "capped" by the maximum length argument.
-
- Clarified in the docs.
-
- Closes #7361
- - infof: remove newline from format strings, always append it
-
- - the data needs to be "line-based" anyway since it's also passed to the
- debug callback/application
-
- - it makes infof() work like failf() and consistency is good
-
- - there's an assert that triggers on newlines in the format string
-
- - Also removes a few instances of "..."
-
- - Removes the code that would append "..." to the end of the data *iff*
- it was truncated in infof()
-
- Closes #7357
- - examples/multi-single: fix scan-build warning
-
- warning: Value stored to 'mc' during its initialization is never read
-
- Follow-up to ae8e11ed5fd2ce
-
- Closes #7360
- - wolfssl: failing to set a session id is not reason to error out
-
- ... as it is *probably* just timed out.
-
- Reported-by: Francisco Munoz
-
- Closes #7358
- - docs/examples: use curl_multi_poll() in multi examples
-
- The API is soon two years old and deserves being shown as the primary
- way to drive multi code as it makes it much easier to write code.
-
- multi-poll: removed
-
- multi-legacy: add to show how we did multi API use before
- curl_multi_wait/poll.
-
- Closes #7352
- - KNOWN_BUGS: flaky Windows CI builds
-
- Closes #6972
- - RELEASE-NOTES: synced
- - test1147: hyper doesn't allow "crazy" request headers like built-in
-
- ... so strip that from the test.
-
- Closes #7349
- - c-hyper: bail on too long response headers
-
- To match with built-in behaviors. Makes test 1154 work.
-
- Closes #7350
- - test1151: added missing CRLF to work with hyper
-
- Closes #7350
- - c-hyper: add support for transfer-encoding in the request
-
- Closes #7348
- - [Andrea Pappacoda brought this change]
- cmake: remove libssh2 feature checks
-
- libssh2 features are detected based on version since commit
- 9dbbba997608f7c3c5de1c627c77c8cd2aa85b73
-
- Closes #7343
- - test1116: hyper doesn't pass through "surprise-trailers"
-
- Closes #7344
- - socks4: scan for the IPv4 address in resolve results
-
- Follow-up to 84d2839740 which changed the resolving to always resolve
- both address families, but since SOCKS4 only supports IPv4 it should
- scan for and use the first available IPv4 address.
-
- Reported-by: shithappens2016 on github
- Fixes #7345
- Closes #7346
- Jay Satiro (5 Jul 2021)
- - proto.d: fix formatting for paragraphs after margin changes
-
- Closes https://github.com/curl/curl/pull/7341
- - pinnedpubkey.d: fix formatting for version support lists
-
- Closes https://github.com/curl/curl/pull/7340
- Daniel Stenberg (2 Jul 2021)
- - TODO: "Support in-memory certs/ca certs/keys" done
-
- Has been suppored for a while now with the *BLOB options.
- - examples: safer and more proper read callback logic
-
- The same callback code is used in:
-
- imap-append.c
- smtp-authzid.c
- smtp-mail.c
- smtp-multi.c
- smtp-ssl.c
- smtp-tls.c
-
- It should not assume that it can copy full lines into the buffer as it
- will encourage sloppy coding practices. Instead use byte-wise logic and
- check/acknowledge the buffer size appropriately.
-
- Reported-by: Harry Sintonen
- Fixes #7330
- Closes #7331
- - test1519: adjusted to work with hyper
-
- Closes #7333
- - test1518: adjusted to work with hyper
-
- ... by making sure the stdout output doesn't look like HTTP headers.
-
- Closes #7333
- - test1514: add a CRLF to the response to make it correct
-
- Makes hyper accept it fine instead returning HYPERE_UNEXPECTED_EOF on
- us.
-
- Closes #7334
- - formdata: avoid "Argument cannot be negative" warning
-
- ... when converting a curl_off_t to size_t, by using
- CURL_ZERO_TERMINATED before passing the argument to the function.
-
- Detected by Coverity CID 1486590.
-
- Closes #7328
- Assisted-by: Daniel Gustafsson
- - lib: more %u for port and int for %*s fixes
-
- Detected by Coverity
-
- Closes #7329
- - doh: (void)-prefix call to curl_easy_setopt
- - lib: fix type of len passed to *printf's %*s
-
- ... it needs to be 'int'. Detected by Coverity CID 1486611 (etc)
-
- Closes #7326
- - lib: use %u instead of %ld for port number printf
-
- Follow-up to 764c6bd3bf which changed the type of some port number
- fields. Detected by Coverity (CID 1486624) etc.
-
- Closes #7325
- - version: turn version number functions into returning void
-
- ... as we never use the return codes from them.
-
- Reviewed-by: Daniel Gustafsson
- Closes #7319
- - mqtt: extend the error message for no topic
-
- ... and mention that it needs URL encoding.
-
- Reported-by: Peter Körner
- Fixes #7316
- Closes #7317
- - formdata: correct typecast in curl_mime_data call
-
- Coverity pointed out it the mismatch. CID 1486590
-
- Closes #7327
- - url: (void)-prefix a curl_url_get() call
-
- Coverity (CID 1486645) pointed out a use of curl_url_get() in the
- parse_proxy function where the return code wasn't checked. A
- (void)-prefix makes the intention obvious.
-
- Closes #7320
- - glob: pass an 'int' as len when using printf's %*s
-
- Detected by Coverity CID 1486629.
-
- Closes #7324
- - vtls: use free() not curl_free()
-
- curl_free() is provided for users of the API to free returned data,
- there's no need to use it internally.
-
- Closes #7318
- - zuul: use the new rustls directory name
-
- Follow-up to 6d972c8b1cbb3 which missed updating this directory name.
-
- Also no longer call it crustls in the docs and bump to rusttls-ffi 0.7.1
-
- Closes #7311
- Jay Satiro (29 Jun 2021)
- - http: fix crash in rate-limited upload
-
- - Don't set the size of the piece of data to send to the rate limit if
- that limit is larger than the buffer size that will hold the piece.
-
- Prior to this change if CURLOPT_MAX_SEND_SPEED_LARGE
- (curl tool: --limit-rate) was set then it was possible that a temporary
- buffer used for uploading could be written to out of bounds. A likely
- scenario for this would be a non-trivial amount of post data combined
- with a rate limit larger than CURLOPT_UPLOAD_BUFFERSIZE (default 64k).
-
- The bug was introduced in 24e469f which is in releases since 7.76.0.
-
- perl -e "print '0' x 200000" > tmp
- curl --limit-rate 128k -d @tmp httpbin.org/post
-
- Reported-by: Richard Marion
-
- Fixes https://github.com/curl/curl/issues/7308
- Closes https://github.com/curl/curl/pull/7315
- Daniel Stenberg (29 Jun 2021)
- - copyright: add boiler-plate headers to CI config files
-
- And whitelist .zuul.ignore
-
- Closes #7314
- - CI: remove travis details
-
- Rename still used leftovers to "zuul" as that's now the CI using them.
-
- Closes #7313
- - RELEASE-NOTES: synced
- - openssl: avoid static variable for seed flag
-
- Avoid the race condition risk by instead storing the "seeded" flag in
- the multi handle. Modern OpenSSL versions handle the seeding itself so
- doing the seeding once per multi-handle instead of once per process is
- less of an issue.
-
- Reported-by: Gerrit Renker
- Fixes #7296
- Closes #7306
- - configure: inhibit the implicit-fallthrough warning on gcc-12
-
- ... since it no longer acknowledges the comment markup we use for that
- purpose.
-
- Reported-by: Younes El-karama
- Fixes #7295
- Closes #7307
- Daniel Gustafsson (28 Jun 2021)
- - [Andrei Rybak brought this change]
- misc: fix typos in comments which repeat a word
-
- Fix typos in code comments which repeat various words. In trivial
- cases, just delete the repeated word. Reword the affected sentence in
- "lib/url.c" for it to make sense.
-
- Closes #7303
- Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
- Daniel Stenberg (27 Jun 2021)
- - lib677: make it survive torture testing
-
- Follow-up to a5ab72d5edd7
-
- Closes #7300
- - [Tommy Chiang brought this change]
- docs/BINDINGS: fix outdated links
-
- * luacurl page is now not accessible, fix it with wayback machine page
- * Scheme one seems not providing https now, change it back to http one
-
- Closes #7301
- - [Jacob Hoffman-Andrews brought this change]
- curstls: bump crustls version and use new URL
-
- crustls moved to https://github.com/rustls/rustls-ffi. This also bumps
- the expected version to 0.7.0.
-
- Closes #7297
- - RELEASE-NOTES: synced
- - examples: length-limit two sscanf() uses of %s
-
- Reported-by: Jishan Shaikh
- Fixes #7293
- Closes #7294
- - [Richard Whitehouse brought this change]
- multi: alter transfer timeout ordering
-
- - Check whether a connection has succeded before checking whether it's
- timed out.
-
- This means if we've connected quickly, but subsequently been
- descheduled, we allow the connection to succeed. Note, if we timeout,
- but between checking the timeout, and connecting to the server the
- connection succeeds, we will allow it to go ahead. This is viewed as
- an acceptable trade off.
-
- - Add additional failf logging around failed connection attempts to
- propogate the cause up to the caller.
-
- Co-Authored-by: Martin Howarth
- Closes #7178
- - test677: IMAP CONNECT_ONLY, custom command and then exit
-
- Adjusted ftpserver.pl to add support for the IMAP IDLE command
-
- Adjusted test 660 to sync with the fix
- - multi: do not switch off connect_only flag when closing
-
- ... as it made protocol specific disconnect commands wrongly get used.
-
- Bug: https://curl.se/mail/lib-2021-06/0024.html
- Reported-by: Aleksander Mazur
- Closes #7288
- - http: make the haproxy support work with unix domain sockets
-
- ... it should then pass on "PROXY UNKNOWN" since it doesn't know the
- involved IP addresses.
-
- Reported-by: Valentín Gutiérrez
- Fixes #7290
- Closes #7291
- - [Xiang Xiao brought this change]
- curl.h: include sys/select.h for NuttX RTOS
-
- Closes #7287
- - [Bin Meng brought this change]
- curl.h: remove the execution bit
-
- The execution bit of curl.h file was wrongly added:
-
- commit 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7")
-
- and should be removed.
-
- Follow-up to 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7")
- Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
- Closes #7286
- - [Bin Lan brought this change]
- curl.h: <sys/select.h> is supported by VxWorks7
-
- Closes #7285
- - [Bachue Zhou brought this change]
- quiche: use send() instead of sendto() to avoid macOS issue
-
- sendto() always returns "Socket is already connected" error on macos
-
- Closes #7260
- - [Li Xinwei brought this change]
- cmake: fix support for UnixSockets feature on Win32
-
- Move the definition of sockaddr_un struct from config-win32.h to
- curl_setup.h, so that it could be shared by all build systems.
-
- Add ADDRESS_FAMILY typedef for old mingw, now old mingw can also use
- unix sockets.
-
- Also fix the build of tests/server/sws.c on Win32 when USE_UNIX_SOCKETS
- is defined.
-
- Closes #7034
- - [Gregory Muchka brought this change]
- hostip: (macOS) free returned memory of SCDynamicStoreCopyProxies
-
- From Apples documentation on SCDynamicStoreCopyProxies, "Return Value: A
- dictionary of key-value pairs that represent the current internet proxy
- settings, or NULL if no proxy settings have been defined or if an error
- occurred. You must release the returned value."
-
- Failure to release the returned value of SCDynamicStoreCopyProxies can
- result in a memory leak.
-
- Source: https://developer.apple.com/documentation/systemconfiguration/1517088-scdynamicstorecopyproxies
-
- Closes #7265
- - RELEASE-NOTES: synced
- Jay Satiro (21 Jun 2021)
- - vtls: fix warning due to function prototype mismatch
-
- b09c8ee changed the function prototype. Caught by Visual Studio.
- - curl_multibyte: Remove local encoding fallbacks
-
- - If the UTF-8 to UTF-16 conversion fails in Windows Unicode builds then
- no longer fall back to assuming the string is in a local encoding.
-
- Background:
-
- Some functions in Windows Unicode builds must convert UTF-8 to UTF-16 to
- pass to the Windows CRT API wide-character functions since in Windows
- UTF-8 is not a valid locale (or at least 99% of the time right now).
-
- Prior to this change if the Unicode encoding conversion failed then
- libcurl would assume, for backwards compatibility with applications that
- may have written their code for non-Unicode builds, attempt to convert
- the string from local encoding to UTF-16.
-
- That type of "best effort" could theoretically cause some type of
- security or other problem if a string that was locally encoded was also
- valid UTF-8, and therefore an unexpected UTF-8 to UTF-16 conversion
- could occur.
-
- Ref: https://github.com/curl/curl/pull/7246
-
- Closes https://github.com/curl/curl/pull/7257
- Daniel Stenberg (20 Jun 2021)
- - curl_endian: remove the unused Curl_write64_le function
-
- The last usage was removed in cca455a36
-
- Closes #7280
- - vtls: only store TIMER_APPCONNECT for non-proxy connect
-
- Introducing a 'isproxy' argument to the connect function so that it
- knows wether to store the time stamp or not.
-
- Reported-by: Yongkang Huang
- Fixes #7274
- Closes #7274
- - gnutls: set the preferred TLS versions in correct order
-
- Regression since 781864bedbc57 (curl 7.77.0)
-
- Reported-by: civodul on github
- Assisted-by: Nikos Mavrogiannopoulos
- Fixes #7277
- Closes #7278
- - [Gergely Nagy brought this change]
- configure/cmake: remove checks for unused gethostbyaddr and gethostbyaddr_r
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure/cmake: remove checks for unused inet_ntoa and inet_ntoa_r
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure/cmake: remove unused define HAVE_PERROR
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure: remove unused check for gai_strerror
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure/cmake: remove unused define HAVE_FREEIFADDRS
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure/cmake: remove unused define HAVE_FORK
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure/cmake: remove unused define HAVE_FDOPEN
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure/cmake: remove checks for unused sgtty.h
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure/cmake: remove remaining checks for rsa.h
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure/cmake: remove remaining checks for err.h
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure/cmake: remove remaining checks for crypto.h
-
- Closes #7276
- - [Gergely Nagy brought this change]
- configure/cmake: remove checks for unused getservbyport_r
-
- Closes #7276
- - --socks4[a]: clarify where the host name is resolved
-
- Closes #7273
- - libcurl-security.3: mention file descriptors and forks
-
- ... and move the security report section last.
-
- Reported-by: Harry Sintonen
- Closes #7270
- - [Alex Xu (Hello71) brought this change]
- configure.ac: make non-executable
-
- it needs to be processed by autoconf or autoreconf, and doesn't have a
- suitable shebang to be directly executed. other projects normally set
- configure.ac -x.
-
- Closes #7272
- - configure: do not strip out debug flags
-
- To allow users to set them when invoking configure without using
- --with-debug.
-
- Reported-by: Alex Xu
- Fixes #7216
- Closes #7267
- - libssh2: limit time a disconnect can take to 1 second
-
- Closes #7271
- - TLS: prevent shutdown loops to get stuck
-
- ... by making sure the loops are only allowed to read the shutdown
- traffic a limited number of times.
-
- Reported-by: Harry Sintonen
- Closes #7271
- - hyper: propagate errors back up from read callbacks
-
- Makes test 513 work with hyper
-
- Closes #7266
- - KNOWN_BUGS: Negotiate on Windows fails
-
- Closes #5881
- - KNOWN_BUGS: renames instead of locking for atomic operations
-
- Closes #6882
- Closes #6884
- - zuul: add two missing CI jobs
-
- ... that were configured, just not run
-
- Closes #7261
- Viktor Szakats (15 Jun 2021)
- - idn: fix libidn2 with windows unicode builds
-
- Unicode Windows builds use UTF-8 strings internally in libcurl,
- so make sure to call the UTF-8 flavour of the libidn2 API. Also
- document that Windows builds with libidn2 and UNICODE do expect
- CURLOPT_URL as an UTF-8 string.
-
- Reported-by: dEajL3kA on github
- Assisted-by: Jay Satiro
- Reviewed-by: Marcel Raad
- Closes #7246
- Fixes #7228
- Daniel Stenberg (15 Jun 2021)
- - curl_url_set: reject spaces in URLs w/o CURLU_ALLOW_SPACE
-
- They were never officially allowed and slipped in only due to sloppy
- parsing. Spaces (ascii 32) should be correctly encoded (to %20) before
- being part of a URL.
-
- The new flag bit CURLU_ALLOW_SPACE when a full URL is set, makes libcurl
- allow spaces.
-
- Updated test 1560 to verify.
-
- Closes #7073
- - RELEASE-NOTES: synced
-
- ... and bump to version 7.78.0 for the next planned release.
- Jay Satiro (15 Jun 2021)
- - docs: Remove outdated curl tool limitation
-
- - Document that HTTP/2 multiplexing is supported by the curl tool when
- parallel transfers are used.
-
- Supported since 7.66.0 via --parallel, but the doc wasn't updated.
-
- Closes https://github.com/curl/curl/pull/7259
- - http2: Clarify 'Using HTTP2' verbose message
-
- - Change phrasing from multi-use to multiplexing since the former may
- not be as well understood.
-
- Before: * Using HTTP2, server supports multi-use
-
- After: * Using HTTP2, server supports multiplexing
-
- Bug: https://github.com/curl/curl/discussions/7255
- Reported-by: David Hu
-
- Closes https://github.com/curl/curl/pull/7258
- Daniel Stenberg (14 Jun 2021)
- - winbuild/README: VC should be set to 6 'or larger'
-
- Previously it listed all versions up to 15 (missing 16) but this new
- phrasing is more open ended.
-
- Reported-by: Hugh Macdonald
- Fixes #7253
- Closes #7254
- - [Jacob Hoffman-Andrews brought this change]
- rustls: remove native_roots fallback
-
- For the commandline tool, we expect to be passed
- SSL_CONN_CONFIG(CAfile); for library use, the use should pass a set of
- trusted roots (like in other TLS backends).
-
- This also removes a dependency on Security.framework when building on
- macOS.
-
- Closes #7250
- - [Albin Vass brought this change]
- travis: remove jobs that have migrated to zuul
-
- Closes #7245
- - [Mohammed Naser brought this change]
- CI: add jobs using Zuul
-
- It also includes a few changes to get the builds going:
- - Added autoconf to common dependencies
- - Added automake to common dependencies
- - Added libtool to common dependencies
- - Added libssl-dev to common dependencies
-
- Co-authored-by: Albin Vass
-
- Closes #7245
- - netrc: skip 'macdef' definitions
-
- Add test 494 to verify
-
- Reported-by: Harry Sintonen
- Fixes #7238
- Closes #7244
- - multi: add scan-build-6 work-around in curl_multi_fdset
-
- scan-build-6 otherwise warns, saying: warning: The left operand of '>='
- is a garbage value otherwise, which is false.
-
- Later scan-builds don't claim this on the same code.
-
- Closes #7248
- - asyn-ares: remove check for 'data' in Curl_resolver_cancel
-
- It implied it would survive a NULL in there which it won't. Instead do
- an assert.
-
- Pointed out by scan-build.
-
- Closes #7248
- - url.c: remove two variable assigns that are never read
-
- Pointed out by scan-build
-
- Closes #7248
- - [Gealber Morales brought this change]
- mqtt: add support for username and password
-
- Minor-edits-by: Daniel Stenberg
- Added test 2200 to 2205
-
- Closes #7243
- - travis: remove the arm job
-
- We do it on circle CI instead
- - CI: add .circleci/config.yml
-
- Assisted-by: Gabriel Simmer
-
- Closes #7239
- - RELEASE-NOTES: synced
- - runtests: init $VERSION to avoid warnings when using -l
- - openssl: don't remove session id entry in disassociate
-
- When a connection is disassociated from a transfer, the Session ID entry
- should remain.
-
- Regression since 7f4a9a9 (shipped in libcurl 7.77.0)
- Reported-by: Gergely Nagy
- Reported-by: Paul Groke
-
- Fixes #7222
- Closes #7230
- - single_transfer: ignore blank --output-dir
-
- ... as otherwise it creates a rather unexpected target directory with a
- leading slash.
-
- Reported-by: Harry Sintonen
- Fixes #7218
- Closes #7233
- - tests: update README about servers and port numbers
-
- Closes #7242
- - conn_shutdown: if closed during CONNECT cleanup properly
-
- Reported-by: Alex Xu
- Reported-by: Phil E. Taylor
-
- Fixes #7236
- Closes #7237
- - [Christian Weisgerber brought this change]
- sws: malloc request struct instead of using stack
-
- ... 2MB requests is otherwise just too big for some systems.
-
- (The allocations are not freed properly.)
-
- Bug: https://curl.se/mail/lib-2021-06/0018.html
-
- Closes #7235
- - [Mark Swaanenburg brought this change]
- lib: don't compare fd to FD_SETSIZE when using poll
-
- FD_SETSIZE is irrelevant when using poll. So ensuring that the file
- descriptor is smaller than FD_SETSIZE in VALID_SOCK, can cause
- multi_wait to ignore perfectly valid file descriptors and simply wait
- for 1s to avoid hammering the CPU in a busy loop.
-
- Fixes #7240
- Closes #7241
- - [zhangxiuhua brought this change]
- doh: fix wrong DEBUGASSERT for doh private_data
-
- Closes #7227
- - [yb999 brought this change]
- tests: update README.md with a missing single quote
-
- Closes #7231
- - GHA: run all tests for hyper too
-
- As it lists disabled ones in DISABLED now
-
- Closes #7209
- - tests/data/DISABLED: add tests not working with hyper
-
- The goal is to remove them all from here over time.
-
- Closes #7209
- - runtests: also find the last test in Makefile.inc
-
- Closes #7209
- - test3010: work with hyper mode
-
- Closes #7209
- - configure: disable RTSP when hyper is selected
-
- Makes test 1013 work
-
- Closes #7209
- - test1594/1595/1596: fix to work in hyper mode
-
- Closes #7209
- - test1438/1457: add HTTP keyword to make hyper mode work
-
- Closes #7209
- - test1340/1341: adjusted for hyper mode
-
- Closes #7209
- - test1218: adjusted for hyper mode
-
- Closes #7209
- - test1216: adjusted for hyper mode
-
- Closes #7209
- - test1230: adjust to work in hyper mode
-
- Closes #7209
- - c-hyper: abort CONNECT response reading early on non 2xx responses
-
- Fixes test 493
-
- Closes #7209
- - test434: add HTTP keyword
-
- Closes #7209
- - test599: adjusted to work in hyper mode
-
- Closes #7209
- - c-hyper: fix the uploaded field in progress callbacks
-
- Makes test 578 work
-
- Closes #7209
- - test566: adjust to work with hyper mode
-
- Closes #7209
- - [Fawad Mirza brought this change]
- CURLOPT_WRITEFUNCTION.3: minor update of the example
-
- Safely avoid chunk.size garbage value if declared non globally.
-
- Closes #7219
- - [Bastian Krause brought this change]
- configure: rename get-easy-option configure option to get-easy-options
-
- "get-easy-options" is the configure option advertised by the help text
- anyway, so use that.
-
- Fixes #7211
- Closes #7213
-
- Follow-up to ad691b191 ("configure: added --disable-get-easy-options")
- Suggested-by: Daniel Stenberg <daniel@haxx.se>
- Signed-off-by: Bastian Krause <bst@pengutronix.de>
- - runtests: skip disabled tests unless -f is used
-
- To make it easier to write ranges like '115 to 229' without that
- explicitly enabling tests that are listed in DISABLED, this makes
- runtests always skip disabled tests unless the -f command line option is
- used.
-
- Previously the code attempted to not run such tests, but didn't do it
- correctly.
-
- Closes #7212
- - [Jun-ya Kato brought this change]
- ngtcp2: disable TLSv1.3 compatible mode when using GnuTLS
-
- The latest GnuTLS-3.7.2 implements disable switch for TLSv1.3 compatible
- mode for middle box but it is enabled by default, which is unnecessary
- for QUIC.
-
- Fixes #6896
- Closes #7202
- - test644: remove as duplicate of test 587
-
- Closes #7208
- Daniel Gustafsson (8 Jun 2021)
- - RELEASE-NOTES: synced
- - cookies: track expiration in jar to optimize removals
-
- Removing expired cookies needs to be a fast operation since we want to
- be able to perform it often and speculatively. By tracking the timestamp
- of the next known expiration we can exit early in case the timestamp is
- in the future.
-
- Closes: #7172
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Daniel Stenberg (7 Jun 2021)
- - GHA: add several libcurl tests to the hyper job
-
- 500 to 512
- - test500: adjust to work with hyper mode
- - c-hyper: support CURLINFO_STARTTRANSFER_TIME
-
- Closes #7204
- - c-hyper: support CURLOPT_HEADER
-
- When enabled, the headers are passed to the body write callback as well.
-
- Like in test 500
-
- Closes #7204
- - GHA: run the newly fixed tests with hyper
-
- Closes #7205
- - test433: adjust for hyper mode
-
- Closes #7205
- - test395: hyper cannot work around > 64 bit content-lengths like built-in
-
- Closes #7205
- - test394: hyper returns a different error
-
- Closes #7205
- - test393: make Content-Length fit within 64 bit for hyper
-
- Closes #7205
- - test347: CRLFify to work in hyper mode
-
- Closes #7205
- - test339: CRLFify better to work in hyper mode
-
- Closes #7205
- - travis: remove the hyper build
- - GHA: add a linux-hyper job
-
- Closes #7206
- - test328: avoid a header-looking body to make hyper mode work
-
- The test still works the same, just modified two bytes in the content.
-
- Closes #7203
- - release-notes.pl: also spot common 'closes' typo
- - metalink: remove
-
- Warning: this will make existing curl command lines that use metalink to
- stop working.
-
- Reasons for removal:
-
- 1. We've found several security problems and issues involving the
- metalink support in curl. The issues are not detailed here. When
- working on those, it become apparent to the team that several of the
- problems are due to the system design, metalink library API and what
- the metalink RFC says. They are very hard to fix on the curl side
- only.
-
- 2. The metalink usage with curl was only very briefly documented and was
- not following the "normal" curl usage pattern in several ways, making
- it surprising and non-intuitive which could lead to further security
- issues.
-
- 3. The metalink library was last updated 6 years ago and wasn't so
- active the years before that either. An unmaintained library means
- there's a security problem waiting to happen. This is probably reason
- enough.
-
- 4. Metalink requires an XML parsing library, which is complex code (even
- the smaller alternatives) and to this day often gets security
- updates.
-
- 5. Metalink is not a widely used curl feature. In the 2020 curl user
- survey, only 1.4% of the responders said that they'd are using it. In
- 2021 that number was 1.2%. Searching the web also show very few
- traces of it being used, even with other tools.
-
- 6. The torrent format and associated technology clearly won for
- downloading large files from multiple sources in parallel.
-
- Cloes #7176
- - docs/INSTALL: remove mentions of configure --with-darwin-ssl
-
- ... as it isn't supported since a while back.
-
- Make configure fail with a warning if used.
-
- Reported-by: Vadim Grinshpun
- Bug: https://curl.se/mail/lib-2021-06/0008.html
- Closes #7200
- - RELEASE-NOTES: synced
- - [Gregor Jasny brought this change]
- cmake: Avoid leaking absolute paths into exported config
-
- The `find_libarary` command resolves the library or framework
- into an absolute path. In case of system frameworks which are
- located within an Xcode-provided SDK this results in the Xcode
- path and SDK version being part of the library path.
-
- Because those library paths end up in the exported CMake config
- importing curl will fail once the Xcode location or SDK version
- changes:
-
- ```cmake
- set_target_properties(CURL::libcurl PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
- INTERFACE_LINK_LIBRARIES "lber;ldap;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/SystemConfiguration.framework;OpenSSL::SSL;OpenSSL::Crypto;ZLIB::ZLIB"
- )
- ```
-
- A work-around is to link against system-level frameworks with
- `-framework XYZ`. In case of `SystemConfiguration` we might be able
- to omit the lookup-check because we could assume the framework is
- always present.
-
- Closes #7152
- - [Shikha Sharma brought this change]
- http2_connisdead: handle trailing GOAWAY better
-
- When checking the connection the input processing returns error
- immediately, we now consider that a dead connnection.
-
- Bug: https://curl.se/mail/lib-2021-06/0001.html
- Closes #7192
- - [Dmitry Karpov brought this change]
- ares: always store IPv6 addresses first
-
- Trying dual-stack on some embedded platform, I noticed that quite
- frequently (20%) libCurl starts from IPv4 regardless the Happy Eyeballs
- timeout value. After debugging this issue, I noticed that this happens
- if c-ares resolver response for IPv6 family comes before IPv4 (which was
- randomly happening in my tests).
-
- In such cases, because libCurl puts the last resolver response on top of
- the address list, when IPv4 resolver response comes after IPv6 one - the
- IPv4 family starts the connection phase instead of IPv6 family.
-
- The solution for this issue is to always put IPv6 addresses on top of
- the address list, regardless the order of resolver responses.
-
- Bug: https://curl.se/mail/lib-2021-06/0003.html
-
- Closes #7188
- - Revert "Revert "socketpair: fix potential hangs""
-
- This reverts commit 3e70c3430a370a31eff2c1d8fea29edaca8f1127.
-
- Thus brings back the change from #7144 as was originally landed in
- c769d1eab4de8b
-
- Closes #7144 (again)
- - [Ebe Janchivdorj brought this change]
- schannel: move code out of SChannel_connect_step1
-
- Reviewed-by: Marc Hoersken
- Closes #7168
- - tests/data/Makefile.inc: error: trailing backslash on last line
-
- Follow-up to d8dcb399b8009d
- - TODO: Support rate-limiting for MQTT
- - [Dmitry Kostjuchenko brought this change]
- warnless: simplify type size handling
-
- By using sizeof(T), existing defines and relying on the compiler to
- define the required signed/unsigned mask.
-
- Closes #7181
- Gisle Vanem (4 Jun 2021)
- - [Win32] Fix for USE_WATT32
-
- My Watt-32 tcp/ip stack works on Windows but it does not have `WSAIoctl()`
- Daniel Stenberg (4 Jun 2021)
- - [Alexis Vachette brought this change]
- url: bad CURLOPT_CONNECT_TO syntax now returns error
-
- Added test 3020 to verify
-
- Closes #7183
- - github: remove the cmake macOS gcc-8 jobs
-
- They're too similar to the gcc-9 ones to be useful (and seems to not
- work anymore).
-
- Closes #7187
- - test269: disable for hyper
-
- --ignore-content-length / CURLOPT_IGNORE_CONTENT_LENGTH doesn't work
- with hyper.
-
- Closes #7184
- - runtests: enable 'hyper mode' only for HTTP tests
-
- The 'hyper mode' makes line-ending checks work in the test suite for
- when hyper is used. Now it also requires that HTTP or HTTPS are
- mentioned as keywords to be enabled so that it doesn't wrongly adjusts
- tests for other protocols.
-
- This makes test 271 (TFTP) work again in hyper enabled builds.
-
- Closes #7185
- - [Alexis Vachette brought this change]
- hostip: bad CURLOPT_RESOLVE syntax now returns error
-
- Added test 3019
- Fixes #7170
- Closes #7174
- Daniel Gustafsson (3 Jun 2021)
- - cookies: fix typo and expand comment
-
- Fix a typo in the sorting comment, and while in there elaborate slightly
- on why creationtime can be used as a tiebreaker.
- - cookies: remove unused header
-
- Commit 1c1d9f1affbd3367bcb24062e261d0ea5d185e3a removed the last use
- for the inet_pton.h headerfile, this removes the inclusion of the
- header.
-
- Closes: #7182
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Daniel Stenberg (3 Jun 2021)
- - Revert "socketpair: fix potential hangs"
-
- This reverts commit c769d1eab4de8b9f1bd84d992c63692fdc43c5be.
-
- See #7144 for details
- - [Paul Groke brought this change]
- socketpair: fix potential hangs
-
- Fixes potential hang in accept by using select + non-blocking accept.
-
- Fixes potential hang in peer check by replacing the send/recv check with
- a getsockname/getpeername check.
-
- Adds length check for returned sockaddr data.
-
- Closes #7144
- - runtests: parse data/Makefile.inc instead of using make
-
- The warning about missing entries in that file then doesn't require that
- the Makefile has been regenerated which was confusing.
-
- The scan for the test num is a little more error prone than before
- (since now it doesn't actually verify that it is legitimate Makefile
- syntax), but I think it is good enough.
-
- Closes #7177
- - [Harry Sintonen brought this change]
- filecheck: quietly remove test-place/*~
-
- Closes #7179
- - CURLE_SETOPT_OPTION_SYNTAX: new error name for wrong setopt syntax
-
- For options that pass in lists or strings that are subsequently parsed
- and must be correct. This broadens the scope for the option previously
- known as CURLE_TELNET_OPTION_SYNTAX but the old name is of course still
- provided as a #define for existing applications.
-
- Closes #7175
- - tests: fix Accept-Encoding strips to work with Hyper builds
-
- The previous strip also removed the CR which turned problematic.
-
- valgrind.supp: add zstd suppression using hyper
-
- Reported-and-analyzed-by: Kevin Burke
- Fixes #7169
- Closes #7171
- - github: timeout jobs on macOS after 90 minutes
-
- Assisted-by: Marc Hoersken
- Closes #7173
- - [Harry Sintonen brought this change]
- mqtt: detect illegal and too large file size
-
- Add test 3017 and 3018 to verify.
- Closes #7166
- - [theawless brought this change]
- cmake: add CURL_DISABLE_NTLM option
-
- Closes #7028
- - [theawless brought this change]
- configure: add --disable-ntlm option
-
- Closes #7028
- - [theawless brought this change]
- define: re-add CURL_DISABLE_NTLM and corresponding ifdefs
-
- This flag will be further exposed by adding build options.
-
- Reverts #6809
- Closes #7028
- - RELEASE-NOTES: synced
- Viktor Szakats (1 Jun 2021)
- - travis: delete --enable-hsts option (it is the default now) [ci skip]
-
- Reviewed-by: Daniel Stenberg
- Closes #7167
- Daniel Stenberg (1 Jun 2021)
- - hostip: fix 3 coverity complaints
-
- Follow-up to 1a0ebf6632f889eed
-
- - Check the return code to Curl_inet_pton() in two instances, even
- though we know the input is valid so the functions won't fail.
-
- - Clear the 'struct sockaddr_in' struct before use so that the
- 'sin_zero' field isn't left uninitialized.
-
- Detected by Coverity.
- Assisted-by: Harry Sintonen
- Closes #7163
- - c-hyper: fix NTLM on closed connection tested with test159
-
- Closes #7154
- - conncache: lowercase the hash key for better match
-
- As host names are case insensitive, the use of case sensitive hashing
- caused unnecesary cache misses and therefore lost performance. This
- lowercases the hash key.
-
- Reported-by: Harry Sintonen
- Fixes #7159
- Closes #7161
- - mbedtls: make mbedtls_strerror always work
-
- If the function doesn't exist, provide a macro that just clears the
- error message. Removes #ifdef uses from the code.
-
- Closes #7162
- - vtls: exit addsessionid if no cache is inited
-
- Follow-up to b249592d29ae0
-
- Avoids NULL pointer derefs.
-
- Closes #7165
- - [Harry Sintonen brought this change]
- Curl_ntlm_core_mk_nt_hash: fix OOM in error path
-
- Closes #7164
- Michael Kaufmann (1 Jun 2021)
- - ssl: read pending close notify alert before closing the connection
-
- This avoids a TCP reset (RST) if the server initiates a connection
- shutdown by sending an SSL close notify alert and then closes the TCP
- connection.
-
- For SSL connections, usually the server announces that it will close the
- connection with an SSL close notify alert. curl should read this alert.
- If curl does not read this alert and just closes the connection, some
- operating systems close the TCP connection with an RST flag.
-
- See RFC 1122, section 4.2.2.13
-
- If curl reads the close notify alert, the TCP connection is closed
- normally with a FIN flag.
-
- The new code is similar to existing code in the "SSL shutdown" function:
- try to read an alert (non-blocking), and ignore any read errors.
-
- Closes #7095
- Daniel Stenberg (1 Jun 2021)
- - [Laurent Dufresne brought this change]
- setopt: fix incorrect comments
-
- Closes #7157
- - [Laurent Dufresne brought this change]
- mbedtls: add support for cert and key blob options
-
- CURLOPT_SSLCERT_BLOB and CURLOPT_SSLKEY_BLOB weren't usable with
- mbedtls backend, so the support was added.
-
- Closes #7157
- - [Gregor Jasny brought this change]
- cmake: try well-known send/recv signature for Apple
-
- The CMake `try_compile` command is especially slow for
- the Xcode generator. With this patch applied it first tests
- for the currently used (and Open Group specified) send/recv
- signature. In case this fails testing falls-back to the
- permutations.
-
- speed-up:
-
- ```
- time cmake .. -GNinja -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF
- before: 11.64s user 11.09s system 55% cpu 40.754 total
- after: 7.84s user 6.57s system 51% cpu 28.074 total
- ```
-
- ```
- time cmake .. -GXcode -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF
- before: 217.07s user 104.15s system 60% cpu 8:51.79 total
- after: 108.76s user 51.80s system 58% cpu 4:32.58 total
- ```
-
- Closes #7158
- - http2: init recvbuf struct for pushed streams
-
- Debug builds would warn that these structs were not initialized properly
- for pushed streams.
-
- Ref: #7148
- Closes #7153
- - Curl_ssl_getsessionid: fail if no session cache exists
-
- This function might get called for an easy handle for which the session
- cache hasn't been setup. It now just returns a "miss" in that case.
-
- Reported-by: Christoph M. Becker
- Fixes #7148
- Closes #7153
- - GOVERNANCE: add 'user', 'committer' and 'contributor'
-
- As those are commonly used terms in the project.
-
- Closes #7151
- - URL-SYNTAX.md: document the new 'localhost' treatment
- - hostip: make 'localhost' return fixed values
-
- Resolving the case insensitive host name 'localhost' now returns the
- addresses 127.0.0.1 and (if IPv6 is enabled) ::1 without using any
- resolver.
-
- This removes the risk that users accidentally resolves 'localhost' to
- something else. By making sure 'localhost' is always local, we can
- assume a "secure context" for such transfers (for cookies etc).
-
- Closes #7039
- Daniel Gustafsson (31 May 2021)
- - docs: fix typos
- Daniel Stenberg (30 May 2021)
- - hsts: ignore numberical IP address hosts
-
- Also, use a single function library-wide for detecting if a given hostname is
- a numerical IP address.
-
- Reported-by: Harry Sintonen
- Fixes #7146
- Closes #7149
- - test178: adjust for hyper
-
- Hyper returns the same error for wrong HTTP version as for negative
- content-length. Test 178 verifies that negative content-length is
- rejected but the hyper backend will return a different error for it (and
- without any helpful message telling why the message was bad). It will
- also not return any headers at all for the response, not even the ones
- that arrived before the error.
-
- Closes #7147
- - HYPER: remove mentions of deprecated development branch
- - c-hyper: handle NULL from hyper_buf_copy()
-
- Closes #7143
- - HSTS: not experimental anymore
- - [Douglas R. Reno brought this change]
- INSTALL: use correct extension for CURL-DISABLE.md
-
- In INSTALL.MD, it's currently set to CURL-DISABLE-md instead of
- CURL-DISABLE.md. This generates a 404 on the cURL website as well as
- when viewing the docs through Github.
-
- Closes #7142
- - travis: run tests 1 - 153 with hyper
- - c-hyper: convert HYPERE_INVALID_PEER_MESSAGE to CURLE_UNSUPPORTED_PROTOCOL
-
- Makes test 129 work (HTTP/1.2 response).
-
- Closes #7141
- - http_proxy: deal with non-200 CONNECT response with Hyper
-
- Makes test 94 and 95 work
-
- Closes #7141
- - c-hyper: clear NTLM auth buffer when request is issued
-
- To prevent previous ones to get reused on subsequent requests. Matches
- how the built-in HTTP code works. Makes test 90 to 93 work.
-
- Add test 90 to 93 in travis.
-
- Closes #7139
- - [Joel Depooter brought this change]
- schannel: set ALPN length correctly for HTTP/2
-
- In a3268eca792f1 this code was changed to use the ALPN_H2 constant
- instead of the NGHTTP2_PROTO_ALPN constant. However, these constants are
- not the same. The nghttp2 constant included the length of the string,
- like this: "\x2h2". The ALPN_H2 constant is just "h2". Therefore we need
- to re-add the length of the string to the ALPN buffer.
-
- Closes #7138
- - travis: run tests 1-89 in the hyper build
-
- Closes #7137
- - Revert "c-hyper: handle body on HYPER_TASK_EMPTY"
-
- This reverts commit c3eefa95c31f55657f0af422e8268d738f689066.
-
- Reported-by: Kevin Burke
- Fixes #7122
- Closes #7136
- - [Jon Rumsey brought this change]
- ccsidcurl: fix the compile errors
-
- Looks like the declaration of cpp shoule be const char ** and return
- null if convert_version_info_string fails.
-
- Fixes #7134
- Closes #7135
- - [Viktor Szakats brought this change]
- docs: use --max-redirs instead of --max-redir
-
- For consistency.
-
- Closes #7130
- - RELEASE-NOTES: synced
-
- ... and bump to 7.77.1
- - [Michael Forney brought this change]
- travis: add bearssl build
-
- Closes #7133
- - [Michael Forney brought this change]
- bearssl: explicitly initialize all fields of Curl_ssl
-
- Also, add comments like the other vtls backends.
-
- Closes #7133
- - [Michael Forney brought this change]
- bearssl: remove incorrect const on variable that is modified
-
- hostname may be set to NULL later on in this function if it is an
- IP address.
-
- Closes #7133
- Version 7.77.0 (26 May 2021)
- Daniel Stenberg (26 May 2021)
- - RELEASE-NOTES: synced
- - THANKS: added contributors from 7.77.0 cycle
- - copyright: update copyright year ranges to 2021
- - [Radek Zajic brought this change]
- hostip: fix broken macOS/CMake/GCC builds
-
- Follow-up to 31f631a142d855f06
-
- Fixes #7128
- Closes #7129
- - TODO: netrc caching and sharing
-
- URL: https://curl.se/mail/archive-2021-05/0018.html
- - [Orgad Shaneh brought this change]
- setopt: streamline ssl option code
-
- Make it use the same style as the code next to it
-
- Closes #7123
- - [Radek Zajic brought this change]
- lib/hostip6.c: make NAT64 address synthesis on macOS work
-
- Closes #7121
- - [ejanchivdorj brought this change]
- sectransp: fix EXC_BAD_ACCESS caused by uninitialized buffer
-
- When the SecCertificateCopyCommonName function fails, it leaves
- common_name in a invalid state so CFStringCompare uses the invalid
- result, causing EXC_BAD_ACCESS.
-
- The fix is to check the return value of the function before using the
- name.
-
- Closes #7126
- - [Paweł Wegner brought this change]
- CMake: add CURL_ENABLE_EXPORT_TARGET option
-
- install(EXPORT ...) causes trouble when embedding curl dependencies
- which don't provide install(EXPORT ...) targets (e.g libressl and
- nghttp2) with cmake's add_subdirectory.
-
- Reviewed-by: Jakub Zakrzewski
- Closes #7060
- - [Alessandro Ghedini brought this change]
- quiche: update for network path aware API
-
- Latest version of quiche requires the application to pass the peer
- address of received packets, and it provides the address for outgoing
- packets back.
-
- Closes #7120
- - [Jacob Hoffman-Andrews brought this change]
- rustls: switch read_tls and write_tls to callbacks
-
- And update to 0.6.0, including a rename from session to connection for
- many fields.
-
- Closes #7071
- - [Koichi Shiraishi brought this change]
- sectransp: fix 7f4a9a9b2a49 commit about missing comma
-
- Follow-up to 7f4a9a9b2a495
-
- Closes #7119
- - [Harry Sintonen brought this change]
- openssl: associate/detach the transfer from connection
-
- CVE-2021-22901
-
- Bug: https://curl.se/docs/CVE-2021-22901.html
- - [Harry Sintonen brought this change]
- telnet: check sscanf() for correct number of matches
-
- CVE-2021-22898
-
- Bug: https://curl.se/docs/CVE-2021-22898.html
- - schannel: don't use static to store selected ciphers
-
- CVE-2021-22897
-
- Bug: https://curl.se/docs/CVE-2021-22897.html
- - docs/tests: remove freenode references
- - RELEASE-NOTES: synced
- - [Sergey Markelov brought this change]
- NSS: make colons, commas and spaces valid separators in cipher list
-
- Fixes #7110
- Closes #7115
- - curl: include libmetalink version in --version output
-
- Closes #7112
- Jay Satiro (21 May 2021)
- - [Matias N. Goldberg brought this change]
- cmake: Use multithreaded compilation on VS 2008+
-
- Multithreaded compilation has been supported since at least VS 2005 and
- been robustly stable since at least VS 2008
-
- Closes https://github.com/curl/curl/pull/7109
- Daniel Stenberg (21 May 2021)
- - [Matias N. Goldberg brought this change]
- cmake: fix two invokes result in different curl_config.h
-
- Fixes #7100
- Closes #7101
-
- Reviewed-by: Jakub Zakrzewski
- Signed-off-by: Matias N. Goldberg <dark_sylinc@yahoo.com.ar>
- - [Peng-Yu Chen brought this change]
- cmake: detect CURL_SA_FAMILY_T
-
- Fixes #7049
- Closes #7065
- - [Lucas Clemente Vella brought this change]
- CURLOPT_IPRESOLVE: preventing wrong IP version from being used
-
- In some situations, it was possible that a transfer was setup to
- use an specific IP version, but due do DNS caching or connection
- reuse, it ended up using a different IP version from requested.
-
- This commit changes the effect of CURLOPT_IPRESOLVE from simply
- restricting address resolution to preventing the wrong connection
- type being used, when choosing a connection from the pool, and
- to restricting what addresses could be used when establishing
- a new connection.
-
- It is important that all addresses versions are resolved, even if
- not used in that transfer in particular, because the result is
- cached, and could be useful for a different transfer with a
- different CURLOPT_IPRESOLVE setting.
-
- Closes #6853
- - [Oliver Urbann brought this change]
- AmigaOS: add functions definitions for SHA256
-
- AmiSSL replaces many functions with macros. Curl requires pointer
- to some of these functions. Thus, we have to encapsulate these macros:
- SHA256_Init, SHA256_Update, SHA256_Final, X509_INFO_free.
-
- Bug: https://github.com/jens-maus/amissl/issues/15
- Co-authored-by: Daniel Stenberg <daniel@haxx.se>
-
- Closes #7099
- - test2100: make it run with and require IPv6
-
- Closes #7083
- - tests/getpart: generate output URL encoded for better diffs
-
- Closes #7083
- - [Ryan Beck-Buysse brought this change]
- docs/TheArtOfHttpScripting: fix markdown links
-
- extra parens cause the links to be incorrectly formatted
- and inconsistent with the rest of the document.
-
- Signed-off-by: Ryan Beck-Buysse <rbuysse@gmail.com>
- Closes #7097
- - RELEASE-NOTES: synced
- - [Emil Engler brought this change]
- docs: replace dots with dashes in markdown enums
-
- We use dashes instead of dots nearly everywhere except for those few
- cases. This commit addresses this issues and brings more coherency into
- it.
-
- Closes #7093
- - [Emil Engler brought this change]
- docs: improve INTERNALS.md regarding getsock cb
-
- This adds the I/O prefix to indicate that those "actions" are kind-of
- related to those found in select(2) or poll(2) (reading/writing).
-
- It also adds a note where the prototypes of those functions can be found
- in the source code.
-
- Closes #7092
- - [Emil Engler brought this change]
- docs: document attach in INTERNALS.md
-
- The new field in the Curl_handler struct still lacks documentation. This
- adds it it from the information extracted from lib/urldata.h:797
-
- Closes #7091
- - [Marc Aldorasi brought this change]
- config: remove now-unused macros
-
- Closes #7094
- - [Marc Aldorasi brought this change]
- hostip.h: remove declaration of unimplemented function
-
- Closes #7094
- - h3: add 'attach' callback to protocol handlers
-
- Follow-up to 0c55fbab45be
-
- Reviewed-by: Emil Engler
- Closes #7090
- - wolfssl: remove SSLv3 support leftovers
-
- Closes #7088
- - curl-wolfssl.m4: without custom include path, assume /usr/include
-
- ... so that we can point out the root of the OpenSSL emulation headers.
- Previously this used the '$includedir' variable which is wrong since
- that defaults to the dir where the current configure invoke will install
- the built libcurl headers: /usr/local by default.
-
- Fixes #7085
- Reported-by: Joel Jakobsson
- Closes #7087
- - [Joel Depooter brought this change]
- data_pending: check only SECONDARY socket for FTP(S) transfers
-
- Check the FIRST for all other protocols.
-
- This fixes a timeout in an ftps download. The server sends a TLS
- close_notify message in the same packet as the file data. The
- close_notify seems to not be handled in the schannel_recv function, so
- libcurl is not aware that the server has closed the connection. Thus
- libcurl ends up waiting for action on the socket until a timeout is
- reached. With the secondary socket check added to the data_pending
- function, the close_notify is properly handled, and the ftps transfer
- terminates as expected.
-
- Fixes #7068
- Closes #7069
- - github: inhibit deprecated declarations for clang on macOS
-
- ... as they otherwise cause ldap build errors in the CI.
-
- Fixes #7081
- Closes #7082
- - conn: add 'attach' to protocol handler, make libssh2 use it
-
- The libssh2 backend has SSH session associated with the connection but
- the callback context is the easy handle, so when a connection gets
- attached to a transfer, the protocol handler now allows for a custom
- function to get used to set things up correctly.
-
- Reported-by: Michael O'Farrell
- Fixes #6898
- Closes #7078
- - http2: make sure pause is done on HTTP
-
- Since the function is called for any protocol, we can't assume that the
- HTTP struct is there without first making sure it is HTTP.
-
- Reported-by: Denis Goleshchikhin
- Fixes #7079
- Closes #7080
- - docs: cookies from HTTP headers need domain set
-
- ... or the cookies won't get sent. Push users to using the "Netscape"
- format instead, which curl uses when saving a cookie "jar".
-
- Reported-by: Martin Dorey
- Reviewed-by: Daniel Gustafsson
- Fixes #6723
- Closes #7077
- - RELEASE-NOTES: synced
- - github: add a workflow with libssh2 on macOS using cmake
-
- Closes #7047
- - sws: allow HTTP requests up to 2MB in size
-
- To allow tests with slightly larger payloads. Like #7071 ...
-
- Closes #7075
- Marc Hoersken (16 May 2021)
- - CI/azure: increase verbosity and fix outdated task names
-
- Closes #7063
- - CI/cirrus: add shared and static Windows release builds
-
- Azure Pipelines is currently being used for debug builds,
- let's also run some non-debug (release) Windows builds and
- make use of previously underutilized Cirrus CI for that.
-
- Reviewed-by: Marcel Raad
-
- Closes #6991
- Daniel Stenberg (16 May 2021)
- - CURLOPT_CAPATH.3: defaults to a path, not NULL
-
- Reported-by: Andrew Barnert
-
- Closes #7062
- - [Jacob Hoffman-Andrews brought this change]
- c-hyper: handle body on HYPER_TASK_EMPTY
-
- Some of the time, we get a HYPER_TASK_EMPTY response before the status
- line, headers, and body have been read. Previously, that would cause us
- to poll again, leading to a 1 second timeout.
-
- The HYPER_TASK_EMPTY docs say:
-
- The value of this task is null (does not imply an error).
-
- So, if we receive a HYPER_TASK_EMPTY, continue on with processing the
- response.
-
- Reported-by: Kevin Burke
- Fixes #7064
- Closes #7070
- - [Ikko Ashimine brought this change]
- tool_getparam: fix comment typo in tool_getparam.c
-
- enfore -> enforce
-
- Closes #7074
- - mem-include-scan.pl: require a non-word letter before memory funcs
-
- ... so that ldap_memfree() for example doesn't match the scan for free.
-
- Closes #7061
- - version: free the openldap info correctly
-
- ... to avoid memory leaks.
-
- Follow-up to: bf0feae7768d9
- Closes #7061
- - dupset: remove totally off comment
-
- Closes #7067
- - configure: if asked for, fail if ldap is not found
-
- Reported-by: Jakub Zakrzewski
- Fixes #7053
- Closes #7055
- - version: add OpenLDAP version in the output
-
- Assisted-by: Howard Chu
- Closes #7054
- Jay Satiro (13 May 2021)
- - [Joel Depooter brought this change]
- schannel: Ensure the security context request flags are always set
-
- As of commit 54e7475, these flags would only be set when using a new
- credential handle. When re-using an existing credential handle, the
- flags would not be set.
-
- Closes https://github.com/curl/curl/pull/7051
- Dan Fandrich (12 May 2021)
- - tests: Fix some tag matching issues in a number of tests
- Daniel Stenberg (12 May 2021)
- - sasl: use 'unsigned short' to store mechanism
-
- ... saves a few bytes of struct size in memory and it only uses
- 10 bits anyway.
-
- Closes #7045
- - hostip: remove the debug code for LocalHost
-
- The Curl_resolv() had special code (when built in debug mode) for when
- resolving the host name "LocalHost" (using that exact casing). It would
- then get the host name from the --interface option instead.
-
- This development-only feature was not used by anything (anymore) and we
- have the --resolve feature if we want to play similar tricks properly
- going forward.
-
- Closes #7044
- - progress: reset limit_size variables at transfer start
-
- Otherwise the old value would linger from a previous use and would mess
- up the network speed cap logic.
-
- Reported-by: Ymir1711 on github
-
- Fixes #7042
- Closes #7043
- - RELEASE-NOTES: synced
- - [Daniel Gustafsson brought this change]
- cookies: use CURLcode for cookie_output reporting
-
- Writing the cookie file has multiple error conditions, and was using an
- int with magic numbers to report the different error (which in turn were
- disregarded anyways). This moves reporting to use a CURLcode value.
-
- Lightly-touched-by: Daniel Stenberg
-
- Closes #7037
- Closes #6749
- - [Daniel Gustafsson brought this change]
- cookies: make use of string duplication function
-
- strstore() is defined as a strdup which ensures to free the target
- pointer before duping the source char * into it. Make use of it in
- two more cases where it can simplify the code.
- - [Daniel Gustafsson brought this change]
- cookies: refactor comments
-
- Comments in the cookie code were a bit all over the place in terms of
- style and wording. This takes a stab at cleaning them up by keeping to
- a single style and overall shape. Some comments are moved a little and
- some removed alltogether due to being redundant. No functional changes
- have been made,
- - [Peng-Yu Chen brought this change]
- http2: skip immediate parsing of payload following protocol switch
-
- This is considered not harmful as a following http2_recv shall be
- called very soon.
-
- This is considered helpful in the specific situation where some
- servers (e.g. nghttpx v1.43.0) may fulfill stream 1 immediately
- following the return of HTTP status 101, other than waiting for
- the client-side connection preface to arrive.
-
- Fixes #7036
- Closes #7040
- - [Peng-Yu Chen brought this change]
- http2: use nghttp2_session_upgrade2 instead of nghttp2_session_upgrade
-
- Following the upstream deprecation of nghttp2_session_upgrade.
-
- Also provides further checks for requests with the HEAD method.
-
- Closes #7041
- - progress/trspeed: use a local convenient pointer to beautify code
-
- The function becomes easier to read and understand with less repetition.
- - trspeed: use long double for transfer speed calculation
- - progress: move transfer speed calc into function
-
- This silences two scan-build-11 warnings: "The result of the '/'
- expression is undefined"
-
- Bug: https://curl.se/mail/lib-2021-05/0022.html
- Closes #7035
- - [Cameron Cawley brought this change]
- openssl: remove unneeded cast for CertOpenSystemStore()
-
- Closes #7025
- - travis: disable the libssh build
-
- It can't run on focal and causes warnings on bionic. Since the focal
- failure started rather suddenly a while ago, we can suspect it might be
- temporary.
-
- Added "bring back the build" to the TODO document.
-
- Fixes #7011
- Closes #7012
- - [Peng-Yu Chen brought this change]
- http: use calculated offsets inst of integer literals for header parsing
-
- Assumed to be a minor coding style improvement with no behavior change.
-
- A modern compiler is expected to have the calculation optimized during
- compilation. It may be deemed okay even if that's not the case, since
- the added overhead is considered very low.
-
- Closes #7032
- - [Peng-Yu Chen brought this change]
- GIT-INFO: suggest using autoreconf instead of buildconf
-
- Follow-up to 85868537d
-
- Closes #7033
- - http: deal with partial CONNECT sends
-
- Also added 'CURL_SMALLSENDS' to make Curl_write() send short packets,
- which helped verifying this even more.
-
- Add test 363 to verify.
-
- Reported-by: ustcqidi on github
- Fixes #6950
- Closes #7024
- - HTTP3: make the ngtcp2 build use the quictls fork
-
- ... as ngtcp2 itself documents the build this way.
-
- Closes #7031
- - http: limit the initial send amount to used upload buffer size
-
- Previously this logic would cap the send to CURL_MAX_WRITE_SIZE bytes,
- but for the situations where a larger upload buffer has been set, this
- function can benefit from sending more bytes. With default size used,
- this does the same as before.
-
- Also changed the storage of the size to an 'unsigned int' as it is not
- allowed to be set larger than 2M.
-
- Also added cautions to the man pages about changing buffer sizes in
- run-time.
-
- Closes #7022
- - RELEASE-NOTES: synced
- - ngtcp2: fix the cb_acked_stream_data_offset proto
-
- The 'datalen' value should be 64 bit, not size_t!
-
- Reported-by: Dmitry Karpov
- Bug: https://curl.se/mail/lib-2021-05/0019.html
- Closes #7027
- - progress: when possible, calculate transfer speeds with microseconds
-
- ... this improves precision, especially for transfers in the few or even
- sub millisecond range.
-
- Reported-by: J. Bromley
- Fixes #7017
- Closes #7020
- - http: reset the header buffer when sending the request
-
- A reused transfer handle could otherwise reuse the previous leftover
- buffer and havoc would ensue.
-
- Reported-by: sergio-nsk on github
- Fixes #7018
- Closes #7021
- - curl_mprintf.3: add description
-
- These functions have existed in the API since the dawn of time. It is
- about time we describe how they work, even if we discourage users from
- using them.
-
- Closes #7010
- - [Timothy Gu brought this change]
- URL-SYNTAX: update IDNA section for WHATWG spec changes
-
- WHATWG URL has dictated the use of Nontransitional Processing (IDNA
- 2008) for several years now. Chrome (and derivatives) still use
- Transitional Processing, but Firefox and Safari have both switched.
-
- Also document the fact that winidn functions differently from libidn2
- here.
-
- Closes #7026
- - [Calvin Buckley brought this change]
- INSTALL: add IBM i specific quirks
-
- Fixes #6830
- Closes #7013
- - libcurl.3: mention the URL API
-
- To make it easier to find. Also a minor polish of libcurl-url.3
-
- Closes #7009
- - GnuTLS: don't allow TLS 1.3 for versions that don't support it
-
- Follow-up to 781864bedbc5
-
- ... as they don't understand it and will return error at us!
-
- Closes #7014
- Kamil Dudka (6 May 2021)
- - tool_getparam: handle failure of curlx_convert_tchar_to_UTF8()
-
- Reported by GCC analyzer:
-
- Error: GCC_ANALYZER_WARNING (CWE-476):
- src/tool_getparam.c: scope_hint: In function 'parse_args'
- src/tool_getparam.c:2318:38: warning[-Wanalyzer-possible-null-dereference]: dereference of possibly-NULL 'orig_opt'
- lib/curlx.h:56: included_from: Included from here.
- src/tool_getparam.c:28: included_from: Included from here.
- lib/curl_multibyte.h:70:51: note: in definition of macro 'curlx_convert_tchar_to_UTF8'
- src/tool_getparam.c:2316:16: note: in expansion of macro 'curlx_convert_tchar_to_UTF8'
-
- Reviewed-by: Marcel Raad
- Reviewed-by: Daniel Stenberg
- Closes #7023
- Daniel Stenberg (6 May 2021)
- - scripts/delta: also show total number of days
- Marc Hoersken (5 May 2021)
- - sockfilt: fix invalid increment of handles index variable nfd
-
- Only increment the array index if we actually stored a handle.
-
- Follow up to e917492048f4b85a0fd58a033d10072fc7666c3b
- Closes #6992
- - sockfilt: avoid getting stuck waiting for writable socket
-
- Reset FD_WRITE event using the same approach as in multi.c
-
- Follow up to b36442b24305f3cda7c13cc64b46838995a4985b
- Closes #6992
- Jay Satiro (5 May 2021)
- - test678: Fix for Windows multibyte builds
-
- Follow-up to 77fc385 from yesterday.
-
- Bug: https://github.com/curl/curl/pull/6662#issuecomment-832966557
- Reported-by: Marc Hörsken
- - [Dmitry Kostjuchenko brought this change]
- build: fix compilation for Windows UWP platform
-
- - Include afunix.h which is necessary for sockaddr_un when
- USE_UNIX_SOCKETS is defined on Windows.
-
- Closes https://github.com/curl/curl/pull/7006
- Daniel Stenberg (5 May 2021)
- - gnutls: make setting only the MAX TLS allowed version work
-
- Previously, settting only the max allowed TLS version, leaving the
- minimum one at default, didn't actually set it and left it to default
- (TLS 1.3) too!
-
- As a bonus, this change also removes the dead code handling of SSLv3
- since that version can't be set anymore (since eff614fb0242cb).
-
- Reported-by: Daniel Carpenter
- Fixes #6998
- Closes #7000
- - openldap: replace ldap_ prefix on private functions
-
- Since openldap itself uses that prefix and with OpenĹDAP 2.5.4 (at
- least) there's a symbol collision because of that.
-
- The private functions now use the 'oldap_' prefix where it previously
- used 'ldap_'.
-
- Reported-by: 3eka on github
- Fixes #7004
- Closes #7005
- Jay Satiro (5 May 2021)
- - http2: fix potentially uninitialized variable
-
- introduced several days ago in 3193170. caught by visual studio linker.
- - [Gilles Vollant brought this change]
- SSL: support in-memory CA certs for some backends
-
- - New options CURLOPT_CAINFO_BLOB and CURLOPT_PROXY_CAINFO_BLOB to
- specify in-memory PEM certificates for OpenSSL, Schannel (Windows)
- and Secure Transport (Apple) SSL backends.
-
- Prior to this change PEM certificates could only be imported from a file
- and not from memory.
-
- Co-authored-by: moparisthebest@users.noreply.github.com
-
- Ref: https://github.com/curl/curl/pull/4679
- Ref: https://github.com/curl/curl/pull/5677
- Ref: https://github.com/curl/curl/pull/6109
-
- Closes https://github.com/curl/curl/pull/6662
- Daniel Stenberg (4 May 2021)
- - [David Cook brought this change]
- tests: ignore case of chunked hex numbers in tests
-
- When hyper is used, it emits uppercase hexadecimal numbers for chunked
- encoding lengths. Without hyper, lowercase hexadecimal numbers are used.
- This change adds preprocessor statements to tests where this is an
- issue, and adapts the fixtures to match.
-
- Closes #6987
- - cmake: check for getppid and utimes
-
- ... as they're checked for in the configure script and are used by
- source code.
-
- Removed checks for perror, setvbuf and strlcat since those defines are
- not checked for in source code.
-
- Bonus: removed HAVE_STRLCPY from a few config-*.h files since that
- symbol is not used in source code.
-
- Closes #6997
- - libtest: remove lib530.c
-
- Follow up from e50a877df when test 530 was removed. Since then this
- source file has not been used/needed.
-
- Closes #6999
- - FILEFORMAT: mention sectransp as a feature
-
- Been supported since at least 40259ca65
-
- Closes #7001
- - RELEASE-NOTES: synced
- - libssh2: ignore timeout during disconnect
-
- ... to avoid memory leaks!
-
- libssh2 is tricky as we have to deal with the non-blockiness even in
- close and shutdown cases. In the cases when we shutdown after a timeout
- already expired, it is crucial that curl doen't let the timeout abort
- the shutdown process as that then leaks memory!
-
- Reported-by: Benjamin Riefenstahl
- Fixes #6990
- - KNOWN_BUGS: add two HTTP/2 bugs
- - KNOWN_BUGS: add three HTTP/3 issues
-
- ... and moved the HTTP/2 issues to its own section
-
- Closes #6606
- Closes #6510
- Closes #6494
- - [ejanchivdorj brought this change]
- CURLcode: add CURLE_SSL_CLIENTCERT
-
- When a TLS server requests a client certificate during handshake and
- none can be provided, libcurl now returns this new error code
- CURLE_SSL_CLIENTCERT
-
- Only supported by Secure Transport and OpenSSL for TLS 1.3 so far.
-
- Closes #6721
- - [Tobias Gabriel brought this change]
- .github/FUNDING: add link to GitHub sponsors
-
- Closes #6985
- - [Harry Sintonen brought this change]
- krb5/name_to_level: replace checkprefix with curl_strequal
-
- Closes #6993
- - [Harry Sintonen brought this change]
- Curl_input_digest: require space after Digest
-
- Closes #6993
- - [Harry Sintonen brought this change]
- Curl_http_header: check for colon when matching Persistent-Auth
-
- Closes #6993
- - [Harry Sintonen brought this change]
- Curl_http_input_auth: require valid separator after negotiation type
-
- Closes #6993
- - http: fix the check for 'Authorization' with Bearer
-
- The code would wrongly check for it using an additional colon.
-
- Reported-by: Blake Burkhart
- Closes #6988
- - [Kamil Dudka brought this change]
- http2: fix a resource leak in push_promise()
-
- ... detected by Coverity:
-
- Error: RESOURCE_LEAK (CWE-772):
- lib/http2.c:532: alloc_fn: Storage is returned from allocation function "duphandle".
- lib/http2.c:532: var_assign: Assigning: "newhandle" = storage returned from "duphandle(data)".
- lib/http2.c:552: noescape: Resource "newhandle" is not freed or pointed-to in "set_transfer_url".
- lib/http2.c:555: leaked_storage: Variable "newhandle" going out of scope leaks the storage it points to.
-
- Closes #6986
- - [Kamil Dudka brought this change]
- http2: fix resource leaks in set_transfer_url()
-
- ... detected by Coverity:
-
- Error: RESOURCE_LEAK (CWE-772):
- lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
- lib/http2.c:486: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:488: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-
- Error: RESOURCE_LEAK (CWE-772):
- lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
- lib/http2.c:493: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:495: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-
- Error: RESOURCE_LEAK (CWE-772):
- lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
- lib/http2.c:500: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:502: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-
- Error: RESOURCE_LEAK (CWE-772):
- lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
- lib/http2.c:505: noescape: Resource "u" is not freed or pointed-to in "curl_url_get". [Note: The source code implementation of the function has been overridden by a builtin model.]
- lib/http2.c:507: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-
- Closes #6986
- - [Jacob Hoffman-Andrews brought this change]
- rustls: use ALPN
-
- Update required rustls to 0.5.0
-
- Closes #6960
- - [Michał Antoniak brought this change]
- gskit: fix CURL_DISABLE_PROXY build
-
- Removed localfd and remotefd from ssl_backend_data (ued only with proxy
- connection). Function pipe_ssloverssl return always 0, when proxy is not
- used.
-
- Closes #6981
- - [Michał Antoniak brought this change]
- gskit: fix undefined reference to 'conn'
-
- Closes #6980
- - [Jacob Hoffman-Andrews brought this change]
- tls: add USE_HTTP2 define
-
- This abstracts across the two HTTP/2 backends: nghttp2 and Hyper.
-
- Add our own define for the "h2" ALPN protocol, so TLS backends can use
- it without depending on a specific HTTP backend.
-
- Closes #6959
- - [Jacob Hoffman-Andrews brought this change]
- lib: fix 0-length Curl_client_write calls
-
- Closes #6954
- - [Jacob Hoffman-Andrews brought this change]
- lib: remove strlen call from Curl_client_write
-
- At all call sites with an explicit 0 len, pass an appropriate nonzero
- len.
-
- Closes #6954
- - [Ayushman Singh Chauhan brought this change]
- docs: camelcase it like GitHub everywhere
-
- Closes #6979
- Jay Satiro (27 Apr 2021)
- - [Lucas Servén Marín brought this change]
- docs: fix typo in fail-with-body doc
-
- This commit fixes a small typo in the documentation for the
- --fail-with-body flag.
-
- Closes https://github.com/curl/curl/pull/6977
- - lib: fix some misuse of curlx_convert_UTF8_to_tchar
-
- curlx_convert_UTF8_to_tchar must be freed by curlx_unicodefree, but
- prior to this change some uses mistakenly called free.
-
- I've reviewed all other uses of curlx_convert_UTF8_to_tchar and
- curlx_convert_tchar_to_UTF8.
-
- Bug: https://github.com/curl/curl/pull/6602#issuecomment-825236763
- Reported-by: sergio-nsk@users.noreply.github.com
-
- Closes https://github.com/curl/curl/pull/6938
- Daniel Stenberg (27 Apr 2021)
- - ntlm: precaution against super huge type2 offsets
-
- ... which otherwise caused an integer overflow and circumvented the if()
- conditional size check.
-
- Detected by OSS-Fuzz
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33720
- Assisted-by: Max Dymond
- Closes #6975
- - c-hyper: fix unused variable ‘wrote’
- - libcurl-security.3: be careful of setuid
-
- Reported-by: Harry Sintonen
- Closes #6970
- - [Kevin Burke brought this change]
- c-hyper: don't write to set.writeheader if null
-
- Previously if a caller set CURLOPT_WRITEFUNCTION but did not set a
- CURLOPT_HEADERDATA buffer, Hyper would still attempt to write headers to
- the data->set.writeheader header buffer, even though it is null. This
- led to NPE segfaults attempting to use libcurl+Hyper with Git, for
- example.
-
- Instead, process the client write for the status line using the same
- logic we use to process the client write for the later HTTP headers,
- which contains the appropriate guard logic. As a side benefit,
- data->set.writeheader is now only read in one file instead of two.
-
- Fixes #6619
- Fixes abetterinternet/crustls#49
- Fixes hyperium/hyper#2438
- Closes #6971
- - wolfssl: handle SSL_write() returns 0 for error
-
- Reported-by: Timo Lange
-
- Closes #6967
- - easy: ignore sigpipe in curl_easy_send
-
- Closes #6965
- - sigpipe: ignore SIGPIPE when using wolfSSL as well
-
- Closes #6966
- - libcurl-security.3: don't try to filter IPv4 hosts based on the URL
-
- Closes #6942
- - [Harry Sintonen brought this change]
- nss_set_blocking: avoid static for sock_opt
-
- Reviewed-by: Kamil Dudka
- Closes #6945
- - RELEASE-NOTES: synced
- - [Yusuke Nakamura brought this change]
- docs/HTTP3.md: fix nghttp2's HTTP/3 server port
-
- Port 8443 does not work now.
- Correct origin is in the quicwg's wiki.
- https://github.com/quicwg/base-drafts/wiki/Implementations#ngtcp2
-
- Closes #6964
- - krb5: don't use 'static' to store PBSZ size response
-
- ... because it makes the knowledge and usage cross-transfer in funny and
- unexpected ways.
-
- Reported-by: Harry Sintonen
- Closes #6963
- - [Kevin Burke brought this change]
- m4: add security frameworks on Mac when compiling rustls
-
- Previously compiling rustls on Mac would only complete if you also
- compiled the SecureTransport TLS backend, which curl would prefer to
- the Rust backend.
-
- Appending these flags to LDFLAGS makes it possible to compile the
- Rustls backend on Mac without the SecureTransport backend, which means
- this patch will make it possible for Mac users to use the Rustls
- backend for TLS.
-
- Reviewed-by: Jacob Hoffman-Andrews
-
- Fixes #6955
- Cloes #6956
- - krb5: remove the unused 'overhead' function
-
- Closes #6947
- - [Johann150 brought this change]
- curl_url_set.3: add memory management information
-
- wording taken from man page for CURLOPT_URL.3
-
- As far as I can see, the URL part is either malloc'ed before due to
- encoding or it is strdup'ed.
-
- Closes #6953
- - [Jacob Hoffman-Andrews brought this change]
- c-hpyer: fix handling of zero-byte chunk from hyper
-
- Closes #6951
- - CURLOPT_POSTFIELDS.3: clarify how it gets the size of the data
-
- Ref: https://curl.se/mail/lib-2021-04/0085.html
- Closes #6943
- - [Ralph Langendam brought this change]
- cmake: make libcurl output filename configurable
-
- Reviewed-by: Jakub Zakrzewski
- Closes #6933
- - [Patrick Monnerat brought this change]
- vtls: reset ssl use flag upon negotiation failure
-
- Fixes the segfault in ldaps disconnect.
-
- Reported-by: Illarion Taev
- Fixes #6934
- Closes #6937
- - configure: fix typo in TLS error message
-
- Reported-by: Pontus Lundkvist
- - README: link to the commercial support option
- Jay Satiro (22 Apr 2021)
- - [Martin Halle brought this change]
- version: add gsasl_version to curl_version_info_data
-
- - Add gsasl_version string and bump to CURLVERSION_TENTH.
-
- Ref: https://curl.se/mail/lib-2021-04/0003.html
-
- Closes https://github.com/curl/curl/pull/6843
- - [Morten Minde Neergaard brought this change]
- schannel: Support strong crypto option
-
- - Support enabling strong crypto via optional user cipher list when
- USE_STRONG_CRYPTO or SCH_USE_STRONG_CRYPTO is in the list.
-
- MSDN says SCH_USE_STRONG_CRYPTO "Instructs Schannel to disable known
- weak cryptographic algorithms, cipher suites, and SSL/TLS protocol
- versions that may be otherwise enabled for better interoperability."
-
- Ref: https://curl.se/mail/lib-2021-02/0066.html
- Ref: https://curl.se/docs/manpage.html#--ciphers
- Ref: https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html
- Ref: https://docs.microsoft.com/en-us/windows/win32/api/schannel/ns-schannel-schannel_cred
-
- Closes https://github.com/curl/curl/pull/6734
- Daniel Stenberg (22 Apr 2021)
- - RELEASE-NOTES: synced
- - ci: adapt to configure requiring an explicit TLS choice
- - configure: split out each TLS library detector into its own function
-
- ... and put those functions in separate m4 files per TLS library.
- - configure: make the TLS library choice(s) explicit
-
- configure no longer tries to find a TLS library by default, but all
- libraries are now equal: the user needs to explicitly ask what TLS
- library or libraries to use.
-
- If no TLS library is selected, configure will error out unless
- --without-ssl is explicitly used to request a built without TLS (as that
- is very rare these days).
-
- Removes: --with-winssl, --with-darwinssl and all --without-* options for
- TLS libraries.
-
- Closes #6897
- - tests/disable-scan.pl: also scan all m4 files
-
- Fixes test 1165 when functions are moved from configure.ac to files in
- m4/
- Jay Satiro (22 Apr 2021)
- - schannel: Disable auto credentials; add an option to enable it
-
- - Disable auto credentials by default. This is a breaking change
- for clients that are using it, wittingly or not.
-
- - New libcurl ssl option value CURLSSLOPT_AUTO_CLIENT_CERT tells libcurl
- to automatically locate and use a client certificate for
- authentication, when requested by the server.
-
- - New curl tool options --ssl-auto-client-cert and
- --proxy-ssl-auto-client-cert map to CURLSSLOPT_AUTO_CLIENT_CERT.
-
- This option is only supported for Schannel (the native Windows SSL
- library). Prior to this change Schannel would, with no notification to
- the client, attempt to locate a client certificate and send it to the
- server, when requested by the server. Since the server can request any
- certificate that supports client authentication in the OS certificate
- store it could be a privacy violation and unexpected.
-
- Fixes https://github.com/curl/curl/issues/2262
- Reported-by: Jeroen Ooms
- Assisted-by: Wes Hinsley
- Assisted-by: Rich FitzJohn
-
- Ref: https://curl.se/mail/lib-2021-02/0066.html
- Reported-by: Morten Minde Neergaard
-
- Closes https://github.com/curl/curl/pull/6673
- Daniel Stenberg (22 Apr 2021)
- - [Michał Antoniak brought this change]
- vtls: deduplicate some DISABLE_PROXY ifdefs
-
- continue from #5735
-
- - using SSL_HOST_NAME, SSL_HOST_DISPNAME, SSL_PINNED_PUB_KEY for other
- tls backend
-
- - create SSL_HOST_PORT
-
- Closes #6660
- Jay Satiro (22 Apr 2021)
- - OS400: fix typo
-
- CURLVERSION_HEIGHTH -> CURLVERSION_EIGHTH
- Daniel Stenberg (22 Apr 2021)
- - checksrc: complain on == NULL or != 0 checks in conditions
-
- ... to make them all consistenly use if(!var) and if(var)
-
- Also added a few missing warnings to the documentation.
-
- Closes #6912
- - tidy-up: make conditional checks more consistent
-
- ... remove '== NULL' and '!= 0'
-
- Closes #6912
- - [Patrick Monnerat brought this change]
- vauth: factor base64 conversions out of authentication procedures
-
- Input challenges and returned messages are now in binary.
- Conversions from/to base64 are performed by callers (currently curl_sasl.c
- and http_ntlm.c).
-
- Closes #6654
- - [Patrick Monnerat brought this change]
- bufref: buffer reference support
-
- A struct bufref holds a buffer pointer, a data size and a destructor.
- When freed or its contents are changed, the previous buffer is implicitly
- released by the associated destructor. The data size, although not used
- internally, allows binary data support.
-
- A unit test checks its handling methods: test 1661
-
- Closes #6654
- - [Patrick Monnerat brought this change]
- os400: additional support for options metadata
-
- New functions curl_easy_option_by_name_ccsid() and
- curl_easy_option_get_name_ccsid() allows accessing metadata in alternate
- character encoding.
-
- This commit also updates curl_version_info_ccsid() to handle info version 9
- and adds recent definitions to the ILE/RPG include file.
-
- Documentation updated accordingly.
-
- Reviewed-by: Jon Rumsey
- Closes #6574
- - [Patrick Monnerat brought this change]
- test server: take care of siginterrupt() deprecation
-
- Closes #6529
- Marc Hoersken (21 Apr 2021)
- - lib1564.c: enable last wakeup test part on Windows
-
- Suggested-by: Gergely Nagy
- Reviewed-by: Jay Satiro
- Reviewed-by: Marcel Raad
-
- Closes #6245
- - multi: fix slow write/upload performance on Windows
-
- Reset FD_WRITE by sending zero bytes which is permissible
- and will be treated by implementations as successful send.
-
- Without this we won't be notified in case a socket is still
- writable if we already received such a notification and did
- not send any data afterwards on the socket. This would lead
- to waiting forever on a writable socket being writable again.
-
- Assisted-by: Tommy Odom
- Reviewed-by: Jay Satiro
- Reviewed-by: Marcel Raad
- Tested-by: tmkk on github
-
- Bug: #6146
- Closes #6245
- - multi: reduce Win32 API calls to improve performance
-
- 1. Consolidate pre-checks into a single Curl_poll call:
-
- This is an attempt to restructure the code in Curl_multi_wait
- in such a way that less syscalls are made by removing individual
- calls to Curl_socket_check via SOCKET_READABLE/SOCKET_WRITABLE.
-
- 2. Avoid resetting the WinSock event multiple times:
-
- We finally call WSAResetEvent anyway, so specifying it as
- an optional parameter to WSAEnumNetworkEvents is redundant.
-
- 3. Wakeup directly in case no sockets are being monitoring:
-
- Fix the WinSock based implementation to skip extra waiting by
- not sleeping in case no sockets are to be waited on and just
- the WinSock event is being monitored for wakeup functionality.
-
- Assisted-by: Tommy Odom
- Reviewed-by: Jay Satiro
- Reviewed-by: Marcel Raad
-
- Bug: #6146
- Closes #6245
- - Revert "Revert 'multi: implement wait using winsock events'"
-
- This reverts commit 2260e0ebe6d45529495231b3e37a0c58fb92a6a2,
- also restoring previous follow up changes which were reverted.
-
- Authored-by: rcombs on github
- Authored-by: Marc Hörsken
- Reviewed-by: Jay Satiro
- Reviewed-by: Marcel Raad
-
- Restores #5634
- Reverts #6281
- Part of #6245
- Daniel Stenberg (21 Apr 2021)
- - Revert "cmake: make libcurl library output name configurable"
-
- This reverts commit 1cba36d2166c396f987eea587cf92671b27acb92.
-
- CMake provides properties that can be set on a target to rename the
- output artifact without changing the name of a target.
-
- Ref: #6899
- - [Michael Kolechkin brought this change]
- sectransp: allow cipher name to be specified
-
- Add parser for CURLOPT_SSL_CIPHER_LIST option for Secure Transport (ST)
- back-end. Similar to NSS and GSKit back-ends, new code parses string
- value and configures ST library to use those ciphers for communication.
- Create cipher spec data structure and initialize the array of specs with
- cipher number, name, alias, and 'weak' flag.
-
- Mark triple-DES ciphers as 'weak', and exclude them from the default
- ciphers list.
-
- Closes #6464
- - [Michael Kolechkin brought this change]
- NSS: add ciphers to map
-
- Add cipher names to the `cipherlist` map, based on the list of ciphers
- implemented by the NSS in the source code file
- https://github.com/nss-dev/nss/blob/master/lib/ssl/sslenum.c
-
- Closes #6670
- - http2: remove DEBUG_HTTP2
-
- Accidentally committed in 605e84235
- - [Ralph Langendam brought this change]
- cmake: make libcurl library output name configurable
-
- Closes #6899
- - sws: #ifdef S_IFSOCK use
-
- SCO OpenServer 5.0.7 does not define S_IFSOCK.
-
- Reported-by: Kevin R. Bulgrien
- Bug: https://curl.se/mail/lib-2021-04/0074.html
- Closes #6926
- - curl_setup: provide the shutdown flags wider
-
- By using #ifdef on the symbol names to work on anything that don't
- provide them. SCO OpenServer 5.0.7, sys/socket.h does not define either
- SHUT_RDWR, SHUT_RD, and SHUT_WR.
-
- Reported-by: Kevin R. Bulgrien
- Bug: https://curl.se/mail/lib-2021-04/0073.html
- Closes #6925
- - connect: use CURL_SA_FAMILY_T for portability
-
- Reported-by: Kevin R. Bulgrien
- Bug: https://curl.se/mail/lib-2021-04/0071.html
-
- Closes #6918
- - urlapi: make sure no +/- signs are accepted in IPv4 numericals
-
- Follow-up to 56a037cc0ad1b2. Extends test 1560 to verify.
-
- Reported-by: Tuomas Siipola
- Fixes #6916
- Closes #6917
- - ConnectionExists: respect requests for h1 connections better
-
- ... for situations when multiplexing isn't enabled on the h2 connection
- and h1 is explicitly requested for the transfer.
-
- Assisted-by: Gergely Nagy
- - multi: don't close connection HTTP_1_1_REQUIRED
-
- The ConnectionExists() function will note that the new transfer wants
- less then h2 and that it can't multiplex it and therefor opt to open a
- new connection instead.
- - http2: move the stream error field to the per-transfer storage
-
- Storing a stream error in the per-connection struct was an error that lead to
- race conditions as subsequent stream handling could overwrite the error code
- before it was used for the stream with the actual problem.
-
- Closes #6910
- - http2: call the handle-closed function correctly on closed stream
-
- This was this one condition where the stream could be closed due to an
- error and the function would still wrongly just return 0 for it.
-
- Reported-by: Gergely Nagy
- Fixes #6862
- Closes #6910
- - test1660: check the created HSTS file as text mode
-
- Closes #6922
- - RELEASE-NOTES: synced
- - test 493: require https in curl to run
-
- Closes #6927
- Jay Satiro (20 Apr 2021)
- - tool_operate: don't discard failed parallel transfer result
-
- - Save a parallel transfer's result code only when it fails and the
- transfer is not being retried.
-
- Prior to this change the result code was always set which meant that a
- failed result could be erroneously discarded if a different transfer
- later had a successful result (CURLE_OK).
-
- Before:
-
- > curl --fail -Z https://httpbin.org/status/404 https://httpbin.org/delay/10
- > echo %ERRORLEVEL%
- 0
-
- After:
-
- > curl --fail -Z https://httpbin.org/status/404 https://httpbin.org/delay/10
- > echo %ERRORLEVEL%
- 22
-
- Closes #xxxx
- - [Georeth Zhou brought this change]
- openssl: fix build error with OpenSSL < 1.0.2
-
- Closes https://github.com/curl/curl/pull/6920
- Viktor Szakats (19 Apr 2021)
- - README.md: delete Codacy UTM parameters & follow permanent redirect [ci skip]
-
- UTM parameters leak referrer and various marketing/tracking information
- even if these would normally be stripped by website or client policy.
- This link also works fine without them. Also took the opportunity to
- update the URL to the one pointed to by the previous one via permanent
- redirect.
-
- Reviewed-by: Daniel Stenberg
- Closes #6919
- Daniel Stenberg (19 Apr 2021)
- - urlapi: "normalize" numerical IPv4 host names
-
- When the host name in a URL is given as an IPv4 numerical address, the
- address can be specified with dotted numericals in four different ways:
- a32, a.b24, a.b.c16 or a.b.c.d and each part can be specified in
- decimal, octal (0-prefixed) or hexadecimal (0x-prefixed).
-
- Instead of passing on the name as-is and leaving the handling to the
- underlying name functions, which made them not work with c-ares but work
- with getaddrinfo, this change now makes the curl URL API itself detect
- and "normalize" host names specified as IPv4 numericals.
-
- The WHATWG URL Spec says this is an okay way to specify a host name in a
- URL. RFC 3896 does not allow them, but curl didn't prevent them before
- and it seems other RFC 3896-using tools have not either. Host names used
- like this are widely supported by other tools as well due to the
- handling being done by getaddrinfo and friends.
-
- I decided to add the functionality into the URL API itself so that all
- users of these functions get the benefits, when for example wanting to
- compare two URLs. Also, it makes curl built to use c-ares now support
- them as well and make curl builds more consistent.
-
- The normalization makes HTTPS and virtual hosted HTTP work fine even
- when curl gets the address specified using one of the "obscure" formats.
-
- Test 1560 is extended to verify.
-
- Fixes #6863
- Closes #6871
- - libssh: fix "empty expression statement has no effect" warnings
-
- ... by fixing macros to do-while constructs and moving out the calls to
- "break" outside of the actual macro. It also fixes the problem where the
- macro was used witin a loop and the break didn't do right.
-
- Reported-by: Emil Engler
- Fixes #6847
- Closes #6909
- - hsts: enable by default
-
- No longer considered experimental.
-
- Closes #6700
- - vtls: refuse setting any SSL version
-
- ... previously they were supported if a TLS library would (unexpectedly)
- still support them, but from this change they will be refused already in
- curl_easy_setopt(). SSLv2 and SSLv3 have been known to be insecure for
- many years now.
-
- Closes #6773
- - curl: ignore options asking for SSLv2 or SSLv3
-
- Instead output a warning about it and continue with the defaults.
-
- These SSL versions are typically not supported by the TLS libraries since a
- long time back already since they are inherently insecure and broken. Asking
- for them to be used will just cause an error to be returned slightly later.
-
- In the unlikely event that a user's TLS library actually still supports these
- protocol versions, this change might make the request a little less insecure.
-
- Closes #6772
- - test972: verify the json output with jsonlint
-
- Make sure one of the azure jobs has jsonlint installed so that the test
- runs there.
-
- Ref: #6905
- - [Jay Satiro brought this change]
- tool_writeout: fix the HTTP_CODE json output
-
- Update test 970 accordingly.
-
- Reported-by: Michal Rus
- Fixes #6905
- Closes #6906
- - openldap: protect SSL-specific code with proper #ifdef
-
- Closes #6901
- - libssh2: fix Value stored to 'sshp' is never read
-
- Pointed out by scan-build
-
- Closes #6900
- - [Victor Vieux brought this change]
- tool_getparam: replace (in-place) '%20' by '+' according to RFC1866
-
- Signed-off-by: Victor Vieux <victorvieux@gmail.com>
-
- Closes #6895
- - configure: provide --with-openssl, deprecate --with-ssl
-
- Makes the option more explicit.
-
- Closes #6887
- - RELEASE-NOTES: synced
-
- and bumped curlver to 7.77.0
- - [Javier Blazquez brought this change]
- rustls: only return CURLE_AGAIN when TLS session is fully drained
-
- The code in cr_recv was returning prematurely as soon as the socket
- reported no more data to read. However, this could be leaving some
- unread plaintext data in the rustls session from a previous call,
- causing causing the transfer to hang if the socket never receives
- further data.
-
- We need to ensure that the session is fully drained of plaintext data
- before returning CURLE_AGAIN to the caller.
-
- Reviewed-by: Jacob Hoffman-Andrews
- Closes #6894
- - cookie: CURLOPT_COOKIEFILE set to NULL switches off cookies
-
- Add test 676 to verify that setting CURLOPT_COOKIEFILE to NULL again clears
- the cookiejar from memory.
-
- Reported-by: Stefan Karpinski
- Fixes #6889
- Closes #6891
- Version 7.76.1 (14 Apr 2021)
- Daniel Stenberg (14 Apr 2021)
- - RELEASE-NOTES: synced
-
- curl 7.76.1 release
- - THANKS: add names from 7.76.1
- - misc: update copyright year ranges to match latest updates
- - [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: Use ALPN h3-29 for now
-
- Fixes #6864
- Cloes #6886
- Jay Satiro (11 Apr 2021)
- - TODO: remove 18.22 --fail-with-body
-
- --fail-with-body was added in 8a964cb (precedes curl-7_76_0).
- Daniel Stenberg (10 Apr 2021)
- - [Jürgen Gmach brought this change]
- src/tool_vms.c: remove duplicated word in comment
-
- Closes #6881
- - configure: fix CURL_DARWIN_CFLAGS use
-
- The macro name change was not completely done.
-
- Follow-up to 5d2c384452543c
- Bug: https://github.com/curl/curl/commit/5d2c384452543c7b6c9fb02eaa0afc84fd5ab941#commitcomment-49315187
- Reported-by: Marcel Raad
- Closes #6878
- - [Anthony Shaw brought this change]
- github/workflow: add "security-extended" to codeql-analysis.yml
-
- Extends the CodeQL code scan.
-
- Closes #6815
- - [Jochem Broekhoff brought this change]
- examples/hiperfifo.c: check event_initialized before delete
-
- If event_del is called with the event struct (still) zeroed out, a
- segmentation fault may occur. event_initialized checks whether the
- event struct is nonzero.
-
- Closes #6876
- - [Patrick Monnerat brought this change]
- ntlm: fix negotiated flags usage
-
- According to Microsoft document MS-NLMP, current flags usage is not
- accurate: flag NTLMFLAG_NEGOTIATE_NTLM2_KEY controls the use of
- extended security in an NTLM authentication message and NTLM version 2
- cannot be negotiated within the protocol.
-
- The solution implemented here is: if the extended security flag is set,
- prefer using NTLM version 2 (as a server featuring extended security
- should also support version 2). If version 2 has been disabled at
- compile time, use extended security.
-
- Tests involving NTLM are adjusted to this new behavior.
-
- Fixes #6813
- Closes #6849
- - [Patrick Monnerat brought this change]
- ntlm: support version 2 on 32-bit platforms
-
- Closes #6849
- - [Patrick Monnerat brought this change]
- curl_ntlm_core.h: simplify conditionals for USE_NTLM2SESSION
-
- ... as !defined(CURL_DISABLE_CRYPTO_AUTH) is a prerequisite for the
- whole NTLM.
-
- Closes #6849
- - lib: remove unused HAVE_INET_NTOA_R* defines
-
- Closes #6867
- - [Michael Forney brought this change]
- configure: include <time.h> unconditionally
-
- In 2682e5f5, several instances of AC_HEADER_TIME were removed since
- it is a deprecated autoconf macro. However, this was the macro that
- defined TIME_WITH_SYS_TIME, which was used to indicate that <time.h>
- can be included alongside <sys/time.h>. TIME_WITH_SYS_TIME is still
- used in the configure test body and since it is no longer defined,
- <time.h> is *not* included on systems that have <sys/time.h>.
-
- In particular, at least on musl libc and glibc, <sys/time.h> does
- not implicitly include <time.h> and does not declare clock_gettime,
- gmtime_r, or localtime_r. This causes configure to fail to detect
- those functions.
-
- The AC_HEADER_TIME macro deprecation text says
-
- > All current systems provide time.h; it need not be checked for.
- > Not all systems provide sys/time.h, but those that do, all allow
- > you to include it and time.h simultaneously.
-
- So, to fix this issue, simply include <time.h> unconditionally when
- testing for time-related functions and in libcurl, and don't bother
- checking for it.
-
- Closes #6859
- - [Michael Forney brought this change]
- configure: remove use of RETSIGTYPE
-
- This was previously defined by the obsolete AC_TYPE_SIGNAL macro,
- which was removed in 2682e5f5. The deprecation text says
-
- > Your code may safely assume C89 semantics that RETSIGTYPE is void.
-
- So, remove it and just use void instead.
-
- Closes #6861
- - [Muhammed Yavuz Nuzumlalı brought this change]
- install: add instructions for Apple Darwin platforms
-
- Closes #6860
- - [Muhammed Yavuz Nuzumlalı brought this change]
- configure: disable min version set for Darwin
-
- Fixes #6838
- Closes #6860
- - [David Hu brought this change]
- docs/HTTP3.md: update the build instruction using gnutls
-
- In ngtcp2 the `with-gnutls` option is disabled by default, which will
- cause `curl` unable to be `make` because of lacking the libraries
- needed.
-
- Closes #6857
- - RELEASE-NOTES: synced
- - typecheck-gcc: make the ssl-ctx-cb check use SSL_CTX pointers
-
- ... and not values.
-
- Reported-by: locpyl-tidnyd on github
- Fixes #6818
- Closes #6819
- - ngtcp2+gnutls: clear credentials when freed
-
- ... to avoid double-free.
-
- Reported-by: Kenneth Davidson
- Fixes #6824
- Closes #6856
- Jay Satiro (5 Apr 2021)
- - [Cherish98 brought this change]
- tool_progress: Fix progress meter in parallel mode
-
- Make sure the total amount of DL/UL bytes are counted before the
- transfer finalizes. Otherwise if a transfer finishes too quick, its
- total numbers are not added, and results in a DL%/UL% that goes above
- 100%.
-
- Detail:
-
- progress_meter() is called periodically, and it may not catch a
- transfer's total bytes if the value was unknown during the last call,
- and the transfer is finished and deleted (i.e., lost) during the next
- call.
-
- Closes https://github.com/curl/curl/pull/6840
- - [Emil Engler brought this change]
- libssh: get rid of PATH_MAX
-
- This removes the last occurrence of PATH_MAX inside our libssh
- implementation by calculating the path length from the string length of
- the two components.
-
- Closes #6829
- Daniel Stenberg (5 Apr 2021)
- - http_proxy: only loop on 407 + close if we have credentials
-
- ... to fix the retry-loop.
-
- Add test 718 to verify.
-
- Reported-by: Daniel Kurečka
- Fixes #6828
- Closes #6850
- - h2: allow 100 streams by default
-
- instead of 13, before the server has told how many streams it
- accepts. The server can always reject new streams anyway if we go above
- what it accepts.
-
- Ref: #6826
- Closes #6852
- - [Luke Granger-Brown brought this change]
- file: support GETing directories again
-
- After 957bc1881e686f9714c4e6a01bf33535091f0e21, we no longer compute an
- expected_size for directories. This has the upshot that when we compare
- even an empty Range with the available size, we fail.
-
- This brings back the previous behaviour, which was to succeed, but with
- empty content. This also removes the "Accept-ranges: bytes" header,
- which is nonsensical on directories.
-
- Adds test 3016
- Fixes #6845
- Closes #6846
- - RELEASE-NOTES: synced
-
- and bumped to 7.76.1
- - TLS: fix HTTP/2 selection
-
- for GnuTLS, BearSSL, mbedTLS, NSS, SChannnel, Secure Transport and
- wolfSSL...
-
- Regression since 88dd1a8a115b1f5ece (shipped in 7.76.0)
- Reported-by: Kenneth Davidson
- Reported-by: romamik om github
- Fixes #6825
- Closes #6827
- Jay Satiro (2 Apr 2021)
- - hostip: Fix for builds that disable all asynchronous DNS
-
- - Define Curl_resolver_error function only when USE_CURL_ASYNC.
-
- Prior to this change building curl without an asynchronous resolver
- backend (c-ares or threaded) and without DoH (DNS-over-HTTPS, which is
- also asynchronous but independent of resolver backend) would cause a
- build error since Curl_resolver_error is called by and evaluates
- variables only available in asynchronous builds.
-
- Reported-by: Benbuck Nason
-
- Fixes https://github.com/curl/curl/issues/6831
- Closes https://github.com/curl/curl/pull/6832
- Daniel Stenberg (31 Mar 2021)
- - [Gilles Vollant brought this change]
- openssl: Fix CURLOPT_SSLCERT_BLOB without CURLOPT_SSLCERT_KEY
-
- Reported-by: Christian Schmitz
- Fixes #6816
- Closes #6820
- Version 7.76.0 (31 Mar 2021)
- Daniel Stenberg (31 Mar 2021)
- - RELEASE-NOTES: synced
-
- curl 7.76.0 release
- - THANKS: added names from 7.76.0
- - CURLOPT_AUTOREFERER.3: clarify that it sets the full URL
-
- ... some users may not want that!
- - define: remove CURL_DISABLE_NTLM ifdefs
-
- It was never defined anywhere. Fixed disable-scan (test 1165) to also
- scan headers, which found this issue.
-
- Closes #6809
- - vtls: fix addsessionid for non-proxy builds
-
- Follow-up to b09c8ee15771c61
- Fixes #6812
- Closes #6811
- - [Li Xinwei brought this change]
- cmake: support WinIDN
-
- Closes #6807
- - transfer: clear 'referer' in declaration
-
- To silence (false positive) compiler warnings about it.
-
- Follow-up to 7214288898f5625
-
- Reviewed-by: Marcel Raad
- Closes #6810
- - [Marc Hoersken brought this change]
- config: fix SSPI enabling NTLM if crypto auth is disabled
-
- Avoid enabling NTLM feature based upon Windows SSPI
- being enabled in case that crypto auth is disabled.
-
- Reported-by: Marcel Raad
-
- Follow-up to #6277
- Fixes #6803
- Closes #6808
- - HISTORY: add two 2021 events
- - vtls: add 'isproxy' argument to Curl_ssl_get/addsessionid()
-
- To make sure we set and extract the correct session.
-
- Reported-by: Mingtao Yang
- Bug: https://curl.se/docs/CVE-2021-22890.html
-
- CVE-2021-22890
- - [Viktor Szakats brought this change]
- transfer: strip credentials from the auto-referer header field
-
- Added test 2081 to verify.
-
- CVE-2021-22876
-
- Bug: https://curl.se/docs/CVE-2021-22876.html
- - curl_sasl: fix compiler error with --disable-crypto-auth
-
- ... if libgsasl was found.
-
- Closes #6806
- - [Patrick Monnerat brought this change]
- ldap: only set the callback ptr for TLS context when TLS is used
-
- Follow-up to a5eee22e594c2460f
- Fixes #6804
- Closes #6805
- - copyright: update copyright year ranges to 2021
-
- Reviewed-by: Emil Engler
- Closes #6802
- - send_speed: simplify the checks for if a speed limit is set
-
- ... as we know the value cannot be set to negative: enforced by
- setopt()
- - http: cap body data amount during send speed limiting
-
- By making sure never to send off more than the allowed number of bytes
- per second the speed limit logic is given more room to actually work.
-
- Reported-by: Fabian Keil
- Bug: https://curl.se/mail/lib-2021-03/0042.html
- Closes #6797
- - urldata: merge "struct DynamicStatic" into "struct UrlState"
-
- Both were used for the same purposes and there was no logical separation
- between them. Combined, this also saves 16 bytes in less holes in my
- test build.
-
- Closes #6798
- - tests/README.md: mentioned that en_US.UTF-8 is required
-
- Reported-by: Oumph on github
- Fixes #6768
- - HISTORY: fixed the Mac OS X 10.1 release date
-
- Based on what Wikipedia says
- Jay Satiro (26 Mar 2021)
- - examples: Remove threaded-shared-conn.c due to bug
-
- Known bug 11.11 is the shared object's connection cache is not thread
- safe, so we should not have an example for it.
-
- Ref: https://github.com/curl/curl/issues/4915
- Ref: https://curl.se/docs/knownbugs.html#A_shared_connection_cache_is_not
-
- Closes https://github.com/curl/curl/pull/6795
- - KNOWN_BUGS: Update 11.9 - DoH option inheritance
-
- - Add description: Explain that some options aren't inherited because
- they are not relevant for the DoH SSL connections or may result in
- unexpected behavior.
-
- - Remove the reference to #4578 (SSL verify options not inherited) since
- that was fixed by #6597 (separate DoH-specific options for verify).
-
- - Explain that DoH-specific options (those created by #6597) are
- available: CURLOPT_DOH_SSL_VERIFYHOST, CURLOPT_DOH_SSL_VERIFYPEER and
- CURLOPT_DOH_SSL_VERIFYSTATUS.
-
- - Add a reference to #6605 and explain that the user's debug function is
- not inherited because it would be unexpected to pass internal handles
- (ie DoH handles) to the user's callback.
-
- Closes https://github.com/curl/curl/issues/6605
- Daniel Stenberg (26 Mar 2021)
- - curl_easy_setopt.3: add curl_easy_option* functions to SEE ALSO
- - [Jean-Philippe Menil brought this change]
- openssl: ensure to check SSL_CTX_set_alpn_protos return values
-
- SSL_CTX_set_alpn_protos() return 0 on success, and non-0 on failure
-
- Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>
-
- Closes #6794
- - multi: close the connection when h2=>h1 downgrading
-
- Otherwise libcurl is likely to reuse the connection again in the next
- attempt since the connection reuse logic doesn't take downgrades into
- account.
-
- Reported-by: Anthony Ramine
- Fixes #6788
- Closes #6793
- - openssl: set the transfer pointer for logging early
-
- Otherwise, the transfer will be NULL in the trace function when the
- early handshake details arrive and then curl won't show them.
-
- Regresssion in 7.75.0
-
- Reported-by: David Hu
- Fixes #6783
- Closes #6792
- - RELEASE-NOTES: synced
- - TODO: Custom progress meter update interval
-
- Ref: https://stackoverflow.com/q/66789977/93747
- - docs/ABI: tighten up the language
-
- Make the promises more firm
-
- Closes #6786
- - openldap: disconnect better
-
- Instead of clearing the callback argument in disconnect, set it to the
- (new) transfer to make sure the correct data is passed to the callbacks.
-
- Follow-up to e467ea3bd937f38
- Assisted-by: Patrick Monnerat
- Closes #6787
- - libssh2: kdb_callback: get the right struct pointer
-
- After the recent conn/data refactor in this source file, this function
- was mistakenly still getting the old struct pointer which would lead to
- crash on servers with keyboard-interactive auth enabled.
-
- Follow-up to a304051620b92e12b (shipped in 7.75.0)
-
- Reported-by: Christian Schmitz
- Fixes #6691
- Closes #6782
- - tftp: remove unused struct fields
-
- Follow-up to d3d90ad9c00530d
-
- Closes #6781
- - openldap: avoid NULL pointer dereferences
-
- Follow-up to a59c33ceffb8f78
- Reported-by: Patrick Monnerat
- Fixes #6676
- Closes #6780
- - http: strip default port from URL sent to proxy
-
- To make sure the Host: header and the URL provide the same authority
- portion when sent to the proxy, strip the default port number from the
- URL if one was provided.
-
- Reported-by: Michael Brown
- Fixes #6769
- Closes #6778
- - azure: disable test 433 on azure-ubuntu
-
- Something in that environment sets XDG_CONFIG_HOME for us in a way that
- breaks the test.
-
- Reported-by: Marc Hörsken
- Fixes #6739
- Closes #6777
- - tftp: remove the 3600 second default timeout
-
- ... it was never meant to be there.
-
- Reported-by: Tomas Berger
- Fixes #6774
- Closes #6776
- - docs: make gen.pl support *italic* and **bold**
-
- Remove some nroffisms from the cmdline doc files to simplify editing,
- and instead support this markdown style.
-
- Closes #6771
- - ngtcp2: sync with recent API updates
-
- Closes #6770
- - RELEASE-NOTES: synced
- - libssh2:ssh_connect: clear session pointer after free
-
- If libssh2_knownhost_init() returns NULL, like in an OOM situation, the
- ssh session was freed but the pointer wasn't cleared which made libcurl
- later call libssh2 to cleanup using the stale pointer.
-
- Fixes #6764
- Closes #6766
- - [Jacob Hoffman-Andrews brought this change]
- docs: document version of crustls dependency
-
- This also pins a specific release in the Travis test so future
- API-breaking changins in crustls won't break curl builds.
-
- Add RUSTLS documentation to release tarball.
-
- Enable running tests for rustls, minus FTP tests (require
- connect_blocking, which rustls doesn't implement) and 313 (requires CRL
- handling).
-
- Closes #6763
- - [Jacob Hoffman-Andrews brought this change]
- rustls: Handle close_notify.
-
- If we get a close_notify, treat that as EOF. If we get an EOF from the
- TCP stream, treat that as an error (because we should have ended the
- connection earlier, when we got a close_notify).
-
- Closes #6763
- - docs: clarify timeouts for queued transfers in multi API
-
- Closes #6758
- - ftpserver: only load the preprocessed test file
-
- We always preprocess and tests are no longer sensible to load "raw"
-
- Closes #6738
- - tests: use %TESTNUMBER instead of fixed number
-
- This makes the tests easier to copy and relocate to other test numbers
- without having to update content.
-
- Closes #6738
- - KNOWN_BUGS: CURLOPT_OPENSOCKETPAIRFUNCTION is missing
-
- Closes #5747
- - TODO: provide timing info for each redirect
-
- Closes #6743
- Jay Satiro (17 Mar 2021)
- - docs: Add SSL backend names to CURL_SSL_BACKEND
-
- - Document the names that can be used with CURL_SSL_BACKEND:
- bearssl, gnutls, gskit, mbedtls, mesalink, nss, openssl, rustls,
- schannel, secure-transport, wolfssl
-
- Ref: https://github.com/curl/curl/issues/2209#issuecomment-360623286
- Ref: https://github.com/curl/curl/issues/6717#issuecomment-800745201
-
- Closes https://github.com/curl/curl/pull/6755
- - docs: Explain DOH transfers inherit some SSL settings
-
- - Document in DOH that some SSL settings are inherited but DOH hostname
- and peer verification are not and are controlled separately.
-
- - Document that CURLOPT_SSL_CTX_FUNCTION is inherited by DOH handles but
- we're considering changing behavior to no longer inherit it. Request
- feedback.
-
- Closes https://github.com/curl/curl/pull/6688
- Daniel Stenberg (17 Mar 2021)
- - http: make 416 not fail with resume + CURLOPT_FAILONERRROR
-
- When asked to resume a download, libcurl will convert that to HTTP logic
- and if then the entire file is already transferred it will result in a
- 416 response from the HTTP server. With CURLOPT_FAILONERRROR set in that
- scenario, it should *not* lead to an error return.
-
- Updated test 1156, added test 1273
-
- Reported-by: Jonathan Watt
- Fixes #6740
- Closes #6753
- - Curl_timeleft: check both timeouts during connect
-
- The duration of a connect and the total transfer are calculated from two
- different time-stamps. It can end up with the total timeout triggering
- before the connect timeout expires and we should make sure to
- acknowledge whichever timeout that is reached first.
-
- This is especially notable when a transfer first sits in PENDING, as
- that time is counted in the total time but the connect timeout is based
- on the time since the handle changed to the CONNECT state.
-
- The CONNECTTIMEOUT is per connect attempt. The TIMEOUT is for the entire
- operation.
-
- Fixes #6744
- Closes #6745
- Reported-by: Andrei Bica
- Assisted-by: Jay Satiro
- - configure: remove use of deprecated macros
-
- AC_HEADER_TIME, AC_HEADER_STDC and AC_TYPE_SIGNAL
- - configure: make AC_TRY_* into AC_*_IFELSE
-
- ... as the former versions are deprecated.
- - configure: s/AC_HELP_STRING/AS_HELP_STRING
-
- AC_HELP_STRING is deprecated in 2.70+ and I believe AS_HELP_STRING works
- already since 2.59 so bump the minimum required version to that.
-
- Reported-by: Emil Engler
- Fixes #6647
- Closes #6748
- - RELEASE-NOTES: synced
- - travis: use ubuntu nghttp2 package instead of build our own
-
- Closes #6751
- - travis: bump wolfssl to 4.7.0
- - travis: only build wolfssl when needed
-
- Closes #6751
- - [Jacob Hoffman-Andrews brought this change]
- rustls: allocate a buffer for TLS data.
-
- Previously, rustls was using an on-stack array for TLS data. However,
- crustls has an (unusual) requirement that buffers it deals with are
- initialized before writing to them. By using calloc, we can ensure the
- buffer is initialized once and then reuse it across calls.
-
- Closes #6742
- - travis: add a rustls build
-
- ... that doesn't run any tests (yet)
-
- Closes #6750
- - HTTP2: remove the outdated remark about multiplexing for the tool
- - [Robert Ronto brought this change]
- http2: don't set KEEP_SEND when there's no more data to be sent
-
- this should fix an issue where curl sometimes doesn't send out a request
- with authorization info after a 401 is received over http2
-
- Closes #6747
- Marc Hoersken (15 Mar 2021)
- - config: fix building SMB with configure using Win32 Crypto
-
- Align conditions for NTLM features between CMake and configure
- builds by differentiating between USE_NTLM and USE_CURL_NTLM_CORE,
- just like curl_setup.h does internally to detect support of:
-
- - USE_NTLM: required for NTLM crypto authentication feature
- - USE_CURL_NTLM_CORE: required for SMB protocol
-
- Implement USE_WIN32_CRYPTO detection by checking for Crypt functions
- in wincrypt.h which are not available in the Windows App environment.
-
- Link advapi32 and crypt32 for Crypto API and Schannel SSL backend.
- Fix condition of Schannel SSL backend in CMake build accordingly.
-
- Reviewed-by: Marcel Raad
-
- Closes #6277
- - config: fix detection of restricted Windows App environment
-
- Move the detection of the restricted Windows App environment
- in curl_setup.h before the definition of USE_WIN32_CRYPTO
- via included config-win32.h in case no build system is used.
-
- Reviewed-by: Marcel Raad
-
- Part of #6277
- Daniel Stenberg (15 Mar 2021)
- - HISTORY: curl 7.7.2 was the first version used in Mac OS X 10.1
- - gen.pl: quote "bare" minuses in the nroff curl.1
-
- Reported-by: Alejandro Colomar
- Fixes #6698
- Closes #6722
- Daniel Gustafsson (14 Mar 2021)
- - hsts: remove unused defines
-
- MAX_HSTS_SUBLEN and MAX_HSTS_SUBLENSTR were unused from the initial commit,
- and mostly likely leftovers from early development. Remove as they're not
- used for anything.
-
- Closes #6741
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Daniel Stenberg (12 Mar 2021)
- - github: add torture-ftp for FTP-only torture testing
-
- and at 20% to try to keep the run-time reasonable
-
- Closes #6728
- - travis: split "torture" into a separate "events" build as well
-
- Run torture without FTP and reducing coverage to 20%
-
- For some reason the torture tests now run a lot slower on travis and run
- into the 50 minute limit all the time.
-
- Closes #6728
- - ftp: fix memory leak in ftp_done
-
- If after a transfer is complete Curl_GetFTPResponse() returns an error,
- curl would not free the ftp->pathalloc block.
-
- Found by torture-testing test 576
-
- Closes #6737
- - [oxalica brought this change]
- http2: fail if connection terminated without END_STREAM
-
- Closes #6736
- - RELEASE-NOTES: synced
- - [Jacob Hoffman-Andrews brought this change]
- rustls: support CURLOPT_SSL_VERIFYPEER
-
- This requires the latest main branch of crustls, which provides
- rustls_client_config_builder_dangerous_set_certificate_verifier and
- rustls_client_config_builder_set_enable_sni.
-
- This refactors the session setup into its own function, and adds a new
- function cr_hostname_is_ip. Because crustls doesn't support verification
- of IP addresses, special handling is needed: We disable SNI and set a
- placeholder hostname (which never actually gets sent on the wire).
-
- Closes #6719
- Daniel Gustafsson (12 Mar 2021)
- - cookies: Fix potential NULL pointer deref with PSL
-
- Curl_cookie_init can be called with data being NULL, and this can in turn
- be passed to Curl_cookie_add, meaning that both functions must be careful
- to only use data where it's checked for being a NULL pointer. The libpsl
- support code does however dereference data without checking, so if we are
- indeed having an unset data pointer we cannot PSL check the cookiedomain.
-
- This is currently not a reachable dereference, as the only caller with a
- NULL data isn't passing a file to initialize cookies from, but since the
- API has this contract let's ensure we hold it.
-
- Closes #6731
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Daniel Stenberg (12 Mar 2021)
- - [Michael Hordijk brought this change]
- configure: only add OpenSSL paths if they are defined
-
- Add paths for OpenSSL compiling and linking only if they have been
- defined. If they haven't been defined, we'll assume that the paths are
- already available to the toolchain.
-
- Closes #6730
- Jay Satiro (12 Mar 2021)
- - retry.d: Clarify transient 5xx HTTP response codes
-
- - Clarify the only 5xx response codes that are treated as transient are
- 500, 502, 503 and 504.
-
- Prior to this change it said it treated all 5xx as transient, but the
- code says otherwise.
-
- Ref: https://github.com/curl/curl/blob/curl-7_75_0/src/tool_operate.c#L462-L495
-
- Closes https://github.com/curl/curl/pull/6724
- - retry-all-errors.d: Explain curl errors versus HTTP response errors
-
- - Add a paragraph explaining that curl does not consider HTTP response
- errors as curl errors, and how that behavior can be modified by using
- --retry and --fail.
-
- The --retry-all-errors doc says "Retry on any error" which some users
- may find misleading without the added explanation.
-
- Ref: https://curl.se/docs/faq.html#Why_do_I_get_downloaded_data_eve
- Ref: https://curl.se/docs/faq.html#curl_doesn_t_return_error_for_HT
-
- Reported-by: Lawrence Gripper
-
- Fixes https://github.com/curl/curl/issues/6712
- Closes https://github.com/curl/curl/pull/6720
- Daniel Stenberg (11 Mar 2021)
- - travis: switch ngtcp2 build over to quictls
-
- The ngtcp2 project switched over to using the quictls OpenSSL fork
- instead of their own patched OpenSSL. We follow suit.
-
- Closes #6729
- - test220/314: adjust to run with Hyper
- - c-hyper: support automatic content-encoding
-
- Closes #6727
- - http: remove superfluous NULL assign
-
- Closes #6727
- - tool_operate: bail if set CURLOPT_HTTP09_ALLOWED returns error
-
- Closes #6727
- - setopt: error on CURLOPT_HTTP09_ALLOWED set true with Hyper
-
- Not supported.
-
- Closes #6727
- - test306: make it not run with Hyper
-
- ... as it tests HTTP/0.9 which Hyper doesn't support.
- - test304: header CRLF cleanup to work with Hyper
- - FTP: allow SIZE to fail when doing (resumed) upload
-
- Added test 362 to verify.
-
- Reported-by: Jordan Brown
- Regression since 7ea2e1d0c5a7f (7.73.0)
- Fixes #6715
- Closes #6725
- - configure: provide Largefile feature for curl-config
-
- ... as cmake now does it correctly, and make test1014 check for it
-
- Closes #6702
- - config: remove CURL_SIZEOF_CURL_OFF_T use only SIZEOF_CURL_OFF_T
-
- Make the code consistently use a single name for the size of the
- "curl_off_t" type.
-
- Closes #6702
- Jay Satiro (10 Mar 2021)
- - [Jun-ya Kato brought this change]
- ngtcp2: Fix build error due to change in ngtcp2_addr_init
-
- ngtcp2/ngtcp2@b8d90a9 changed the function prototype.
-
- Closes https://github.com/curl/curl/pull/6716
- Daniel Stenberg (10 Mar 2021)
- - [ejanchivdorj brought this change]
- multi: update pending list when removing handle
-
- when removing a handle, most of the lists are updated but pending list
- is not updated. Updating now.
-
- Closes #6713
- - [kokke brought this change]
- lib1536: check ptr against NULL before dereferencing it
-
- Closes #6710
- - [kokke brought this change]
- lib1537: check ptr against NULL before dereferencing it
-
- Fixes #6707
- Closes #6708
- - travis: make torture tests skip TLS-SRP tests
-
- ... as it seems to often hang.
-
- Also: skip the "normal" tests as they're already run by many other
- builds.
-
- Closes #6705
- - openssl: adapt to v3's new const for a few API calls
-
- Closes #6703
- - quiche: fix crash when failing to connect
-
- Reported-by: ウさん
- Fixes #6664
- Closes #6701
- - RELEASE-NOTES: synced
-
- Fixed the release counter and added a missing contributor
- - RELEASE-NOTES: synced
- - dynbuf: bump the max HTTP request to 1MB
-
- Raised from 128KB to allow longer request headers.
-
- Reported-by: Carl Zogheib
- Fixes #6681
- Closes #6685
- Jay Satiro (6 Mar 2021)
- - schannel: Evaluate CURLOPT_SSL_OPTIONS via SSL_SET_OPTION macro
-
- - Change use of those options from CURLOPT_SSL_OPTIONS that are not
- already evaluated via SSL_SET_OPTION in schannel and secure transport
- to use that instead of data->set.ssl.optname.
-
- Example:
-
- Evaluate SSL_SET_OPTION(no_revoke) instead of data->set.ssl.no_revoke.
-
- This change is because options set via CURLOPT_SSL_OPTIONS
- (data->set.ssl.optname) are separate from those set for HTTPS proxy via
- CURLOPT_PROXY_SSL_OPTIONS (data->set.proxy_ssl.optname). The
- SSL_SET_OPTION macro determines whether the connection is for HTTPS
- proxy and based on that which option to evaluate.
-
- Since neither Schannel nor Secure Transport backends currently support
- HTTPS proxy in libcurl, this change is for posterity and has no other
- effect.
-
- Closes https://github.com/curl/curl/pull/6690
- - [kokke brought this change]
- c-hyper: Remove superfluous pointer check
-
- `n` pointer is never NULL once set. Found by static analysis.
-
- Ref: https://github.com/curl/curl/issues/6696
-
- Closes https://github.com/curl/curl/pull/6697
- - version.d: Add missing features to the features list
-
- - Add missing entries for gsasl, Kerberos, NTLM_WB, TrackMemory,
- Unicode and zstd.
-
- - Remove krb4 since it's no longer a feature.
-
- Reported-by: Ádler Jonas Gross
-
- Fixes https://github.com/curl/curl/issues/6677
- Closes https://github.com/curl/curl/pull/6687
- - [Vladimir Varlamov brought this change]
- docs: add missing Arg tag to --stderr
-
- Prior to this change the required argument was not shown.
-
- curl.1 before: --stderr
- curl.1 after: --stderr <file>
-
- curl --help before:
- --stderr Where to redirect stderr
-
- curl --help after:
- --stderr <file> Where to redirect stderr
-
- Closes https://github.com/curl/curl/pull/6692
- - projects: Update VS projects for OpenSSL 1.1.x
-
- - Update VS project templates to use the OpenSSL lib names and include
- directories for OpenSSL 1.1.x.
-
- This change means the VS project files will now build only with OpenSSL
- 1.1.x when an OpenSSL configuration is chosen. Prior to this change the
- project files built only with OpenSSL 1.0.x (end-of-life) when an
- OpenSSL configuration was chosen.
-
- The template changes in this commit were made by script:
-
- libeay32.lib => libcrypto.lib
- ssleay32.lib => libssl.lib
- ..\..\..\..\..\openssl\inc32 => ..\..\..\..\..\openssl\include
-
- And since the output directory now contains the includes it's prepended:
- ..\..\..\..\..\openssl\build\Win{32,64}\VC{6..15}\{DLL,LIB}
- {Debug,Release}\include
-
- - Change build-openssl.bat to copy the build's include directory to the
- output directory (as seen above).
-
- Each build has its own opensslconf.h which is different so we can't just
- include the source include directory any longer.
-
- Note the include directory in the output directory is a full copy from
- the build so technically we don't need to include the OpenSSL source
- include directory in the template. However, I left it last in case the
- user made a custom OpenSSL build using the old method which would put
- opensslconf in the OpenSSL source include directory.
-
- - Change build-openssl.bat to use a temporary install directory that is
- different from the temporary build directory.
-
- For OpenSSL 1.1.x the temporary paths must be separate not a descendant
- of the other, otherwise pdb files will be lost between builds.
-
- Ref: https://curl.se/mail/lib-2018-10/0049.html
- Ref: https://gist.github.com/jay/125191c35bbeb894444eff827651f755
- Ref; https://github.com/openssl/openssl/issues/10005
-
- Fixes https://github.com/curl/curl/issues/984
- Closes https://github.com/curl/curl/pull/6675
- - doh: Inherit CURLOPT_STDERR from user's easy handle
-
- Prior to this change if the user set their easy handle's error stream
- to something other than stderr it was not inherited by the doh handles,
- which meant that they would still write to the default standard error
- stream (stderr) for verbose output.
-
- Bug: https://github.com/curl/curl/issues/6605
- Reported-by: arvids-kokins-bidstack@users.noreply.github.com
-
- Closes https://github.com/curl/curl/pull/6661
- Marc Hoersken (1 Mar 2021)
- - CI/azure: replace python-impacket with python3-impacket
-
- As of this month Azure DevOps uses Ubuntu 20.04 LTS which
- no longer supports Python 2 and instead ships Python 3.
-
- Closes #6678
- - runtests.pl: kill processes locking test log files
-
- Introduce a new runtests.pl command option: -rm
-
- For now only required and implemented for Windows.
- Ignore stunnel logs due to long running processes.
-
- Requires Sysinternals handle[64].exe to be on PATH.
-
- Reviewed-by: Jay Satiro
-
- Ref: #6058
- Closes #6179
- - pathhelp.pm: fix use of pwd -L in Msys environment
-
- While Msys2 has a pwd binary which supports -L,
- Msys1 only has a shell built-in with that feature.
-
- Reviewed-by: Jay Satiro
-
- Part of #6179
- Daniel Gustafsson (1 Mar 2021)
- - ldap: use correct memory free function
-
- unescaped is coming from Curl_urldecode and not a unicode conversion
- function, so reclaiming its memory should be performed with a normal
- call to free rather than curlx_unicodefree. In reality, this is the
- same thing as curlx_unicodefree is implemented as a call to free but
- that's not guaranteed to always hold. Using the curlx macro present
- issues with memory debugging as well.
-
- Closes #6671
- Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- - url: fix typo in comment
-
- Correct a small typo which snuck in with a304051620.
- Jay Satiro (28 Feb 2021)
- - tool_help: Increase space between option and description
-
- - Increase the minimum number of spaces between the option and the
- description from 1 to 2.
-
- Before:
- ~~~
- -u, --user <user:password> Server user and password
- -A, --user-agent <name> Send User-Agent <name> to server
- -v, --verbose Make the operation more talkative
- -V, --version Show version number and quit
- -w, --write-out <format> Use output FORMAT after completion
- --xattr Store metadata in extended file attributes
- ~~~
-
- After:
- ~~~
- -u, --user <user:password> Server user and password
- -A, --user-agent <name> Send User-Agent <name> to server
- -v, --verbose Make the operation more talkative
- -V, --version Show version number and quit
- -w, --write-out <format> Use output FORMAT after completion
- --xattr Store metadata in extended file attributes
- ~~~
-
- Closes https://github.com/curl/curl/pull/6674
- Daniel Stenberg (27 Feb 2021)
- - curl: set CURLOPT_NEW_FILE_PERMS if requested
-
- The --create-file-mode code logic accepted the value but never actually
- passed it on to libcurl!
-
- Follow-up to a7696c73436f (shipped in 7.75.0)
- Reported-by: Johannes Lesr
- Fixes #6657
- Closes #6666
- - tool_operate: check argc before accessing argv[1]
-
- Follow-up to 09363500b
- Reported-by: Emil Engler
- Reviewed-by: Daniel Gustafsson
- Closes #6668
- Daniel Gustafsson (26 Feb 2021)
- - [Jean-Philippe Menil brought this change]
- openssl: remove get_ssl_version_txt in favor of SSL_get_version
-
- openssl: use SSL_get_version to get connection protocol
-
- Replace our bespoke get_ssl_version_txt in favor of SSL_get_version.
- We can get rid of few lines of code, since SSL_get_version achieve
- the exact same thing
-
- Closes #6665
- Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
- Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>
- - gnutls: Fix nettle discovery
-
- Commit e06fa7462ac258c removed support for libgcrypt leaving only
- support for nettle which has been the default crypto library in
- GnuTLS for a long time. There were however a few conditionals on
- USE_GNUTLS_NETTLE which cause compilation errors in the metalink
- code (as it used the gcrypt fallback instead as a result). See the
- below autobuild for an example of the error:
-
- https://curl.se/dev/log.cgi?id=20210225123226-30704#prob1
-
- This removes all uses of USE_GNUTLS_NETTLE and also removes the
- gcrypt support from the metalink code while at it.
-
- Closes #6656
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- - cookies: Support multiple -b parameters
-
- Previously only a single -b cookie parameter was supported with the last
- one winning. This adds support for supplying multiple -b params to have
- them serialized semicolon separated. Both cookiefiles and cookies can be
- entered multiple times.
-
- Closes #6649
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Daniel Stenberg (25 Feb 2021)
- - build: remove all traces of USE_BLOCKING_SOCKETS
-
- libcurl doesn't behave properly with the define set
-
- Closes #6655
- - RELEASE-NOTES: synced
- Daniel Gustafsson (25 Feb 2021)
- - docs: Fix typos
-
- Random typos spotted when skimming docs.
- - cookies: Use named parameters in header prototypes
-
- Align header with project style of using named parameters in the
- function prototypes to aid readability and self-documentation.
-
- Closes #6653
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Daniel Stenberg (24 Feb 2021)
- - urldata: make 'actions[]' use unsigned char instead of int
-
- ... as it only needs a few bits per index anyway.
-
- Reviewed-by: Daniel Gustafsson
- Closes #6648
- - configure: fail if --with-quiche is used and quiche isn't found
-
- Closes #6652
- - [Gregor Jasny brought this change]
- cmake: use CMAKE_INSTALL_INCLUDEDIR indirection
-
- Reviewed-by: Sergei Nikulov
- Closes #6440
- Viktor Szakats (23 Feb 2021)
- - mingw: enable using strcasecmp()
-
- This makes the 'Features:' list sorted case-insensitively,
- bringing output in-line with *nix builds.
-
- Reviewed-by: Jay Satiro
- Closes #6644
- - build: delete unused feature guards
-
- - `HAVE_STRNCASECMP`
- - `HAVE_TCGETATTR`
- - `HAVE_TCSETATTR`
-
- Reviewed-by: Jay Satiro
- Reviewed-by: Daniel Stenberg
- Closes #6645
- Jay Satiro (23 Feb 2021)
- - docs: add CURLOPT_CURLU to 'See also' in curl_url_ functions
-
- Closes https://github.com/curl/curl/pull/6639
- Daniel Stenberg (23 Feb 2021)
- - [Jacob Hoffman-Andrews brought this change]
- configure: make hyper opt-in, and fail if missing
-
- Previously, configure would look for hyper by default, and use it if
- found; otherwise it would not use hyper, and not error.
-
- Now, configure will not look for hyper unless --with-hyper is passed. If
- configure looks for hyper and fails, it will error.
-
- Also, add -ld -lpthread -lm to Hyper's libs. I think they are required.
-
- Closes #6598
- - multi: do once-per-transfer inits in before_perform in DID state
-
- ... since the state machine might go to RATELIMITING and then back to
- PERFORMING doing once-per-transfer inits in that function is wrong and
- it caused problems with receiving chunked HTTP and it set the
- PRETRANSFER time much too often...
-
- Regression from b68dc34af341805aeb7b3715 (shipped in 7.75.0)
-
- Reported-by: Amaury Denoyelle
- Fixes #6640
- Closes #6641
- - RELEASE-NOTES: synced
- - CODE_STYLE.md: fix broken link to INTERNALS
-
- ... the link would only work if browsed on GitHub, while this link now
- takes the user to the website instead and thus should work on either.
-
- Reported-by: David Demelier
- - curl_url_set.3: mention CURLU_PATH_AS_IS
-
- ... it has been supported since the URL API was added.
-
- Bug: https://curl.se/mail/lib-2021-02/0046.html
-
- Closes #6638
- Viktor Szakats (21 Feb 2021)
- - time: enable 64-bit time_t in supported mingw environments
-
- (Unless 32-bit `time_t` is selected manually via the `_USE_32BIT_TIME_T`
- mingw macro.)
-
- Previously, 64-bit `time_t` was enabled on VS2005 and newer only, and
- 32-bit `time_t` was used on all other Windows builds.
-
- Assisted-by: Jay Satiro
- Closes #6636
- Jay Satiro (20 Feb 2021)
- - test1188: Check for --fail HTTP status
-
- - Change the test to check for curl error on HTTP 404 Not Found.
-
- test1188 tests "--write-out with %{onerror} and %{urlnum} to stderr".
- Prior to this change it did that by specifying a non-existent host which
- would cause an error. ISPs may hijack DNS and resolve non-existent hosts
- so the test would not work if that was the case.
-
- Ref: https://en.wikipedia.org/wiki/DNS_hijacking#Manipulation_by_ISPs
- Ref: https://github.com/curl/curl/issues/6621
- Ref: https://github.com/curl/curl/pull/6623
-
- Closes https://github.com/curl/curl/pull/6637
- - memdebug: close debug logfile explicitly on exit
-
- - Use atexit to register a dbg cleanup function that closes the logfile.
-
- LeakSantizier (LSAN) calls _exit() instead of exit() when a leak is
- detected on exit so the logfile must be closed explicitly or data could
- be lost. Though _exit() does not call atexit handlers such as this,
- LSAN's call to _exit() comes after the atexit handlers are called.
-
- Prior to this change the logfile was not explicitly closed so it was
- possible that if LSAN detected a leak and called _exit (which does
- not flush or close files like exit) then the logfile could be missing
- data. That could then cause curl's memanalyze to report false leaks
- (eg a malloc was recorded to the logfile but the corresponding free was
- discarded from the buffer instead of written to the logfile, then
- memanalyze reports that as a leak).
-
- Ref: https://github.com/google/sanitizers/issues/1374
-
- Bug: https://github.com/curl/curl/pull/6591#issuecomment-780396541
-
- Closes https://github.com/curl/curl/pull/6620
- - curl_multibyte: always return a heap-allocated copy of string
-
- - Change the Windows char <-> UTF-8 conversion functions to return an
- allocated copy of the passed in string instead of the original.
-
- Prior to this change the curlx_convert_ functions would, as what I
- assume was an optimization, not make a copy of the passed in string if
- no conversion was required. No conversion is required in non-UNICODE
- Windows builds since our tchar strings are type char and remain in
- whatever the passed in encoding is, which is assumed to be UTF-8 but may
- be other encoding.
-
- In contrast the UNICODE Windows builds require conversion
- (wchar <-> char) and do return a copy. That inconsistency could lead to
- programming errors where the developer expects a copy, and does not
- realize that won't happen in all cases.
-
- Closes https://github.com/curl/curl/pull/6602
- Viktor Szakats (19 Feb 2021)
- - http: add new files missed from referrer commit
-
- Ref: 44872aefc2d54f297caf2b0cc887df321bc9d791
- Ref: #6591
- - http: add support to read and store the referrer header
-
- - add CURLINFO_REFERER libcurl option
- - add --write-out '%{referer}' command-line option
- - extend --xattr command-line option to fill user.xdg.referrer.url extended
- attribute with the referrer (if there was any)
-
- Closes #6591
- Daniel Stenberg (19 Feb 2021)
- - urldata: remove the _ORIG suffix from string names
-
- It doesn't provide any useful info but only makes the names longer.
-
- Closes #6624
- - url: fix memory leak if OOM in the HSTS handling
-
- Reported-by: Viktor Szakats
- Bug: https://github.com/curl/curl/pull/6627#issuecomment-781626205
-
- Closes #6628
- - gnutls: assume nettle crypto support
-
- nettle has been the default crypto library with GnuTLS since 2010. By
- dropping support for the previous libcrypto, we simplify code.
-
- Closes #6625
- - asyn-ares: use consistent resolve error message
-
- ... with the help of Curl_resolver_error() which now is moved from
- asyn-thead.c and is provided globally for this purpose.
-
- Follow-up to 35ca04ce1b77636
-
- Makes test 1188 work for c-ares builds
-
- Closes #6626
- Viktor Szakats (18 Feb 2021)
- - ci: stop building on freebsd-12-1
-
- An updated freebsd-12-2 image was added a few months ago, and this
- older one is consistently failing to go past `pkginstall`:
- ```
- Newer FreeBSD version for package py37-mlt:
- To ignore this error set IGNORE_OSVERSION=yes
- - package: 1202000
- - running kernel: 1201000
- Ignore the mismatch and continue? [Y/n]: pkg: repository FreeBSD contains packages for wrong OS version: FreeBSD:12:amd64
- ```
-
- FreeBSD thread suggests that 12.1 is EOL, and best to avoid.
-
- Ref: https://forums.freebsd.org/threads/78856/
-
- Reviewed-by: Daniel Stenberg
- Closes #6622
- Daniel Stenberg (18 Feb 2021)
- - test1188: change error from connect to resolve error
-
- Using the %NOLISTENPORT to trigger a connection failure is somewhat
- "risky" (since it isn't guaranteed to not be listened to) and caused
- occasional CI problems. This fix changes the infused error to be a more
- reliable one but still verifies the --write-out functionality properly -
- which is the purpose of this test.
-
- Reported-by: Jay Satiro
- Fixes #6621
- Closes #6623
- - url.c: use consistent error message for failed resolve
- - BUGS: language polish
- - wolfssl: don't store a NULL sessionid
-
- This caused a memory leak as the session id cache entry was still
- erroneously stored with a NULL sessionid and that would later be treated
- as not needed to get freed.
-
- Reported-by: Gisle Vanem
- Fixes #6616
- Closes #6617
- - parse_proxy: fix a memory leak in the OOM path
-
- Reported-by: Jay Satiro
- Reviewed-by: Jay Satiro
- Reviewed-by: Emil Engler
-
- Closes #6614
- Bug: https://github.com/curl/curl/pull/6591#issuecomment-780396541
- Jay Satiro (17 Feb 2021)
- - url: fix possible use-after-free in default protocol
-
- Prior to this change if the user specified a default protocol and a
- separately allocated non-absolute URL was used then it was freed
- prematurely, before it was then used to make the replacement URL.
-
- Bug: https://github.com/curl/curl/issues/6604#issuecomment-780138219
- Reported-by: arvids-kokins-bidstack@users.noreply.github.com
-
- Closes https://github.com/curl/curl/pull/6613
- Daniel Stenberg (16 Feb 2021)
- - multi: rename the multi transfer states
-
- While working on documenting the states it dawned on me that step one is
- to use more descriptive names on the states. This also changes prefix on
- the states to make them shorter in the source.
-
- State names NOT ending with *ing are transitional ones.
-
- Closes #6612
- Viktor Szakats (16 Feb 2021)
- - http: do not add a referrer header with empty value
-
- Previously an empty 'Referer:' header was added to the HTTP request when
- passing `--referer ';auto'` or `--referer ''` on the command-line. This
- patch makes `--referer` work like `--header 'Referer:'` and will only add
- the header if it has a non-zero length value.
-
- Reviewed-by: Jay Satiro
- Closes #6610
- Daniel Stenberg (16 Feb 2021)
- - lib: remove 'conn->data' completely
-
- The Curl_easy pointer struct entry in connectdata is now gone. Just
- before commit 215db086e0 landed on January 8, 2021 there were 919
- references to conn->data.
-
- Closes #6608
- - openldap: pass 'data' to the callbacks instead of 'conn'
- Jay Satiro (15 Feb 2021)
- - doh: Fix sharing user's resolve list with DOH handles
-
- - Share the shared object from the user's easy handle with the DOH
- handles.
-
- Prior to this change if the user had set a shared object with shared
- cached DNS (CURL_LOCK_DATA_DNS) for their easy handle then that wasn't
- used by any associated DOH handles, since they used the multi's default
- hostcache.
-
- This change means all the handles now use the same hostcache, which is
- either the shared hostcache from the user created shared object if it
- exists or if not then the multi's default hostcache.
-
- Reported-by: Manuj Bhatia
-
- Fixes https://github.com/curl/curl/issues/6589
- Closes https://github.com/curl/curl/pull/6607
- Daniel Stenberg (15 Feb 2021)
- - http2: remove conn->data use
-
- ... but instead use a private alternative that points to the "driving
- transfer" from the connection. We set the "user data" associated with
- the connection to be the connectdata struct, but when we drive transfers
- the code still needs to know the pointer to the transfer. We can change
- the user data to become the Curl_easy handle, but with older nghttp2
- version we cannot dynamically update that pointer properly when
- different transfers are used over the same connection.
-
- Closes #6520
- - openssl: remove conn->data use
-
- We still make the trace callback function get the connectdata struct
- passed to it, since the callback is anchored on the connection.
-
- Repeatedly updating the callback pointer to set 'data' with
- SSL_CTX_set_msg_callback_arg() doesn't seem to work, probably because
- there might already be messages in the queue with the old pointer.
-
- This code therefore makes sure to set the "logger" handle before using
- OpenSSL calls so that the right easy handle gets used for tracing.
-
- Closes #6522
- - RELEASE-NOTES: synced
- Jay Satiro (14 Feb 2021)
- - doh: add options to disable ssl verification
-
- - New libcurl options CURLOPT_DOH_SSL_VERIFYHOST,
- CURLOPT_DOH_SSL_VERIFYPEER and CURLOPT_DOH_SSL_VERIFYSTATUS do the
- same as their respective counterparts.
-
- - New curl tool options --doh-insecure and --doh-cert-status do the same
- as their respective counterparts.
-
- Prior to this change DOH SSL certificate verification settings for
- verifyhost and verifypeer were supposed to be inherited respectively
- from CURLOPT_SSL_VERIFYHOST and CURLOPT_SSL_VERIFYPEER, but due to a bug
- were not. As a result DOH verification remained at the default, ie
- enabled, and it was not possible to disable. This commit changes
- behavior so that the DOH verification settings are independent and not
- inherited.
-
- Ref: https://github.com/curl/curl/pull/4579#issuecomment-554723676
-
- Fixes https://github.com/curl/curl/issues/4578
- Closes https://github.com/curl/curl/pull/6597
- - hostip: fix crash in sync resolver builds that use DOH
-
- - Guard some Curl_async accesses with USE_CURL_ASYNC instead of
- !CURLRES_SYNCH.
-
- This is another follow-up to 8335c64 which moved the async struct from
- the connectdata struct into the Curl_easy struct. A previous follow-up
- 6cd167a fixed building for sync resolver by guarding some async struct
- accesses with !CURLRES_SYNCH. The problem is since DOH (DNS-over-HTTPS)
- is available as an asynchronous secondary resolver the async struct may
- be used even when libcurl is built for the sync resolver. That means
- that CURLRES_SYNCH and USE_CURL_ASYNC may be defined at the same time.
-
- Closes https://github.com/curl/curl/pull/6603
- Daniel Stenberg (13 Feb 2021)
- - KNOWN_BUGS: cannot enable LDAPS on Windows with cmake
-
- Reported-by: Jack Boos Yu
- Closes #6284
- - KNOWN_BUGS: Excessive HTTP/2 packets with TCP_NODELAY
-
- Reported-by: Alex Xu
- Closes #6363
- - http: use credentials from transfer, not connection
-
- HTTP auth "accidentally" worked before this cleanup since the code would
- always overwrite the connection credentials with the credentials from
- the most recent transfer and since HTTP auth is typically done first
- thing, this has not been an issue. It was still wrong and subject to
- possible race conditions or future breakage if the sequence of functions
- would change.
-
- The data.set.str[] strings MUST remain unmodified exactly as set by the
- user, and the credentials to use internally are instead set/updated in
- state.aptr.*
-
- Added test 675 to verify different credentials used in two requests done
- over a reused HTTP connection, which previously behaved wrongly.
-
- Fixes #6542
- Closes #6545
- - test433: clear some home dir env variables
-
- Follow-up to bd6b54ba1f55b5
-
- ... so that XDG_CONFIG_HOME is the only home dir variable set and thus
- used correctly in the test!
-
- Fixes #6599
- Closes #6600
- - RELEASE-NOTES: synced
-
- bumped the version to 7.76.0
- - travis: install libgsasl-dev to add that to the builds
-
- Closes #6588
- - urldata: don't touch data->set.httpversion at run-time
-
- Rename it to 'httpwant' and make a cloned field in the state struct as
- well for run-time updates.
-
- Also: refuse non-supported HTTP versions. Verified with test 129.
-
- Closes #6585
- Viktor Szakats (11 Feb 2021)
- - tests: disable .curlrc in more environments
-
- by also setting CURL_HOME and XDG_CONFIG_HOME envvars to the local
- directory.
-
- Reviewed-by: Daniel Stenberg
- Fixes #6595
- Closes #6596
- - docs/Makefile.inc: format to be update-friendly
-
- - one source file per line
- - convert tabs to spaces
- - do not align line-continuation backslashes
- - sort source files alphabetically
-
- Reviewed-by: Daniel Stenberg
- Closes #6593
- Daniel Stenberg (11 Feb 2021)
- - curl: provide libgsasl version and feature info in -V output
-
- Closes #6592
- - gsasl: provide CURL_VERSION_GSASL if built-in
-
- To let applications know the feature is available.
-
- Closes #6592
- - curl: add --fail-with-body
-
- Prevent both --fail and --fail-with-body on the same command line.
-
- Verify with test 349, 360 and 361.
-
- Closes #6449
- - TODO: remove HSTS
-
- Provided now since commit 7385610d0c74
- Jay Satiro (10 Feb 2021)
- - tests: Fix tests failing due to change in curl --help
-
- Follow-up to parent 3183217 which added add missing <mode> argument to
- --create-file-mode <mode>.
-
- Ref: https://github.com/curl/curl/issues/6590
- - tool_help: add missing argument for --create-file-mode
-
- Prior to this change the required argument was not shown in curl --help.
-
- before:
- --create-file-mode File mode for created files
-
- after:
- --create-file-mode <mode> File mode (octal) for created files
-
- Reported-by: ZimCodes@users.noreply.github.com
-
- Fixes https://github.com/curl/curl/issues/6590
- - create-file-mode.d: add missing Arg tag
-
- Prior to this change the required argument was not shown.
-
- curl.1 before: --create-file-mode
- curl.1 after: --create-file-mode <mode>
-
- Reported-by: ZimCodes@users.noreply.github.com
-
- Fixes https://github.com/curl/curl/issues/6590
- Viktor Szakats (10 Feb 2021)
- - gsasl: fix errors/warnings building against libgsasl
-
- - also fix an indentation
- - make Curl_auth_gsasl_token() use CURLcode (by Daniel Stenberg)
-
- Ref: https://github.com/curl/curl/pull/6372#issuecomment-776118711
- Ref: https://github.com/curl/curl/pull/6588
-
- Reviewed-by: Jay Satiro
- Assisted-by: Daniel Stenberg
- Reviewed-by: Simon Josefsson
- Closes #6587
- - Makefile.m32: add support for libgsasl dependency
-
- Reviewed-by: Marcel Raad
- Closes #6586
- Marcel Raad (10 Feb 2021)
- - ngtcp2: clarify calculation precedence
-
- As suggested by Codacy/cppcheck.
-
- Closes https://github.com/curl/curl/pull/6576
- - server: remove redundant condition
-
- `end` is always non-null here.
-
- Closes https://github.com/curl/curl/pull/6576
- - lib: remove redundant code
-
- Closes https://github.com/curl/curl/pull/6576
- - mqttd: remove unused variable
-
- Closes https://github.com/curl/curl/pull/6576
- - tool_paramhlp: reduce variable scope
-
- Closes https://github.com/curl/curl/pull/6576
- - tests: reduce variable scopes
-
- Closes https://github.com/curl/curl/pull/6576
- - lib: reduce variable scopes
-
- Closes https://github.com/curl/curl/pull/6576
- - ftp: fix Codacy/cppcheck warning about null pointer arithmetic
-
- Increment `bytes` only if it is non-null.
-
- Closes https://github.com/curl/curl/pull/6576
- Daniel Stenberg (9 Feb 2021)
- - ngtcp2: adapt to the new recv_datagram callback
- - quiche: fix build error: use 'int' for port number
-
- Follow-up to cb2dc1ba8
- - ftp: add 'list_only' to the transfer state struct
-
- and rename it from 'ftp_list_only' since it is also used for SSH and
- POP3. The state is updated internally for 'type=D' FTP URLs.
-
- Added test case 1570 to verify.
-
- Closes #6578
- - ftp: add 'prefer_ascii' to the transfer state struct
-
- ... and make sure the code never updates 'set.prefer_ascii' as it breaks
- handle reuse which should use the setting as the user specified it.
-
- Added test 1569 to verify: it first makes an FTP transfer with ';type=A'
- and then another without type on the same handle and the second should
- then use binary. Previously, curl failed this.
-
- Closes #6578
- - RELEASE-NOTES: synced
- - [Jacob Hoffman-Andrews brought this change]
- vtls: initial implementation of rustls backend
-
- This adds a new TLS backend, rustls. It uses the C-to-rustls bindings
- from https://github.com/abetterinternet/crustls.
-
- Rustls is at https://github.com/ctz/rustls/.
-
- There is still a fair bit to be done, like sending CloseNotify on
- connection shutdown, respecting CAPATH, and properly indicating features
- like "supports TLS 1.3 ciphersuites." But it works well enough to make
- requests and receive responses.
-
- Blog post for context:
- https://www.abetterinternet.org/post/memory-safe-curl/
-
- Closes #6350
- - [Simon Josefsson brought this change]
- sasl: support SCRAM-SHA-1 and SCRAM-SHA-256 via libgsasl
-
- Closes #6372
- Jay Satiro (9 Feb 2021)
- - lib: use int type for more port variables
-
- This is a follow-up to 764c6bd. Prior to that change port variables
- were usually type long.
-
- Closes https://github.com/curl/curl/pull/6553
- - tool_writeout: refactor write-out and write-out json
-
- - Deduplicate the logic used by write-out and write-out json.
-
- Rather than have separate writeLong, writeString, etc, logic for
- each of write-out and write-out json instead have respective shared
- functions that can output either format and a 'use_json' parameter to
- indicate whether it is json that is output.
-
- This will make it easier to maintain. Rather than have to go through
- two sets of logic now we only have to go through one.
-
- - Support write-out %{errormsg} and %{exitcode} in json.
-
- - Clarify in the doc that %{exitcode} is the exit code of the transfer.
-
- Prior to this change it just said "The numerical exitcode" which
- implies it's the exit code of the tool, and it's not necessarily that.
-
- Closes https://github.com/curl/curl/pull/6544
- - lib: drop USE_SOCKETPAIR in favor of CURL_DISABLE_SOCKETPAIR
-
- .. since the former is undocumented and they both do the same thing.
-
- Closes https://github.com/curl/curl/pull/6517
- - curl_multibyte: fall back to local code page stat/access on Windows
-
- If libcurl is built with Unicode support for Windows then it is assumed
- the filename string is Unicode in UTF-8 encoding and it is converted to
- UTF-16 to be passed to the wide character version of the respective
- function (eg wstat). However the filename string may actually be in the
- local encoding so, even if it successfully converted to UTF-16, if it
- could not be stat/accessed then try again using the local code page
- version of the function (eg wstat fails try stat).
-
- We already do this with fopen (ie wfopen fails try fopen), so I think it
- makes sense to extend it to stat and access functions.
-
- Closes https://github.com/curl/curl/pull/6514
- - [Stephan Szabo brought this change]
- file: Support unicode urls on windows
-
- Closes https://github.com/curl/curl/pull/6501
- - [Vincent Torri brought this change]
- cmake: fix import library name for non-MS compiler on Windows
-
- - Use _imp.lib suffix only for Microsoft's compiler (MSVC).
-
- Prior to this change library suffix _imp.lib was used for the import
- library on Windows regardless of compiler.
-
- With this change the other compilers should now use their default
- suffix which should be .dll.a.
-
- This change is motivated by the usage of pkg-config on MSYS2.
- Indeed, when 'pkg-config --libs libcurl' is used, -lcurl is
- passed to ld. The documentation of ld on Windows :
-
- https://sourceware.org/binutils/docs/ld/WIN32.html
-
- lists, in the 'direct linking to a dll' section, the pattern
- of the searched import library, and libcurl_imp.lib is not there.
-
- Closes https://github.com/curl/curl/pull/6225
- Daniel Stenberg (9 Feb 2021)
- - urldata: move 'followlocation' to UrlState
-
- As this is a state variable it does not belong in UserDefined which is
- used to store values set by the user.
-
- Closes #6582
- - [Ikko Ashimine brought this change]
- http_proxy: fix typo in http_proxy.c
-
- settting -> setting
-
- Closes #6583
- - [Fabian Keil brought this change]
- tests/server: Bump MAX_TAG_LEN to 200
-
- This is useful for tests containing HTML inside of <data> sections.
- For <img> tags it's not uncommon to be longer than the previous
- limit of 79 bytes.
-
- An example of a previously problem-causing tag is:
- <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-http://www.privoxy.org/images/privoxy.png-by-size" width="88" height="31">
- which is needed for a Privoxy test for the banners-by-size filter.
-
- Previously it caused server failures like:
- 12:29:05.786961 ====> Client connect
- 12:29:05.787116 accept_connection 3 returned 4
- 12:29:05.787194 accept_connection 3 returned 0
- 12:29:05.787285 Read 119 bytes
- 12:29:05.787345 Process 119 bytes request
- 12:29:05.787407 Got request: GET /banners-by-size/9 HTTP/1.1
- 12:29:05.787464 Requested test number 9 part 0
- 12:29:05.787686 getpart() failed with error: -2
- 12:29:05.787744 - request found to be complete (9)
- 12:29:05.787912 getpart() failed with error: -2
- 12:29:05.788048 Wrote request (119 bytes) input to log/server.input
- 12:29:05.788157 Send response test9 section <data>
- 12:29:05.788443 getpart() failed with error: -2
- 12:29:05.788498 instructed to close connection after server-reply
- 12:29:05.788550 ====> Client disconnect 0
- 12:29:05.871448 exit_signal_handler: 15
- 12:29:05.871714 signalled to die
- 12:29:05.872040 ========> IPv4 sws (port 21108 pid: 51758) exits with signal (15)
- - [Fabian Keil brought this change]
- tests/badsymbols.pl: when opening '$incdir' fails include it in the error message
- - [Fabian Keil brought this change]
- runtests.1: document -o, -P, -L, and -E
- - [Fabian Keil brought this change]
- runtests.pl: add %TESTNUMBER variable to make copying tests more convenient
- - [Fabian Keil brought this change]
- runtests.pl: add an -o option to change internal variables
-
- runtests.pl has lots of internal variables one might want to
- change in certain situations, but adding a dedicated option
- for every single one of them isn't practical.
-
- Usage:
- ./runtests.pl -o TESTDIR=$privoxy_curl_test_dir -o HOSTIP=10.0.0.1 ...
- - [Fabian Keil brought this change]
- runtests.pl: cleanups
-
- - show the summarized test result in the last line of the report
- - do not use $_ after mapping it to a named variable
- Doing that makes the code harder to follow.
- - log the restraints sorted by the number of their occurrences
- - fix language when logging restraints that only occured once
- - let runhttpserver() use $TESTDIR instead of $srcdir
- ... so it works if a non-default $TESTDIR is being used.
- - [Fabian Keil brought this change]
- runtests.pl: add an -E option to specify an exclude file
-
- It can contain additional restraints for test numbers,
- keywords and tools.
-
- The idea is to let third parties like the Privoxy project
- distribute an exclude file with their tarballs that specifies
- which curl tests are not expected to work when using Privoxy
- as a proxy, without having to fork the whole curl test suite.
-
- The syntax could be changed to be extendable and maybe
- more closely reflect the "curl test" syntax. Currently
- it's a bunch of lines like these:
-
- test:$TESTNUMBER:Reason why this test with number $TESTNUMBER should be skipped
- keyword:$KEYWORD:Reason why tests whose keywords contain the $KEYWORD should be skipped
- tool:$TOOL:Reason why tests with tools that contain $TOOL should be skipped
-
- To specify multiple $TESTNUMBERs, $KEYWORDs and $TOOLs
- on a single line, split them with commas.
- - [Fabian Keil brought this change]
- runtests.pl: add -L parameter to require additional perl libraries
-
- This is useful to change the behaviour of the script without
- having to modify the file itself, for example to use a custom
- compareparts() function that ignores header differences that
- are expected to occur when an external proxy is being used.
-
- Such differences are proxy-specific and thus the modifications
- should be maintained together with the proxy.
- - [Fabian Keil brought this change]
- runtests.pl: add a -P option to specify an external proxy
-
- ... that should be used when executing the tests.
-
- The assumption is that the proxy is an HTTP proxy.
-
- This option should be used together with -L to provide
- a customized compareparts() version that knows which
- proxy-specific header differences should be ignored.
-
- This option doesn't work for all test types yet.
- - [Fabian Keil brought this change]
- tests: fixup several tests
-
- missing CRs and modified %hostip
-
- lib556/test556: use a real HTTP version to make test reuse more convenient
-
- make sure the weekday in Date headers matches the date
-
- test61: replace stray "^M" (5e 4d) at the end of a cookie with a '^M' (0d)
-
- Gets the test working with external proxies like Privoxy again.
-
- Closes #6463
- - ftp: never set data->set.ftp_append outside setopt
-
- Since the set value then risks getting used like that when the easy
- handle is reused by the application.
-
- Also: renamed the struct field from 'ftp_append' to 'remote_append'
- since it is also used for SSH protocols.
-
- Closes #6579
- - urldata: remove the 'rtspversion' field
-
- from struct connectdata and the corresponding code in http.c that set
- it. It was never used for anything!
-
- Closes #6581
- - CURLOPT_QUOTE.3: clarify that libcurl doesn't parse what's sent
-
- ... so passed in commands may confuse libcurl's knowledge of state.
-
- Reported-by: Bodo Bergmann
- Fixes #6577
- Closes #6580
- - [Jacob Hoffman-Andrews brought this change]
- vtls: factor out Curl_ssl_getsock to field of Curl_ssl
-
- Closes #6558
- - RELEASE-PROCEDURE: remove old release dates, add new
- - docs/SSL-PROBLEMS: enhanced
-
- Elaborate on the intermediate cert issue, and mention that anything
- below TLS 1.2 is generally considered insecure these days.
-
- Closes #6572
- - THANKS: remove a Jon Rumsey dupe
- Daniel Gustafsson (5 Feb 2021)
- - [nimaje brought this change]
- docs: fix FILE example url in --metalink documentation
-
- In a url after <scheme>:// follows the possibly empty authority part
- till the next /, so that url missed a /.
-
- Closes #6573
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
- Daniel Stenberg (5 Feb 2021)
- - hostip: fix build with sync resolver
-
- Reported-by: David Goerger
- Follow-up from 8335c6417
- Fixes #6566
- Closes #6568
- - mailmap: Jon Rumsey
- - [Jon Rumsey brought this change]
- gskit: correct the gskit_send() prototype
-
- gskit_send() first paramater is a pointer to Curl_easy not connectdata
- struct.
-
- Closes #6570
- Fixes #6569
- - urldata: fix build without HTTP and MQTT
-
- Reported-by: Joseph Chen
- Fixes #6562
- Closes #6563
- - ftp: avoid SIZE when asking for a TYPE A file
-
- ... as we ignore it anyway because servers don't report the correct size
- and proftpd even blatantly returns a 550.
-
- Updates a set of tests accordingly.
-
- Reported-by: awesomenode on github
- Fixes #6564
- Closes #6565
- - pingpong: rename the curl_pp_transfer enum to use PP prefix
-
- Using an FTP prefix for PP provided functionality was misleading.
- - RELEASE-NOTES: synced
-
- ... and bump pending version to 7.75.1 (for now)
- Jay Satiro (4 Feb 2021)
- - build: fix --disable-http-auth
-
- Broken since 215db08 (precedes 7.75.0).
-
- Reported-by: Benbuck Nason
-
- Fixes https://github.com/curl/curl/issues/6567
- - build: fix --disable-dateparse
-
- Broken since 215db08 (precedes 7.75.0).
-
- Bug: https://curl.se/mail/lib-2021-02/0008.html
- Reported-by: Firefox OS
- Daniel Stenberg (4 Feb 2021)
- - [Jon Rumsey brought this change]
- OS400: update for CURLOPT_AWS_SIGV4
-
- chkstrings fails because a new string option that could require codepage
- conversion has been added.
-
- Closes #6561
- Fixes #6560
- - BUG-BOUNTY: removed the cooperation mention
- Version 7.75.0 (3 Feb 2021)
- Daniel Stenberg (3 Feb 2021)
- - RELEASE-NOTES: synced
- - THANKS: added contributors from 7.75.0
- - copyright: fix year ranges in need of updates
- - TODO: remove items for next SONAME bump etc
-
- We want to avoid that completely, so we don't plan for things after such
- an event.
- - [Jay Satiro brought this change]
- ngtcp2: Fix build error due to change in ngtcp2_settings
-
- - Separate ngtcp2_transport_params.
-
- ngtcp2/ngtcp2@05d7adc made ngtcp2_transport_params separate from
- ngtcp2_settings.
-
- ngtcp2 master is required to build curl with http3 support.
-
- Closes #6554
- - vtls: remove md5sum
-
- As it is not used anymore.
-
- Reported-by: Jacob Hoffman-Andrews
- Bug: https://curl.se/mail/lib-2021-02/0000.html
-
- Closes #6557
- - [Alessandro Ghedini brought this change]
- quiche: don't use primary_ip / primary_port
-
- Closes #6555
- Alessandro Ghedini (1 Feb 2021)
- - travis: enable quiche's FFI feature
- Daniel Stenberg (30 Jan 2021)
- - [Dmitry Wagin brought this change]
- http: improve AWS HTTP v4 Signature auth
-
- - Add support services without region and service prefixes in
- the URL endpoint (ex. Min.IO, GCP, Yandex Cloud, Mail.Ru Cloud Solutions, etc)
- by providing region and service parameters via aws-sigv4 option.
- - Add [:region[:service]] suffix to aws-sigv4 option;
- - Fix memory allocation errors.
- - Refactor memory management.
- - Use Curl_http_method instead() STRING_CUSTOMREQUEST.
- - Refactor canonical headers generating.
- - Remove repeated sha256_to_hex() usage.
- - Add some docs fixes.
- - Add some codestyle fixes.
- - Add overloaded strndup() for debug - curl_dbg_strndup().
- - Update tests.
-
- Closes #6524
- - hyper: fix CONNECT to set 'data' as userdata
-
- Follow-up to 14e075d1a7fd
- - [Layla brought this change]
- connect: fix compile errors in `Curl_conninfo_local`
-
- .. for the `#else` (`!HAVE_GETSOCKNAME`) case
-
- Fixes https://github.com/curl/curl/issues/6548
- Closes #6549
-
- Signed-off-by: Layla <layla@insightfulvr.com>
- - [Michał Antoniak brought this change]
- transfer: fix GCC 10 warning with flag '-Wint-in-bool-context'
-
- ... and return the error code from the Curl_mime_rewind call.
-
- Closes #6537
- - [Michał Antoniak brought this change]
- avoid warning: enum constant in boolean context
- - copyright: fix missing year (range) updates
- - RELEASE-NOTES: synced
- - openssl: lowercase the hostname before using it for SNI
-
- ... because it turns out several servers out there don't actually behave
- correctly otherwise in spite of the fact that the SNI field is
- specifically said to be case insensitive in RFC 6066 section 3.
-
- Reported-by: David Earl
- Fixes #6540
- Closes #6543
- - KNOWN_BUGS: cmake: ExternalProject_Add does not set CURL_CA_PATH
-
- Closes #6313
- - KNOWN_BUGS: Multi perform hangs waiting for threaded resolver
-
- Closes #4852
- - KNOWN_BUGS: "pulseUI VPN client" is known to be buggy
-
- First entry in the new section "applications" for known problems in
- libcurl using applications.
-
- Closes #6306
- - tool_writeout: make %{errormsg} blank for no errors
-
- Closes #6539
- Jay Satiro (27 Jan 2021)
- - [Gisle Vanem brought this change]
- build: fix djgpp builds
-
- - Update build instructions in packages/DOS/README
-
- - Extend 'VPATH' with 'vquic' and 'vssh'.
-
- - Allow 'Makefile.dist' to build both 'lib' and 'src'.
-
- - Allow using the Windows hosted djgpp cross compiler to build for MSDOS
- under Windows.
-
- - 'USE_SSL' -> 'USE_OPENSSL'
-
- - Added a 'link_EXE' macro. Etc, etc.
-
- - Linking 'curl.exe' needs '$(CURLX_CFILES)' too.
-
- - Do not pick-up '../lib/djgpp/*.o' files. Recompile locally.
-
- - Generate a gzipped 'tool_hugehelp.c' if 'USE_ZLIB=1'.
-
- - Remove 'djgpp-clean'
-
- - Adapt to new C-ares directory structure
-
- - Use conditional variable assignments
-
- Clarify the 'conditional variable assignment' in 'common.dj'.
-
- Closes https://github.com/curl/curl/pull/6382
- Daniel Stenberg (27 Jan 2021)
- - [Ikko Ashimine brought this change]
- hyper: fix typo in c-hyper.c
-
- settting -> setting
-
- Closes #6538
- - libssh2: fix CURL_LIBSSH2_DEBUG-enabled build
-
- Follow-up to 2dcc940959772a
-
- Reported-by: Gisle Vanem
- Bug: https://github.com/curl/curl/commit/2dcc940959772a652f6813fb6bd3092095a4877b#commitcomment-46420088
- Jay Satiro (27 Jan 2021)
- - asyn-thread: fix build for when getaddrinfo missing
-
- This is a follow-up to 8315343 which several days ago moved the resolver
- pointer into the async struct but did not update the code that uses it
- when getaddrinfo is not present.
-
- Closes https://github.com/curl/curl/pull/6536
- Daniel Stenberg (27 Jan 2021)
- - urldata: move 'ints' to the end of 'connectdata'
-
- To optimize storage slightly.
-
- Closes #6534
- - urldata: store ip version in a single byte
-
- Closes #6534
- - urldata: remove duplicate 'upkeep_interval_ms' from connectdata
-
- ... and rely only on the value already set in Curl_easy.
-
- Closes #6534
- - urldata: remove 'local_ip' from the connectdata struct
-
- As the info is already stored in the transfer handle anyway, there's no
- need to carry around a duplicate buffer for the life-time of the handle.
-
- Closes #6534
- - urldata: remove duplicate port number storage
-
- ... and use 'int' for ports. We don't use 'unsigned short' since -1 is
- still often used internally to signify "unknown value" and 0 - 65535 are
- all valid port numbers.
-
- Closes #6534
- - urldata: remove the duplicate 'ip_addr_str' field
-
- ... as the numerical IP address is already stored and kept in 'primary_ip'.
-
- Closes #6534
- - select: convert Curl_select() to private static function
-
- The old function should not be used anywhere anymore (the only remaining
- gskit use has to be fixed to instead use Curl_poll or none at all).
-
- The static function version is now called our_select() and is only built
- if necessary.
-
- Closes #6531
- - Curl_chunker: shrink the struct
-
- ... by removing a field, converting the hex index into a byte and
- rearranging the order. Cuts it down from 48 bytes to 32 on x86_64.
-
- Closes #6527
- - curl: include the file name in --xattr/--remote-time error msgs
- - curl: s/config->global/global/ in single_transfer()
- - curl: move fprintf outputs to warnf
-
- For setting and getting time of the download. To make the outputs
- respect --silent etc.
-
- Reported-by: Viktor Szakats
- Fixes #6533
- Closes #6535
- - [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: Fix http3 upload stall
-
- Closes #6521
- - [Tatsuhiro Tsujikawa brought this change]
- ngtcp2: Fix stack buffer overflow
-
- Closes #6521
- - warnless.h: remove the prototype for curlx_ultosi
-
- Follow-up to 217552503ff3
- - warnless: remove curlx_ultosi
-
- ... not used anywhere
-
- Closes #6530
- - [Patrick Monnerat brought this change]
- lib: remove conn->data uses
-
- Closes #6515
- - pingpong: remove the 'conn' struct member
-
- ... as it's superfluous now when Curl_easy is passed in and we can
- derive the connection from that instead and avoid the duplicate copy.
-
- Closes #6525
- - hostip/proxy: remove conn->data use
-
- Closes #6513
- - url: reduce conn->data references
-
- ... there are a few left but let's keep them to last
-
- Closes #6512
- - scripts/singleuse: add curl_easy_option*
- Jay Satiro (25 Jan 2021)
- - test410: fix for windows
-
- - Pass the very long request header via file instead of command line.
-
- Prior to this change the 49k very long request header string was passed
- via command line and on Windows that is too long so it was truncated and
- the test would fail (specifically msys CI).
-
- Closes https://github.com/curl/curl/pull/6516
- Daniel Stenberg (25 Jan 2021)
- - libssh2: move data from connection object to transfer object
-
- Readdir data, filenames and attributes are strictly related to the
- transfer and not the connection. This also reduces the total size of the
- fixed connectdata struct.
-
- Closes #6519
- - RELEASE-NOTES: synced
- - [Patrick Monnerat brought this change]
- lib: remove conn->data uses
-
- Closes #6499
- - hyper: remove the conn->data references
-
- Closes #6508
- - travis: build ngtcp2 --with-gnutls
-
- ... since they disable it by default since a few days back.
-
- Closes #6506
- Fixes #6493
- - hostip: remove conn->data from resolver functions
-
- This also moves the 'async' struct from the connectdata struct into the
- Curl_easy struct, which seems like a better home for it.
-
- Closes #6497
- Jay Satiro (22 Jan 2021)
- - strerror: skip errnum >= 0 assertion on windows
-
- On Windows an error number may be greater than INT_MAX and negative once
- cast to int.
-
- The assertion is checked only in debug builds.
-
- Closes https://github.com/curl/curl/pull/6504
- Daniel Stenberg (21 Jan 2021)
- - doh: make Curl_doh_is_resolved survive a NULL pointer
-
- ... if Curl_doh() returned a NULL, this function gets called anyway as
- in a asynch procedure. Then the doh struct pointer is NULL and signifies
- an OOM situation.
-
- Follow-up to 6246a1d8c6776
- - wolfssh: remove conn->data references
-
- ... and repair recent build breakage
-
- Closes #6507
- - http: empty reply connection are not left intact
-
- ... so mark the connection as closed in this condition to prevent that
- verbose message to wrongly appear.
-
- Reported-by: Matt Holt
- Bug: https://twitter.com/mholt6/status/1352130240265375744
- Closes #6503
- - chunk/encoding: remove conn->data references
-
- ... by anchoring more functions on Curl_easy instead of connectdata
-
- Closes #6498
- Jay Satiro (20 Jan 2021)
- - [Erik Olsson brought this change]
- lib: save a bit of space with some structure packing
-
- - Reorder some internal struct members so that less padding is used.
-
- This is an attempt at saving a bit of space by packing some structs
- (using pahole to find the holes) where it might make sense to do
- so without losing readability.
-
- I.e., I tried to avoid separating fields that seem grouped
- together (like the cwd... fields in struct ftp_conn for instance).
- Also abstained from touching fields behind conditional macros as
- that quickly can get complicated.
-
- Closes https://github.com/curl/curl/pull/6483
- Daniel Stenberg (20 Jan 2021)
- - INSTALL.md: fix typo
-
- Found-by: Marcel Raad
- - [Fabian Keil brought this change]
- http: get CURLOPT_REQUEST_TARGET working with a HTTP proxy
-
- Added test 1613 to verify.
-
- Closes #6490
- - Merge branch 'bagder/curl_range-data-conn'
- - ftp: remove conn->data leftover
- - curl_range: remove conn->data
-
- Closes #6496
- - INSTALL: now at 85 operating systems
- - quiche: fix unused parameter ‘conn’
-
- Follow-up to 2bdec0b3
- - transfer: fix ‘conn’ undeclared mistake for iconv build
-
- Follow-up to 219d9f8620d
- - doh: allocate state struct on demand
-
- ... instead of having it static within the Curl_easy struct. This takes
- away 1176 bytes (18%) from the Curl_easy struct that aren't used very
- often and instead makes the code allocate it when needed.
-
- Closes #6492
- - socks: use the download buffer instead
-
- The SOCKS code now uses the generic download buffer for temporary
- storage during the connection procedure, instead of having its own
- private 600 byte buffer that adds to the connectdata struct size. This
- works fine because this point the buffer is allocated but is not use for
- download yet since the connection hasn't completed.
-
- This reduces the connection struct size by 22% on a 64bit arch!
-
- The SOCKS buffer needs to be at least 600 bytes, and the download buffer
- is guaranteed to never be smaller than 1000 bytes.
-
- Closes #6491
- - urldata: make magic be the first struct field
-
- By making the `magic` identifier the same size and at the same place
- within the structs (easy, multi, share), libcurl will be able to more
- reliably detect and safely error out if an application passes in the
- wrong handle to APIs. Easier to detect and less likely to cause crashes
- if done.
-
- Such mixups can't be detected at compile-time due to them being
- typedefed void pointers - unless `CURL_STRICTER` is defined.
-
- Closes #6484
- - http_chunks: correct and clarify a comment on hexnumber length
-
- ... and also rename the define for max length.
-
- Closes #6489
- - curl_path: remove conn->data use
-
- Closes #6487
- - transfer: remove conn->data use
-
- Closes #6486
- - quic: remove conn->data use
-
- Closes #6485
- - [Fabian Keil brought this change]
- Add test1181: Proxy request with --proxy-header "Connection: Keep-Alive"
- - [Fabian Keil brought this change]
- Add test1180: Proxy request with -H "Proxy-Connection: Keep-Alive"
-
- At the moment the test fails as curl sends two Proxy-Connection
- headers.
- - c-hyper: avoid duplicated Proxy-Connection headers
- - http: make providing Proxy-Connection header not cause duplicated headers
-
- Fixes test 1180
-
- Bug: https://curl.se/mail/lib-2021-01/0095.html
- Reported-by: Fabian Keil
- Closes #6472
- - runtests: preprocess DISABLED to allow conditionals
-
- ... with this function provided, we can disable tests for specific
- environments and setups directly within this file.
-
- Closes #6477
- - runtests: turn preprocessing into a separate function
-
- ... and remove all other variable substitutions as they're now done once
- and for all in the preprocessor.
- - lib/Makefile.inc: convert to listing each file on its own line
-
- ... to make it diff friendlier and easier to read.
-
- Closes #6448
- - ftplistparser: remove use of conn->data
-
- Closes #6482
- - lib: more conn->data cleanups
-
- Closes #6479
- - [Patrick Monnerat brought this change]
- vtls: reduce conn->data use
-
- Closes #6474
- - hyper: deliver data to application with Curl_client_write
-
- ... just as the native code path does. Avoids sending too large data
- chunks in the callback and more.
-
- Reported-by: Gisle Vanem
- Fixes #6462
- Closes #6473
- - gopher: remove accidental conn->data leftover
|