CHANGES.0 665 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627
  1. _ _ ____ _
  2. ___| | | | _ \| |
  3. / __| | | | |_) | |
  4. | (__| |_| | _ <| |___
  5. \___|\___/|_| \_\_____|
  6. Old Changelog
  7. Changes done to curl and libcurl from 1997 to 2008. The most recent changes are
  8. always kept in the CHANGES file.
  9. Version 7.19.2 (13 November 2008)
  10. Michal Marek (13 Nov 2008)
  11. - Fixed a potential data loss in Curl_client_write() when the transfer is
  12. paused.
  13. Daniel Stenberg (11 Nov 2008)
  14. - Rainer Canavan filed bug #2255627
  15. (http://curl.haxx.se/bug/view.cgi?id=2255627) which pointed out that a
  16. program using libcurl's multi interface to download a HTTPS page with a
  17. libcurl built powered by OpenSSL, would easily get silly and instead hand
  18. over SSL details as data instead of the actual HTTP headers and body. This
  19. happened because libcurl would consider the connection handshake done too
  20. early. This problem was introduced at September 22nd 2008 with my fix of the
  21. bug #2107377
  22. The correct fix is now instead done within the GnuTLS-handling code, as both
  23. the OpenSSL and the NSS code already deal with this situation in similar
  24. fashion. I added test case 560 in an attempt to verify this fix, but
  25. unfortunately it didn't trigger it even before this fix!
  26. Yang Tse (11 Nov 2008)
  27. - Related with bug #2230535 (http://curl.haxx.se/bug/view.cgi?id=2230535)
  28. Daniel Fandrich noticed that curl_addrinfo was also missing in the build
  29. process of other four non-configure platforms. Added now.
  30. Daniel Fandrich (7 Nov 2008)
  31. - The getifaddrs() version of Curl_if2ip() crashed when used on a Linux
  32. system with a TEQL load-balancing device configured, which doesn't
  33. have an address. Thanks to Adam Sampson for spotting this (bug #2234923).
  34. Yang Tse (6 Nov 2008)
  35. - Merged existing IPv4 and IPv6 Curl_ip2addr functions into a single one
  36. which now also takes a protocol address family argument.
  37. - Bug #2230535 (http://curl.haxx.se/bug/view.cgi?id=2230535) pointed out a
  38. problem with MSVC 6 makefile that caused a build failure. It was noted that
  39. the curl_addrinfo.obj reference was missing. I took the opportunity to sort
  40. the list in which this was missing. Issue submitted by John Wilkinson.
  41. Version 7.19.1 (5 November 2008)
  42. Daniel Stenberg (4 Nov 2008)
  43. - CURLINFO_FILETIME now works for file:// transfers as well
  44. Daniel Stenberg (3 Nov 2008)
  45. - Bug #2218480 (http://curl.haxx.se/bug/view.cgi?id=2218480) pointed out a
  46. problem with my CURLINFO_PRIMARY_IP fix from October 7th that caused a NULL
  47. pointer read. I also took the opportunity to clean up this logic (storing of
  48. the connection's IP address) somewhat as we had it stored in two different
  49. places and ways previously and they are now unified.
  50. Yang Tse (3 Nov 2008)
  51. - Fix undersized IPv6 address internal buffer. IPv6 address strings longer
  52. than 35 characters would be truncated.
  53. Daniel Stenberg (2 Nov 2008)
  54. - Daniel Johnson reported and fixed:
  55. When c-ares isn't enabled, libcurl by default calls getaddrinfo with family
  56. set to PF_UNSPEC which causes getaddrinfo to return all available addresses,
  57. both IPv4 and IPv6. Libcurl then tries each one until it can connect. If the
  58. net connection doesn't support IPv6, libcurl can still fall back to IPv4.
  59. However, since c-ares doesn't support PF_UNSPEC, when it's used it defaults
  60. to using family=PF_INET6 and therefore only returns IPv6 addresses when AAAA
  61. records are available, even if IPv4 addresses are also available. The effect
  62. is that since my ISP doesn't do IPv6, libcurl can't connect at all to a site
  63. that has AAAA records. It will work if I explicitly use CURL_IPRESOLVE_V4 or
  64. --ipv4 with the curl tool. I discovered this when curl would fail to connect
  65. to seemingly random sites. It turns out they weren't random, they were sites
  66. with AAAA records.
  67. So now libcurl defaults to PF_INET... until c-ares has been tought to offer
  68. both.
  69. Yang Tse (31 Oct 2008)
  70. - Tests 558 and 559 are stabilized. These two tests were initially introduced
  71. to aid in the location of a seg-fault which was only triggered on non-debug
  72. builds done with the icc 9.1 Intel compiler. Test 558 does not trigger the
  73. problem, but test 559 does trigger it. As of today, it isn't yet absolutely
  74. clear if it is a compiler optimizer issue or a memory corruption one.
  75. Yang Tse (30 Oct 2008)
  76. - Use our Curl_addrinfo structure definition to handle address info data even
  77. when a system addrinfo struct is available. Provide and use a wrapper around
  78. systems getaddrinfo function, Curl_getaddrinfo_ex which returns a pointer to
  79. a list of dynamically allocated Curl_addrinfo structs.
  80. Configure will check freeaddrinfo and getaddrinfo functions and define
  81. preprocessor symbols HAVE_FREEADDRINFO and HAVE_GETADDRINFO when appropriate.
  82. Daniel Fandrich (29 Oct 2008)
  83. - Fixed a bug that caused a few bytes of garbage to be sent after a
  84. curl_easy_pause() during a chunky upload. Reported by Steve Roskowski.
  85. Daniel Fandrich (28 Oct 2008)
  86. - Changed the "resolve" test precheck program to verify that an IPv6 socket
  87. can be created before resolving the IPv6 name. In the context of running
  88. a test, it doesn't make sense to run an IPv6 test when a host is resolvable
  89. but IPv6 isn't usable. This should fix failures of test 1085 on hosts with
  90. library and DNS support for IPv6 but where actual use of IPv6 has been
  91. administratively disabled.
  92. Daniel Fandrich (24 Oct 2008)
  93. - Added experimental support for zlib and OpenSSL on Symbian OS.
  94. Daniel Fandrich (21 Oct 2008)
  95. - Fixed some problems with SFTP range support to fix test cases 634 through
  96. 637.
  97. Daniel Fandrich (17 Oct 2008)
  98. - Fixed a compile error reported by Albert Chin on AIX and IRIX when using
  99. GTLS.
  100. Daniel Stenberg (16 Oct 2008)
  101. - Igor Novoseltsev added CURLOPT_PROXYUSER and CURLOPT_PROXYPASSWORD that then
  102. make CURLOPT_PROXYUSERPWD sort of deprecated. The primary motive for adding
  103. these new options is that they have no problems with the colon separator
  104. that the CURLOPT_PROXYUSERPWD option does.
  105. Daniel Stenberg (15 Oct 2008)
  106. - Pascal Terjan filed bug #2154627
  107. (http://curl.haxx.se/bug/view.cgi?id=2154627) which pointed out that libcurl
  108. uses strcasecmp() in multiple places where it causes failures when the
  109. Turkish locale is used. This is because 'i' and 'I' isn't the same letter so
  110. strcasecmp() on those letters are different in Turkish than in English (or
  111. just about all other languages). I thus introduced a totally new internal
  112. function in libcurl (called Curl_raw_equal) for doing case insentive
  113. comparisons for english-(ascii?) style strings that thus will make "file"
  114. and "FILE" match even if the Turkish locale is selected.
  115. Daniel Fandrich (15 Oct 2008)
  116. - A <precheck> command is considered to have failed if it returns a non-zero
  117. return code. This way, if the precheck command can't be run at all for
  118. whatever reason, it's treated as a precheck failure which causes the
  119. test to be skipped.
  120. Daniel Stenberg (15 Oct 2008)
  121. - John Wilkinson filed bug #2155496
  122. (http://curl.haxx.se/bug/view.cgi?id=2155496) pointing out an error case
  123. without a proper human-readable error message. When a read callback returns
  124. a too large value (like when trying to return a negative number) it would
  125. trigger and the generic error message then makes the proplem slightly
  126. different to track down. I've added an error message for this now.
  127. Daniel Fandrich (9 Oct 2008)
  128. - Fixed the --interface option to work with IPv6 connections on glibc
  129. systems supporting getifaddrs(). Also fixed a problem where an IPv6
  130. address could be chosen instead of an IPv4 one for --interface when it
  131. involved a name lookup.
  132. Daniel Fandrich (8 Oct 2008)
  133. - Added tests 1082 through 1085 to test symbolic --interface parameters
  134. - Added tests 633 through 637 to test the new file range support for SFTP.
  135. All but the first test cause an infinite loop or other failure and so
  136. are added to DISABLED.
  137. Daniel Stenberg (8 Oct 2008)
  138. - John Wilkinson filed bug #2152270
  139. (http://curl.haxx.se/bug/view.cgi?id=2152270) which identified and fixed a
  140. CURLINFO_REDIRECT_URL memory leak and an additional wrong-doing:
  141. Any subsequent transfer with a redirect leaks memory, eventually crashing
  142. the process potentially.
  143. Any subsequent transfer WITHOUT a redirect causes the most recent redirect
  144. that DID occur on some previous transfer to still be reported.
  145. - Igor Novoseltsev filed bug #2111613
  146. (http://curl.haxx.se/bug/view.cgi?id=2111613) that eventually identified a
  147. flaw in how the multi_socket interface in some cases missed to call the
  148. timeout callback when easy interfaces are removed and added within the same
  149. millisecond.
  150. - Igor Novoseltsev brought a patch that introduced two new options to
  151. curl_easy_setopt: CURLOPT_USERNAME and CURLOPT_PASSWORD that sort of
  152. deprecates the good old CURLOPT_USERPWD since they allow applications to set
  153. the user name and password independently and perhaps more importantly allow
  154. both to contain colon(s) which CURLOPT_USERPWD doesn't fully support.
  155. Daniel Fandrich (7 Oct 2008)
  156. - Changed the handling of read/write errors in Curl_perform() to allow a
  157. a fresh connection to be made in such cases and the request retransmitted.
  158. This should fix test case 160. Added test case 1079 in an attempt to
  159. test a similar connection dropping scenario, but as a race condition, it's
  160. hard to test reliably.
  161. - Created test cases 1080 and 1081 to reproduce a problem of
  162. CURLINFO_REDIRECT_URL leaking memory and returning incorrect results when
  163. two URLs are requested. Reported by vmpdemo in bug #2152270
  164. Daniel Stenberg (7 Oct 2008)
  165. - Fixed CURLINFO_PRIMARY_IP: When libcurl created a connection to host A then
  166. the app re-used the handle to do a connection to host B and then again
  167. re-used the handle to host A, it would not update the info with host A's IP
  168. address (due to the connection being re-used) but it would instead report
  169. the info from host B.
  170. Yang Tse (7 Oct 2008)
  171. - Added --enable-optimize configure option to enable and disable compiler
  172. optimizations to allow decoupled setting from --enable-debug.
  173. Yang Tse (2 Oct 2008)
  174. - Added --enable-warnings configure option to enable and disable strict
  175. compiler warnings to allow decoupled setting from --enable-debug.
  176. runtests.pl will now run with picky compiler warnings enabled unless
  177. explicitly disabled.
  178. Daniel Fandrich (1 Oct 2008)
  179. - "make clean" now cleans out the docs and tests directories, too.
  180. Daniel Stenberg (30 Sep 2008)
  181. - The libcurl FTP code now returns CURLE_REMOTE_FILE_NOT_FOUND error when SIZE
  182. gets a 550 response back for the cases where a download (or NOBODY) is
  183. wanted. It still allows a 550 as response if the SIZE is used as part of an
  184. upload process (like if resuming an upload is requested and the file isn't
  185. there before the upload). I also modified the FTP test server and a few test
  186. cases accordingly to match this modified behavior.
  187. Daniel Stenberg (29 Sep 2008)
  188. - Daniel Egger provided a patch that allows you to disable proxy support in
  189. libcurl to somewhat reduce the size of the binary. Run configure
  190. --disable-proxy.
  191. Daniel Fandrich (29 Sep 2008)
  192. - Moved all signal-based name resolution timeout handling into a single new
  193. Curl_resolv_timeout function to reduce coupling.
  194. Daniel Stenberg (29 Sep 2008)
  195. - Ian Lynagh provided a patch that now makes CURLOPT_RANGE work fine for SFTP
  196. downloads!
  197. - Maxim Ivanov filed bug report #2107803
  198. (http://curl.haxx.se/bug/view.cgi?id=2107803) "no CURLINFO_REDIRECT_URL in
  199. multi mode" together with a patch that fixed the problem.
  200. Daniel Stenberg (25 Sep 2008)
  201. - Emanuele Bovisio submitted bug report #2126435. We fixed the HTTP Digest
  202. auth code to not behave badly when getting a blank realm with
  203. realm="". http://curl.haxx.se/bug/view.cgi?id=2126435
  204. Daniel Fandrich (23 Sep 2008)
  205. - Make sure not to dereference the wrong UrlState proto union member when
  206. switching from one protocol to another in a single request (e.g.
  207. redirecting from HTTP to FTP as in test 1055) by resetting
  208. state.expect100header before every request.
  209. Daniel Stenberg (23 Sep 2008)
  210. - Introducing Jamie Lokier's function for date to epoch conversion used in the
  211. date parser function. This makes our function less dependent on system-
  212. provided functions and instead we do all the magic ourselves. We also no
  213. longer depend on the TZ environment variable. Switching to our own converter
  214. has some side-effect and they are noted here for future reference (taken
  215. from a mail by mr Lokier):
  216. time_t is not measured in seconds in the ANSI C standard - or even counted
  217. uniformly - weird platforms can use other numeric representations of dates
  218. in time_t - hence the difftime() function.
  219. On POSIX time_t is measured in UTC seconds, which means not including leap
  220. seconds. But it's mentioned in a few places that some old POSIX-ish
  221. environments include leap seconds in their time_t counts...
  222. I'm pretty sure [the new implementation is] correct on anything truly POSIX.
  223. And it's obviously a lot less dependent on platform quirks and corner cases
  224. in many ways than the mktime() version.
  225. - Rob Crittenden brought a patch to "add some locking for thread-safety to NSS
  226. implementation".
  227. Daniel Stenberg (22 Sep 2008)
  228. - Made the SOCKS code use the new Curl_read_plain() function to fix the bug
  229. Markus Moeller reported: http://curl.haxx.se/mail/archive-2008-09/0016.html
  230. - recv() errors other than those equal to EAGAIN now cause proper
  231. CURLE_RECV_ERROR to get returned. This made test case 160 fail so I've now
  232. disabled it until we can figure out another way to exercise that logic.
  233. - Michael Goffioul filed bug report #2107377 "Problem with multi + GnuTLS +
  234. proxy" (http://curl.haxx.se/bug/view.cgi?id=2107377) that showed how a multi
  235. interface using program didn't work when built with GnuTLS and a CONNECT
  236. request was done over a proxy (basically test 502 over a proxy to a HTTPS
  237. site). It turned out the ssl connect function would get called twice which
  238. caused the second call to fail.
  239. Daniel Fandrich (22 Sep 2008)
  240. - Fixed test 539 to handle an out of memory condition that shows up now
  241. that memdebug.h is included in the test programs.
  242. Yang Tse (20 Sep 2008)
  243. - Fix regression in configure script which affected OpenSSL builds on MSYS.
  244. Yang Tse (19 Sep 2008)
  245. - configure script now checks availability of the alarm() function.
  246. Daniel Fandrich (18 Sep 2008)
  247. - Don't bother to install a SIGALRM handler unless alarm() is available.
  248. Also, leave the existing SIGALRM handler alone if the timeout is too small
  249. to handle.
  250. Daniel Fandrich (17 Sep 2008)
  251. - Removed reference to curl-ca-bundle.crt in the host verification failure
  252. error message.
  253. Yang Tse (17 Sep 2008)
  254. - Improve configure detection of gethostname(), localtime_r(), strstr(),
  255. getservbyport_r(), gethostbyaddr_r() and gethostbyname_r().
  256. Yang Tse (14 Sep 2008)
  257. - Improve configure detection of strcasecmp(), strcasestr(), strcmpi(),
  258. stricmp(), strlcat(), strncasecmp(), strncmpi() and strnicmp().
  259. Yang Tse (13 Sep 2008)
  260. - Disable tracking of fdopen() calls in the low-level memory leak tracking
  261. code when fdopen() is not available, to avoid compiler error.
  262. Yang Tse (12 Sep 2008)
  263. - Further adjust detection of strerror_r() in the configure process, and
  264. ensure that errno is not modified inside Curl_strerror().
  265. Yang Tse (10 Sep 2008)
  266. - Improve detection of gmtime_r(), strtoll(), sigaction(), strtok_r(),
  267. strdup() and ftruncate() in the configure process.
  268. Daniel Fandrich (9 Sep 2008)
  269. - Mike Revi discovered some swapped speed switches documented in the curl man
  270. page.
  271. - Checked in some documentation and code improvements and fixes that I
  272. discovered in the FreeBSD ports system.
  273. Daniel Stenberg (8 Sep 2008)
  274. - Dmitry Kurochkin patched a problem: I have found bug in pipelining through
  275. proxy. I have a transparent proxy. When running with http_proxy environment
  276. variable not set my test completes fine (it goes through transparent
  277. proxy). When I set http_proxy variable my test hangs after the first
  278. downloaded is complete. Looks like the second handle never gets out from
  279. WAITDO state.
  280. The fix: It makes checkPendPipeline move 1 handler from pend pipe to send
  281. pipe if pipelining is not supported by server but there are no handles in
  282. send and recv pipes.
  283. - Stefan Krause pointed out that libcurl would wrongly send away cookies to
  284. sites in cases where the cookie clearly has a very old expiry date. The
  285. condition was simply that libcurl's date parser would fail to convert the
  286. date and it would then count as a (timed-based) match. Starting now, a
  287. missed date due to an unsupported date format or date range will now cause
  288. the cookie to not match.
  289. Daniel Fandrich (5 Sep 2008)
  290. - Improved the logic that decides whether to use HTTP 1.1 features or not in a
  291. request. Setting a specific version with CURLOPT_HTTP_VERSION overrides
  292. all other checks, but otherwise, a 1.0 request will be made if the server
  293. is known to support only 1.0 because it previously responded so and the
  294. connection was kept alive, or a response to a previous request on this handle
  295. came back as 1.0. The latter could take place in cases like redirection or
  296. authentication where several requests have to be made before the operation
  297. is complete. If any one of the servers in a redirection chain supports only
  298. 1.0, then remaining requests will be sent in 1.0 mode.
  299. - Detect cases where an upload must be sent chunked and the server supports
  300. only HTTP 1.0 and return CURLE_UPLOAD_FAILED.
  301. Daniel Stenberg (5 Sep 2008)
  302. - Martin Drasar provided the CURLOPT_POSTREDIR patch. It renames
  303. CURLOPT_POST301 (but adds a define for backwards compatibility for you who
  304. don't define CURL_NO_OLDIES). This option allows you to now also change the
  305. libcurl behavior for a HTTP response 302 after a POST to not use GET in the
  306. subsequent request (when CURLOPT_FOLLOWLOCATION is enabled). I edited the
  307. patch somewhat before commit. The curl tool got a matching --post302
  308. option. Test case 1076 was added to verify this.
  309. - Introducing CURLOPT_CERTINFO and the corresponding CURLINFO_CERTINFO. By
  310. enabling this feature with CURLOPT_CERTINFO for a request using SSL (HTTPS
  311. or FTPS), libcurl will gather lots of server certificate info and that info
  312. can then get extracted by a client after the request has completed with
  313. curl_easy_getinfo()'s CURLINFO_CERTINFO option. Linus Nielsen Feltzing
  314. helped me test and smoothen out this feature.
  315. Unfortunately, this feature currently only works with libcurl built to use
  316. OpenSSL.
  317. This feature was sponsored by networking4all.com - thanks!
  318. - Dmitriy Sergeyev pointed out that curl_easy_pause() didn't unpause properly
  319. during certain conditions. I also changed this code to use realloc() based
  320. on Daniel Fandrich's suggestion.
  321. Guenter Knauf (4 Sep 2008)
  322. - MingW32 non-configure builds are now largefile feature enabled by default.
  323. NetWare LIBC builds are also now largefile feature enabled by default.
  324. Yang Tse (4 Sep 2008)
  325. - Several fixes related with print formatting string directives.
  326. Daniel Fandrich (3 Sep 2008)
  327. - Search for the FreeBSD CA cert file /usr/local/share/certs/ca-root.crt
  328. Daniel Fandrich (2 Sep 2008)
  329. - Fixed an out of memory problem that caused torture test failures in tests
  330. 706 and 707.
  331. Daniel Stenberg (2 Sep 2008)
  332. - Keith Mok added supported_protocols and supported_features to the pkg-config
  333. file for libcurl, and while doing that fix he unified with curl-config.in
  334. how the supported protocols and features are extracted and used, so both those
  335. tools should now always be synced.
  336. Version 7.19.0 (1 September 2008)
  337. Daniel Fandrich (29 Aug 2008)
  338. - Added tests 1071 through 1074 to test automatic downgrading from HTTP 1.1
  339. to HTTP 1.0 upon receiving a response from the HTTP server. Tests 1072
  340. and 1073 are similar to test 1069 in that they involve the impossible
  341. scenario of sending chunked data to a HTTP 1.0 server. All these fail
  342. and are added to DISABLED.
  343. - Added test 1075 to test --anyauth with Basic authentication.
  344. Daniel Stenberg (29 Aug 2008)
  345. - When libcurl was doing a HTTP POST and the server would respond with
  346. "Connection: close" and actually close the connection after the
  347. response-body, libcurl could still have outstanding data to send and it
  348. would not properly notice this and stop sending. This caused weirdness and
  349. sad faces. http://curl.haxx.se/bug/view.cgi?id=2080222
  350. Note that there are still reasons to consider libcurl's behavior when
  351. getting a >= 400 response code while sending data, as Craig Perras' note
  352. "http upload: how to stop on error" specifies:
  353. http://curl.haxx.se/mail/archive-2008-08/0138.html
  354. Daniel Stenberg (28 Aug 2008)
  355. - Dengminwen reported that libcurl would lock a (cookie) share twice (without
  356. an unlock in between) for a certain case and that in fact works when using
  357. regular windows mutexes but not with pthreads'! Locks should of course not
  358. get locked again so this is now fixed.
  359. http://curl.haxx.se/mail/lib-2008-08/0422.html
  360. - I'm abandoning the system with the web site mirrors (but keeping download
  361. files bing mirrored) and thus I've changed the URL in the cookiejar header
  362. to no longer use curlm.haxx.se but instead use the main site curl.haxx.se
  363. Daniel Fandrich (27 Aug 2008)
  364. - Fixed test case 1065 by changing the handling of CURLOPT_UPLOAD to set
  365. the HTTP method to GET (or HEAD) when given a value of 0.
  366. - Added test cases 1068 and 1069 to test a simple HTTP PUT from stdin. Test
  367. case 1069 fails in a similar manner to test 1065 so is added to DISABLED.
  368. Yang Tse (27 Aug 2008)
  369. - Fix generation of MS VC6 .dsp file to make it support compilation of either
  370. dynamic (DLL) or static (LIB) libcurl libraries in debug and release modes.
  371. Daniel Fandrich (26 Aug 2008)
  372. - Fixed out of memory problems that caused torture test failures in tests
  373. 1021 and 1067.
  374. Yang Tse (26 Aug 2008)
  375. - Added check and symbol definition for WIN32 file API usage in configure,
  376. supporting configure's --disable-largefile option for WIN32 targets also.
  377. - Non-configure systems which do not use config-win32.h configuration file,
  378. and want to use the WIN32 file API, must define USE_WIN32_LARGE_FILES or
  379. USE_WIN32_SMALL_FILES as appropriate in their own configuration files.
  380. Daniel Stenberg (23 Aug 2008)
  381. - Running 'make ca-firefox' in the root build dir will now run the new
  382. firefox-db2pem.sh conversion script that converts a local Firefox db of ca
  383. certs into PEM format, suitable for use with a OpenSSL or GnuTLS built
  384. libcurl.
  385. - Constantine Sapuntzakis fixed a bug when doing proxy CONNECT with the multi
  386. interface, and the proxy would send Connection: close during the
  387. authentication phase. http://curl.haxx.se/bug/view.cgi?id=2069047
  388. Daniel Fandrich (22 Aug 2008)
  389. - Fixed a problem when --dump-header - was given with more than one URL,
  390. which caused an error when the second header was dumped due to stdout
  391. being closed. Added test case 1066 to verify. Also fixed a potential
  392. problem where a closed file descriptor might be used for an upload
  393. when more than one URL is given.
  394. Yang Tse (22 Aug 2008)
  395. - Improved libcurl's internal curl_m*printf() functions integral data type
  396. size and signedness handling.
  397. - Internal adjustments to better select/differentiate when large/small file
  398. support is provided using WIN32 functions directly.
  399. Daniel Fandrich (20 Aug 2008)
  400. - Added an edited version of Vincent Le Normand's documentation of SFTP quote
  401. commands to the man pages.
  402. Daniel Stenberg (20 Aug 2008)
  403. - Phil Pellouchoud pointed out that the windows version of libcurl had a
  404. memory leak because it never called the OpenSSL function
  405. CRYPTO_cleanup_all_ex_data() as it was supposed to. This was because of a
  406. missing define in config-win32.h!
  407. Gisle Vanem (18 Aug 2008)
  408. - Updated lib/Makefile.Watcom with the option to use c-ares (USE_ARES=1).
  409. Yang Tse (18 Aug 2008)
  410. - Added test case 557 to verify libcurl's internal curl_m*printf() functions
  411. formatting functionality when handling signed and unsigned longs, as well as
  412. our curl_off_t data type.
  413. Yang Tse (17 Aug 2008)
  414. - OpenSSl enabled NetWare builds are changed to use the 'openssl' subdirectory
  415. when including the OpenSSL header files. This is the recommended setting, this
  416. prevents the undesired inclusion of header files with the same name as those
  417. of OpenSSL but which do not belong to the OpenSSL package. The visible change
  418. from previously released libcurl versions is that now OpenSSl enabled NetWare
  419. builds also define USE_OPENSSL in config files, and that OpenSSL header files
  420. must be located in a subdirectory named 'openssl'.
  421. Yang Tse (16 Aug 2008)
  422. - Library internal only C preprocessor macros FORMAT_OFF_T and FORMAT_OFF_TU
  423. remain in use as internal curl_off_t print formatting strings for the internal
  424. *printf functions which still cannot handle print formatting string directives
  425. such as "I64d", "I64u", and others available on MSVC, MinGW, Intel's ICC, and
  426. other DOS/Windows compilers.
  427. Daniel Fandrich (15 Aug 2008)
  428. - Added test case 1063 to test invalid long file ranges with file: URLs and
  429. 1064 to test multiple http PUTs.
  430. - Added test case 1065 to test a PUT with a single file but two URLs. This
  431. was discovered to be problematic while investigating an incident reported by
  432. Von back in May. curl in this case doesn't include a Content-Length: or
  433. Transfer-Encoding: chunked header which is illegal. This test case is
  434. added to DISABLED until a solution is found.
  435. Yang Tse (15 Aug 2008)
  436. - C preprocessor macros used internally and equally available externally which
  437. aid in the use of the curl_off_t data type are named: CURL_FORMAT_CURL_OFF_T,
  438. CURL_FORMAT_CURL_OFF_TU, CURL_SIZEOF_CURL_OFF_T, CURL_SUFFIX_CURL_OFF_T,
  439. CURL_SUFFIX_CURL_OFF_TU, CURL_OFF_T_C and CURL_OFF_TU_C.
  440. Yang Tse (13 Aug 2008)
  441. - The size of long is a build time characteristic and as such it is now recorded
  442. in curlbuild.h as CURL_SIZEOF_LONG. Definition now done from configure process
  443. and in CVS curlbuild.h.dist for non-configure systems.
  444. Daniel Fandrich (12 Aug 2008)
  445. - Fixed a buffer overflow problem in Curl_proxyCONNECT that could occur
  446. when a server responded with long headers and data. Luckily, the buffer
  447. overflowed into another unused buffer, so no actual harm was done.
  448. Added test cases 1060 and 1061 to verify.
  449. Daniel Stenberg (12 Aug 2008)
  450. - Andy Tsouladze fixed runtests.pl to not attempt to execute the stunnel
  451. _directory_ if that happened to appear in the path!
  452. Yang Tse (12 Aug 2008)
  453. - Added macros for minimum-width signed and unsigned curl_off_t integer
  454. constants CURL_OFF_T_C and CURL_OFF_TU_C. The clever double helper macro
  455. used internally to provide its functionality is thanks to Lars Nilsson.
  456. Daniel Fandrich (11 Aug 2008)
  457. - Fixed a boundary condition error in ftp_readresp() whereby a non-terminal
  458. line of a multiline FTP response whose last byte landed exactly at the end
  459. of the BUFSIZE-length buffer would be treated as the terminal response
  460. line. The following response code read in would then actually be the
  461. end of the previous response line, and all responses from then on would
  462. correspond to the wrong command. Test case 1062 verifies this.
  463. - Stop closing a never-opened ftp socket.
  464. Daniel Stenberg (11 Aug 2008)
  465. - Constantine Sapuntzakis filed bug report #2042430
  466. (http://curl.haxx.se/bug/view.cgi?id=2042430) with a patch. "NTLM Windows
  467. SSPI code is not thread safe". This was due to libcurl using static
  468. variables to tell wether to load the necessary SSPI DLL, but now the loading
  469. has been moved to the more suitable curl_global_init() call.
  470. - Constantine Sapuntzakis filed bug report #2042440
  471. (http://curl.haxx.se/bug/view.cgi?id=2042440) with a patch. He identified a
  472. problem when using NTLM over a proxy but the end-point does Basic, and then
  473. libcurl would do wrong when the host sent "Connection: close" as the proxy's
  474. NTLM state was erroneously cleared.
  475. Yang Tse (11 Aug 2008)
  476. - Added missing signed and unsigned curl_off_t integer constant suffixes for
  477. internal and external use. CURL_SUFFIX_CURL_OFF_T, CURL_SUFFIX_CURL_OFF_TU.
  478. Daniel Fandrich (7 Aug 2008)
  479. - Fixed an uninitialized variable in multi_runsingle() that could cause a
  480. request to prematurely end.
  481. - Added test1059 to test the FTP proxy tunnel problem fixed July 11.
  482. Yang Tse (7 Aug 2008)
  483. - Added curlbuild.h and curlrules.h header files to libcurl's public headers.
  484. File curlbuild.h is a generated file on configure-capable systems. This is
  485. a first step towards configure-based info in public headers. Currently only
  486. used to provide support for a curl_off_t data type which is not gated to
  487. off_t. Further details are documented inside these mentioned header files.
  488. - Fix CURL_CHECK_DEF so that when the expansion of the preprocessor symbol
  489. results in a set of double-quoted strings, this macro will now return an
  490. expansion which consists of a single double-quoted string as the result of
  491. concatenating all of them.
  492. - Skip data type check in DO_CURL_OFF_T_CHECK macro when argument is empty.
  493. - Adjusted testcurl.pl to copy checked out curlbuild.h.dist as curlbuild.h
  494. for non-configure targets when the host system doesn't run buildconf.bat.
  495. - Prevent buildconf from removing 'Makefile' and 'missing' files. This would
  496. blow away our CVS checked files 'missing' and 'hiper/Makefile'.
  497. - Remove adjustment done to testcurl.pl to verify if change introduced by
  498. Guenter Knauf in lib/Makefile.netware is enough to get the netware autobuilds
  499. going again.
  500. Yang Tse (5 Aug 2008)
  501. - Changes done to buildconf script. Validate that autom4te and autoconf, as
  502. well as aclocal and automake, versions match. Improve removal of previous
  503. run generated files. Remove verbose debug logging of aclocal on Solaris.
  504. Daniel Stenberg (5 Aug 2008)
  505. - Yehoshua Hershberg found a problem that would make libcurl re-use a
  506. connection with the multi interface even if a previous use of it caused a
  507. CURLE_PEER_FAILED_VERIFICATION to get returned. I now make sure that failed
  508. SSL connections properly close the connections.
  509. Daniel Stenberg (4 Aug 2008)
  510. - Test cases 1051, 1052 and 1055 were added by Daniel Fandrich on July 30 and
  511. proved how PUT and POST with a redirect could lead to a "hang" due to the
  512. data stream not being rewound properly when it had to in order to get sent
  513. properly (again) to the subsequent URL. This is now fixed and these test
  514. cases are no longer disabled.
  515. Yang Tse (4 Aug 2008)
  516. - Autoconf 2.62 has changed the behaviour of the AC_AIX macro which we use.
  517. Prior versions of autoconf defined _ALL_SOURCE if _AIX was defined. 2.62
  518. version of AC_AIX defines _ALL_SOURCE and other four preprocessor symbols
  519. no matter if the system is AIX or not. To keep the traditional behaviour,
  520. and an uniform one across autoconf versions AC_AIX is replaced with our
  521. own internal macro CURL_CHECK_AIX_ALL_SOURCE.
  522. Daniel Stenberg (4 Aug 2008)
  523. - Test case 1041 (added by Daniel Fandrich July 14th) proved a bug where PUT
  524. with -C - sent garbage in the Content-Range: header. I fixed this problem by
  525. making sure libcurl always sets the size of the _entire_ upload if an app
  526. attemps to do resumed uploads since libcurl simply cannot know the size of
  527. what is currently at the server end. Test 1041 is no longer disabled.
  528. Yang Tse (2 Aug 2008)
  529. - No longer test availability of the gdi32 library, nor use it for linking, even
  530. when we have been doing this since revision 1.47 of configure.ac 4 years and
  531. 5 months ago when cross-compiling a Windows target. We actually don't use any
  532. function from the Windows GDI (Graphics Device Interface) related with drawing
  533. or graphics-related operations.
  534. Daniel Fandrich (1 Aug 2008)
  535. - Added support for --append on SFTP uploads. Unfortunately, OpenSSH doesn't
  536. support this so it goes untested.
  537. Yang Tse (1 Aug 2008)
  538. - Configure process now checks if the preprocessor _REENTRANT symbol is already
  539. defined. If it isn't currently defined a set of checks are performed to test
  540. if its definition is required to make visible to the compiler a set of *_r
  541. functions. Finally, if _REENTRANT is already defined or needed it takes care
  542. of making adjustments necessary to ensure that it is defined equally for the
  543. configure process tests and generated config file.
  544. - Removed definition of CURL_CHECK_WORKING_RESOLVER from acinclude.m4 it has
  545. not been in use since revision 1.81 of configure.in 6 years, 9 months ago.
  546. Daniel Fandrich (31 Jul 2008)
  547. - Fixed parsing of an IPv6 proxy address to support a scope identifier,
  548. as well as IPv4 addresses in IPv6 format. Also, better handle the case
  549. of a malformatted IPv6 address (avoid empty and NULL strings).
  550. - Fixed a problem with any FTP URL or any URLs containing an IPv6 address
  551. being mangled when passed to proxies when CURLOPT_PORT is also set
  552. (reported by Pramod Sharma).
  553. - User names embedded in proxy URLs without a password were parsed
  554. incorrectly--the host name is treated as part of the user name and the
  555. port number becomes the password. This can be observed in test 279
  556. (was KNOWN_ISSUE #54).
  557. Daniel Stenberg (30 Jul 2008)
  558. - Phil Blundell added the CURLOPT_ADDRESS_SCOPE option, as well as adjusted
  559. the URL parser to allow numerical IPv6-addresses to be specified with the
  560. scope given, as per RFC4007 - with a percent letter that itself needs to be
  561. URL escaped. For example, for an address of fe80::1234%1 the HTTP URL is:
  562. "http://[fe80::1234%251]/"
  563. - PHP's bug report #43158 (http://bugs.php.net/bug.php?id=43158) identifies a
  564. true bug in libcurl built with OpenSSL. It made curl_easy_getinfo() more or
  565. less always return 0 for CURLINFO_SSL_VERIFYRESULT because the function that
  566. would set it to something non-zero would return before the assign in almost
  567. all error cases. The internal variable is now set to non-zero from the start
  568. of the function only to get cleared later on if things work out fine.
  569. - Made the curl tool's -w option support the %{ssl_verify_result} variable
  570. Daniel Fandrich (30 Jul 2008)
  571. - Added test cases 1052 through 1055 to test uploading data from files
  572. during redirects. Test cases 1052 and 1055 show problems (maybe the same
  573. root cause as 1051) and are disabled.
  574. - Fixed a couple of buffer overflows in the MS-DOS port of the curl tool.
  575. Daniel Fandrich (29 Jul 2008)
  576. - Fixed --use-ascii to properly convert text files on Symbian OS, MS-DOS
  577. and OS/2.
  578. - Added test case 1051 to test Location: following with PUT, as reported
  579. by Ben Sutcliffe. The test when run manually shows a problem in curl
  580. so it's disabled.
  581. Daniel Fandrich (28 Jul 2008)
  582. - Fixed display of the interface bind address in the trace output when it's
  583. an IPv6 address.
  584. - Added test cases 1045 through 1049 as simple tests of --interface using the
  585. localhost interface.
  586. - Added test case 1050 to test --ftp-port with an IPv6 address
  587. Daniel Stenberg (26 Jul 2008)
  588. - David Bau filed bug report #2026240 "CURL_READFUNC_PAUSE leads to buffer
  589. overrun" (http://curl.haxx.se/bug/view.cgi?id=2026240) identifying two
  590. problems, and providing the fix for them:
  591. - CURL_READFUNC_PAUSE did in fact not pause the _sending_ of data that it is
  592. designed for but paused _receiving_ of data!
  593. - libcurl didn't internally set the read counter to zero when this return
  594. code was detected, which would potentially lead to junk getting sent to
  595. the server.
  596. Daniel Fandrich (26 Jul 2008)
  597. - Added test 1044 to test large file support in ftp with -I.
  598. - Eliminate a unnecessary socket creation in Curl_getaddrinfo for an IPv4
  599. address in an IPv6 capable libcurl.
  600. - Added feature in runtests.pl to select tests based on key word.
  601. Daniel Fandrich (23 Jul 2008)
  602. - Changed the long logfile elision code in runtests.pl to properly handle
  603. lines ending in \r.
  604. - Changed references to TRUE and FALSE in the curl_easy_setopt man page to
  605. 1 and zero, respectively, since TRUE and FALSE aren't part of the
  606. libcurl API.
  607. Daniel Stenberg (23 Jul 2008)
  608. - I went over the curl_easy_setopt man page and replaced most references to
  609. non-zero with the fixed value of 1. We should strive at making options
  610. support '1' for enabling them mentioned explicitly, as that then will allow
  611. us for to extend them in the future without breaking older programs.
  612. Possibly we should even introduce a fancy define to use instead of '1' all
  613. over...
  614. Yang Tse (21 Jul 2008)
  615. - Use the sreadfrom() wrapper to replace recvfrom() in our code.
  616. Yang Tse (20 Jul 2008)
  617. - when recvfrom prototype uses a void pointer for arguments 2, 5 or 6 this will
  618. now cause the definition, as appropriate, of RECVFROM_TYPE_ARG2_IS_VOID,
  619. RECVFROM_TYPE_ARG5_IS_VOID or RECVFROM_TYPE_ARG6_IS_VOID.
  620. Yang Tse (17 Jul 2008)
  621. - RECVFROM_TYPE_ARG2, RECVFROM_TYPE_ARG5 and RECVFROM_TYPE_ARG6 are now defined
  622. to the data type pointed by its respective argument and not the pointer type.
  623. Yang Tse (16 Jul 2008)
  624. - Configure process now checks availability of recvfrom() socket function and
  625. finds out its return type and the types of its arguments. Added definitions
  626. for non-configure systems config files, and introduced macro sreadfrom which
  627. will be used on udp sockets as a recvfrom() wrapper.
  628. Yang Tse (15 Jul 2008)
  629. - Added description/comment to include paths used in several Makefile.am files.
  630. Added automake option nostdinc to test servers makefile and modified libcurl
  631. external headers include path for libtest programs.
  632. Daniel Fandrich (14 Jul 2008)
  633. - Added test1040 through test1043 to test -C - on HTTP. Test 1041 failed so
  634. it's added to DISABLED.
  635. Yang Tse (14 Jul 2008)
  636. - HTTP_ONLY definition check in lib/setup.h is now done once that configuration
  637. file has been included. In this way if symbol is defined in the config file
  638. it will no longer be ignored. Removed inclusion of remaining system header
  639. files from configuration files. Moved _REENTRANT definition up/earlier in
  640. lib/setup.h
  641. Yang Tse (11 Jul 2008)
  642. - Added missing multiple header inclusion prevention definition for header
  643. file content_encoding.h
  644. Daniel Fandrich (11 Jul 2008)
  645. - Fixed test 553 to pass the torture test.
  646. Daniel Stenberg (11 Jul 2008)
  647. - Daniel Fandrich found out we didn't pass on the user-agent properly when
  648. doing "proxy-tunnels" with non-HTTP prototols and that was simply because
  649. the code assumed the user-agent was only needed for HTTP.
  650. Daniel Fandrich (10 Jul 2008)
  651. - Changed slightly the SFTP quote commands chmod, chown and chgrp to only
  652. set the attribute that has changed instead of all possible ones. Hopefully,
  653. this will solve the "Permission denied" problem that Nagarajan Sreenivasan
  654. reported when setting some modes, but regardless, it saves a protocol
  655. round trip in the chmod case.
  656. - Added test cases 1038 and 1039 to test Adrian Kreher's report that ftp
  657. uploads with -C - didn't resume properly, but the tests pass.
  658. Yang Tse (10 Jul 2008)
  659. - Peter Lamberg filed bug report #2015126: "poll gives WSAEINVAL when POLLPRI
  660. is set in fdset.events" (http://curl.haxx.se/bug/view.cgi?id=2015126) which
  661. exactly pinpointed the problem only triggered on Windows Vista, provided
  662. reference to docs and also a fix. There is much work behind Peter Lamberg's
  663. excellent bug report. Thank You!
  664. Daniel Fandrich (9 Jul 2008)
  665. - Added tests 1036 and 1037 to verify resumed ftp downloads with -C -
  666. Daniel Stenberg (9 Jul 2008)
  667. - Andreas Schuldei improved Phil Blundell's patch for IPv6 using c-ares, and I
  668. edited it slightly. Now you should be able to use IPv6 addresses fine even
  669. with libcurl built to use c-ares.
  670. Daniel Fandrich (9 Jul 2008)
  671. - Fixed an OOM handling problem that cause test 11 to fail the torture test.
  672. Daniel Fandrich (8 Jul 2008)
  673. - Fixed test 554 to pass the torture test.
  674. Daniel Fandrich (7 Jul 2008)
  675. - Added test cases 1034 & 1035 to test IDN name conversion failures.
  676. Daniel Stenberg (7 Jul 2008)
  677. - Scott Barrett provided a test case for a segfault in the FTP code and the
  678. fix for it. It occured when you did a FTP transfer using
  679. CURLFTPMETHOD_SINGLECWD and then did another one on the same easy handle but
  680. switched to CURLFTPMETHOD_NOCWD. Due to the "dir depth" variable not being
  681. cleared properly. Scott's test case is now known as test 539 and it
  682. verifies the fix.
  683. Daniel Stenberg (3 Jul 2008)
  684. - Phil Blundell provided a fix for libcurl's treatment of unexpected 1xx
  685. response codes. Previously libcurl would hang on such occurances. I added
  686. test case 1033 to verify.
  687. - Introcuding a new timestamp for curl_easy_getinfo():
  688. CURLINFO_APPCONNECT_TIME. This is set with the "application layer"
  689. handshake/connection is completed. Which typically is SSL, TLS or SSH and by
  690. using this you can figure out the application layer's own connect time. You
  691. can extract the time stamp using curl's -w option and the new variable named
  692. 'time_appconnect'. This feature was sponsored by Lenny Rachitsky at NeuStar.
  693. Daniel Fandrich (2 Jul 2008)
  694. - Support Open Watcom C on Linux (as well as Windows).
  695. Yang Tse (2 Jul 2008)
  696. - The previously committed fix for bug report #1999181 prevented using the
  697. monotonic clock on any system without an always supported POSIX compliant
  698. implementation. Now the POSIX compliant configuration check is removed and
  699. will fallback to gettimeofday when the monotonic clock is unavailable at
  700. run-time.
  701. - The configure process will now halt when sed, grep, egrep or ar programs
  702. can not be found among the directories in PATH variable.
  703. Daniel Stenberg (1 Jul 2008)
  704. - Rolland Dudemaine provided fixes to get libcurl to build for the INTEGRITY
  705. operating system.
  706. Daniel Stenberg (30 Jun 2008)
  707. - Made the internal printf() support %llu properly to print unsigned long longs.
  708. - Stephen Collyer and Tor Arntsen helped identify a flaw in the range code
  709. which output the range using a signed variable where it should rather use
  710. unsigned.
  711. Yang Tse (29 Jun 2008)
  712. - John Lightsey filed bug report #1999181: "CLOCK_MONOTONIC always fails on
  713. some systems" (http://curl.haxx.se/bug/view.cgi?id=1999181). The problem was
  714. that the configure script did not use the _POSIX_MONOTONIC_CLOCK feature test
  715. macro when checking monotonic clock availability. This is now fixed and the
  716. monotonic clock will not be used unless the feature test macro is defined
  717. with a value greater than zero indicating always supported.
  718. Daniel Fandrich (25 Jun 2008)
  719. - Honour --stderr with the -v option.
  720. - Fixed a file handle leak in the command line client if more than one
  721. --stderr option was given.
  722. Daniel Stenberg (22 Jun 2008)
  723. - Eduard Bloch filed the debian bug report #487567
  724. (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=487567) pointing out that
  725. libcurl used Content-Range: instead of Range when doing a range request with
  726. --head (CURLOPT_NOBODY). This is now fixed and test case 1032 was added to
  727. verify.
  728. Daniel Fandrich (21 Jun 2008)
  729. - Stopped using ranges in scanf character sequences (e.g. %[a-z]) since that
  730. is not ANSI C, just a common extension. This caused problems on
  731. at least Open Watcom C.
  732. Yang Tse (20 Jun 2008)
  733. - Modified configuration script to actually verify if the compiler is good
  734. enough at detecting compilation errors or at least it has been properly
  735. configured to do so. Configuration heavily depends on this capability, so
  736. if this compiler sanity check fails the configuration process will now fail.
  737. Daniel Stenberg (20 Jun 2008)
  738. - Phil Pellouchoud found a case where libcurl built with NSS failed to
  739. handshake with a SSLv2 server, and it turned out to be because it didn't
  740. recognize the cipher named "rc4-md5". In our list that cipher was named
  741. plainly "rc4". I've now added rc4-md5 to work as an alias as Phil reported
  742. that it made things work for him again.
  743. - Hans-Jurgen May pointed out that trying SCP or SFTP over a SOCKS proxy
  744. crashed libcurl. This is now addressed by making sure we use "plain send"
  745. internally when doing the socks handshake instead of the Curl_write()
  746. function which is designed to use the "target" protocol. That's then SCP or
  747. SFTP in this case. I also took the opportunity and cleaned up some ssh-
  748. related #ifdefs in the code for readability.
  749. Daniel Stenberg (19 Jun 2008)
  750. - Christopher Palow fixed a curl_multi_socket() issue which previously caused
  751. libcurl to not tell the app properly when a socket was closed (when the name
  752. resolve done by c-ares is completed) and then immediately re-created and put
  753. to use again (for the actual connection). Since the closure will make the
  754. "watch status" get lost in several event-based systems libcurl will need to
  755. tell the app about this close/re-create case.
  756. - Dengminwen found a bug in the connection re-use function when using the
  757. multi interface with pipelining enabled as it would wrongly check for,
  758. detect and close "dead connections" even though that connection was already
  759. in use!
  760. Daniel Fandrich (18 Jun 2008)
  761. - Added SSH failure test cases 628-632
  762. - Fixed a memory leak in the command-line tool that caused a valgrind error.
  763. Daniel Stenberg (18 Jun 2008)
  764. - Rob Crittenden brought a fix for the NSS layer that makes libcurl no longer
  765. always fire up a new connection rather than using the existing one when the
  766. multi interface is used. Original bug report:
  767. https://bugzilla.redhat.com/show_bug.cgi?id=450140
  768. Yang Tse (18 Jun 2008)
  769. - Internal configure script improvement. No longer break out of shell "for"
  770. statements from inside AC_FOO_IFELSE macros, otherwise temporary macro files
  771. are not properly removed.
  772. Daniel Fandrich (12 Jun 2008)
  773. - Fixed curl-config --ca which wasn't being exported by configure.
  774. Daniel Stenberg (11 Jun 2008)
  775. - I did a cleanup of the internal generic SSL layer and how the various SSL
  776. libraries are supported. Starting now, each underlying SSL library support
  777. code does a set of defines for the 16 functions the generic layer (sslgen.c)
  778. uses (all these new function defines use the prefix "curlssl_"). This
  779. greatly simplified the generic layer in readability by involving much less
  780. #ifdefs and other preprocessor stuff and should make it easier for people to
  781. make libcurl work with new SSL libraries.
  782. Hopefully I can later on document these 16 functions somewhat as well.
  783. I also made most of the internal SSL-dependent functions (using Curl_ssl_
  784. prefix) #defined to nothing when no SSL support is requested - previously
  785. they would unnecessarily call mostly empty functions.
  786. I've built libcurl with OpenSSL and GnuTLS and without SSL to test this and
  787. I've also tried building with NSS but the NSS support is a mystery to me and
  788. I failed to build libcurl with the NSS libraries I have installed. We really
  789. should A) improve our configure script to detect unsuitable NSS versions
  790. already at configure time and B) document our requirements better for the
  791. SSL libraries.
  792. Daniel Stenberg (10 Jun 2008)
  793. - I made the OpenSSL code build again with OpenSSL 0.9.6. The CRLFILE
  794. functionality killed it due to its unconditional use of
  795. X509_STORE_set_flags...
  796. Daniel Stenberg (8 Jun 2008)
  797. - Due to the three new libcurl changes and the massive command line option
  798. change I decided we'll mark it by bumping the next release number to 7.19.0!
  799. - curl the tool now deals with its command line options somewhat differently!
  800. All boolean options (such as -O, -I, -v etc), both short and long versions,
  801. now always switch on/enable the option named. Using the same option multiple
  802. times thus make no difference. To switch off one of those options, you need
  803. to use the long version of the option and type --no-OPTION. Like to disable
  804. verbose mode you use --no-verbose!
  805. - Added --remote-name-all to curl, which if used changes the default for all
  806. given URLs to be dealt with as if -O is used. So if you want to disable that
  807. for a specific URL after --remote-name-all has been used, you muse use -o -
  808. or --no-remote-name.
  809. Daniel Stenberg (6 Jun 2008)
  810. - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_ISSUERCERT, for
  811. OpenSSL, NSS and GnuTLS-built libcurls.
  812. - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_CRLFILE, for
  813. OpenSSL, NSS and GnuTLS-built libcurls.
  814. - Added CURLINFO_PRIMARY_IP as a new information retrievable with
  815. curl_easy_getinfo. It returns a pointer to a string with the most recently
  816. used IP address. Modified test case 500 to also verify this feature. The
  817. implementing of this feature was sponsored by Lenny Rachitsky at NeuStar.
  818. Version 7.18.2 (4 June 2008)
  819. Daniel Fandrich (3 Jun 2008)
  820. - Fixed a problem where telnet data would be lost if an EWOULDBLOCK
  821. condition were encountered.
  822. Marty Kuhrt (1 Jun 2008)
  823. - Updated main.c to return CURLE_OK if PARAM_HELP_REQUESTED was returned
  824. from getparameter instead of CURLE_FAILED_INIT. No point in returning
  825. an error if --help or --version were requested.
  826. Daniel Stenberg (28 May 2008)
  827. - Emil Romanus found a problem and helped me repeat it. It occured when using
  828. the curl_multi_socket() API with HTTP pipelining enabled and could lead to
  829. the pipeline basically stalling for a very long period of time until it took
  830. off again.
  831. - Jeff Weber reported memory leaks with aborted SCP and SFTP transfers and
  832. provided excellent repeat recipes. I fixed the cases I managed to reproduce
  833. but Jeff still got some (SCP) problems even after these fixes:
  834. http://curl.haxx.se/mail/lib-2008-05/0342.html
  835. Daniel Stenberg (26 May 2008)
  836. - Bug report #1973352 (http://curl.haxx.se/bug/view.cgi?id=1973352) identified
  837. how the HTTP redirect following code didn't properly follow to a new URL if
  838. the new url was but a query string such as "Location: ?moo=foo". Test case
  839. 1031 was added to verify this fix.
  840. - Andreas Faerber and Scott McCreary made (lib)curl build for the Haiku OS.
  841. Yang Tse (26 May 2008)
  842. - David Rosenstrauch reported that header files spnegohelp.h and
  843. openssl/objects.h were needed to compile SPNEGO support.
  844. Daniel Fandrich (22 May 2008)
  845. - Made sure to pass longs in to curl_easy_setopt where necessary in the
  846. example programs and libtest code.
  847. Daniel Stenberg (19 May 2008)
  848. - When trying to repeat a multi interface problem I fell over a few multi
  849. interface problems:
  850. o with pipelining disabled, the state should never be set to WAITDO but
  851. rather go straight to DO
  852. o we had multiple states for which the internal function returned no socket
  853. at all to wait for, with the effect that libcurl calls the socket callback
  854. (when curl_multi_socket() is used) with REMOVE prematurely (as it would be
  855. added again within very shortly)
  856. o when in DO and DOING states, the HTTP and HTTPS protocol handler functions
  857. didn't return that the socket should be waited for writing, but instead it
  858. was treated as if no socket was needing monitoring so again REMOVE was
  859. called prematurely.
  860. Daniel Stenberg (13 May 2008)
  861. - Added test case 556 that uses curl_easy_send() and curl_easy_recv()
  862. Daniel Stenberg (9 May 2008)
  863. - Introducing curl_easy_send() and curl_easy_recv(). They can be used to send
  864. and receive data over a connection previously setup with curl_easy_perform()
  865. and its CURLOPT_CONNECT_ONLY option. The sendrecv.c example was added to
  866. show how they can be used.
  867. Yang Tse (9 May 2008)
  868. - Internal time differences now use monotonic time source if available.
  869. This also implies the removal of the winmm.lib dependency for WIN32.
  870. Daniel Stenberg (9 May 2008)
  871. - Stefan Krause reported a busy-looping case when using the multi interface
  872. and doing CONNECT to a proxy. The app would then busy-loop until the proxy
  873. completed its response.
  874. Michal Marek (9 May 2008)
  875. - Make Curl_write and it's callees accept a const pointer, in preparation
  876. of tetetest's patch for curl_easy_send()
  877. Daniel Stenberg (7 May 2008)
  878. - Liam Healy filed the debian bug report #480044
  879. (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=480044) identifying a
  880. segfault when using krb5 ftp, but the krb4 code had the same problem.
  881. Yang Tse (7 May 2008)
  882. - Christopher Palow provided the patch (edited by me) that introduces the
  883. use of microsecond resolution keys for internal splay trees.
  884. Daniel Stenberg (4 May 2008)
  885. - Yuriy Sosov pointed out a configure fix for detecting c-ares when that is
  886. built debug-enabled.
  887. Daniel Stenberg (3 May 2008)
  888. - Ben Van Hof filed bug report #1945240: "libcurl sometimes sends body twice
  889. when using CURL_AUTH_ANY" (http://curl.haxx.se/bug/view.cgi?id=1945240).
  890. The problem was that when libcurl rewound a stream meant for upload when it
  891. would prepare for a second request, it could accidentally continue the
  892. sending of the rewound data on the first request instead of on the second.
  893. Ben also provided test case 1030 that verifies this fix.
  894. Daniel Stenberg (3 May 2008)
  895. - Jean-Francois Bertrand reported a libcurl crash with CURLOPT_TCP_NODELAY
  896. since libcurl used getprotobyname() and that isn't thread-safe. We now
  897. switched to use IPPROTO_TCP unconditionally, but perhaps the proper fix is
  898. to detect the thread-safe version of the function and use that.
  899. http://curl.haxx.se/mail/lib-2008-05/0011.html
  900. Daniel Stenberg (1 May 2008)
  901. - Bart Whiteley provided a patch that made libcurl work properly when an app
  902. uses the CURLOPT_OPENSOCKETFUNCTION callback to create a unix domain socket
  903. to a http server.
  904. Daniel Stenberg (29 Apr 2008)
  905. - To make it easier for applications that want lots of magic stuff done on
  906. redirections and thus cannot use CURLOPT_FOLLOWLOCATION easily, we now
  907. introduce the new CURLINFO_REDIRECT_URL option that lets applications
  908. extract the URL libcurl would've redirected to if it had been told to. This
  909. then enables the application to continue to that URL as it thinks is
  910. suitable, without having to re-implement the magic of creating the new URL
  911. from the Location: header etc. Test 1029 verifies it.
  912. Yang Tse (29 Apr 2008)
  913. - Improved easy interface resolving timeout handling in c-ares enabled builds
  914. Daniel Fandrich (28 Apr 2008)
  915. - Added test 1028 to test an HTTP redirect to a FTP URL.
  916. Daniel Stenberg (28 Apr 2008)
  917. - Norbert Frese filed bug report #1951588: "Problem with curlftpfs and
  918. libcurl" (http://curl.haxx.se/bug/view.cgi?id=1951588) which seems to be an
  919. identical report to what Denis Golovan reported in
  920. http://curl.haxx.se/mail/lib-2008-02/0108.html The FTP code didn't reset the
  921. user/password pointers properly even though there might've been a new
  922. struct/cconnection getting used.
  923. Daniel Stenberg (26 Apr 2008)
  924. - Reverted back to use automake 1.9.6 in the next release (from automake
  925. 1.10.1) since it *still* suffers from Solaris-related bugs. Our previous
  926. automake 1.10 problem was reported in bug #1701360
  927. (http://curl.haxx.se/bug/view.cgi?id=1701360) and this recent problem was
  928. bug #1944825 (http://curl.haxx.se/bug/view.cgi?id=1944825). I have not
  929. personally approached the automake team about either one of these but I
  930. figure we need a Solaris 10 guy to do it!
  931. Yang Tse (25 Apr 2008)
  932. - Added 'timeout' and 'delay' attributes support for the test harness
  933. <command> subsection.
  934. Daniel Fandrich (24 Apr 2008)
  935. - Made --stderr able to redirect all stderr messages.
  936. Yang Tse (23 Apr 2008)
  937. - Improve synchronization between test harness runtests.pl script
  938. and test harness servers to minimize risk of false test failures.
  939. Daniel Fandrich (22 Apr 2008)
  940. - Added support for running on Symbian OS.
  941. Daniel Fandrich (18 Apr 2008)
  942. - Added test cases 1026 and 1027 to do some rudimentary tests on the --manual
  943. and --help options.
  944. Michal Marek (14 Apr 2008)
  945. - allow disabling the typechecker by defining CURL_DISABLE_TYPECHECK, as
  946. discussed in http://curl.haxx.se/mail/lib-2008-04/0291.html
  947. Daniel Stenberg (14 Apr 2008)
  948. - Stefan Krause reported a case where the OpenSSL handshake phase wasn't
  949. properly acknowledging the timeout values, like if you pulled the network
  950. plug in the midst of it.
  951. - Andre Guibert de Bruet fixed a second case of not checking the malloc()
  952. return code in the Negotiate code.
  953. - Sandor Feldi reported bug #1942022
  954. (http://curl.haxx.se/bug/view.cgi?id=1942022) pointing out a mistake in the
  955. lib/Makefile.vc[68] makefiles' release-ssl-dll target.
  956. - Brock Noland reported that curl behaved differently depending on which order
  957. you used -i and -I.
  958. Daniel Stenberg (12 Apr 2008)
  959. - Andre Guibert de Bruet found and fixed a case where malloc() was called but
  960. was not checked for a NULL return, in the Negotiate code.
  961. Daniel Fandrich (9 Apr 2008)
  962. - Added test cases 1024 & 1025 to test a scenario similar to the one reported
  963. by Ben Combee where libcurl would send the wrong cookie to a redirected
  964. server. libcurl was doing the right thing in these test cases.
  965. Michal Marek (7 Apr 2008)
  966. - Fix the MIT / Heimdal check for good:
  967. Define HAVE_GSSMIT if <gssapi/{gssapi.h,gssapi_generic.h,gssapi_krb5.h}> are
  968. available, otherwise define HAVE_GSSHEIMDAL if <gssapi.h> is available.
  969. Only define GSS_C_NT_HOSTBASED_SERVICE to gss_nt_service_name if
  970. GSS_C_NT_HOSTBASED_SERVICE isn't declared by the gssapi headers. This should
  971. avoid breakage in case we wrongly recognize Heimdal as MIT again.
  972. Daniel Stenberg (5 Apr 2008)
  973. - Alexey Simak fixed curl_easy_reset() to reset the max redirect limit properly
  974. - Based on the Debian bug report #474224 that complained about the FTP error
  975. message when libcurl doesn't get a 220 back immediately on connect, I now
  976. changed it to be more specific on what the problem is. Also worth noticing:
  977. while the bug report contains an example where the response is:
  978. 421 There are too many connected users, please try again later
  979. we cannot assume that the error message will always be this readable nor
  980. that it fits within a particular boundary etc.
  981. Daniel Fandrich (3 Apr 2008)
  982. - Added test627 to test SFTP with CURLOPT_NOBODY
  983. Daniel Stenberg (3 Apr 2008)
  984. - Setting CURLOPT_NOBODY to FALSE will now switch the HTTP request method to
  985. GET simply because previously when you set CURLOPT_NOBODY to TRUE first and
  986. then FALSE you'd end up in a broken state where a HTTP request would do a
  987. HEAD by still act a lot like for a GET and hang waiting for the content etc.
  988. - Scott Barrett added support for CURLOPT_NOBODY over SFTP
  989. Daniel Fandrich (3 Apr 2008)
  990. - Made sure that curl_global_init is called in all the multithreaded
  991. example programs.
  992. Michal Marek (31 Mar 2008)
  993. - Removed the generated ca-bundle.h file. The verbatim value of $ca and
  994. $capath is known to configure, so it can be defined in config.h instead.
  995. Daniel Stenberg (31 Mar 2008)
  996. - Added CURLFORM_STREAM as a supported option to curl_formadd() to allow an
  997. application to provide data for a multipart with the read callback. Note
  998. that the size needs to be provided with CURLFORM_CONTENTSLENGTH when the
  999. stream option is used. This feature is verified by the new test case
  1000. 554. This feature was sponsored by Xponaut.
  1001. Daniel Fandrich (30 Mar 2008)
  1002. - Changed the makefile so the doc/examples/ programs are never built in a
  1003. normal build/install (only with the 'make check' target), so that a
  1004. build failure in the examples isn't fatal.
  1005. Version 7.18.1 (30 March 2008)
  1006. Daniel Stenberg (28 Mar 2008)
  1007. - Stephen Collyer pointed out that configure --with-libssh2 without a given
  1008. path didn't work properly.
  1009. Daniel Stenberg (27 Mar 2008)
  1010. - As found out and reported by Dan Petitt, libcurl didn't show progress/call
  1011. the progress callback for the first (potentially huge) piece of body data
  1012. sent together with the POST request headers in the initial send().
  1013. Daniel Stenberg (25 Mar 2008)
  1014. - Made setting the CURLOPT_SSL_CTX_FUNCTION option return a failure in case
  1015. libcurl wasn't built to use OpenSSL as that is a prerequisite for this
  1016. option to function!
  1017. Daniel Stenberg (22 Mar 2008)
  1018. - Fixed the problem with doing a zero byte SCP transfer, verified with test
  1019. case 617 (which was added by Daniel Fandrich 5 Mar 2008).
  1020. Daniel Fandrich (20 Mar 2008)
  1021. - Fixed a problem where curl-config --protocols could erroneously show LDAPS
  1022. support when curl didn't even have regular LDAP support. It looks like
  1023. this could happen when the --enable-ldaps configure switch is given but
  1024. configure couldn't find the LDAP headers or libraries.
  1025. Michal Marek (20 Mar 2008)
  1026. - Added --with-ca-path=DIRECTORY configure option to use an openSSL CApath by
  1027. default instead of a ca bundle. The configure script will also look for a
  1028. ca path if no ca bundle is found and no option given.
  1029. - Fixed detection of previously installed curl-ca-bundle.crt
  1030. Daniel Fandrich (18 Mar 2008)
  1031. - Added test 626 to reproduce an infinite loop when given an invalid
  1032. SFTP quote command reported by Vincent Le Normand, and fixed it.
  1033. Michal Marek (18 Mar 2008)
  1034. - Added curl_easy_getinfo typechecker.
  1035. - Added macros for curl_share_setopt and curl_multi_setopt to check at least
  1036. the correct number of arguments.
  1037. Daniel Fandrich (13 Mar 2008)
  1038. - Added tests 622-625 to test SFTP/SCP uploads. Test 625 was an attempt to
  1039. reproduce the --ftp-create-dirs problem reported by Brian Ulm, but that
  1040. seems to need a call curl_easy_reset() which this test case doesn't do.
  1041. Daniel Stenberg (13 Mar 2008)
  1042. - Brian Ulm figured out that if you did an SFTP upload with
  1043. CURLOPT_FTP_CREATE_MISSING_DIRS to create a directory, and then re-used the
  1044. handle and uploaded another file to another directory that needed to be
  1045. created, the second upload would fail. Another case of a state variable that
  1046. wasn't properly reset between requests.
  1047. - I rewrote the 100-continue code to use a single state variable instead of
  1048. the previous two ones. I think it made the logic somewhat clearer.
  1049. Daniel Stenberg (11 Mar 2008)
  1050. - Dmitry Popov filed bug report #1911069
  1051. (http://curl.haxx.se/bug/view.cgi?id=1911069) that identified a race
  1052. condition in the name resolver code when the DNS cache is shared between
  1053. multiple easy handles, each running in simultaneous threads that could cause
  1054. crashes.
  1055. - Added a macro for curl_easy_setopt() that accepts three arguments and simply
  1056. does nothing with them, just to make sure libcurl users always use three
  1057. arguments to this function. Due to its use of ... for the third argument, it
  1058. is otherwise hard to detect abuse.
  1059. Michal Marek (11 Mar 2008)
  1060. - Added a type checking macro for curl_easy_setopt(), needs gcc-4.3 and only
  1061. works in C mode atm (http://curl.haxx.se/mail/lib-2008-02/0267.html ,
  1062. http://curl.haxx.se/mail/lib-2008-02/0292.html )
  1063. Daniel Fandrich (10 Mar 2008)
  1064. - Added tests 618-621 to test SFTP/SCP transfers of more than one file
  1065. (test 620 tests the just-fixed problem reported by Brian Ulm).
  1066. Daniel Stenberg (9 Mar 2008)
  1067. - Brian Ulm reported a crash when doing a second SFTP transfer on a re-used
  1068. easy handle if curl_easy_reset() was used between them. I fixed it and Brian
  1069. verified that it cured his problem.
  1070. - Brian Ulm reported that if you first tried to download a non-existing SFTP
  1071. file and then fetched an existing one and re-used the handle, libcurl would
  1072. still report the second one as non-existing as well! I fixed it and Brian
  1073. verified that it cured his problem.
  1074. Michal Marek (6 Mar 2008)
  1075. - Fix the gssapi configure check to detect newer MIT Kerberos (patch by
  1076. Michael Calmer)
  1077. Yang Tse (6 Mar 2008)
  1078. - Fix regression on Curl_socket_ready() and Curl_poll() so that these will
  1079. again fail on select/poll errors different than EINTR.
  1080. Daniel Fandrich (5 Mar 2008)
  1081. - Fixed the test harness so it will write out zero-length data files.
  1082. - Added tests 616 and 617 to see how SFTP and SCP cope with zero-length
  1083. files, as questioned by Mike Protts. SFTP does for me but SCP doesn't
  1084. so test 617 is disabled for now.
  1085. Daniel S (4 Mar 2008)
  1086. - Mike Protts brought a patch that makes resumed transfers work with SFTP.
  1087. Daniel S (1 Mar 2008)
  1088. - Anatoli Tubman found and fixed a crash with Negotiate authentication used on
  1089. a re-used connection where both requests used Negotiate.
  1090. Guenter Knauf (26 Feb 2008)
  1091. - Kaspar Brand provided a patch to support server name indication (RFC 4366).
  1092. Daniel S (25 Feb 2008)
  1093. - Kaspar Brand made GnuTLS-built libcurl properly acknowledge the option that
  1094. forces it to prefer SSLv3.
  1095. Daniel S (23 Feb 2008)
  1096. - Sam Listopad provided a patch in feature-request #1900014
  1097. http://curl.haxx.se/bug/feature.cgi?id=1900014 that makes libcurl (built to
  1098. use OpenSSL) support a full chain of certificates in a given PKCS12
  1099. certificate.
  1100. Daniel S (22 Feb 2008)
  1101. - Georg Lippitsch made the src/Makefile.vc6 makefile use the same memory model
  1102. options as the lib/Makefile.vc6 already did.
  1103. Daniel S (21 Feb 2008)
  1104. - Zmey Petroff found a crash when libcurl accessed a NULL pointer, which
  1105. happened if you set the connection cache size to 1 and for example failed to
  1106. login to an FTP site. Bug report #1896698
  1107. (http://curl.haxx.se/bug/view.cgi?id=1896698)
  1108. Daniel S (20 Feb 2008)
  1109. - Fixed test case 405 to not fail when libcurl is built with GnuTLS
  1110. - Based on initial work done by Gautam Kachroo to address a bug, we now keep
  1111. better control at the exact state of the connection's SSL status so that we
  1112. know exactly when it has completed the SSL negotiation or not so that there
  1113. won't be accidental re-uses of connections that are wrongly believed to be
  1114. in SSL-completed-negotiate state.
  1115. - We no longer support setting the CURLOPT_URL option from inside a callback
  1116. such as the CURLOPT_SSL_CTX_FUNCTION one treat that as if it was a Location:
  1117. following. The patch that introduced this feature was done for 7.11.0, but
  1118. this code and functionality has been broken since about 7.15.4 (March 2006)
  1119. with the introduction of non-blocking OpenSSL "connects".
  1120. It was a hack to begin with and since it doesn't work and hasn't worked
  1121. correctly for a long time and nobody has even noticed, I consider it a very
  1122. suitable subject for plain removal. And so it was done.
  1123. Guenter Knauf (19 Feb 2008)
  1124. - We do no longer support SSLv2 by default since it has known flaws.
  1125. Kaspar Brand provided a patch for all supported SSL toolkits.
  1126. Daniel Fandrich (19 Feb 2008)
  1127. - Added test309 to test HTTP redirect to HTTPS URL
  1128. Daniel S (18 Feb 2008)
  1129. - We're no longer providing a very old ca-bundle in the curl tarball. You can
  1130. get a fresh one downloaded and created with 'make ca-bundle' or you can get
  1131. one from here => http://curl.haxx.se/docs/caextract.html if you want a fresh
  1132. new one extracted from Mozilla's recent list of ca certs.
  1133. The configure option --with-ca-bundle now lets you specify what file to use
  1134. as default ca bundle for your build. If not specified, the configure script
  1135. will check a few known standard places for a global ca cert to use.
  1136. Daniel S (17 Feb 2008)
  1137. - Jerome Muffat-Meridol helped me fix Curl_done() to close the current
  1138. connection by force when it was called before the entire request is
  1139. completed, simply because we can't know if the connection really can be
  1140. re-used safely at that point.
  1141. - Based on the same debugging logic, I've also made Curl_http_done() not
  1142. return CURLE_GOT_NOTHING if called "prematurely". This should have no real
  1143. effect to anything but the code makes more sense like this.
  1144. Daniel S (15 Feb 2008)
  1145. - Made the gnutls code path not even try to get the server cert if no peer
  1146. verification is requested. Previously it would even return failure if gnutls
  1147. failed to get the server cert even though no verification was asked for.
  1148. Public server showing the problem: https://www.net222.caisse-epargne.fr
  1149. - Fix my Curl_timeleft() leftover mistake in the gnutls code
  1150. - Pooyan McSporran found and fixed a flaw where you first would do a normal
  1151. http request and then you'd reuse the handle and replace the Accept: header,
  1152. as then libcurl would send two Accept: headers!
  1153. Daniel S (11 Feb 2008)
  1154. - Yang Tse pointed out a few remaining quirks from my timeout refactoring from
  1155. Feb 7 that didn't abort properly on timeouts. These are actually old
  1156. problems but now they should be fixed.
  1157. Yang Tse (10 Feb 2008)
  1158. - Bug report #1888932 (http://curl.haxx.se/bug/view.cgi?id=1888932) points out
  1159. and provides test program that demonstrates that libcurl might not set error
  1160. description message for error CURLE_COULDNT_RESOLVE_HOST for Windows threaded
  1161. name resolver builds. Fixed now.
  1162. Daniel Fandrich (8 Feb 2008)
  1163. - Added key words to all SSL-using tests so they can be skipped if necessary.
  1164. Removed a few unnecessary requires SSL statements.
  1165. Daniel S (8 Feb 2008)
  1166. - Mike Hommey filed and fixed bug report #1889856
  1167. (http://curl.haxx.se/bug/view.cgi?id=1889856): When using the gnutls ssl
  1168. layer, cleaning-up and reinitializing curl ends up with https requests
  1169. failing with "ASN1 parser: Element was not found" errors. Obviously a
  1170. regression added in 7.16.3.
  1171. Yang Tse (8 Feb 2008)
  1172. - Improved test harness SCP/SFTP start up server verification, doing a real
  1173. connection to the sftp server, authenticating and running a simple sftp
  1174. pwd command using the test harness generated configuration and key files.
  1175. Daniel S (8 Feb 2008)
  1176. - Günter Knauf added lib/mk-ca-bundle.pl which gets the Firefox ca bundle and
  1177. creates a suitable ca-bundle.crt file in PEM format for use with curl. The
  1178. recommended way to run it is to use 'make ca-bundle' in the build tree root.
  1179. Daniel Fandrich (7 Feb 2008)
  1180. - Added tests 1022 and 1023 to validate output of curl-config --version and
  1181. --vernum
  1182. Daniel S (7 Feb 2008)
  1183. - Refactored a lot of timeout code into a few functions in an attempt to make
  1184. them all use the same (hopefully correct) logic to make it less error-prone
  1185. and easier to introduce library-wide where it should be used.
  1186. Yang Tse (6 Feb 2008)
  1187. - Fix an issue in strdup replacement function when dealing with absolutely
  1188. huge strings. Only systems without a standard strdup would be affected.
  1189. Daniel S (3 Feb 2008)
  1190. - Dmitry Kurochkin cleaned up the pipelining code and removed the need for and
  1191. use of the "is_in_pipeline" struct field.
  1192. - I wrote up and added the threaded-ssl.c example source code that shows how
  1193. to do multi-threaded downloads of HTTPS files with a libcurl that is built
  1194. with OpenSSL. It uses pthreads for the threading.
  1195. Daniel S (31 Jan 2008)
  1196. - Niklas Angebrand made the cookie support in libcurl properly deal with the
  1197. "HttpOnly" feature introduced by Microsoft and apparently also supported by
  1198. Firefox: http://msdn2.microsoft.com/en-us/library/ms533046.aspx . HttpOnly
  1199. is now supported when received from servers in HTTP headers, when written to
  1200. cookie jars and when read from existing cookie jars.
  1201. I modified test case 31 and 46 to also do some basic HttpOnly testing.
  1202. - Dmitry Kurochkin moved several struct fields from the connectdata struct to
  1203. the SingleRequest one to make pipelining better. It is a bit tricky to keep
  1204. them in the right place, to keep things related to the actual request or to
  1205. the actual connection in the right place.
  1206. Daniel S (29 Jan 2008)
  1207. - Dmitry Kurochkin fixed Curl_done() for pipelining, as it could previously
  1208. crash!
  1209. - Michal Marek fixed minor mistake in test case 553 that prevented it from
  1210. working on other IP-addresses or port numbers.
  1211. Version 7.18.0 (28 January 2008)
  1212. Daniel S (27 Jan 2008)
  1213. - Dmitry Kurochkin: In "real world" testing I found more bugs in
  1214. pipelining. Broken connection is not restored and we get into infinite
  1215. loop. It happens because of wrong is_in_pipeline values.
  1216. Daniel S (26 Jan 2008)
  1217. - Kevin Reed filed bug report #1879375
  1218. (http://curl.haxx.se/bug/view.cgi?id=1879375) which describes how libcurl
  1219. got lost in this scenario: proxy tunnel (or HTTPS over proxy), ask to do any
  1220. proxy authentication and the proxy replies with an auth (like NTLM) and then
  1221. closes the connection after that initial informational response.
  1222. libcurl would not properly re-initialize the connection to the proxy and
  1223. continue the auth negotiation like supposed. It does now however, as it will
  1224. now detect if one or more authentication methods were available and asked
  1225. for, and will thus retry the connection and continue from there.
  1226. - I made the progress callback get called properly during proxy CONNECT.
  1227. Daniel S (23 Jan 2008)
  1228. - Igor Franchuk pointed out that CURLOPT_COOKIELIST set to "ALL" leaked
  1229. memory, and so did "SESS". Fixed now.
  1230. Yang Tse (22 Jan 2008)
  1231. - Check poll.h at configuration time, and use it when sys/poll.h unavailable
  1232. Daniel S (22 Jan 2008)
  1233. - Dmitry Kurochkin removed the cancelled state for pipelining, as we agreed
  1234. that it is bad anyway. Starting now, removing a handle that is in used in a
  1235. pipeline will break the pipeline - it'll be set back up again but still...
  1236. Yang Tse (21 Jan 2008)
  1237. - Disable ldap support for cygwin builds, since it breaks whole build process.
  1238. Fixing it will affect other platforms, so it is postponed for another release.
  1239. Daniel S (18 Jan 2008)
  1240. - Lau Hang Kin found and fixed a problem with the multi interface when doing
  1241. CONNECT over a proxy. curl_multi_fdset() didn't report back the socket
  1242. properly during that state, due to a missing case in the switch in the
  1243. multi_getsock() function.
  1244. Yang Tse (17 Jan 2008)
  1245. - Don't abort tests 518 and 537 when unable to raise the open-file soft limit.
  1246. Daniel S (16 Jan 2008)
  1247. - Nathan Coulter's patch that makes runtests.pl respect the PATH when figuring
  1248. out what valgrind to run.
  1249. Yang Tse (16 Jan 2008)
  1250. - Improved handling of out of memory in the command line tool that afected
  1251. data url encoded HTTP POSTs when reading it from a file.
  1252. Daniel S (16 Jan 2008)
  1253. - Dmitry Kurochkin worked a lot on improving the HTTP Pipelining support that
  1254. previously had a number of flaws, perhaps most notably when an application
  1255. fired up N transfers at once as then they wouldn't pipeline at all that
  1256. nicely as anyone would think... Test case 530 was also updated to take the
  1257. improved functionality into account.
  1258. - Calls to Curl_failf() are not supposed to provide a trailing newline as the
  1259. function itself adds that. Fixed on 50 or something strings!
  1260. Daniel S (15 Jan 2008)
  1261. - I made the torture test on test 530 go through. This was actually due to
  1262. silly code left from when we switched to let the multi handle "hold" the dns
  1263. cache when using the multi interface... Of course this only triggered when a
  1264. certain function call returned error at the correct moment.
  1265. Daniel S (14 Jan 2008)
  1266. - Joe Malicki filed bug report #1871269
  1267. (http://curl.haxx.se/bug/view.cgi?id=1871269) and we could fix his hang-
  1268. problem that occurred when doing a large HTTP POST request with the
  1269. response-body read from a callback.
  1270. Daniel S (12 Jan 2008)
  1271. - I re-arranged the curl --help output. All the options are now sorted on
  1272. their long option names and all descriptions are one-liners.
  1273. - Eric Landes provided the patch (edited by me) that introduces the
  1274. --keepalive-time to curl to set the keepalive probe interval. I also took
  1275. the opportunity to rename the recently added no-keep-alive option to
  1276. no-keepalive to keep a consistent naming and to avoid getting two dashes in
  1277. these option names. Eric also provided an update to the man page for the new
  1278. option.
  1279. Daniel S (11 Jan 2008)
  1280. - Daniel Egger made CURLOPT_RANGE work on file:// URLs the very same way it
  1281. already worked for FTP:// URLs.
  1282. - I made the curl tool switch from using CURLOPT_IOCTLFUNCTION to now use the
  1283. spanking new CURLOPT_SEEKFUNCTION simply to take advantage of the improved
  1284. performance for the upload resume cases where you want to upload the last
  1285. few bytes of a very large file. To implement this decently, I had to switch
  1286. the client code for uploading from fopen()/fread() to plain open()/read() so
  1287. that we can use lseek() to do >32bit seeks (as fseek() doesn't allow that)
  1288. on systems that offer support for that.
  1289. Daniel S (10 Jan 2008)
  1290. - Michal Marek made curl-config --libs not include /usr/lib64 in the output
  1291. (it already before skipped /usr/lib). /usr/lib64 is the default library
  1292. directory on many 64bit systems and it's unlikely that anyone would use the
  1293. path privately on systems where it's not.
  1294. - Georg Lippitsch brought CURLOPT_SEEKFUNCTION and CURLOPT_SEEKDATA to allow
  1295. libcurl to seek in a given input stream. This is particularly important when
  1296. doing upload resumes when there's already a huge part of the file present
  1297. remotely. Before, and still if this callback isn't used, libcurl will read
  1298. and through away the entire file up to the point to where the resuming
  1299. begins (which of course can be a slow opereration depending on file size,
  1300. I/O bandwidth and more). This new function will also be preferred to get
  1301. used instead of the CURLOPT_IOCTLFUNCTION for seeking back in a stream when
  1302. doing multi-stage HTTP auth with POST/PUT.
  1303. - Nikitinskit Dmitriy filed bug report #1868255
  1304. (http://curl.haxx.se/bug/view.cgi?id=1868255) with a patch. It identifies
  1305. and fixes a problem with parsing WWW-Authenticate: headers with additional
  1306. spaces in the line that the parser wasn't written to deal with.
  1307. Daniel S (8 Jan 2008)
  1308. - Introducing curl_easy_pause() and new magic return codes for both the read
  1309. and the write callbacks that now can make a connection's reading and/or
  1310. writing get paused.
  1311. Daniel S (6 Jan 2008)
  1312. - Jeff Johnson filed bug report #1863171
  1313. (http://curl.haxx.se/bug/view.cgi?id=1863171) where he pointed out that
  1314. libcurl's date parser didn't accept a +1300 time zone which actually is used
  1315. fairly often (like New Zealand's Dailight Savings Time), so I modified the
  1316. parser to now accept up to and including -1400 to +1400.
  1317. Daniel S (5 Jan 2008)
  1318. - Based on further discussion on curl-library, I reverted yesterday's SOCKS5
  1319. code to instead introduce support for a new proxy type called
  1320. CURLPROXY_SOCKS5_HOSTNAME that is used to send the host name to the proxy
  1321. instead of IP address and there's thus no longer any need for a new
  1322. curl_easy_setopt() option.
  1323. The default SOCKS5 proxy is again back to sending the IP address to the
  1324. proxy. The new curl command line option for enabling sending host name to a
  1325. SOCKS5 proxy is now --socks5-hostname.
  1326. Daniel S (4 Jan 2008)
  1327. - Based on Maxim Perenesenko's patch, we now do SOCKS5 operations and let the
  1328. proxy do the host name resolving and only if --socks5ip (or
  1329. CURLOPT_SOCKS5_RESOLVE_LOCAL) is used we resolve the host name locally and
  1330. pass on the IP address only to the proxy.
  1331. Yang Tse (3 Jan 2008)
  1332. - Modified test harness to allow SCP, SFTP and SOCKS4 tests to run with
  1333. OpenSSH 2.9.9, SunSSH 1.0 or later versions. SOCKS5 tests need OpenSSH
  1334. 3.7, SunSSH 1.0 or later.
  1335. Daniel S (2 Jan 2008)
  1336. - I fixed two cases of missing return code checks when handling chunked
  1337. decoding where a write error (or abort return from a callback) didn't stop
  1338. libcurl's processing.
  1339. - I removed the socklen_t use from the public curl/curl.h header and instead
  1340. made it an unsigned int. The type was only used in the curl_sockaddr struct
  1341. definition (only used by the curl_opensocket_callback). On all platforms I
  1342. could find information about, socklen_t is 32 unsigned bits large so I don't
  1343. think this will break the API or ABI. The main reason for this change is of
  1344. course for all the platforms that don't have a socklen_t definition in their
  1345. headers to build fine again. Providing our own configure magic and custom
  1346. definition of socklen_t on those systems proved to work but was a lot of
  1347. cruft, code and extra magic needed - when this very small change of type
  1348. seems harmless and still solves the missing socklen_t problem.
  1349. - Richard Atterer brought a patch that added support for SOCKS4a proxies,
  1350. which is an inofficial PROXY4 variant that sends the hostname to the proxy
  1351. instead of the resolved address (which is already supported by SOCKS5).
  1352. --socks4a is the curl command line option for it and CURLOPT_PROXYTYPE can
  1353. now be set to CURLPROXY_SOCKS4A as well.
  1354. Daniel S (1 Jan 2008)
  1355. - Mohun Biswas pointed out that --libcurl generated a source code with an int
  1356. function but without a return statement. While fixing that, I also took care
  1357. about adding some better comments for the generated code.
  1358. Daniel S (27 Dec 2007)
  1359. - Dmitry Kurochkin mentioned a flaw
  1360. (http://curl.haxx.se/mail/lib-2007-12/0252.html) in detect_proxy() which
  1361. failed to set the bits.proxy variable properly when an environment variable
  1362. told libcurl to use a http proxy.
  1363. Daniel S (26 Dec 2007)
  1364. - In an attempt to repeat the problem in bug report #1850730
  1365. (http://curl.haxx.se/bug/view.cgi?id=1850730) I wrote up test case 552. The
  1366. test is doing a 70K POST with a read callback and an ioctl callback over a
  1367. proxy requiring Digest auth. The test case code is more or less identical to
  1368. the test recipe code provided by Spacen Jasset (who submitted the bug
  1369. report).
  1370. Daniel S (25 Dec 2007)
  1371. - Gary Maxwell filed bug report #1856628
  1372. (http://curl.haxx.se/bug/view.cgi?id=1856628) and provided a fix for the
  1373. (small) memory leak in the SSL session ID caching code. It happened when a
  1374. previous entry in the cache was re-used.
  1375. Daniel Fandrich (19 Dec 2007)
  1376. - Ensure that nroff doesn't put anything but ASCII characters into the
  1377. --manual text.
  1378. Yang Tse (18 Dec 2007)
  1379. - MSVC 9.0 (VS2008) does not support Windows build targets prior to WinXP,
  1380. and makes wrong asumptions of build target when it isn't specified. So,
  1381. if no build target has been defined we will target WinXP when building
  1382. curl/libcurl with MSVC 9.0 (VS2008).
  1383. - (http://curl.haxx.se/mail/archive-2007-12/0039.html) reported and fixed
  1384. a file truncation problem on Windows build targets triggered when retrying
  1385. a download with curl.
  1386. Daniel S (17 Dec 2007)
  1387. - Mateusz Loskot pointed out that MSVC 9.0 (VS2008) has the pollfd struct and
  1388. defines in winsock2.h somehow differently than previous versions and that
  1389. curl 7.17.1 would fail to compile out of the box.
  1390. Daniel S (13 Dec 2007)
  1391. - David Wright filed bug report #1849764
  1392. (http://curl.haxx.se/bug/view.cgi?id=1849764) with an included fix. He
  1393. identified a problem for re-used connections that previously had sent
  1394. Expect: 100-continue and in some situations the subsequent POST (that didn't
  1395. use Expect:) still had the internal flag set for its use. David's fix (that
  1396. makes the setting of the flag in every single request unconditionally) is
  1397. fine and is now used!
  1398. Daniel S (12 Dec 2007)
  1399. - Gilles Blanc made the curl tool enable SO_KEEPALIVE for the connections and
  1400. added the --no-keep-alive option that can disable that on demand.
  1401. Daniel S (9 Dec 2007)
  1402. - Andrew Moise filed bug report #1847501
  1403. (http://curl.haxx.se/bug/view.cgi?id=1847501) and pointed out a memcpy()
  1404. that should be memmove() in the convert_lineends() function.
  1405. Daniel S (8 Dec 2007)
  1406. - Renamed all internal static functions that had Curl_ prefixes to no longer
  1407. have them. The Curl_ prefix is exclusively used for library internal global
  1408. symbols. Static functions can be named anything, except for using Curl_ or
  1409. curl_ prefixes. This is for consistency and for easier maintainance and
  1410. overview.
  1411. - Cleaned up and reformatted the TODO document to look like the FAQ and
  1412. CONTRIBUTE, which makes nicer web pages
  1413. - Added test cases 549 and 550 that test CURLOPT_PROXY_TRANSFER_MODE.
  1414. - Added keywords on a bunch of test cases
  1415. - Fixed an OOM problem in the curl code that would lead to fclose on a bad
  1416. handle and crash
  1417. Daniel S (5 Dec 2007)
  1418. - Spacen Jasset reported a problem with doing POST (with data read with a
  1419. callback) over a proxy when NTLM is used as auth with the proxy. The bug
  1420. also concerned Digest and was limited to using callback only. Spacen worked
  1421. with us to provide a useful patch. I added the test case 547 and 548 to
  1422. verify two variations of POST over proxy with NTLM.
  1423. Daniel S (3 Dec 2007)
  1424. - Ray Pekowski filed bug report #1842029
  1425. (http://curl.haxx.se/bug/view.cgi?id=1842029) in which he identified a
  1426. problem with SSL session caching that prevent it from working, and provided
  1427. the associated fix!
  1428. - Now libcurl (built with OpenSSL) doesn't return error anymore if the remote
  1429. SSL-based server doesn't present a certificate when the request is told to
  1430. ignore certificate verification anyway.
  1431. - Michal Marek introduced CURLOPT_PROXY_TRANSFER_MODE which is used to control
  1432. the appending of the "type=" thing on FTP URLs when they are passed to a
  1433. HTTP proxy. Some proxies just don't like that appending (which is done
  1434. unconditionally in 7.17.1), and some proxies treat binary/ascii transfers
  1435. better with the appending done!
  1436. Daniel S (29 Nov 2007)
  1437. - A bug report on the curl-library list showed a HTTP Digest session going on
  1438. with a 700+ letter nonce. Previously libcurl only support 127 letter ones
  1439. and now I bumped it to 1023.
  1440. - Fixed the resumed FTP upload loop to not require that the read callback
  1441. returns a full buffer on each invoke.
  1442. Daniel S (25 Nov 2007)
  1443. - Added test case 1015 that tests --data-urlencode in multiple ways
  1444. - Fixed --data-urlencode for when no @ or = are used
  1445. - Extended the user-agent buffer curl uses, since we can hit the 128 byte
  1446. border with plenty development libraries used. Like my current set: "curl
  1447. 7.17.2-CVS (i686-pc-linux-gnu) libcurl/7.17.2-CVS OpenSSL/0.9.8g
  1448. zlib/1.2.3.3 c-ares/1.5.2-CVS libidn/1.1 libssh2/0.19.0-CVS"
  1449. Daniel S (24 Nov 2007)
  1450. - Internal rearrangements, so that the previous struct HandleData is no more.
  1451. It is now known as SingleRequest and the Curl_transfer_keeper struct within
  1452. that was remove entirely. This has the upside that there are less duplicate
  1453. struct members that made it hard to see and remember what struct that was
  1454. used to store what data. The transfer_keeper thing was once stored on a
  1455. per-connection basis and then it made sense to have the duplicate info but
  1456. since it was moved to the SessionHandle (in 7.16.0) it just added weirdness.
  1457. The SingleRequest struct is used by data that only is valid for this single
  1458. request.
  1459. Yang Tse (22 Nov 2007)
  1460. - Provide a socklen_t definition in curl.h for Win32 API build targets
  1461. which don't have one.
  1462. Daniel S (22 Nov 2007)
  1463. - Alessandro Vesely helped me improve the --data-urlencode's syntax, parser
  1464. and documentation.
  1465. Daniel S (21 Nov 2007)
  1466. - While inspecting the Negotiate code, I noticed how the proxy auth was using
  1467. the same state struct as the host auth, so both could never be used at the
  1468. same time! I fixed it (without being able to check) to use two separate
  1469. structs to allow authentication using Negotiate on host and proxy
  1470. simultaneously.
  1471. Daniel S (20 Nov 2007)
  1472. - Emil Romanus pointed out a bug that made an easy handle get the cookie
  1473. engine activated when set to use a share (even if the share doesn't share
  1474. cookies). I fixed it.
  1475. - Fixed a very long-lasting mprintf() bug that occurred when we did "%.*s%s",
  1476. since the second %s would then wrongly used the numerical precision argument
  1477. instead and crash.
  1478. - Introduced --data-urlencode to the curl tool for easier url encoding of the
  1479. data sent in a post.
  1480. Daniel S (18 Nov 2007)
  1481. - Rob Crittenden fixed SSL connections with NSS done with the multi-interface
  1482. Daniel S (17 Nov 2007)
  1483. - Michal Marek made the test suite remember what test servers that fail to
  1484. start so that subsequent tries are simply skipped.
  1485. - Andres Garcia made the examples build fine on Windows (mingw + msys) when
  1486. the lib was built staticly.
  1487. Daniel S (16 Nov 2007)
  1488. - Ates Goral identified a problem in http.c:add_buffer_send() when a debug
  1489. callback was used, as it could wrongly pass on a bad size for the outgoing
  1490. HTTP header. The bad size would be a very large value as it was a wrapped
  1491. size_t content. This happened when the whole HTTP request failed to get sent
  1492. in one single send. http://curl.haxx.se/mail/lib-2007-11/0165.html
  1493. Daniel S (15 Nov 2007)
  1494. - Fixed yet another remaining problem with doing SFTP directory listings on a
  1495. re-used persistent connection. Mentioned by Immanuel Gregoire on the mailing
  1496. list.
  1497. - Michal Marek fixed the test suite to better deal with the case when the HTTP
  1498. ipv6 server can't run.
  1499. Yang Tse (14 Nov 2007)
  1500. - Fix a variable potential wrapping in add_buffer() when using absolutely
  1501. huge send buffer sizes.
  1502. Daniel S (13 Nov 2007)
  1503. - Fixed a remaining problem with doing SFTP directory listings on a re-used
  1504. persistent connection. Mentioned by Immanuel Gregoire on the mailing list.
  1505. Daniel S (12 Nov 2007)
  1506. - Bug report #1830637 (http://curl.haxx.se/bug/view.cgi?id=1830637), which was
  1507. forwarded from the Gentoo bug tracker by Daniel Black and was originally
  1508. submitted by Robin Johnson, pointed out that libcurl would do bad memory
  1509. references when it failed and bailed out before the handler thing was
  1510. setup. My fix is not done like the provided patch does it, but instead I
  1511. make sure that there's never any chance for a NULL pointer in that struct
  1512. member.
  1513. Yang Tse (10 Nov 2007)
  1514. - Vikram Saxena (http://curl.haxx.se/mail/lib-2007-11/0096.html) pointed out
  1515. that the pollfd struct was being multi defined when using VS2008. This is
  1516. now fixed in /curl/lib/select.h
  1517. Daniel S (8 Nov 2007)
  1518. - Bug report #1823487 (http://curl.haxx.se/bug/view.cgi?id=1823487) pointed
  1519. out that SFTP requests didn't use persistent connections. Neither did SCP
  1520. ones. I gave the SSH code a good beating and now both SCP and SFTP should
  1521. use persistent connections fine. I also did a bunch of indent changes as
  1522. well as a bug fix for the "keyboard interactive" auth.
  1523. Dan F (6 Nov 2007)
  1524. - Improved telnet support by drastically reducing the number of write
  1525. callbacks needed to pass a buffer to the user. Instead one per byte it
  1526. is now as little as one per segment.
  1527. Yang Tse (6 Nov 2007)
  1528. - Bug report #1824894 (http://curl.haxx.se/bug/view.cgi?id=1824894) pointed
  1529. out a problem in curl.h when building C++ apps with MSVC. To fix it, the
  1530. inclusion of header files in curl.h is moved outside of the C++ extern "C"
  1531. linkage block.
  1532. Daniel S (1 Nov 2007)
  1533. - Toby Peterson patched a memory problem in the command line tool that
  1534. happened when a user had a home dir as an empty string. curl would then do
  1535. free() on a wrong area.
  1536. Dan F (1 Nov 2007)
  1537. - Fixed curl-config --features to not display libz when it wasn't used
  1538. due to a missing header file.
  1539. Dan F (31 October 2007)
  1540. - Fixed the output of curl-config --protocols which showed SCP and SFTP
  1541. always, except when --without-libssh2 was given
  1542. - Added test cases 1013 and 1014 to check that curl-config --protocols and
  1543. curl-config --features matches the output of curl --version
  1544. Dan F (30 October 2007)
  1545. - Fixed an OOM problem with file: URLs
  1546. - Moved Curl_file_connect into the protocol handler struct
  1547. Dan F (29 October 2007)
  1548. - Added test case 546 to check that subsequent FTP transfers work after a
  1549. failed one using the multi interface
  1550. Daniel S (29 October 2007)
  1551. - Based on one of those bug reports that are intercepted by a distro's bug
  1552. tracker (https://bugzilla.redhat.com/show_bug.cgi?id=316191), I now made
  1553. curl-config --features and --protocols show the correct output when built
  1554. with NSS.
  1555. Version 7.17.1 (29 October 2007)
  1556. Dan F (25 October 2007)
  1557. - Added the --static-libs option to curl-config
  1558. Daniel S (25 October 2007)
  1559. - Made libcurl built with NSS possible to ignore the peer verification.
  1560. Previously it would fail if the ca bundle wasn't present, even if the code
  1561. ignored the verification results.
  1562. Patrick M (25 October 2007)
  1563. - Fixed test server to allow null bytes in binary posts.
  1564. _ Added tests 35, 544 & 545 to check binary data posts, both static (in place)
  1565. and dynamic (copied).
  1566. Daniel S (25 October 2007)
  1567. - Michal Marek fixed the test script to be able to use valgrind even when the
  1568. lib is built shared with libtool.
  1569. - Fixed a few memory leaks when the same easy handle is re-used to request
  1570. URLs with different protocols. FTP and TFTP related leaks. Caught thanks to
  1571. Dan F's new test cases.
  1572. Dan F (24 October 2007)
  1573. - Fixed the test FTP and TFTP servers to support the >10000 test number
  1574. notation
  1575. - Added test cases 2000 through 2003 which test multiple protocols using the
  1576. same easy handle
  1577. - Fixed the filecheck: make target to work outside the source tree
  1578. Daniel S (24 October 2007)
  1579. - Vladimir Lazarenko pointed out that we should do some 'mt' magic when
  1580. building with VC8 to get the "manifest" embedded to make fine stand-alone
  1581. binaries. The maketgz and the src/Makefile.vc6 files were adjusted
  1582. accordingly.
  1583. Daniel S (23 October 2007)
  1584. - Bug report #1812190 (http://curl.haxx.se/bug/view.cgi?id=1812190) points out
  1585. that libcurl tried to re-use connections a bit too much when using non-SSL
  1586. protocols tunneled over a HTTP proxy.
  1587. Daniel S (22 October 2007)
  1588. - Michal Marek forwarded the bug report
  1589. https://bugzilla.novell.com/show_bug.cgi?id=332917 about a HTTP redirect to
  1590. FTP that caused memory havoc. His work together with my efforts created two
  1591. fixes:
  1592. #1 - FTP::file was moved to struct ftp_conn, because is has to be dealt with
  1593. at connection cleanup, at which time the struct HandleData could be
  1594. used by another connection.
  1595. Also, the unused char *urlpath member is removed from struct FTP.
  1596. #2 - provide a Curl_reset_reqproto() function that frees
  1597. data->reqdata.proto.* on connection setup if needed (that is if the
  1598. SessionHandle was used by a different connection).
  1599. A long-term goal is of course to somehow get rid of how the reqdata struct
  1600. is used, as it is too error-prone.
  1601. - Bug report #1815530 (http://curl.haxx.se/bug/view.cgi?id=1815530) points out
  1602. that specifying a proxy with a trailing slash didn't work (unless it also
  1603. contained a port number).
  1604. Patrick M (15 October 2007)
  1605. - Fixed the dynamic CURLOPT_POSTFIELDS problem: this option is now static again
  1606. and option CURLOPT_COPYPOSTFIELDS has been added to support dynamic mode.
  1607. Patrick M (12 October 2007)
  1608. - Added per-protocol callback static tables, replacing callback ptr storage
  1609. in the connectdata structure by a single handler table ptr.
  1610. Dan F (11 October 2007)
  1611. - Fixed the -l option of runtests.pl
  1612. - Added support for skipping tests based on key words.
  1613. Daniel S (9 October 2007)
  1614. - Michal Marek removed the no longer existing return codes from the curl.1
  1615. man page.
  1616. Daniel S (7 October 2007)
  1617. - Known bug #47, which confused libcurl if doing NTLM auth over a proxy with
  1618. a response that was larger than 16KB is now improved slightly so that now
  1619. the restriction at 16KB is for the headers only and it should be a rare
  1620. situation where the response-headers exceed 16KB. Thus, I consider #47 fixed
  1621. and the header limitation is now known as known bug #48.
  1622. Daniel S (5 October 2007)
  1623. - Michael Wallner made the CULROPT_COOKIELIST option support a new magic
  1624. string: "FLUSH". Using that will cause libcurl to flush its cookies to the
  1625. CURLOPT_COOKIEJAR file.
  1626. - The new file docs/libcurl/ABI describes how we view ABI breakages, soname
  1627. bumps and what the version number's significance to all that is.
  1628. Daniel S (4 October 2007)
  1629. - I enabled test 1009 and made the --local-port use a wide range to reduce the
  1630. risk of failures.
  1631. - Kim Rinnewitz reported that --local-port didn't work with TFTP transfers.
  1632. This happened because the tftp code always uncondionally did a bind()
  1633. without caring if one already had been done and then it failed. I wrote a
  1634. test case (1009) to verify this, but it is a bit error-prone since it will
  1635. have to pick a fixed local port number and since the tests are run on so
  1636. many different hosts in different situations I'll add it in disabled state.
  1637. Yang Tse (3 October 2007)
  1638. - Fixed issue related with the use of ares_timeout() result.
  1639. Daniel S (3 October 2007)
  1640. - Alexey Pesternikov introduced CURLOPT_OPENSOCKETFUNCTION and
  1641. CURLOPT_OPENSOCKETDATA to set a callback that allows an application to
  1642. replace the socket() call used by libcurl. It basically allows the app to
  1643. change address, protocol or whatever of the socket.
  1644. - I renamed the CURLE_SSL_PEER_CERTIFICATE error code to
  1645. CURLE_PEER_FAILED_VERIFICATION (standard CURL_NO_OLDIES style), and made
  1646. this return code get used by the previous SSH MD5 fingerprint check in case
  1647. it fails.
  1648. - Based on a patch brought by Johnny Luong, libcurl now offers
  1649. CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 and the curl tool --hostpubmd5. They both
  1650. make the SCP or SFTP connection verify the remote host's md5 checksum of the
  1651. public key before doing a connect, to reduce the risk of a man-in-the-middle
  1652. attack.
  1653. Daniel S (2 October 2007)
  1654. - libcurl now handles chunked-encoded CONNECT responses
  1655. Daniel S (1 October 2007)
  1656. - Alex Fishman reported a curl_easy_escape() problem that was made the
  1657. function do wrong on all input bytes that are >= 0x80 (decimal 128) due to a
  1658. signed / unsigned mistake in the code. I fixed it and added test case 543 to
  1659. verify.
  1660. Daniel S (29 September 2007)
  1661. - Immanuel Gregoire fixed a problem with persistent transfers over SFTP.
  1662. Daniel S (28 September 2007)
  1663. - Adapted the c-ares code to the API change c-ares 1.5.0 brings in the
  1664. notifier callback(s).
  1665. Dan F (26 September 2007)
  1666. - Enabled a few more gcc warnings with --enable-debug. Renamed a few
  1667. variables to avoid shadowing global declarations.
  1668. Daniel S (26 September 2007)
  1669. - Philip Langdale provided the new CURLOPT_POST301 option for
  1670. curl_easy_setopt() that alters how libcurl functions when following
  1671. redirects. It makes libcurl obey the RFC2616 when a 301 response is received
  1672. after a non-GET request is made. Default libcurl behaviour is to change
  1673. method to GET in the subsequent request (like it does for response code 302
  1674. - because that's what many/most browsers do), but with this CURLOPT_POST301
  1675. option enabled it will do what the spec says and do the next request using
  1676. the same method again. I.e keep POST after 301.
  1677. The curl tool got this option as --post301
  1678. Test case 1011 and 1012 were added to verify.
  1679. - Max Katsev reported that when doing a libcurl FTP request with
  1680. CURLOPT_NOBODY enabled but not CURLOPT_HEADER, libcurl wouldn't do TYPE
  1681. before it does SIZE which makes it less useful. I walked over the code and
  1682. made it do this properly, and added test case 542 to verify it.
  1683. Daniel S (24 September 2007)
  1684. - Immanuel Gregoire fixed KNOWN_BUGS #44: --ftp-method nocwd did not handle
  1685. URLs ending with a slash properly (it should list the contents of that
  1686. directory). Test case 351 brought back and also test 1010 was added.
  1687. Daniel S (21 September 2007)
  1688. - Mark Davies fixed Negotiate authentication over proxy, and also introduced
  1689. the --proxy-negotiate command line option to allow a user to explicitly
  1690. select it.
  1691. Daniel S (19 September 2007)
  1692. - Rob Crittenden provided an NSS update with the following highlights:
  1693. o It looks for the NSS database first in the environment variable SSL_DIR,
  1694. then in /etc/pki/nssdb, then it initializes with no database if neither of
  1695. those exist.
  1696. o If the NSS PKCS#11 libnspsem.so driver is available then PEM files may be
  1697. loaded, including the ca-bundle. If it is not available then only
  1698. certificates already in the NSS database are used.
  1699. o Tries to detect whether a file or nickname is being passed in so the right
  1700. thing is done
  1701. o Added a bit of code to make the output more like the OpenSSL module,
  1702. including displaying the certificate information when connecting in
  1703. verbose mode
  1704. o Improved handling of certificate errors (expired, untrusted, etc)
  1705. The libnsspem.so PKCS#11 module is currently only available in Fedora
  1706. 8/rawhide. Work will be done soon to upstream it. The NSS module will work
  1707. with or without it, all that changes is the source of the certificates and
  1708. keys.
  1709. Daniel S (18 September 2007)
  1710. - Immanuel Gregoire pointed out that public key SSH auth failed if no
  1711. public/private key was specified and there was no HOME environment variable,
  1712. and then it didn't continue to try the other auth methods. Now it will
  1713. instead try to get the files id_dsa.pub and id_dsa from the current
  1714. directory if none of the two conditions were met.
  1715. Dan F (17 September 2007)
  1716. - Added hooks to the test suite to make it possible to test a curl running
  1717. on a remote host.
  1718. - Changed some FTP tests to validate the format of the PORT and EPRT commands
  1719. sent by curl, if not the addresses themselves.
  1720. Daniel S (15 September 2007)
  1721. - Michal Marek made libcurl automatically append ";type=<a|i>" when using HTTP
  1722. proxies for FTP urls.
  1723. - Günter Knauf fixed LDAP builds in the Windows makefiles and fixed LDAPv3
  1724. support on Windows.
  1725. Dan F (13 September 2007)
  1726. - Added LDAPS, SCP and SFTP to curl-config --protocols. Removed and
  1727. fixed some AC_SUBST configure entries.
  1728. Version 7.17.0 (13 September 2007)
  1729. Daniel S (12 September 2007)
  1730. - Bug report #1792649 (http://curl.haxx.se/bug/view.cgi?id=1792649) pointed
  1731. out a problem with doing an empty upload over FTP on a re-used connection.
  1732. I added test case 541 to reproduce it and to verify the fix.
  1733. - I noticed while writing test 541 that the FTP code wrongly did a CWD on the
  1734. second transfer as it didn't store and remember the "" path from the
  1735. previous transfer so it would instead CWD to the entry path as stored. This
  1736. worked, but did a superfluous command. Thus, test case 541 now also verifies
  1737. this fix.
  1738. Dan F (5 September 2007)
  1739. - Added test case 1007 to test permission problem when uploading with TFTP
  1740. (to validate bug #1790403).
  1741. - TFTP now reports the "not defined" TFTP error code 0 as an error,
  1742. not success.
  1743. Daniel S (5 September 2007)
  1744. - Continued the work on a fix for #1779054
  1745. (http://curl.haxx.se/bug/view.cgi?id=1779054). My previous fix from August
  1746. 24 was not complete (either) but could accidentally "forget" parts of a
  1747. server response which led to faulty server response time-out errors.
  1748. Dan F (5 September 2007)
  1749. - Minix doesn't support getsockopt on UDP sockets or send/recv on TCP
  1750. sockets.
  1751. Dan F (31 August 2007)
  1752. - Made some of the error strings returned by the *strerror functions more
  1753. generic, and more consistent with each other.
  1754. - Renamed the curl_ftpssl enum to curl_usessl and its enumerated constants,
  1755. creating macros for backward compatibility:
  1756. CURLFTPSSL_NONE => CURLUSESSL_NONE
  1757. CURLFTPSSL_TRY => CURLUSESSL_TRY
  1758. CURLFTPSSL_CONTROL => CURLUSESSL_CONTROL
  1759. CURLFTPSSL_ALL => CURLUSESSL_ALL
  1760. CURLFTPSSL_LAST => CURLUSESSL_LAST
  1761. Dan F (30 August 2007)
  1762. - Renamed several libcurl error codes and options to make them more general
  1763. and allow reuse by multiple protocols. Several unused error codes were
  1764. removed. In all cases, macros were added to preserve source (and binary)
  1765. compatibility with the old names. These macros are subject to removal at
  1766. a future date, but probably not before 2009. An application can be
  1767. tested to see if it is using any obsolete code by compiling it with the
  1768. CURL_NO_OLDIES macro defined.
  1769. The following unused error codes were removed:
  1770. CURLE_BAD_CALLING_ORDER
  1771. CURLE_BAD_PASSWORD_ENTERED
  1772. CURLE_FTP_CANT_RECONNECT
  1773. CURLE_FTP_COULDNT_GET_SIZE
  1774. CURLE_FTP_COULDNT_SET_ASCII
  1775. CURLE_FTP_USER_PASSWORD_INCORRECT
  1776. CURLE_FTP_WEIRD_USER_REPLY
  1777. CURLE_FTP_WRITE_ERROR
  1778. CURLE_LIBRARY_NOT_FOUND
  1779. CURLE_MALFORMAT_USER
  1780. CURLE_OBSOLETE
  1781. CURLE_SHARE_IN_USE
  1782. CURLE_URL_MALFORMAT_USER
  1783. The following error codes were renamed:
  1784. CURLE_FTP_ACCESS_DENIED => CURLE_REMOTE_ACCESS_DENIED
  1785. CURLE_FTP_COULDNT_SET_BINARY => CURLE_FTP_COULDNT_SET_TYPE
  1786. CURLE_FTP_SSL_FAILED => CURLE_USE_SSL_FAILED
  1787. CURLE_FTP_QUOTE_ERROR => CURLE_QUOTE_ERROR
  1788. CURLE_TFTP_DISKFULL => CURLE_REMOTE_DISK_FULL
  1789. CURLE_TFTP_EXISTS => CURLE_REMOTE_FILE_EXISTS
  1790. CURLE_HTTP_RANGE_ERROR => CURLE_RANGE_ERROR
  1791. The following options were renamed:
  1792. CURLOPT_SSLKEYPASSWD => CURLOPT_KEYPASSWD
  1793. CURLOPT_FTPAPPEND => CURLOPT_APPEND
  1794. CURLOPT_FTPLISTONLY => CURLOPT_DIRLISTONLY
  1795. CURLOPT_FTP_SSL => CURLOPT_USE_SSL
  1796. A few more changes will take place with the next SONAME bump of the
  1797. library. These are documented in docs/TODO
  1798. - Documented some newer error codes in libcurl-error(3)
  1799. - Added more accurate error code returns from SFTP operations. Added test
  1800. case 615 to test an SFTP upload failure.
  1801. Dan F (28 August 2007)
  1802. - Some minor internal type and const changes based on a splint scan.
  1803. Daniel S (24 August 2007)
  1804. - Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
  1805. out that libcurl didn't deal with large responses from server commands, when
  1806. the single response was consisting of multiple lines but of a total size of
  1807. 16KB or more. Dan Fandrich improved the ftp test script and provided test
  1808. case 1006 to repeat the problem, and I fixed the code to make sure this new
  1809. test case runs fine.
  1810. Patrick M (23 August 2007)
  1811. - OS/400 port: new files lib/config-os400.h lib/setup-os400.h packages/OS400/*.
  1812. See packages/OS400/README.OS400.
  1813. Daniel S (23 August 2007)
  1814. - Bug report #1779751 (http://curl.haxx.se/bug/view.cgi?id=1779751) pointed
  1815. out that doing first a file:// upload and then an FTP upload crashed libcurl
  1816. or at best caused furious valgrind complaints. Fixed now!
  1817. Daniel S (22 August 2007)
  1818. - Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
  1819. out that libcurl didn't deal with very long (>16K) FTP server response lines
  1820. properly. Starting now, libcurl will chop them off (thus the client app will
  1821. not get the full line) but survive and deal with them fine otherwise. Test
  1822. case 1003 was added to verify this.
  1823. Daniel S (20 August 2007)
  1824. - Based on a patch by Christian Vogt, the FTP code now sets the upcoming
  1825. download transfer size much earlier to be possible to get read with
  1826. CURLINFO_CONTENT_LENGTH_DOWNLOAD as soon as possible. This is very much in a
  1827. similar spirit to the HTTP size change from August 11 2007.
  1828. Daniel S (18 August 2007)
  1829. - Robson Braga Araujo filed bug report #1776232
  1830. (http://curl.haxx.se/bug/view.cgi?id=1776232) about libcurl calling
  1831. Curl_client_write(), passing on a const string that the caller may not
  1832. modify and yet it does (on some platforms).
  1833. - Robson Braga Araujo filed bug report #1776235
  1834. (http://curl.haxx.se/bug/view.cgi?id=1776235) about ftp requests with NOBODY
  1835. on a directory would do a "SIZE (null)" request. This is now fixed and test
  1836. case 1000 was added to verify.
  1837. Daniel S (17 August 2007)
  1838. - Song Ma provided a patch that cures a problem libcurl has when doing resume
  1839. HTTP PUT using Digest authentication. Test case 5320 and 5322 were also
  1840. added to verify the functionality.
  1841. Daniel S (14 August 2007)
  1842. - Andrew Wansink provided an NTLM bugfix: in the case the server sets the flag
  1843. NTLMFLAG_NEGOTIATE_UNICODE, we need to filter it off because libcurl doesn't
  1844. UNICODE encode the strings it packs into the NTLM authenticate packet.
  1845. Daniel S (11 August 2007)
  1846. - Allen Pulsifer provided a patch that makes libcurl set the expected download
  1847. size earlier when doing HTTP downloads, so that applications and the
  1848. progress meter etc know get the info earlier in the flow than before.
  1849. - Patrick Monnerat modified the LDAP code and approach in curl. Starting now,
  1850. the configure script checks for openldap and friends and we link with those
  1851. libs just like we link all other third party libraries, and we no longer
  1852. dlopen() those libraries. Our private header file lib/ldap.h was renamed to
  1853. lib/curl_ldap.h due to this. I set a tag in CVS (curl-7_17_0-preldapfix)
  1854. just before this commit, just in case.
  1855. Dan F (8 August 2007)
  1856. - Song Ma noted a zlib memory leak in the illegal compressed header
  1857. countermeasures code path.
  1858. Daniel S (4 August 2007)
  1859. - Patrick Monnerat fixed curl_easy_escape() and curlx_strtoll() to work on
  1860. non-ASCII systems.
  1861. Daniel S (3 August 2007)
  1862. - I cut out support for libssh2 versions older than 0.16 to make our code a
  1863. lot simpler, and to avoid getting trouble with the LIBSSH2_APINO define
  1864. that 1) didn't work properly since it was >32 bits and 2) is removed in
  1865. libssh2 0.16...
  1866. Daniel S (2 August 2007)
  1867. - Scott Cantor filed bug report #1766320
  1868. (http://curl.haxx.se/bug/view.cgi?id=1766320) pointing out that the libcurl
  1869. code accessed two curl_easy_setopt() options (CURLOPT_DNS_CACHE_TIMEOUT and
  1870. CURLOPT_DNS_USE_GLOBAL_CACHE) as ints even though they're documented to be
  1871. passed in as longs, and that makes a difference on 64 bit architectures.
  1872. - Dmitriy Sergeyev reported a regression: resumed file:// transfers broke
  1873. after 7.16.2. This is much due to the different treatment file:// gets
  1874. internally, but now I added test 231 to make it less likely to happen again
  1875. without us noticing!
  1876. Daniel S (1 August 2007)
  1877. - Patrick Monnerat and I modified libcurl so that now it *copies* all strings
  1878. passed to it with curl_easy_setopt()! Previously it has always just refered
  1879. to the data, forcing the user to keep the data around until libcurl is done
  1880. with it. That is now history and libcurl will instead clone the given
  1881. strings and keep private copies. This is also part of Patrick Monnerat's
  1882. OS/400 port.
  1883. Due to this being a somewhat interesting change API wise, I've decided to
  1884. bump the version of the upcoming release to 7.17.0. Older applications will
  1885. of course not notice this change nor do they have to care, but new
  1886. applications can be written to take advantage of this.
  1887. - Greg Morse reported a problem with POSTing using ANYAUTH to a server
  1888. requiring NTLM, and he provided test code and a test server and we worked
  1889. out a bug fix. We failed to count sent body data at times, which then caused
  1890. internal confusions when libcurl tried to send the rest of the data in order
  1891. to maintain the same connection alive.
  1892. Daniel S (31 July 2007)
  1893. - Peter O'Gorman pointed out (and fixed) that the non-blocking check in
  1894. configure made libcurl use blocking sockets on AIX 4 and 5, while that
  1895. wasn't the intention.
  1896. Daniel S (29 July 2007)
  1897. - Jayesh A Shah filed bug report #1759542
  1898. (http://curl.haxx.se/bug/view.cgi?id=1759542) identifying a rather serious
  1899. problem with FTPS: libcurl closed the data connection socket and then later
  1900. in the flow it would call the SSL layer to do SSL shutdown which then would
  1901. use a socket that had already been closed - so if the application had opened
  1902. a new one in the mean time, libcurl could send gibberish that way! I worked
  1903. with Greg Zavertnik to properly diagnose and fix this. The fix affects code
  1904. for all SSL libraries we support, but it has only been truly verified to
  1905. work fine for the OpenSSL version. The others have only been code reviewed.
  1906. Daniel S (23 July 2007)
  1907. - Implemented the parts of Patrick Monnerat's OS/400 patch that introduces
  1908. support for the OS/400 Secure Sockets Layer library.
  1909. Dan F (23 July 2007)
  1910. - Implemented only the parts of Patrick Monnerat's OS/400 patch that renamed
  1911. some few internal identifiers to avoid conflicts, which could be useful on
  1912. other platforms.
  1913. Daniel S (22 July 2007)
  1914. - HTTP Digest bug fix by Chris Flerackers:
  1915. Scenario
  1916. - Perfoming a POST request with body
  1917. - With authentication (only Digest)
  1918. - Re-using a connection
  1919. libcurl would send a HTTP POST with an Authorization header but without
  1920. body. Our server would return 400 Bad Request in that case (because
  1921. authentication passed, but the body was empty).
  1922. Cause
  1923. 1) http_digest.c -> Curl_output_digest
  1924. - Updates allocptr.userpwd/allocptr.proxyuserpwd *only* if d->nonce is
  1925. filled in (and no errors)
  1926. - authp->done = TRUE if d->nonce is filled in
  1927. 2) http.c -> Curl_http
  1928. - *Always* uses allocptr.userpwd/allocptr.proxyuserpwd if not NULL
  1929. 3) http.c -> Curl_http, Curl_http_output_auth
  1930. So what happens is that Curl_output_digest cannot yet update the
  1931. Authorization header (allocptr.userpwd) which results in authhost->done=0 ->
  1932. authhost->multi=1 -> conn->bits.authneg = TRUE. The body is not
  1933. added. *However*, allocptr.userpwd is still used when building the request
  1934. - Added test case 354 that makes a simple FTP retrieval without password, which
  1935. verifies the bug fix in #1757328.
  1936. Daniel S (21 July 2007)
  1937. - To allow more flexibility in FTP test cases, I've removed the enforced states
  1938. from the test server code as they served no real purpose. The test server
  1939. is here to serve for the test cases, not to attempt to function as a real
  1940. server! While at it, I modified test case 141 to better test and verify
  1941. curl -I on a single FTP file.
  1942. Daniel S (20 July 2007)
  1943. - James Housley fixed the SFTP PWD command to work.
  1944. - Ralf S. Engelschall filed bug report #1757328
  1945. (http://curl.haxx.se/bug/view.cgi?id=1757328) and submitted a patch. It
  1946. turns out we broke login to FTP servers that don't require (nor understand)
  1947. PASS after the USER command. The breakage was done as part of the krb5
  1948. commit so a krb-using person needs to verify that the current version now
  1949. works or if we need to fix it (in a different way of course).
  1950. Dan F (17 July 2007)
  1951. - Fixed test cases 613 and 614 by improving the log postprocessor to handle
  1952. a new directory listing format that newer libssh2's can provide. This
  1953. is probably NOT sufficient to handle all directory listing formats that
  1954. server's can provide, and should be revisited.
  1955. Daniel S (17 July 2007)
  1956. - Daniel Johnson fixed a bug in how libssh2_session_last_error() was used, in
  1957. two places.
  1958. - Jofell Gallardo posted a libcurl log using FTP that exposed a bug which made
  1959. a control connection that was deemed "dead" to yet be re-used in a following
  1960. request.
  1961. Daniel S (13 July 2007)
  1962. - Colin Hogben filed bug report #1750274
  1963. (http://curl.haxx.se/bug/view.cgi?id=1750274) and submitted a patch for the
  1964. case where libcurl did a connect attempt to a non-listening port and didn't
  1965. provide a human readable error string back.
  1966. - Daniel Cater fixes:
  1967. 1 - made 'make vc8' work on windows.
  1968. 2 - made libcurl itself built with CURL_NO_OLDIES defined (which doesn't
  1969. define the symbols for backwards source compatibility)
  1970. 3 - updated libcurl-errors.3
  1971. 4 - added CURL_DISABLE_TFTP to docs/INSTALL
  1972. Daniel S (12 July 2007)
  1973. - Made the krb5 code build with Heimdal's GSSAPI lib.
  1974. Dan F (12 July 2007)
  1975. - Compile most of the example apps in docs/examples when doing a 'make check'.
  1976. Fixed some compile warnings and errors in those examples.
  1977. - Removed the example program ftp3rdparty.c since libcurl doesn't support
  1978. 3rd party FTP transfers any longer.
  1979. Daniel S (12 July 2007)
  1980. - Shmulik Regev found an (albeit rare) case where the proxy CONNECT operation
  1981. could in fact get stuck in an endless loop.
  1982. - Made CURLOPT_SSL_VERIFYHOST set to 1 acts as described in the documentation:
  1983. fail to connect if there is no Common Name field found in the remote cert.
  1984. We should deprecate the support for this set to 1 anyway soon, since the
  1985. feature is pointless and most likely never really used by anyone.
  1986. Daniel S (11 July 2007)
  1987. - Shmulik Regev fixed a bug with transfer-encoding skipping during the 407
  1988. error pages for proxy authentication.
  1989. - Giancarlo Formicuccia reported and fixed a problem with a closed connection
  1990. to a proxy during CONNECT auth negotiation.
  1991. Dan F (10 July 2007)
  1992. - Fixed a curl memory leak reported by Song Ma with a modified version
  1993. of the patch he suggested. Added his test case as test289 to verify.
  1994. - Force the time zone to GMT in the cookie tests in case the user is
  1995. using one of the so-called 'right' time zones that take into account
  1996. leap seconds, which causes the tests to fail (as reported by
  1997. Daniel Black in bug report #1745964).
  1998. Version 7.16.4 (10 July 2007)
  1999. Daniel S (10 July 2007)
  2000. - Kees Cook notified us about a security flaw
  2001. (http://curl.haxx.se/docs/adv_20070710.html) in which libcurl failed to
  2002. properly reject some outdated or not yet valid server certificates when
  2003. built with GnuTLS. Kees also provided the patch.
  2004. James H (5 July 2007)
  2005. - Gavrie Philipson provided a patch that will use a more specific error
  2006. message for an scp:// upload failure. If libssh2 has his matching
  2007. patch, then the error message return by the server will be used instead
  2008. of a more generic error.
  2009. Daniel S (1 July 2007)
  2010. - Thomas J. Moore provided a patch that introduces Kerberos5 support in
  2011. libcurl. This also makes the options change name to --krb (from --krb4) and
  2012. CURLOPT_KRBLEVEL (from CURLOPT_KRB4LEVEL) but the old names are still
  2013. - Song Ma helped me verify and extend a fix for doing FTP over a SOCKS4/5
  2014. proxy.
  2015. Daniel S (27 June 2007)
  2016. - James Housley: Add two new options for the SFTP/SCP/FILE protocols:
  2017. CURLOPT_NEW_FILE_PERMS and CURLOPT_NEW_DIRECTORY_PERMS. These control the
  2018. premissions for files and directories created on the remote
  2019. server. CURLOPT_NEW_FILE_PERMS defaults to 0644 and
  2020. CURLOPT_NEW_DIRECTORY_PERMS defaults to 0755
  2021. - I corrected the 10-at-a-time.c example and applied a patch for it by James
  2022. Bursa.
  2023. Daniel S (26 June 2007)
  2024. - Robert Iakobashvili re-arranged the internal hash code to work with a custom
  2025. hash function for different hashes, and also expanded the default size for
  2026. the socket hash table used in multi handles to greatly enhance speed when
  2027. very many connections are added and the socket API is used.
  2028. - James Housley made the CURLOPT_FTPLISTONLY mode work for SFTP directory
  2029. listings as well
  2030. Daniel S (25 June 2007)
  2031. - Adjusted how libcurl treats HTTP 1.1 responses without content-lenth or
  2032. chunked encoding (that also lacks "Connection: close"). It now simply
  2033. assumes that the connection WILL be closed to signal the end, as that is how
  2034. RFC2616 section 4.4 point #5 says we should behave.
  2035. Version 7.16.3 (25 June 2007)
  2036. Daniel S (23 June 2007)
  2037. - As reported by "Tro" in http://curl.haxx.se/mail/lib-2007-06/0161.html and
  2038. http://curl.haxx.se/mail/lib-2007-06/0238.html, libcurl didn't properly do
  2039. no-body requests on FTP files on re-used connections properly, or at least
  2040. it didn't provide the info back in the header callback properly in the
  2041. subsequent requests.
  2042. Daniel S (21 June 2007)
  2043. - Gerrit Bruchhäuser pointed out a warning that the Intel(R) Thread Checker
  2044. tool reports and it was indeed a legitimate one and it is one fixed. It was
  2045. a use of a share without doing the proper locking first.
  2046. Daniel S (20 June 2007)
  2047. - Adam Piggott filed bug report #1740263
  2048. (http://curl.haxx.se/bug/view.cgi?id=1740263). Adam discovered that when
  2049. getting a large amount of URLs with curl, they were fetched slower and
  2050. slower... which turned out to be because the --libcurl data collecting which
  2051. wrongly always was enabled, but no longer is...
  2052. Daniel S (18 June 2007)
  2053. - Robson Braga Araujo filed bug report #1739100
  2054. (http://curl.haxx.se/bug/view.cgi?id=1739100) that mentioned that libcurl
  2055. could not actually list the contents of the root directory of a given FTP
  2056. server if the login directory isn't root. I fixed the problem and added
  2057. three test cases (one is disabled for now since I identified KNOWN_BUGS #44,
  2058. we cannot use --ftp-method nocwd and list ftp directories).
  2059. Daniel S (14 June 2007)
  2060. - Shmulik Regev:
  2061. I've encountered (and hopefully fixed) a problem involving proxy CONNECT
  2062. requests and easy handles state management. The problem isn't simple to
  2063. reproduce since it depends on socket state. It only manifests itself when
  2064. working with non-blocking sockets.
  2065. Here is the scenario:
  2066. 1. in multi_runsingle the easy handle is in the CURLM_STATE_WAITCONNECT and
  2067. calls Curl_protocol_connect
  2068. 2. in Curl_proxyCONNECT, line 1247, if the socket isn't ready the function
  2069. returns and conn->bits.tunnel_connecting is TRUE
  2070. 3. when the call to Curl_protocol_connect returns the protocol_connect flag
  2071. is false and the easy state is changed to CURLM_STATE_PROTOCONNECT which
  2072. isn't correct if a proxy is used. Rather CURLM_STATE_WAITPROXYCONNECT
  2073. should be used.
  2074. I discovered this while performing an HTTPS request through a proxy (squid)
  2075. on my local network. The problem caused openssl to fail as it read the proxy
  2076. response to the CONNECT call ('HTTP/1.0 Established') rather than the SSL
  2077. handshake (the exact openssl error was 'wrong ssl version' but this isn't
  2078. very important)
  2079. - Dave Vasilevsky filed bug report #1736875
  2080. (http://curl.haxx.se/bug/view.cgi?id=1736875) almost simultanouesly as Dan
  2081. Fandrich mentioned a related build problem on the libcurl mailing list:
  2082. http://curl.haxx.se/mail/lib-2007-06/0131.html. Both problems had the same
  2083. reason: the definitions of the POLL* defines and the pollfd struct in the
  2084. libcurl code was depending on HAVE_POLL instead of HAVE_SYS_POLL_H.
  2085. Daniel S (13 June 2007)
  2086. - Tom Regner provided a patch and worked together with James Housley, so now
  2087. CURLOPT_FTP_CREATE_MISSING_DIRS works for SFTP connections as well as FTP
  2088. ones.
  2089. - Rich Rauenzahn filed bug report #1733119
  2090. (http://curl.haxx.se/bug/view.cgi?id=1733119) and we collaborated on the
  2091. fix. The problem is that for 64bit HPUX builds, several socket-related
  2092. functions would still assume int (32 bit) arguments and not socklen_t (64
  2093. bit) ones.
  2094. Daniel S (12 June 2007)
  2095. - James Housley brought his revamped SSH code that is state-machine driven to
  2096. really take advantage of the now totally non-blocking libssh2 (in CVS).
  2097. Dan F (8 June 2007)
  2098. - Incorporated Daniel Black's test706 and test707 SOCKS test cases.
  2099. - Fixed a few problems when starting the SOCKS server.
  2100. - Reverted some recent changes to runtests.pl that weren't compatible with
  2101. perl 5.0.
  2102. - Fixed the test harness so that it actually kills the ssh being used as
  2103. the SOCKS server.
  2104. Daniel S (6 June 2007)
  2105. - -s/--silent can now be used to toggle off the silence again if used a second
  2106. time.
  2107. Daniel S (5 June 2007)
  2108. - Added Daniel Black's work that adds the first few SOCKS test cases. I also
  2109. fixed two minor SOCKS problems to make the test cases run fine.
  2110. Daniel S (31 May 2007)
  2111. - Feng Tu made (lib)curl support "upload" resuming work for file:// URLs.
  2112. Daniel S (30 May 2007)
  2113. - I modified the 10-at-a-time.c example to transfer 500 downloads in parallel
  2114. with a c-ares enabled build only to find that it crashed miserably, and this
  2115. was due to some select()isms left in the code. This was due to API
  2116. restrictions in c-ares 1.3.x, but with the upcoming c-ares 1.4.0 this is no
  2117. longer the case so now libcurl runs much better with c-ares and the multi
  2118. interface with > 1024 file descriptors in use.
  2119. Extra note: starting now we require c-ares 1.4.0 for asynchronous name
  2120. resolves.
  2121. - Added CURLMOPT_MAXCONNECTS which is a curl_multi_setopt() option for setting
  2122. the maximum size of the connection cache maximum size of the multi handle.
  2123. Daniel S (27 May 2007)
  2124. - When working with a problem Stefan Becker had, I found an off-by-one buffer
  2125. overwrite in Curl_select(). While fixing it, I also improved its performance
  2126. somewhat by changing calloc to malloc and breaking out of a loop earlier
  2127. (when possible).
  2128. Daniel S (25 May 2007)
  2129. - Rob Crittenden fixed bug #1705802
  2130. (http://curl.haxx.se/bug/view.cgi?id=1705802), which was filed by Daniel
  2131. Black identifying several FTP-SSL test cases fail when we build libcurl with
  2132. NSS for TLS/SSL. Listed as #42 in KNOWN_BUGS.
  2133. Daniel S (24 May 2007)
  2134. - Song Ma filed bug report #1724016
  2135. (http://curl.haxx.se/bug/view.cgi?id=1724016) noticing that downloading
  2136. glob-ranges for TFTP was broken in CVS. Fixed now.
  2137. - 'mytx' in bug report #1723194 (http://curl.haxx.se/bug/view.cgi?id=1723194)
  2138. pointed out that the warnf() function in the curl tool didn't properly deal
  2139. with the cases when excessively long words were used in the string to chop
  2140. up.
  2141. Daniel S (22 May 2007)
  2142. - Andre Guibert de Bruet fixed a memory leak in the function that verifies the
  2143. peer's name in the SSL certificate when built for OpenSSL. The leak happens
  2144. for libcurls with CURL_DOES_CONVERSIONS enabled that fail to convert the CN
  2145. name from UTF8. He also fixed a leak when PKCS #12 parsing failed.
  2146. Daniel S (18 May 2007)
  2147. - Feng Tu reported that curl -w did wrong on TFTP transfers in bug report
  2148. #1715394 (http://curl.haxx.se/bug/view.cgi?id=1715394), and the
  2149. transfer-related info "variables" were indeed overwritten with zeroes
  2150. wrongly and have now been adjusted. The upload size still isn't accurate.
  2151. Daniel S (17 May 2007)
  2152. - Feng Tu pointed out a division by zero error in the TFTP connect timeout
  2153. code for timeouts less than five seconds, and also provided a fix for it.
  2154. Bug report #1715392 (http://curl.haxx.se/bug/view.cgi?id=1715392)
  2155. Dan F (16 May 2007)
  2156. - Added support for compiling under Minix 3.1.3 using ACK.
  2157. Dan F (14 May 2007)
  2158. - Added SFTP directory listing test case 613.
  2159. - Added support for quote commands before a transfer using SFTP and test
  2160. case 614.
  2161. - Changed the post-quote commands to occur after the transferred file is
  2162. closed.
  2163. - Allow SFTP quote commands chmod, chown, chgrp to set a value of 0.
  2164. Dan F (9 May 2007)
  2165. - Kristian Gunstone fixed a problem where overwriting an uploaded file with
  2166. sftp didn't truncate it first, which would corrupt the file if the new
  2167. file was shorter than the old.
  2168. Dan F (8 May 2007)
  2169. - Added FTPS test cases 406 and 407
  2170. Daniel S (8 May 2007)
  2171. - CURLE_FTP_COULDNT_STOR_FILE is now known as CURLE_UPLOAD_FAILED. This is
  2172. because I just made SCP uploads return this value if the file size of
  2173. the upload file isn't given with CURLOPT_INFILESIZE*. Docs updated to
  2174. reflect this news, and a define for the old name was added to the public
  2175. header file.
  2176. Daniel S (7 May 2007)
  2177. - James Bursa fixed a bug in the multi handle code that made the connection
  2178. cache grow a bit too much, beyond the normal 4 * easy_handles.
  2179. Daniel S (2 May 2007)
  2180. - Anders Gustafsson remarked that requiring CURLOPT_HTTP_VERSION set to 1.0
  2181. when CURLOPT_HTTP200ALIASES is used to avoid the problem mentioned below is
  2182. not very nice if the client wants to be able to use _either_ a HTTP 1.1
  2183. server or one within the aliases list... so starting now, libcurl will
  2184. simply consider 200-alias matches the to be HTTP 1.0 compliant.
  2185. - Tobias Rundström reported a problem they experienced with xmms2 and recent
  2186. libcurls, which turned out to be the 25-nov-2006 change which treats HTTP
  2187. responses without Content-Length or chunked encoding as without bodies. We
  2188. now added the conditional that the above mentioned response is only without
  2189. body if the response is HTTP 1.1.
  2190. - Jeff Pohlmeyer improved the hiperfifo.c example to use the
  2191. CURLMOPT_TIMERFUNCTION callback option.
  2192. - Set the timeout for easy handles to expire really soon after addition or
  2193. when CURLM_CALL_MULTI_PERFORM is returned from curl_multi_socket*/perform,
  2194. to make applications using only curl_multi_socket() to properly function
  2195. when adding easy handles "on the fly". Bug report and test app provided by
  2196. Michael Wallner.
  2197. Dan F (30 April 2007)
  2198. - Improved the test harness to allow running test servers on other than
  2199. the default port numbers, allowing more than one test suite to run
  2200. simultaneously on the same host.
  2201. Daniel S (28 April 2007)
  2202. - Peter O'Gorman fixed libcurl to not init GnuTLS as early as we did before,
  2203. since it then inits libgcrypt and libgcrypt is being evil and EXITS the
  2204. application if it fails to get a fine random seed. That's really not a nice
  2205. thing to do by a library.
  2206. - Frank Hempel fixed a curl_easy_duphandle() crash on a handle that had
  2207. been removed from a multi handle, and then fixed another flaw that prevented
  2208. curl_easy_duphandle() to work even after the first fix - the handle was
  2209. still marked as using the multi interface.
  2210. Daniel S (26 April 2007)
  2211. - Peter O'Gorman found a problem with SCP downloads when the downloaded file
  2212. was 16385 bytes (16K+1) and it turned out we didn't properly always "suck
  2213. out" all data from libssh2. The effect being that libcurl would hang on the
  2214. socket waiting for data when libssh2 had in fact already read it all...
  2215. Dan F (25 April 2007)
  2216. - Added support in runtests.pl for "!n" test numbers to disable individual
  2217. tests. Changed -t to only keep log files around when -k is specified,
  2218. to have the same behaviour as without -t.
  2219. Daniel S (25 April 2007)
  2220. - Sonia Subramanian brought our attention to a problem that happens if you set
  2221. the CURLOPT_RESUME_FROM or CURLOPT_RANGE options and an existing connection
  2222. in the connection cache is closed to make room for the new one when you call
  2223. curl_easy_perform(). It would then wrongly free range-related data in the
  2224. connection close funtion.
  2225. Yang Tse (25 April 2007)
  2226. - Steve Little fixed compilation on VMS 64-bit mode
  2227. Daniel S (24 April 2007)
  2228. - Robert Iakobashvili made the 'master_buffer' get allocated first once it is
  2229. can/will be used as it then makes the common cases save 16KB of data for each
  2230. easy handle that isn't used for pipelining.
  2231. Dan F (23 April 2007)
  2232. - Added <postcheck> support to the test harness.
  2233. - Added tests 610-612 to test more SFTP post-quote commands.
  2234. Daniel S (22 April 2007)
  2235. - Song Ma's warning if -r/--range is given with a "bad" range, also noted in
  2236. the man page now.
  2237. - Daniel Black filed bug #1705177
  2238. (http://curl.haxx.se/bug/view.cgi?id=1705177) where --without-ssl
  2239. --with-gnutl outputs a warning about SSL not being enabled even though GnuTLS
  2240. was found and used.
  2241. Daniel S (21 April 2007)
  2242. - Daniel Black filed bug #1704675
  2243. (http://curl.haxx.se/bug/view.cgi?id=1704675) identifying a double-free
  2244. problem in the SSL-dealing layer, telling GnuTLS to free NULL credentials on
  2245. closedown after a failure and a bad #ifdef for NSS when closing down SSL.
  2246. Yang Tse (20 April 2007)
  2247. - Save one call to curlx_tvnow(), which calls gettimeofday(), in each of
  2248. Curl_socket_ready(), Curl_poll() and Curl_select() when these are called
  2249. with a zero timeout or a timeout value indicating a blocking call should
  2250. be performed.
  2251. Daniel S (18 April 2007)
  2252. - James Housley made SFTP uploads use libssh2's non-blocking API
  2253. - Prevent the internal progress meter from updating more frequently than once
  2254. per second.
  2255. Dan F (17 April 2007)
  2256. - Added test cases 296, 297 and 298 to test --ftp-method handling
  2257. Daniel S (16 April 2007)
  2258. - Robert Iakobashvil added curl_multi_socket_action() to libcurl, which is a
  2259. function that deprecates the curl_multi_socket() function. Using the new
  2260. function the application tell libcurl what action that was found in the
  2261. socket that it passes in. This gives a significant performance boost as it
  2262. allows libcurl to avoid a call to poll()/select() for every call to
  2263. curl_multi_socket*().
  2264. I added a define in the public curl/multi.h header file that will make your
  2265. existing application automatically use curl_multi_socket_action() instead of
  2266. curl_multi_socket() when you recompile. But of course you'll get better
  2267. performance if you adjust your code manually and actually pass in the
  2268. correct action bitmask to this function.
  2269. Daniel S (14 April 2007)
  2270. - Jay Austin added "DH PARAMETERS" to the stunnel.pem certificate for the test
  2271. suite to make stunnel run better in some (most?) environments.
  2272. Dan F (13 April 2007)
  2273. - Added test cases 294 and 295 to test --ftp-account handling
  2274. - Improved handling of out of memory in ftp.
  2275. Yang Tse (13 April 2007)
  2276. - Fix test case 534 which started to fail 2007-04-13 due to the existance
  2277. of a new host on the net with the same silly domain the test was using
  2278. for a host which was supposed not to exist.
  2279. Daniel S (12 April 2007)
  2280. - Song Ma found a memory leak in the if2ip code if you pass in an interface
  2281. name longer than the name field of the ifreq struct (typically 6 bytes), as
  2282. then it wouldn't close the used dummy socket. Bug #1698974
  2283. (http://curl.haxx.se/bug/view.cgi?id=1698974)
  2284. Version 7.16.2 (11 April 2007)
  2285. Yang Tse (10 April 2007)
  2286. - Ravi Pratap provided some fixes for HTTP pipelining
  2287. - configure script will ignore --enable-sspi option for non-native Windows.
  2288. Daniel S (9 April 2007)
  2289. - Nick Zitzmann did ssh.c cleanups
  2290. Daniel S (3 April 2007)
  2291. - Rob Jones fixed better #ifdef'ing for a bunch of #include lines.
  2292. Daniel S (2 April 2007)
  2293. - Nick Zitzmann made the CURLOPT_POSTQUOTE option work for SFTP as well. The
  2294. accepted commands are as follows:
  2295. chgrp (gid) (path)
  2296. Changes the group ID of the file or directory at (path) to (gid). (gid)
  2297. must be a number.
  2298. chmod (perms) (path)
  2299. Changes the permissions of the file or directory at (path) to
  2300. (perms). (perms) must be a number in the format used by the chmod Unix
  2301. command.
  2302. chown (uid) (path)
  2303. Changes the user ID of the file or directory at (path) to (uid). (uid)
  2304. must be a number.
  2305. ln (source) (dest)
  2306. Creates a symbolic link at (dest) that points to the file located at
  2307. (source).
  2308. mkdir (path)
  2309. Creates a new directory at (path).
  2310. rename (source) (dest)
  2311. Moves the file or directory at (source) to (dest).
  2312. rm (path)
  2313. Deletes the file located at (path).
  2314. rmdir (path)
  2315. Deletes the directory located at (path). This command will raise an error
  2316. if the directory is not empty.
  2317. symlink (source) (dest)
  2318. Same as ln.
  2319. Daniel S (1 April 2007)
  2320. - Robert Iakobashvili made curl_multi_remove_handle() a lot faster when many
  2321. easy handles are added to a multi handle, by avoiding the looping over all
  2322. the handles to find which one to remove.
  2323. - Matt Kraai provided a patch that makes curl build on QNX 6 fine again.
  2324. Daniel S (31 March 2007)
  2325. - Fixed several minor issues detected by the coverity.com scanner.
  2326. - "Pixel" fixed a problem that appeared when you used -f with user+password
  2327. embedded in the URL.
  2328. Dan F (29 March 2007)
  2329. - Don't tear down the ftp connection if the maximum filesize was exceeded
  2330. and added tests 290 and 291 to check.
  2331. - Added ftps upload and SSL required tests 401 and 402.
  2332. - Send an EOF message before closing an SCP channel, as recommended by
  2333. RFC4254. Enable libssh2 tracing when ssh debugging is turned on.
  2334. Yang Tse (27 March 2007)
  2335. - Internal function Curl_select() renamed to Curl_socket_ready()
  2336. New Internal wrapper function Curl_select() around select (2), it
  2337. uses poll() when a fine poll() is available, so now libcurl can be
  2338. built without select() support at all if a fine poll() is available.
  2339. Daniel S (25 March 2007)
  2340. - Daniel Johnson fixed multi code to traverse the easy handle list properly.
  2341. A left-over bug from the February 21 fix.
  2342. Dan F (23 March 2007)
  2343. - Added --pubkey option to curl and made --key also work for SCP/SFTP,
  2344. plus made --pass work on an SSH private key as well.
  2345. - Changed the test harness to attempt to gracefully shut down servers
  2346. before resorting to the kill -9 hammer.
  2347. - Added test harness infrastructure to support scp/sftp tests, using
  2348. OpenSSH as the server.
  2349. - Fixed a memory leak when specifying a proxy with a file: URL.
  2350. Yang Tse (20 March 2007)
  2351. - Fixed: When a signal was caught awaiting for an event using Curl_select()
  2352. or Curl_poll() with a non-zero timeout both functions would restart the
  2353. specified timeout. This could even lead to the extreme case that if a
  2354. signal arrived with a frecuency lower to the specified timeout neither
  2355. function would ever exit.
  2356. Added experimental symbol definition check CURL_ACKNOWLEDGE_EINTR in
  2357. Curl_select() and Curl_poll(). When compiled with CURL_ACKNOWLEDGE_EINTR
  2358. defined both functions will return as soon as a signal is caught. Use it
  2359. at your own risk, all calls to these functions in the library should be
  2360. revisited and checked before fully supporting this feature.
  2361. Yang Tse (19 March 2007)
  2362. - Bryan Henderson fixed the progress function so that it can get called more
  2363. frequently allowing same calling frecuency for the client progress callback.
  2364. Dan F (15 March 2007)
  2365. - Various memory leaks plugged and NULL pointer fixes made in the ssh code.
  2366. Daniel (15 March 2007)
  2367. - Nick made the curl tool accept globbing ranges that only is one number, i.e
  2368. you can now use [1-1] without curl complaining.
  2369. Daniel (10 March 2007)
  2370. - Eygene Ryabinkin:
  2371. The problem is the following: when we're calling Curl_done and it decides to
  2372. keep the connection opened ('left intact'), then the caller is not notified
  2373. that the connection was done via the NULLifying of the pointer, so some easy
  2374. handle is keeping the pointer to this connection.
  2375. Later ConnectionExists can select such connection for reuse even if we're
  2376. not pipelining: pipeLen is zero, so the (pipeLen > 0 && !canPipeline) is
  2377. false and we can reuse this connection for another easy handle. But thus the
  2378. connection will be shared between two easy handles if the handle that wants
  2379. to take the ownership is not the same as was not notified of the connection
  2380. was done in Curl_done. And when some of these easy handles will get their
  2381. connection really freed the another one will still keep the pointer.
  2382. My fix was rather trivial: I just added the NULLification to the 'else'
  2383. branch in the Curl_done. My tests with Git and ElectricFence showed no
  2384. problems both for HTTP pulling and cloning. Repository size is about 250 Mb,
  2385. so it was a considerable amount of Curl's work.
  2386. Dan F (9 March 2007)
  2387. - Updated the test harness to add a new "crypto" feature check and updated the
  2388. appropriate test case to use it. For now, this is treated the same as the
  2389. "SSL" feature because curl doesn't list it separately.
  2390. Daniel (9 March 2007)
  2391. - Robert Iakobashvili fixed CURLOPT_INTERFACE for IPv6.
  2392. - Robert A. Monat improved the maketgz and VC6/8 generating to set the correct
  2393. machine type too.
  2394. - Justin Fletcher fixed a file descriptor leak in the curl tool when trying to
  2395. upload a file it couldn't open. Bug #1676581
  2396. (http://curl.haxx.se/bug/view.cgi?id=1676581)
  2397. Dan F (9 March 2007)
  2398. - Updated the test harness to check for protocol support before running each
  2399. test, fixing KNOWN_BUGS #11.
  2400. Dan F (7 March 2007)
  2401. - Reintroduced (after a 3 year hiatus) an FTPS test case (400) into the test
  2402. harness. It is very limited as it supports only ftps:// URLs with
  2403. --ftp-ssl-control specified, which implicitly encrypts the control
  2404. channel but not the data channels. That allows stunnel to be used with
  2405. an unmodified ftp server in exactly the same way that the test https
  2406. server is set up.
  2407. Dan F (7 March 2007)
  2408. - Honour --ftp-ssl-control on ftps:// URLs to allow encrypted control and
  2409. unencrypted data connections.
  2410. Dan F (6 March 2007)
  2411. - Fixed a couple of improper pointer uses detected by valgrind in test
  2412. cases 181 & 216.
  2413. Daniel (2 March 2007)
  2414. - Robert A. Monat and Shmulik Regev helped out to fix the new */Makefile.vc8
  2415. makefiles that are included in the source release archives, generated from
  2416. the Makefile.vc6 files by the maketgz script. I also modified the root
  2417. Makefile to have a VC variable that defaults to vc6 but can be overridden to
  2418. allow it to be used for vc8 as well. Like this:
  2419. nmake VC=vc8 vc
  2420. Daniel (27 February 2007)
  2421. - Hang Kin Lau found and fixed: When I use libcurl to connect to an https
  2422. server through a proxy and have the remote https server port set using the
  2423. CURLOPT_PORT option, protocol gets reset to http from https after the first
  2424. request.
  2425. User defined URL was modified internally by libcurl and subsequent reuse of
  2426. the easy handle may lead to connection using a different protocol (if not
  2427. originally http).
  2428. I found that libcurl hardcoded the protocol to "http" when it tries to
  2429. regenerate the URL if CURLOPT_PORT is set. I tried to fix the problem as
  2430. follows and it's working fine so far
  2431. Daniel (25 February 2007)
  2432. - Adam D. Moss made the HTTP CONNECT procedure less blocking when used from
  2433. the multi interface. Note that it still does a part of the connection in a
  2434. blocking manner.
  2435. Daniel (23 February 2007)
  2436. - Added warning outputs if the command line uses more than one of the options
  2437. -v, --trace and --trace-ascii, since it could really confuse the user.
  2438. Clarified this fact in the man page.
  2439. Daniel (21 February 2007)
  2440. - Ravi Pratap provided work on libcurl making pipelining more robust and
  2441. fixing some bugs:
  2442. o Don't mix GET and POST requests in a pipeline
  2443. o Fix the order in which requests are dispatched from the pipeline
  2444. o Fixed several curl bugs with pipelining when the server is returning
  2445. chunked encoding:
  2446. * Added states to chunked parsing for final CRLF
  2447. * Rewind buffer after parsing chunk with data remaining
  2448. * Moved chunked header initializing to a spot just before receiving
  2449. headers
  2450. Daniel (20 February 2007)
  2451. - Linus Nielsen Feltzing changed the CURLOPT_FTP_SSL_CCC option to handle
  2452. active and passive CCC shutdown and added the --ftp-ssl-ccc-mode command
  2453. line option.
  2454. Daniel (19 February 2007)
  2455. - Ian Turner fixed the libcurl.m4 macro's support for --with-libcurl.
  2456. - Shmulik Regev found a memory leak in re-used HTTPS connections, at least
  2457. when the multi interface was used.
  2458. - Robson Braga Araujo made passive FTP transfers work with SOCKS (both 4 and
  2459. 5).
  2460. Daniel (18 February 2007)
  2461. - Jeff Pohlmeyer identified two problems: first a rather obscure problem with
  2462. the multi interface and connection re-use that could make a
  2463. curl_multi_remove_handle() ruin a pointer in another handle.
  2464. The second problem was less of an actual problem but more of minor quirk:
  2465. the re-using of connections wasn't properly checking if the connection was
  2466. marked for closure.
  2467. Daniel (16 February 2007)
  2468. - Duncan Mac-Vicar Prett and Michal Marek reported problems with resetting
  2469. CURLOPT_RANGE back to no range on an easy handle when using FTP.
  2470. Dan F (14 February 2007)
  2471. - Fixed curl-config --libs so it doesn't list unnecessary libraries (and
  2472. therefore introduce unnecessary dependencies) when it's not needed.
  2473. Also, don't bother adding a library path of /usr/lib
  2474. Daniel (13 February 2007)
  2475. - The default password for anonymous FTP connections is now changed to be
  2476. "ftp@example.com".
  2477. - Robert A. Monat made libcurl build fine with VC2005 - it doesn't have
  2478. gmtime_r() like the older VC versions. He also made use of some machine-
  2479. specific defines to differentiate the "OS" define.
  2480. Daniel (12 February 2007)
  2481. - Rob Crittenden added support for NSS (Network Security Service) for the
  2482. SSL/TLS layer. http://www.mozilla.org/projects/security/pki/nss/
  2483. This is the fourth supported library for TLS/SSL that libcurl supports!
  2484. - Shmulik Regev fixed so that the final CRLF of HTTP response headers are sent
  2485. to the debug callback.
  2486. - Shmulik Regev added CURLOPT_HTTP_CONTENT_DECODING and
  2487. CURLOPT_HTTP_TRANSFER_DECODING that if set to zero will disable libcurl's
  2488. internal decoding of content or transfer encoded content. This may be
  2489. preferable in cases where you use libcurl for proxy purposes or similar. The
  2490. command line tool got a --raw option to disable both at once.
  2491. - release tarballs made with maketgz will from now on have a LIBCURL_TIMESTAMP
  2492. define set to hold the exact date and time of when the tarball was built, as
  2493. a human readable string using the UTC time zone.
  2494. - Jeff Pohlmeyer fixed a flaw in curl_multi_add_handle() when adding a handle
  2495. that has an easy handle present in the "closure" list pending closure.
  2496. Daniel (6 February 2007)
  2497. - Regular file downloads wiht SFTP and SCP are now done using the non-blocking
  2498. API of libssh2, if the libssh2 headers seem to support them. This will make
  2499. SCP and SFTP much more responsive and better libcurl citizens when used with
  2500. the multi interface etc.
  2501. Daniel (5 February 2007)
  2502. - Michael Wallner added support for CURLOPT_TIMEOUT_MS and
  2503. CURLOPT_CONNECTTIMEOUT_MS that, as their names suggest, do the timeouts with
  2504. millisecond resolution. The only restriction to that is the alarm()
  2505. (sometimes) used to abort name resolves as that uses full seconds. I fixed
  2506. the FTP response timeout part of the patch.
  2507. Internally we now count and keep the timeouts in milliseconds but it also
  2508. means we multiply set timeouts with 1000. The effect of this is that no
  2509. timeout can be set to more than 2^31 milliseconds (on 32 bit systems), which
  2510. equals 24.86 days. We probably couldn't before either since the code did
  2511. *1000 on the timeout values on several places already.
  2512. Daniel (3 February 2007)
  2513. - Yang Tse fixed the cookie expiry date in several test cases that started to
  2514. fail since they used "1 feb 2007"...
  2515. - Manfred Schwarb reported that socks5 support was broken and help us pinpoint
  2516. the problem. The code now tries harder to use httproxy and proxy where
  2517. apppropriate, as not all proxies are HTTP...
  2518. Version 7.16.1 (29 January 2007)
  2519. Daniel (29 January 2007)
  2520. - Michael Wallner reported that when doing a CONNECT with a custom User-Agent
  2521. header, you got _two_ User-Agent headers in the CONNECT request...! Added
  2522. test case 287 to verify the fix.
  2523. Daniel (28 January 2007)
  2524. - curl_easy_reset() now resets the CA bundle path correctly.
  2525. - David McCreedy fixed the Curl command line tool for HTTP on non-ASCII
  2526. platforms.
  2527. Daniel (25 January 2007)
  2528. - Added the --libcurl [file] option to curl. Append this option to any
  2529. ordinary curl command line, and you will get a libcurl-using source code
  2530. written to the file that does the equivalent operation of what your command
  2531. line operation does!
  2532. Dan F (24 January 2007)
  2533. - Fixed a dangling pointer problem that prevented the http_proxy environment
  2534. variable from being properly used in many cases (and caused test case 63
  2535. to fail).
  2536. Daniel (23 January 2007)
  2537. - David McCreedy did NTLM changes mainly for non-ASCII platforms:
  2538. #1
  2539. There's a compilation error in http_ntlm.c if USE_NTLM2SESSION is NOT
  2540. defined. I noticed this while testing various configurations. Line 867 of
  2541. the current http_ntlm.c is a closing bracket for an if/else pair that only
  2542. gets compiled in if USE_NTLM2SESSION is defined. But this closing bracket
  2543. wasn't in an #ifdef so the code fails to compile unless USE_NTLM2SESSION was
  2544. defined. Lines 198 and 140 of my patch wraps that closing bracket in an
  2545. #ifdef USE_NTLM2SESSION.
  2546. #2
  2547. I noticed several picky compiler warnings when DEBUG_ME is defined. I've
  2548. fixed them with casting. By the way, DEBUG_ME was a huge help in
  2549. understanding this code.
  2550. #3
  2551. Hopefully the last non-ASCII conversion patch for libcurl in a while. I
  2552. changed the "NTLMSSP" literal to hex since this signature must always be in
  2553. ASCII.
  2554. Conversion code was strategically added where necessary. And the
  2555. Curl_base64_encode calls were changed so the binary "blobs" http_ntlm.c
  2556. creates are NOT translated on non-ASCII platforms.
  2557. Dan F (22 January 2007)
  2558. - Converted (most of) the test data files into genuine XML. A handful still
  2559. are not, due mainly to the lack of support for XML character entities
  2560. (e.g. & => &amp; ). This will make it easier to validate test files using
  2561. tools like xmllint, as well as to edit and view them using XML tools.
  2562. Daniel (16 January 2007)
  2563. - Armel Asselin improved libcurl to behave a lot better when an easy handle
  2564. doing an FTP transfer is removed from a multi handle before completion. The
  2565. fix also fixed the "alive counter" to be correct on "premature removal" for
  2566. all protocols.
  2567. Dan F (16 January 2007)
  2568. - Fixed a small memory leak in tftp uploads discovered by curl's memory leak
  2569. detector. Also changed tftp downloads to URL-unescape the downloaded
  2570. file name.
  2571. Daniel (14 January 2007)
  2572. - David McCreedy provided libcurl changes for doing HTTP communication on
  2573. non-ASCII platforms. It does add some complexity, most notably with more
  2574. #ifdefs, but I want to see this supported added and I can't see how we can
  2575. add it without the extra stuff added.
  2576. - Setting CURLOPT_COOKIELIST to "ALL" when no cookies at all was present,
  2577. libcurl would crash when trying to read a NULL pointer.
  2578. Daniel (12 January 2007)
  2579. - Toby Peterson found a nasty bug that prevented (lib)curl from properly
  2580. downloading (most) things that were larger than 4GB on 32 bit systems. Matt
  2581. Witherspoon helped as narrow down the problem.
  2582. Daniel (5 January 2007)
  2583. - Linus Nielsen Feltzing introduced the --ftp-ssl-ccc command line option to
  2584. curl that uses the new CURLOPT_FTP_SSL_CCC option in libcurl. If enabled, it
  2585. will make libcurl shutdown SSL/TLS after the authentication is done on a
  2586. FTP-SSL operation.
  2587. Daniel (4 January 2007)
  2588. - David McCreedy made changes to allow base64 encoding/decoding to work on
  2589. non-ASCII platforms.
  2590. Daniel (3 January 2007)
  2591. - Matt Witherspoon fixed the flaw which made libcurl 7.16.0 always store
  2592. downloaded data in two buffers, just to be able to deal with a special HTTP
  2593. pipelining case. That is now only activated for pipelined transfers. In
  2594. Matt's case, it showed as a considerable performance difference,
  2595. Daniel (2 January 2007)
  2596. - Victor Snezhko helped us fix bug report #1603712
  2597. (http://curl.haxx.se/bug/view.cgi?id=1603712) (known bug #36) --limit-rate
  2598. (CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_RECV_SPEED_LARGE) are broken
  2599. on Windows (since 7.16.0, but that's when they were introduced as previous
  2600. to that the limiting logic was made in the application only and not in the
  2601. library). It was actually also broken on select()-based systems (as apposed
  2602. to poll()) but we haven't had any such reports. We now use select(), Sleep()
  2603. or delay() properly to sleep a while without waiting for anything input or
  2604. output when the rate limiting is activated with the easy interface.
  2605. - Modified libcurl.pc.in to use Libs.private for the libs libcurl itself needs
  2606. to get built static. It has been mentioned before and was again brought to
  2607. our attention by Nathanael Nerode who filed debian bug report #405226
  2608. (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=405226).
  2609. Daniel (29 December 2006)
  2610. - Make curl_easy_duphandle() set the magic number in the new handle.
  2611. Daniel (22 December 2006)
  2612. - Robert Foreman provided a prime example snippet showing how libcurl would
  2613. get confused and not acknowledge the 'no_proxy' variable properly once it
  2614. had used the proxy and you re-used the same easy handle. I made sure the
  2615. proxy name is properly stored in the connect struct rather than the
  2616. sessionhandle/easy struct.
  2617. - David McCreedy fixed a bad call to getsockname() that wrongly used a size_t
  2618. variable to point to when it should be a socklen_t.
  2619. - When setting a proxy with environment variables and (for example) running
  2620. 'curl [URL]' with a URL without a protocol prefix, curl would not send a
  2621. correct request as it failed to add the protocol prefix.
  2622. Daniel (21 December 2006)
  2623. - Robson Braga Araujo reported bug #1618359
  2624. (http://curl.haxx.se/bug/view.cgi?id=1618359) and subsequently provided a
  2625. patch for it: when downloading 2 zero byte files in a row, curl 7.16.0
  2626. enters an infinite loop, while curl 7.16.1-20061218 does one additional
  2627. unnecessary request.
  2628. Fix: During the "Major overhaul introducing http pipelining support and
  2629. shared connection cache within the multi handle." change, headerbytecount
  2630. was moved to live in the Curl_transfer_keeper structure. But that structure
  2631. is reset in the Transfer method, losing the information that we had about
  2632. the header size. This patch moves it back to the connectdata struct.
  2633. Daniel (16 December 2006)
  2634. - Brendan Jurd provided a fix that now prevents libcurl from getting a SIGPIPE
  2635. during certain conditions when GnuTLS is used.
  2636. Daniel (11 December 2006)
  2637. - Alexey Simak found out that when doing FTP with the multi interface and
  2638. something went wrong like it got a bad response code back from the server,
  2639. libcurl would leak memory. Added test case 538 to verify the fix.
  2640. I also noted that the connection would get cached in that case, which
  2641. doesn't make sense since it cannot be re-use when the authentication has
  2642. failed. I fixed that issue too at the same time, and also that the path
  2643. would be "remembered" in vain for cases where the connection was about to
  2644. get closed.
  2645. Daniel (6 December 2006)
  2646. - Sebastien Willemijns reported bug #1603712
  2647. (http://curl.haxx.se/bug/view.cgi?id=1603712) which is about connections
  2648. getting cut off prematurely when --limit-rate is used. While I found no such
  2649. problems in my tests nor in my reading of the code, I found that the
  2650. --limit-rate code was severly flawed (since it was moved into the lib, since
  2651. 7.15.5) when used with the easy interface and it didn't work as documented
  2652. so I reworked it somewhat and now it works for my tests.
  2653. Daniel (5 December 2006)
  2654. - Stefan Krause pointed out a compiler warning with a picky MSCV compiler when
  2655. passing a curl_off_t argument to the Curl_read_rewind() function which takes
  2656. an size_t argument. Curl_read_rewind() also had debug code left in it and it
  2657. was put in a different source file with no good reason when only used from
  2658. one single spot.
  2659. - Sh Diao reported that CURLOPT_CLOSEPOLICY doesn't work, and indeed, there is
  2660. no code present in the library that receives the option. Since it was not
  2661. possible to use, we know that no current users exist and thus we simply
  2662. removed it from the docs and made the code always use the default path of
  2663. the code.
  2664. - Jared Lundell filed bug report #1604956
  2665. (http://curl.haxx.se/bug/view.cgi?id=1604956) which identified setting
  2666. CURLOPT_MAXCONNECTS to zero caused libcurl to SIGSEGV. Starting now, libcurl
  2667. will always internally use no less than 1 entry in the connection cache.
  2668. - Sh Diao reported that CURLOPT_FORBID_REUSE no works, and indeed it broke in
  2669. the 7.16.0 release.
  2670. - Martin Skinner brought back bug report #1230118 to haunt us once again.
  2671. (http://curl.haxx.se/bug/view.cgi?id=1230118) curl_getdate() did not work
  2672. properly for all input dates on Windows. It was mostly seen on some TZ time
  2673. zones using DST. Luckily, Martin also provided a fix.
  2674. - Alexey Simak filed bug report #1600447
  2675. (http://curl.haxx.se/bug/view.cgi?id=1600447) in which he noted that active
  2676. FTP connections don't work with the multi interface. The problem is here
  2677. that the multi interface state machine has a state during which it can wait
  2678. for the data connection to connect, but the active connection is not done in
  2679. the same step in the sequence as the passive one is so it doesn't quite work
  2680. for active. The active FTP code still use a blocking function to allow the
  2681. remote server to connect.
  2682. The fix (work-around is a better word) for this problem is to set the
  2683. boolean prematurely that the data connection is completed, so that the "wait
  2684. for connect" phase ends at once.
  2685. The proper fix, left for the future, is of course to make the active FTP
  2686. case to act in a non-blocking way too.
  2687. - Matt Witherspoon fixed a problem case when the CPU load went to 100% when a
  2688. HTTP upload was disconnected:
  2689. "What appears to be happening is that my system (Linux 2.6.17 and 2.6.13) is
  2690. setting *only* POLLHUP on poll() when the conditions in my previous mail
  2691. occur. As you can see, select.c:Curl_select() does not check for POLLHUP. So
  2692. basically what was happening, is poll() was returning immediately (with
  2693. POLLHUP set), but when Curl_select() looked at the bits, neither POLLERR or
  2694. POLLOUT was set. This still caused Curl_readwrite() to be called, which
  2695. quickly returned. Then the transfer() loop kept continuing at full speed
  2696. forever."
  2697. Daniel (1 December 2006)
  2698. - Toon Verwaest reported that there are servers that send the Content-Range:
  2699. header in a third, not suppported by libcurl, format and we agreed that we
  2700. could make the parser more forgiving to accept all the three found
  2701. variations.
  2702. Daniel (25 November 2006)
  2703. - Venkat Akella found out that libcurl did not like HTTP responses that simply
  2704. responded with a single status line and no headers nor body. Starting now, a
  2705. HTTP response on a persistent connection (i.e not set to be closed after the
  2706. response has been taken care of) must have Content-Length or chunked
  2707. encoding set, or libcurl will simply assume that there is no body.
  2708. To my horror I learned that we had no less than 57(!) test cases that did bad
  2709. HTTP responses like this, and even the test http server (sws) responded badly
  2710. when queried by the test system if it is the test system. So although the
  2711. actual fix for the problem was tiny, going through all the newly failing test
  2712. cases got really painful and boring.
  2713. Daniel (24 November 2006)
  2714. - James Housley did lots of work and introduced SFTP downloads.
  2715. Daniel (13 November 2006)
  2716. - Ron in bug #1595348 (http://curl.haxx.se/bug/view.cgi?id=1595348) pointed
  2717. out a stack overwrite (and the corresponding fix) on 64bit Windows when
  2718. dealing with HTTP chunked encoding.
  2719. Daniel (9 November 2006)
  2720. - Nir Soffer updated libcurl.framework.make:
  2721. o fix symlinks, should link to Versions, not to ./Versions
  2722. o indentation improvments
  2723. - Dmitriy Sergeyev found a SIGSEGV with his test04.c example posted on 7 Nov
  2724. 2006. It turned out we wrongly assumed that the connection cache was present
  2725. when tearing down a connection.
  2726. - Ciprian Badescu found a SIGSEGV when doing multiple TFTP transfers using the
  2727. multi interface, but I could also repeat it doing multiple sequential ones
  2728. with the easy interface. Using Ciprian's test case, I could fix it.
  2729. Daniel (8 November 2006)
  2730. - Bradford Bruce reported that when setting CURLOPT_DEBUGFUNCTION without
  2731. CURLOPT_VERBOSE set to non-zero, you still got a few debug messages from the
  2732. SSL handshake. This is now stopped.
  2733. Daniel (7 November 2006)
  2734. - Olaf fixed a leftover problem with the CONNECT fix of his that would leave a
  2735. wrong error message in the error message buffer.
  2736. Daniel (3 November 2006)
  2737. - Olaf Stueben provided a patch that I edited slightly. It fixes the notorious
  2738. KNOWN_BUGS #25, which happens when a proxy closes the connection when
  2739. libcurl has sent CONNECT, as part of an authentication negotiation. Starting
  2740. now, libcurl will re-connect accordingly and continue the authentication as
  2741. it should.
  2742. Daniel (2 November 2006)
  2743. - James Housley brought support for SCP transfers, based on the libssh2 library
  2744. for the actual network protocol stuff.
  2745. Added these new curl_easy_setopt() options:
  2746. CURLOPT_SSH_AUTH_TYPES
  2747. CURLOPT_SSH_PUBLIC_KEYFILE
  2748. CURLOPT_SSH_PRIVATE_KEYFILE
  2749. Version 7.16.0 (30 October 2006)
  2750. Daniel (25 October 2006)
  2751. - Fixed CURLOPT_FAILONERROR to return CURLE_HTTP_RETURNED_ERROR even for the
  2752. case when 401 or 407 are returned, *IF* no auth credentials have been given.
  2753. The CURLOPT_FAILONERROR option is not possible to make fool-proof for 401
  2754. and 407 cases when auth credentials is given, but we've now covered this
  2755. somewhat more.
  2756. You might get some amounts of headers transferred before this situation is
  2757. detected, like for when a "100-continue" is received as a response to a
  2758. POST/PUT and a 401 or 407 is received immediately afterwards.
  2759. Added test 281 to verify this change.
  2760. Daniel (23 October 2006)
  2761. - Ravi Pratap provided a major update with pipelining fixes. We also no longer
  2762. re-use connections (for pipelining) before the name resolving is done.
  2763. Daniel (21 October 2006)
  2764. - Nir Soffer made the tests/libtest/Makefile.am use a proper variable for all
  2765. the single test applications' link and dependences, so that you easier can
  2766. override those from the command line when using make.
  2767. - Armel Asselin separated CA cert verification problems from problems with
  2768. reading the (local) CA cert file to let users easier pinpoint the actual
  2769. problem. CURLE_SSL_CACERT_BADFILE (77) is the new libcurl error code.
  2770. Daniel (18 October 2006)
  2771. - Removed the "protocol-guessing" for URLs with host names starting with FTPS
  2772. or TELNET since they are practically non-existant. This leaves us with only
  2773. three different prefixes that would assume the protocol is anything but
  2774. HTTP, and they are host names starting with "ftp.", "dict." or "ldap.".
  2775. Daniel (17 October 2006)
  2776. - Bug report #1579171 pointed out code flaws detected with "prefast", and they
  2777. were 1 - a too small memory clear with memset() in the threaded resolver and
  2778. 2 - a range of potentially bad uses of the ctype family of is*() functions
  2779. such as isdigit(), isalnum(), isprint() and more. The latter made me switch
  2780. to using our own set of these functions/macros using uppercase letters, and
  2781. with some extra set of crazy typecasts to avoid mistakingly passing in
  2782. negative numbers to the underlying is*() functions.
  2783. - With Jeff Pohlmeyer's help, I fixed the expire timer when using
  2784. curl_multi_socket() during name resolves with c-ares and the LOW_SPEED
  2785. options now work fine with curl_multi_socket() as well.
  2786. Daniel (16 October 2006)
  2787. - Added a check in configure that simply tries to run a program (not when
  2788. cross-compiling) in order to detect problems with run-time libraries that
  2789. otherwise would occur when the sizeof tests for curl_off_t would run and
  2790. thus be much more confusing to users. The check of course should run after
  2791. all lib-checks are done and before any other test is used that would run an
  2792. executable built for testing-purposes.
  2793. Dan F (13 October 2006)
  2794. - The tagging of application/x-www-form-urlencoded POST body data sent
  2795. to the CURLOPT_DEBUGFUNCTION callback has been fixed (it was erroneously
  2796. included as part of the header). A message was also added to the
  2797. command line tool to show when data is being sent, enabled when
  2798. --verbose is used.
  2799. Daniel (12 October 2006)
  2800. - Starting now, adding an easy handle to a multi stack that was already added
  2801. to a multi stack will cause CURLM_BAD_EASY_HANDLE to get returned.
  2802. - Jeff Pohlmeyer has been working with the hiperfifo.c example source code,
  2803. and while doing so it became apparent that the current timeout system for
  2804. the socket API really was a bit awkward since it become quite some work to
  2805. be sure we have the correct timeout set.
  2806. Jeff then provided the new CURLMOPT_TIMERFUNCTION that is yet another
  2807. callback the app can set to get to know when the general timeout time
  2808. changes and thus for an application like hiperfifo.c it makes everything a
  2809. lot easier and nicer. There's a CURLMOPT_TIMERDATA option too of course in
  2810. good old libcurl tradition.
  2811. Jeff has also updated the hiperfifo.c example code to use this news.
  2812. Daniel (9 October 2006)
  2813. - Bogdan Nicula's second test case (posted Sun, 08 Oct 2006) converted to test
  2814. case 535 and it now runs fine. Again a problem with the pipelining code not
  2815. taking all possible (error) conditions into account.
  2816. Daniel (6 October 2006)
  2817. - Bogdan Nicula's hanging test case (posted Wed, 04 Oct 2006) was converted to
  2818. test case 533 and the test now runs fine.
  2819. Daniel (4 October 2006)
  2820. - Dmitriy Sergeyev provided an example source code that crashed CVS libcurl
  2821. but that worked nicely in 7.15.5. I converted it into test case 532 and
  2822. fixed the problem.
  2823. Daniel (29 September 2006)
  2824. - Removed a few other no-longer present options from the header file.
  2825. - Support for FTP third party transfers was removed. Here's why:
  2826. o The recent multi interface changes broke it and the design of the 3rd party
  2827. transfers made it very hard to fix the problems
  2828. o It was still blocking and thus nasty for the multi interface
  2829. o It was a lot of extra code for a very rarely used feature
  2830. o It didn't use the same code as for "plain" FTP transfers, so it didn't work
  2831. fine for IPv6 and it didn't properly re-use connections and more
  2832. o There's nobody around who's willing to work on and improve the existing
  2833. code
  2834. This does not mean that third party transfers are banned forever, only that
  2835. they need to be done better if they are to be re-added in the future.
  2836. The CURLOPT_SOURCE_* options are removed from the lib and so are the --3p*
  2837. options from the command line tool. For this reason, I also bumped the
  2838. version info for the lib.
  2839. Daniel (28 September 2006)
  2840. - Reported in #1561470 (http://curl.haxx.se/bug/view.cgi?id=1561470), libcurl
  2841. would crash if a bad function sequence was used when shutting down after
  2842. using the multi interface (i.e using easy_cleanup after multi_cleanup) so
  2843. precautions have been added to make sure it doesn't any more - test case 529
  2844. was added to verify.
  2845. Daniel (27 September 2006)
  2846. - The URL in the cookie jar file is now changed since it was giving a 404.
  2847. Reported by Timothy Stone. The new URL will take the visitor to a curl web
  2848. site mirror with the document.
  2849. Daniel (24 September 2006)
  2850. - Bernard Leak fixed configure --with-gssapi-libs.
  2851. - Cory Nelson made libcurl use the WSAPoll() function if built for Windows
  2852. Vista (_WIN32_WINNT >= 0x0600)
  2853. Daniel (23 September 2006)
  2854. - Mike Protts added --ftp-ssl-control to make curl use FTP-SSL, but only
  2855. encrypt the control connection and use the data connection "plain".
  2856. - Dmitriy Sergeyev provided a patch that made the SOCKS[45] code work better
  2857. as it now will read the full data sent from servers. The SOCKS-related code
  2858. was also moved to the new lib/socks.c source file.
  2859. Daniel (21 September 2006)
  2860. - Added test case 531 in an attempt to repeat bug report #1561470
  2861. (http://curl.haxx.se/bug/view.cgi?id=1561470) that is said to crash when an
  2862. FTP upload fails with the multi interface. It did not, but I made a failed
  2863. upload still assume the control connection to be fine.
  2864. Daniel (20 September 2006)
  2865. - Armel Asselin fixed problems when you gave a proxy URL with user name and
  2866. empty password or no password at all. Test case 278 and 279 were added to
  2867. verify.
  2868. Daniel (12 September 2006)
  2869. - Added docs/examples/10-at-a-time.c by Michael Wallner
  2870. - Added docs/examples/hiperfifo.c by Jeff Pohlmeyer
  2871. Daniel (11 September 2006)
  2872. - Fixed my breakage from earlier today so that doing curl_easy_cleanup() on a
  2873. handle that is part of a multi handle first removes the handle from the
  2874. stack.
  2875. - Added CURLOPT_SSL_SESSIONID_CACHE and --no-sessionid to disable SSL
  2876. session-ID re-use on demand since there obviously are broken servers out
  2877. there that misbehave with session-IDs used.
  2878. - Jeff Pohlmeyer presented a *multi_socket()-using program that exposed a
  2879. problem with it (SIGSEGV-style). It clearly showed that the existing
  2880. socket-state and state-difference function wasn't good enough so I rewrote
  2881. it and could then re-run Jeff's program without any crash. The previous
  2882. version clearly could miss to tell the application when a handle changed
  2883. from using one socket to using another.
  2884. While I was at it (as I could use this as a means to track this problem
  2885. down), I've now added a 'magic' number to the easy handle struct that is
  2886. inited at curl_easy_init() time and cleared at curl_easy_cleanup() time that
  2887. we can use internally to detect that an easy handle seems to be fine, or at
  2888. least not closed or freed (freeing in debug builds fill the area with 0x13
  2889. bytes but in normal builds we can of course not assume any particular data
  2890. in the freed areas).
  2891. Daniel (9 September 2006)
  2892. - Michele Bini fixed how the hostname is put in NTLM packages. As servers
  2893. don't expect fully qualified names we need to cut them off at the first dot.
  2894. - Peter Sylvester cleaned up and fixed the getsockname() uses in ftp.c. Some
  2895. of them can be completetly removed though...
  2896. Daniel (6 September 2006)
  2897. - Ravi Pratap and I have implemented HTTP Pipelining support. Enable it for a
  2898. multi handle using CURLMOPT_PIPELINING and all HTTP connections done on that
  2899. handle will be attempted to get pipelined instead of done in parallell as
  2900. they are performed otherwise.
  2901. As a side-effect from this work, connections are now shared between all easy
  2902. handles within a multi handle, so if you use N easy handles for transfers,
  2903. each of them can pick up and re-use a connection that was previously used by
  2904. any of the handles, be it the same or one of the others.
  2905. This separation of the tight relationship between connections and easy
  2906. handles is most noticable when you close easy handles that have been used in
  2907. a multi handle and check amount of used memory or watch the debug output, as
  2908. there are times when libcurl will keep the easy handle around for a while
  2909. longer to be able to close it properly. Like for sending QUIT to close down
  2910. an FTP connection.
  2911. This is a major change.
  2912. Daniel (4 September 2006)
  2913. - Dmitry Rechkin (http://curl.haxx.se/bug/view.cgi?id=1551412) provided a
  2914. patch that while not fixing things very nicely, it does make the SOCKS5
  2915. proxy connection slightly better as it now acknowledges the timeout for
  2916. connection and it no longer segfaults in the case when SOCKS requires
  2917. authentication and you did not specify username:password.
  2918. Daniel (31 August 2006)
  2919. - Dmitriy Sergeyev found and fixed a multi interface flaw when using asynch
  2920. name resolves. It could get stuck in the wrong state.
  2921. Gisle (29 August 2006)
  2922. - Added support for other MS-DOS compilers (desides djgpp). All MS-DOS
  2923. compiler now uses the same config.dos file (renamed to config.h by
  2924. make). libcurl now builds fine using Watcom and Metaware's High-C
  2925. using the Watt-32 tcp/ip-stack.
  2926. Daniel (29 August 2006)
  2927. - David McCreedy added CURLOPT_SOCKOPTFUNCTION and CURLOPT_SOCKOPTDATA to
  2928. allow applications to set their own socket options.
  2929. Daniel (25 August 2006)
  2930. - Armel Asselin reported that the 'running_handles' counter wasn't updated
  2931. properly if you removed a "live" handle from a multi handle with
  2932. curl_multi_remove_handle().
  2933. Daniel (22 August 2006)
  2934. - David McCreedy fixed a remaining mistake from the August 19 TYPE change.
  2935. - Peter Sylvester pointed out a flaw in the AllowServerConnect() in the FTP
  2936. code when doing pure ipv6 EPRT connections.
  2937. Daniel (19 August 2006)
  2938. - Based on a patch by Armel Asselin, the FTP code no longer re-issues the TYPE
  2939. command on subsequent requests on a re-used connection unless it has to.
  2940. - Armel Asselin fixed a crash in the FTP code when using SINGLECWD mode and
  2941. files in the root directory.
  2942. - Andrew Biggs pointed out a "Expect: 100-continue" flaw where libcurl didn't
  2943. send the whole request at once, even though the Expect: header was disabled
  2944. by the application. An effect of this change is also that small (< 1024
  2945. bytes) POSTs are now always sent without Expect: header since we deem it
  2946. more costly to bother about that than the risk that we send the data in
  2947. vain.
  2948. Daniel (9 August 2006)
  2949. - Armel Asselin made the CURLOPT_PREQUOTE option work fine even when
  2950. CURLOPT_NOBODY is set true. PREQUOTE is then run roughly at the same place
  2951. in the command sequence as it would have run if there would've been a
  2952. transfer.
  2953. Daniel (8 August 2006)
  2954. - Fixed a flaw in the "Expect: 100-continue" treatment. If you did two POSTs
  2955. on a persistent connection and allowed the first to use that header, you
  2956. could not disable it for the second request.
  2957. Daniel (7 August 2006)
  2958. - Domenico Andreolfound a quick build error which happened because
  2959. src/config.h.in was not a proper duplcate of lib/config.h.in which it
  2960. should've been and this was due to the maketgz script not doing the cp
  2961. properly.
  2962. Version 7.15.5 (7 August 2006)
  2963. Daniel (2 August 2006)
  2964. - Mark Lentczner fixed how libcurl was not properly doing chunked encoding
  2965. if the header "Transfer-Encoding: chunked" was set by the application.
  2966. http://curl.haxx.se/bug/view.cgi?id=1531838
  2967. Daniel (1 August 2006)
  2968. - Maciej Karpiuk fixed a crash that would occur if we passed Curl_strerror()
  2969. an unknown error number on glibc systems.
  2970. http://curl.haxx.se/bug/view.cgi?id=1532289
  2971. Daniel (31 July 2006)
  2972. - *ALERT* curl_multi_socket() and curl_multi_socket_all() got modified
  2973. prototypes: they both now provide the number of running handles back to the
  2974. calling function. It makes the functions resemble the good old
  2975. curl_multi_perform() more and provides a nice way to know when the multi
  2976. handle goes empty.
  2977. ALERT2: don't use the curl_multi_socket*() functionality in anything
  2978. production-like until I say it's somewhat settled, as I suspect there might
  2979. be some further API changes before I'm done...
  2980. Daniel (28 July 2006)
  2981. - Yves Lejeune fixed so that replacing Content-Type: when doing multipart
  2982. formposts work exactly the way you want it (and the way you'd assume it
  2983. works).
  2984. Daniel (27 July 2006)
  2985. - David McCreedy added --ftp-ssl-reqd which makes curl *require* SSL for both
  2986. control and data connection, as the existing --ftp-ssl option only requests
  2987. it.
  2988. - [Hiper-related work] Added a function called curl_multi_assign() that will
  2989. set a private pointer added to the internal libcurl hash table for the
  2990. particular socket passed in to this function:
  2991. CURLMcode curl_multi_assign(CURLM *multi_handle,
  2992. curl_socket_t sockfd,
  2993. void *sockp);
  2994. 'sockp' being a custom pointer set by the application to be associated with
  2995. this socket. The socket has to be already existing and in-use by libcurl,
  2996. like having already called the callback telling about its existance.
  2997. The set hashp pointer will then be passed on to the callback in upcoming
  2998. calls when this same socket is used (in the brand new 'socketp' argument).
  2999. Daniel (26 July 2006)
  3000. - Dan Nelson added the CURLOPT_FTP_ALTERNATIVE_TO_USER libcurl option and curl
  3001. tool option named --ftp-alternative-to-user. It provides a mean to send a
  3002. particular command if the normal USER/PASS approach fails.
  3003. - Michael Jerris added magic that builds lib/curllib.vcproj automatically for
  3004. newer MSVC.
  3005. Daniel (25 July 2006)
  3006. - Georg Horn made the transfer timeout error message include more details.
  3007. Daniel (20 July 2006)
  3008. - David McCreedy fixed a build error when building libcurl with HTTP disabled,
  3009. problem added with the curl_formget() patch.
  3010. Daniel (17 July 2006)
  3011. - Jari Sundell did some excellent research and bug tracking, figured out that
  3012. we did wrong and patched it: When nodes were removed from the splay tree,
  3013. and we didn't properly remove it from the splay tree when an easy handle was
  3014. removed from a multi stack and thus we could wrongly leave a node in the
  3015. splay tree pointing to (bad) memory.
  3016. Daniel (14 July 2006)
  3017. - David McCreedy fixed a flaw where the CRLF counter wasn't properly cleared
  3018. for FTP ASCII transfers.
  3019. Daniel (8 July 2006)
  3020. - Ates Goral pointed out that libcurl's cookie parser did case insensitive
  3021. string comparisons on the path which is incorrect and provided a patch that
  3022. fixes this. I edited test case 8 to include details that test for this.
  3023. - Ingmar Runge provided a source snippet that caused a crash. The reason for
  3024. the crash was that libcurl internally was a bit confused about who owned the
  3025. DNS cache at all times so if you created an easy handle that uses a shared
  3026. DNS cache and added that to a multi handle it would crash. Now we keep more
  3027. careful internal track of exactly what kind of DNS cache each easy handle
  3028. uses: None, Private (allocated for and used only by this single handle),
  3029. Shared (points to a cache held by a shared object), Global (points to the
  3030. global cache) or Multi (points to the cache within the multi handle that is
  3031. automatically shared between all easy handles that are added with private
  3032. caches).
  3033. Daniel (4 July 2006)
  3034. - Toshiyuki Maezawa fixed a problem where you couldn't override the
  3035. Proxy-Connection: header when using a proxy and not doing CONNECT.
  3036. Daniel (24 June 2006)
  3037. - Michael Wallner added curl_formget(), which allows an application to extract
  3038. (serialise) a previously built formpost (as with curl_formadd()).
  3039. Daniel (23 June 2006)
  3040. - Arve Knudsen found a flaw in curl_multi_fdset() for systems where
  3041. curl_socket_t is unsigned (like Windows) that could cause it to wrongly
  3042. return a max fd of -1.
  3043. Daniel (20 June 2006)
  3044. - Peter Silva introduced CURLOPT_MAX_SEND_SPEED_LARGE and
  3045. CURLOPT_MAX_RECV_SPEED_LARGE that limit tha maximum rate libcurl is allowed
  3046. to send or receive data. This kind of adds the the command line tool's
  3047. option --limit-rate to the library.
  3048. The rate limiting logic in the curl app is now removed and is instead
  3049. provided by libcurl itself. Transfer rate limiting will now also work for -d
  3050. and -F, which it didn't before.
  3051. Daniel (19 June 2006)
  3052. - Made -K on a file that couldn't be read cause a warning to be displayed.
  3053. Daniel (13 June 2006)
  3054. - Dan Fandrich implemented --enable-hidden-symbols configure option to enable
  3055. -fvisibility=hidden on gcc >= 4.0. This reduces the size of the libcurl
  3056. binary and speeds up dynamic linking by hiding all the internal symbols from
  3057. the symbol table.
  3058. Version 7.15.4 (12 June 2006)
  3059. Daniel (8 June 2006)
  3060. - Brian Dessent fixed the code for cygwin in three distinct ways:
  3061. The first modifies {lib,src}/setup.h to not include the winsock headers
  3062. under Cygwin. This fixes the reported build problem. Cygwin attempts as
  3063. much as possible to emulate a posix environment under Windows. This means
  3064. that WIN32 is *not* #defined and (to the extent possible) everything is done
  3065. as it would be on a *ix type system. Thus <sys/socket.h> is the proper
  3066. include, and even though winsock2.h is present, including it just introduces
  3067. a whole bunch of incompatible socket API stuff.
  3068. The second is a patch I've included in the Cygwin binary packages for a
  3069. while. It skips two unnecessary library checks (-lwinmm and -lgdi32). The
  3070. checks are innocuous and they do succeed, but they pollute LIBS with
  3071. unnecessary stuff which gets recorded as such in the libcurl.la file, which
  3072. brings them into the build of any libcurl-downstream. As far as I know
  3073. these libs are really only necessary for mingw, so alternatively they could
  3074. be designed to only run if $host matches *-*-mingw* but I took the safer
  3075. route of skipping them for *-*-cygwin*.
  3076. The third patch replaces all uses of the ancient and obsolete __CYGWIN32__
  3077. with __CYGWIN__. Ref: <http://cygwin.com/ml/cygwin/2003-09/msg01520.html>.
  3078. Daniel (7 June 2006)
  3079. - Mikael Sennerholm provided a patch that added NTLM2 session response support
  3080. to libcurl. The 21 NTLM test cases were again modified to comply...
  3081. Daniel (27 May 2006)
  3082. - Óscar Morales Vivó updated the libcurl.framework.make file.
  3083. Daniel (26 May 2006)
  3084. - Olaf Stüben fixed a bug that caused Digest authentication with md5-sess to
  3085. fail. When using the md5-sess, the result was not Md5 encoded and Base64
  3086. transformed.
  3087. Daniel (25 May 2006)
  3088. - Michael Wallner provided a patch that allows "SESS" to be set with
  3089. CURLOPT_COOKIELIST, which then makes all session cookies get cleared.
  3090. Daniel (24 May 2006)
  3091. - Tor Arntsen made test 271 run fine again since the TFTP path fix.
  3092. Daniel (23 May 2006)
  3093. - Martin Michlmayr filed debian bug report #367954, but the same error also
  3094. showed up in the autobuilds. It seems a rather long-since introduced shell
  3095. script flaw in the configure script suddenly was detected by the bash
  3096. version in Debian Unstable. It had previously passed undetected by all
  3097. shells used so far...
  3098. - David McCreedy updated lib/config-tpf.h
  3099. Daniel (11 May 2006)
  3100. - Fixed the configure's check for old-style SSLeay headers since I fell over a
  3101. case with a duplicate file name (a krb4 implementation with an err.h
  3102. file). I converted the check to manually make sure three of the headers are
  3103. present before considering them fine.
  3104. - David McCreedy provided a fix for CURLINFO_LASTSOCKET that does extended
  3105. checks on the to-be-returned socket to make sure it truly seems to be alive
  3106. and well. For SSL connection it (only) uses OpenSSL functions.
  3107. Daniel (10 May 2006)
  3108. - Fixed DICT in two aspects:
  3109. 1 - allow properly URL-escaped words, like using %20 for spaces
  3110. 2 - properly escape certain letters within a word to comply to the RFC2229
  3111. Daniel (9 May 2006)
  3112. - Andreas Ntaflos reported a bug in libcurl.m4: When configuring my GNU
  3113. autotools project, which optionally (default=yes) uses libcurl on a system
  3114. without a (usable) libcurl installation, but not specifying
  3115. `--without-libcurl', configure determines correctly that no libcurl is
  3116. available, however, the LIBCURL variable gets expanded to `LIBCURL = -lcurl'
  3117. in the resulting Makefiles.
  3118. David Shaw fixed the flaw.
  3119. - Robson Braga Araujo fixed two problems in the recently added non-blocking SSL
  3120. connects. The state machine was not reset properly so that subsequent
  3121. connects using the same handle would fail, and there were two memory leaks.
  3122. - Robson Braga Araujo fixed a memory leak when you added an easy handle to a
  3123. multi stack and that easy handle had already been used to do one or more
  3124. easy interface transfers, as then the code threw away the previously used
  3125. DNS cache without properly freeing it.
  3126. Daniel (8 May 2006)
  3127. - Dan Fandrich went over the TFTP code and he pointed out and fixed numerous
  3128. problems:
  3129. * The received file is corrupted when a packet is lost and retransmitted
  3130. (this is a serious problem!)
  3131. * Transmitting a file aborts if a block is lost and retransmitted
  3132. * Data is stored in the wrong location in the buffer for uploads, so uploads
  3133. always fail (I don't see how it could have ever worked, but it did on x86
  3134. at least)
  3135. * A number of calls are made to strerror instead of Curl_strerror, making
  3136. the code not thread safe
  3137. * There are references to errno instead of Curl_sockerrno(), causing
  3138. incorrect error messages on Windows
  3139. * The file name includes a leading / which violates RFC3617. Doing something
  3140. similar to ftp, where two slashes after the host name means an absolute
  3141. reference seems a reasonable extension to fix this.
  3142. * Failures in EBCDIC conversion are not propagated up to the caller but are
  3143. silently ignored
  3144. - Fixed known bug #28. The TFTP code no longer assumes a packed struct and
  3145. thus works reliably on more platforms.
  3146. Daniel (5 May 2006)
  3147. - Roland Blom filed bug report #1481217
  3148. (http://curl.haxx.se/bug/view.cgi?id=1481217), with follow-ups by Michele
  3149. Bini and David Byron. libcurl previously wrongly used GetLastError() on
  3150. windows to get error details after socket-related function calls, when it
  3151. really should use WSAGetLastError() instead.
  3152. When changing to this, the former function Curl_ourerrno() is now instead
  3153. called Curl_sockerrno() as it is necessary to only use it to get errno from
  3154. socket-related functions as otherwise it won't work as intended on Windows.
  3155. Daniel (4 May 2006)
  3156. - Mark Eichin submitted bug report #1480821
  3157. (http://curl.haxx.se/bug/view.cgi?id=1480821) He found and identified a
  3158. problem with how libcurl dealt with GnuTLS and a case where gnutls returned
  3159. GNUTLS_E_AGAIN indicating it would block. It would then return an unexpected
  3160. return code, making Curl_ssl_send() confuse the upper layer - causing random
  3161. 28 bytes trash data to get inserted in the transfered stream.
  3162. The proper fix was to make the Curl_gtls_send() function return the proper
  3163. return codes that the callers would expect. The Curl_ossl_send() function
  3164. already did this.
  3165. Daniel (2 May 2006)
  3166. - Added a --checkfor option to curl-config to allow users to easier
  3167. write for example shell scripts that test for the presence of a
  3168. new-enough libcurl version. If --checkfor is given a version string
  3169. newer than what is currently installed, curl-config will return a
  3170. non-zero exit code and output a string about the unfulfilled
  3171. requirement.
  3172. Daniel (26 April 2006)
  3173. - David McCreedy brought initial line end conversions when doing FTP ASCII
  3174. transfers. They are done on non-windows systems and translate CRLF to LF.
  3175. I modified the 15 LIST-using test cases accordingly. The downside is that now
  3176. we'll have even more trouble to get the tests to run on Windows since they
  3177. should get CRLF newlines left intact which the *nix versions don't. I figure
  3178. the only sane thing to do is to add some kind of [newline] macro for the test
  3179. case files and have them expanded to the proper native line ending when the
  3180. test cases are run. This is however left to implement.
  3181. Daniel (25 April 2006)
  3182. - Paul Querna fixed libcurl to better deal with deflate content encoding
  3183. when the stream (wrongly) lacks a proper zlib header. This seems to be the
  3184. case on too many actual server implementations.
  3185. Daniel (21 April 2006)
  3186. - Ale Vesely fixed CURLOPT_INTERFACE when using a hostname.
  3187. Daniel (19 April 2006)
  3188. - Based on previous info from Tor Arntsen, I made configure detect the Intel
  3189. ICC compiler to add a compiler option for it, in order for configure to
  3190. properly be able to detect function prototypes.
  3191. - Robson Braga Araujo provided a patch that makes libcurl less eager to close
  3192. the control connection when using FTP, for example when you remove an easy
  3193. handle from a multi stack.
  3194. - Applied a patch by Ates Goral and Katie Wang that corrected my bad fix
  3195. attempt from April 10.
  3196. Daniel (11 April 2006)
  3197. - #1468330 (http://curl.haxx.se/bug/view.cgi?id=1468330) pointed out a bad
  3198. typecast in the curl tool leading to a crash with (64bit?) VS2005 (at least)
  3199. since the struct timeval field tv_sec is an int while time_t is 64bit.
  3200. Daniel (10 April 2006)
  3201. - Ates Goral found out that if you specified both CURLOPT_CONNECTTIMEOUT and
  3202. CURLOPT_TIMEOUT, the _longer_ time would wrongly be used for the SSL
  3203. connection time-out!
  3204. - I merged my hiper patch (http://curl.haxx.se/libcurl/hiper/) into the main
  3205. sources. See the lib/README.multi_socket for implementation story with
  3206. details. Don't expect it to work fully yet. I don't intend to blow any
  3207. whistles or ring any bells about it until I'm more convinced it works at
  3208. least somewhat reliably.
  3209. Daniel (7 April 2006)
  3210. - David McCreedy's EBCDIC and TPF changes. Three new curl_easy_setopt()
  3211. options (callbacks) were added:
  3212. CONV_FROM_NETWORK_FUNCTION
  3213. CONV_TO_NETWORK_FUNCTION
  3214. CONV_FROM_UTF8_FUNCTION
  3215. Daniel (5 April 2006)
  3216. - Michele Bini modified the NTLM code to work for his "weird IIS case"
  3217. (http://curl.haxx.se/mail/lib-2006-02/0154.html) by adding the NTLM hash
  3218. function in addition to the LM one and making some other adjustments in the
  3219. order the different parts of the data block are sent in the Type-2 reply.
  3220. Inspiration for this work was taken from the Firefox NTLM implementation.
  3221. I edited the existing 21(!) NTLM test cases to run fine with these news. Due
  3222. to the fact that we now properly include the host name in the Type-2 message
  3223. the test cases now only compare parts of that chunk.
  3224. Daniel (28 March 2006)
  3225. - #1451929 (http://curl.haxx.se/bug/view.cgi?id=1451929) detailed a bug that
  3226. occurred when asking libcurl to follow HTTP redirects and the original URL
  3227. had more than one question mark (?). Added test case 276 to verify.
  3228. Daniel (27 March 2006)
  3229. - David Byron found a problem multiple -d options when libcurl was built with
  3230. --enable-debug, as then curl used free() on memory allocated both with
  3231. normal malloc() and with libcurl-provided functions, when the latter MUST be
  3232. freed with curl_free() in debug builds.
  3233. Daniel (26 March 2006)
  3234. - Tor Arntsen figured out that TFTP was broken on a lot of systems since we
  3235. called bind() with a too big argument in the 3rd parameter and at least
  3236. Tru64, AIX and IRIX seem to be very picky about it.
  3237. Daniel (21 March 2006)
  3238. - David McCreedy added CURLINFO_FTP_ENTRY_PATH.
  3239. - Xavier Bouchoux made the SSL connection non-blocking for the multi interface
  3240. (when using OpenSSL).
  3241. - Tor Arntsen fixed the AIX Toolbox RPM spec
  3242. Daniel (20 March 2006)
  3243. - David McCreedy fixed libcurl to no longer ignore AUTH failures and now it
  3244. reacts properly according to the CURLOPT_FTP_SSL setting.
  3245. - Dan Fandrich fixed two TFTP problems: Fixed a bug whereby a received file
  3246. whose length was a multiple of 512 bytes could have random garbage
  3247. appended. Also, stop processing TFTP packets which are too short to be
  3248. legal.
  3249. - Ilja van Sprundel reported a possible crash in the curl tool when using
  3250. "curl hostwithoutslash -d data -G"
  3251. Version 7.15.3 (20 March 2006)
  3252. Daniel (20 March 2006)
  3253. - VULNERABILITY reported to us by Ulf Harnhammar.
  3254. libcurl uses the given file part of a TFTP URL in a manner that allows a
  3255. malicious user to overflow a heap-based memory buffer due to the lack of
  3256. boundary check.
  3257. This overflow happens if you pass in a URL with a TFTP protocol prefix
  3258. ("tftp://"), using a valid host and a path part that is longer than 512
  3259. bytes.
  3260. The affected flaw can be triggered by a redirect, if curl/libcurl is told to
  3261. follow redirects and an HTTP server points the client to a tftp URL with the
  3262. characteristics described above.
  3263. The Common Vulnerabilities and Exposures (CVE) project has assigned the name
  3264. CVE-2006-1061 to this issue.
  3265. Daniel (16 March 2006)
  3266. - Tor Arntsen provided a RPM spec file for AIX Toolbox, that now is included
  3267. in the release archive.
  3268. Daniel (14 March 2006)
  3269. - David McCreedy fixed:
  3270. a bad SSL error message when OpenSSL certificates are verified fine.
  3271. a missing return code assignment in the FTP code
  3272. Daniel (7 March 2006)
  3273. - Markus Koetter filed debian bug report #355715 which identified a problem
  3274. with the multi interface and multi-part formposts. The fix from February
  3275. 22nd could make the Curl_done() function get called twice on the same
  3276. connection and it was not designed for that and thus tried to call free() on
  3277. an already freed memory area!
  3278. - Peter Heuchert made sure the CURLFTPSSL_CONTROL setting for CURLOPT_FTP_SSL
  3279. is used properly.
  3280. Daniel (6 March 2006)
  3281. - Lots of users on Windows have reported getting the "SSL: couldn't set
  3282. callback" error message so I've now made the setting of that callback not be
  3283. as critical as before. The function is only used for additional loggging/
  3284. trace anyway so a failure just means slightly less data. It should still be
  3285. able to proceed and connect fine to the server.
  3286. Daniel (4 March 2006)
  3287. - Thomas Klausner provided a patch written by Todd Vierling in bug report
  3288. #1442471 that fixes a build problem on Interix.
  3289. Daniel (2 March 2006)
  3290. - FTP upload without a file name part in the URL now causes
  3291. curl_easy_perform() to return CURLE_URL_MALFORMAT. Previously it allowed the
  3292. upload but named the file "(nil)" (without the quotes). Test case 524
  3293. verifies.
  3294. - Added a check for getprotobyname in configure so that it'll be used, thanks
  3295. to Gisle Vanem's change the other day.
  3296. Daniel (28 February 2006)
  3297. - Dan Fandrich prevented curl from getting stuck in an endless loop in case we
  3298. are out of file handles very early in curl's code where it makes sure that
  3299. 0, 1 and 2 aren't gonna be used by the lib for transfers.
  3300. Daniel (27 February 2006)
  3301. - Marty Kuhrt pointed out that there were two VMS-specific files missing in
  3302. the release archive.
  3303. Version 7.15.2 (27 February 2006)
  3304. Daniel (22 February 2006)
  3305. - Lots of work and analysis by "xbx___" in bug #1431750
  3306. (http://curl.haxx.se/bug/view.cgi?id=1431750) helped me identify and fix two
  3307. different but related bugs:
  3308. 1) Removing an easy handle from a multi handle before the transfer is done
  3309. could leave a connection in the connection cache for that handle that is
  3310. in a state that isn't suitable for re-use. A subsequent re-use could then
  3311. read from a NULL pointer and segfault.
  3312. 2) When an easy handle was removed from the multi handle, there could be an
  3313. outstanding c-ares DNS name resolve request. When the response arrived,
  3314. it caused havoc since the connection struct it "belonged" to could've
  3315. been freed already.
  3316. Now Curl_done() is called when an easy handle is removed from a multi handle
  3317. pre-maturely (that is, before the transfer was complteted). Curl_done() also
  3318. makes sure to cancel all (if any) outstanding c-ares requests.
  3319. Daniel (21 February 2006)
  3320. - Peter Su added support for SOCKS4 proxies. Enable this by setting the proxy
  3321. type to the already provided type CURLPROXY_SOCKS4.
  3322. I added a --socks4 option that works like the current --socks5 option but
  3323. instead use the socks4 protocol.
  3324. Daniel (20 February 2006)
  3325. - Shmulik Regev fixed an issue with multi-pass authentication and compressed
  3326. content when libcurl didn't honor the internal ignorebody flag.
  3327. Daniel (18 February 2006)
  3328. - Ulf Härnhammar fixed a format string (printf style) problem in the Negotiate
  3329. code. It should however not be the cause of any troubles. He also fixed a
  3330. few similar problems in the HTTP test server code.
  3331. Daniel (17 February 2006)
  3332. - Shmulik Regev provided a fix for the DNS cache when using short life times,
  3333. as previously it could be holding on to old cached entries longer than
  3334. requested.
  3335. Daniel (11 February 2006)
  3336. - Karl Moerder added the CURLOPT_CONNECT_ONLY and CURLINFO_LASTSOCKET options
  3337. that an app can use to let libcurl only connect to a remote host and then
  3338. extract the socket from libcurl. libcurl will then not attempt to do any
  3339. transfer at all after the connect is done.
  3340. - Kent Boortz improved the configure check for GnuTLS to properly set LIBS
  3341. instead of LDFLAGS.
  3342. Daniel (8 February 2006)
  3343. - Philippe Vaucher provided a brilliant piece of test code that show a problem
  3344. with re-used FTP connections. If the second request on the same connection
  3345. was set not to fetch a "body", libcurl could get confused and consider it an
  3346. attempt to use a dead connection and would go acting mighty strange.
  3347. Daniel (2 February 2006)
  3348. - Make --limit-rate [num] mean bytes. It used to be that but it broke in my
  3349. change done in November 2005.
  3350. Daniel (30 January 2006)
  3351. - Added CURLOPT_LOCALPORT and CURLOPT_LOCALPORTRANGE to libcurl. Set with the
  3352. curl tool with --local-port. Plain and simply set the range of ports to bind
  3353. the local end of connections to. Implemented on to popular demand.
  3354. - Based on an error report by Philippe Vaucher, we no longer count a retried
  3355. connection setup as a follow-redirect. It turns out 1) this fails when a FTP
  3356. connection is re-setup and 2) it does make the max-redirs counter behave
  3357. wrong.
  3358. Daniel (24 January 2006)
  3359. - Michal Marek provided a patch for FTP that makes libcurl continue to try
  3360. PASV even after EPSV returned a positive response code, if libcurl failed to
  3361. connect to the port number the EPSV response said. Obviously some people are
  3362. going through protocol-sensitive firewalls (or similar) that don't
  3363. understand EPSV and then they don't allow the second connection unless PASV
  3364. was used. This also called for a minor fix of test case 238.
  3365. Daniel (20 January 2006)
  3366. - Duane Cathey was one of our friends who reported that curl -P [IP]
  3367. (CURLOPT_FTPPORT) didn't work for ipv6-enabed curls if the IP wasn't a
  3368. "native" IP while it works fine for ipv6-disabled builds!
  3369. In the process of fixing this, I removed the support for LPRT since I can't
  3370. think of many reasons to keep doing it and asking on the mailing list didn't
  3371. reveal anyone else that could either. The code that sends EPRT and PORT is
  3372. now also a lot simpler than before (IMHO).
  3373. Daniel (19 January 2006)
  3374. - Jon Turner pointed out that doing -P [hostname] (CURLOPT_FTPPORT) with curl
  3375. (built ipv4-only) didn't work.
  3376. Daniel (18 January 2006)
  3377. - As reported in bug #1408742 (http://curl.haxx.se/bug/view.cgi?id=1408742),
  3378. the configure script complained about a missing "missing" script if you ran
  3379. configure within a path whose name included one or more spaces. This is due
  3380. to a flaw in automake (1.9.6 and earlier). I've now worked around it by
  3381. including an "overloaded" version of the AM_MISSING_HAS_RUN script that'll
  3382. be used instead of the one automake ships with. This kludge needs to be
  3383. removed once we get an automake version with this problem corrected.
  3384. Possibly we'll then need to convert this into a kludge depending on what
  3385. automake version that is used and that is gonna be painful and I don't even
  3386. want to think about that now...!
  3387. Daniel (17 January 2006)
  3388. - David Shaw: Here is the latest libcurl.m4 autoconf tests. It is updated with
  3389. the latest features and protocols that libcurl supports and has a minor fix
  3390. to better deal with the obscure case where someone has more than one libcurl
  3391. installed at the same time.
  3392. Daniel (16 January 2006)
  3393. - David Shaw finally removed all traces of Gopher and we are now officially
  3394. not supporting it. It hasn't been functioning for years anyway, so this is
  3395. just finally stating what already was true. And a cleanup at the same time.
  3396. - Bryan Henderson turned the 'initialized' variable for curl_global_init()
  3397. into a counter, and thus you can now do multiple curl_global_init() and you
  3398. are then supposed to do the same amount of calls to curl_global_cleanup().
  3399. Bryan has also updated the docs accordingly.
  3400. Daniel (13 January 2006)
  3401. - Andrew Benham fixed a race condition in the test suite that could cause the
  3402. test script to kill all processes in the current process group!
  3403. Daniel (12 January 2006)
  3404. - Michael Jahn:
  3405. Fixed FTP_SKIP_PASV_IP and FTP_USE_EPSV to "do right" when used on FTP thru
  3406. HTTP proxy.
  3407. Fixed PROXYTUNNEL to work fine when you do ftp through a proxy. It would
  3408. previously overwrite internal memory and cause unpredicted behaviour!
  3409. Daniel (11 January 2006)
  3410. - I decided to document the "secret option" here now, as I've received *NO*
  3411. feedback at all on my mailing list requests from November 2005:
  3412. I'm looking for feedback and comments. I added some experimental code the
  3413. other day, that allows a libcurl user to select what method libcurl should
  3414. use to reach a file on a FTP(S) server.
  3415. This functionality is available in CVS code and in recent daily snapshots.
  3416. Let me explain...
  3417. The current name for the option is CURLOPT_FTP_FILEMETHOD (--ftp-method for
  3418. the command line tool) and you set it to a long (there are currenly no
  3419. defines for the argument values, just plain numericals). You can set three
  3420. different "methods" that do this:
  3421. 1 multicwd - like today, curl will do a single CWD operation for each path
  3422. part in the given URL. For deep hierarchies this means very many
  3423. commands. This is how RFC1738 says it should be done. This is the
  3424. default.
  3425. 2 nocwd - no CWD at all is done, curl will do SIZE, RETR, STOR etc and give
  3426. a full path to the server.
  3427. 3 singlecwd - make one CWD with the full target directory and then operate
  3428. on the file "normally".
  3429. (With the command line tool you do --ftp-method [METHOD], where [METHOD] is
  3430. one of "multicwd", "nocwd" or "singlecwd".)
  3431. What feedback I'm interested in:
  3432. 1 - Do they work at all? Do you find servers where one of these don't work?
  3433. 2 - What would proper names for the option and its arguments be, if we
  3434. consider this feature good enough to get included and documented in
  3435. upcoming releases?
  3436. 3 - Should we make libcurl able to "walk through" these options in case of
  3437. (path related) failures, or should it fail and let the user redo any
  3438. possible retries?
  3439. (This option is not documented in any man page just yet since I'm not sure
  3440. these names will be used or if the functionality will end up exactly like
  3441. this. And for the same reasons we have no test cases for these yet.)
  3442. Daniel (10 January 2006)
  3443. - When using a bad path over FTP, as in when libcurl couldn't CWD into all
  3444. given subdirs, libcurl would still "remember" the full path as if it is the
  3445. current directory libcurl is in so that the next curl_easy_perform() would
  3446. get really confused if it tried the same path again - as it would not issue
  3447. any CWD commands at all, assuming it is already in the "proper" dir.
  3448. Starting now, a failed CWD command sets a flag that prevents the path to be
  3449. "remembered" after returning.
  3450. Daniel (7 January 2006)
  3451. - Michael Jahn fixed so that the second CONNECT when doing FTP over a HTTP
  3452. proxy actually used a new connection and not sent the second request on the
  3453. first socket!
  3454. Daniel (6 January 2006)
  3455. - Alexander Lazic made the buildconf run the buildconf in the ares dir if that
  3456. is present instead of trying to mimic that script in curl's buildconf
  3457. script.
  3458. Daniel (3 January 2006)
  3459. - Andres Garcia made the TFTP test server build with mingw.
  3460. Daniel (16 December 2005)
  3461. - Jean Jacques Drouin pointed out that you could only have a user name or
  3462. password of 127 bytes or less embedded in a URL, where actually the code
  3463. uses a 255 byte buffer for it! Modified now to use the full buffer size.
  3464. Daniel (12 December 2005)
  3465. - Dov Murik corrected the HTTP_ONLY define to disable the TFTP support properly
  3466. Version 7.15.1 (7 December 2005)
  3467. Daniel (6 December 2005)
  3468. - Full text here: http://curl.haxx.se/docs/adv_20051207.html Pointed out by
  3469. Stefan Esser.
  3470. VULNERABILITY
  3471. libcurl's URL parser function can overflow a malloced buffer in two ways, if
  3472. given a too long URL.
  3473. These overflows happen if you
  3474. 1 - pass in a URL with no protocol (like "http://") prefix, using no slash
  3475. and the string is 256 bytes or longer. This leads to a single zero byte
  3476. overflow of the malloced buffer.
  3477. 2 - pass in a URL with only a question mark as separator (no slash) between
  3478. the host and the query part of the URL. This leads to a single zero byte
  3479. overflow of the malloced buffer.
  3480. Both overflows can be made with the same input string, leading to two single
  3481. zero byte overwrites.
  3482. The affected flaw cannot be triggered by a redirect, but the long URL must
  3483. be passed in "directly" to libcurl. It makes this a "local" problem. Of
  3484. course, lots of programs may still pass in user-provided URLs to libcurl
  3485. without doing much syntax checking of their own, allowing a user to exploit
  3486. this vulnerability.
  3487. There is no known exploit at the time of this writing.
  3488. Daniel (2 December 2005)
  3489. - Jamie Newton pointed out that libcurl's file:// code would close() a zero
  3490. file descriptor if given a non-existing file.
  3491. Daniel (24 November 2005)
  3492. - Doug Kaufman provided a set of patches to make curl build fine on DJGPP
  3493. again using configure.
  3494. - Yang Tse provided a whole series of patches to clear up compiler warnings on
  3495. MSVC 6.
  3496. Daniel (17 November 2005)
  3497. - I extended a patch from David Shaw to make libcurl _always_ provide an error
  3498. string in the given error buffer to address the flaw mention on 21 sep 2005.
  3499. Daniel (16 November 2005)
  3500. - Applied Albert Chin's patch that makes the libcurl.pc pkgconfig file get
  3501. installed on 'make install' time.
  3502. Daniel (14 November 2005)
  3503. - Quagmire reported that he needed to raise a NTLM buffer for SSPI to work
  3504. properly for a case, and so we did. We raised it even for non-SSPI builds
  3505. but it should not do any harm. http://curl.haxx.se/bug/view.cgi?id=1356715
  3506. - Jan Kunder's debian bug report
  3507. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338680 identified a weird
  3508. error message for when you try to upload a file and the requested directory
  3509. doesn't exist on the target server.
  3510. - Yang Tse fixed compiler warnings in lib/ssluse.c with OpenSSL 0.9.8 and in
  3511. lib/memdebug.h that showed up in his msvc builds.
  3512. Daniel (13 November 2005)
  3513. - Debian bug report 338681 by Jan Kunder: make curl better detect and report
  3514. bad limit-rate units:
  3515. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now curl will return
  3516. error if a bad unit is used.
  3517. - Thanks to this nice summary of poll() implementations:
  3518. http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene
  3519. Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote
  3520. connectin closure so we check for that case (too) and re-enable poll for
  3521. cygwin builds.
  3522. Daniel (12 November 2005)
  3523. - Eugene Kotlyarov found out that cygwin's poll() function isn't doing things
  3524. right: http://curl.haxx.se/mail/archive-2005-11/0045.html so we now disable
  3525. poll() and use select() on cygwin too (we already do the same choice on Mac
  3526. OS X)
  3527. - Dima Barsky patched problem #1348930: the GnuTLS code completely ignored
  3528. client certificates! (http://curl.haxx.se/bug/view.cgi?id=1348930).
  3529. Daniel (10 November 2005)
  3530. - David Lang fixed IPv6 support for TFTP!
  3531. - Introducing range stepping to the curl globbing support. Now you can specify
  3532. step counter by adding :[num] within the brackets when specifying a range:
  3533. [1-100:10]
  3534. [a-z:2]
  3535. If no step counter is set, it defaults to 1 as before:
  3536. [1-100]
  3537. [d-h]
  3538. Daniel (8 November 2005)
  3539. - Removed the use of AI_CANONNAME in the IPv6-enabled resolver functions since
  3540. we really have no use for reverse lookups of the address.
  3541. I truly hope these are the last reverse lookups we had lingering in the
  3542. code!
  3543. - Dmitry Bartsevich discovered some issues in compatibilty of SSPI-enabled
  3544. version of libcurl with different Windows versions. Current version of
  3545. libcurl imports SSPI functions from secur32.dll. However, under Windows NT
  3546. 4.0 these functions are located in security.dll, under Windows 9x - in
  3547. secur32.dll and Windows 2000 and XP contains both these DLLs (security.dll
  3548. just forwards calls to secur32.dll).
  3549. Dmitry's patch loads proper library dynamically depending on Windows
  3550. version. Function InitSecurityInterface() is used to obtain pointers to all
  3551. of SSPI function in one structure.
  3552. Daniel (31 October 2005)
  3553. - Vilmos Nebehaj improved libcurl's LDAP abilities:
  3554. The LDAP code in libcurl can't handle LDAP servers of LDAPv3 nor binary
  3555. attributes in LDAP objects. So, I made a quick patch to address these
  3556. problems.
  3557. The solution is simple: if we connect to an LDAP server, first try LDAPv3
  3558. (which is the preferred protocol as of now) and then fall back to LDAPv2.
  3559. In case of binary attributes, we first convert them to base64, just like the
  3560. openldap client does. It uses ldap_get_values_len() instead of
  3561. ldap_get_values() to be able to retrieve binary attributes correctly. I
  3562. defined the necessary LDAP macros in lib/ldap.c to be able to compile
  3563. libcurl without the presence of libldap
  3564. Daniel (27 October 2005)
  3565. - Nis Jorgensen filed bug report #1338648
  3566. (http://curl.haxx.se/bug/view.cgi?id=1338648) which really is more of a
  3567. feature request, but anyway. It pointed out that --max-redirs did not allow
  3568. it to be set to 0, which then would return an error code on the first
  3569. Location: found. Based on Nis' patch, now libcurl supports CURLOPT_MAXREDIRS
  3570. set to 0, or -1 for infinity. Added test case 274 to verify.
  3571. - tommink[at]post.pl reported in bug report #1337723
  3572. (http://curl.haxx.se/bug/view.cgi?id=1337723) that curl could not upload
  3573. binary data from stdin on Windows if the data contained control-Z (hex 1a)
  3574. since that is treated as end-of-file when read in text mode. Gisle Vanem
  3575. pointed out the fix, and I made both -T and --data-binary take advantage of
  3576. it.
  3577. - Jaz Fresh pointed out that if you used "-r [number]" as was wrongly described
  3578. in the man page, curl would send an invalid HTTP Range: header. The correct
  3579. way would be to use "-r [number]-" or even "-r -[number]". Starting now,
  3580. curl will warn if this is discovered, and automatically append a dash to the
  3581. range before passing it to libcurl.
  3582. Daniel (25 October 2005)
  3583. - Amol Pattekar reported a bug with great detail and a fine example in bug
  3584. #1326306 (http://curl.haxx.se/bug/view.cgi?id=1326306). When using the multi
  3585. interface and connecting to a host with multiple IP addresses, and one of
  3586. the addresses fails to connect (the server must exist and respond, just not
  3587. accept connections) libcurl leaks a socket descriptor. Thanks to the fine
  3588. report, I could find and fix this.
  3589. Daniel (22 October 2005)
  3590. - Dima Barsky reported a problem with GnuTLS-enabled libcurl in bug report
  3591. #1334338 (http://curl.haxx.se/bug/view.cgi?id=1334338). When reading an SSL
  3592. stream from a server and the server requests a "rehandshake", the current
  3593. code simply returns this as an error. I have no good way to test this, but
  3594. I've added a crude attempt of dealing with this situation slightly better -
  3595. it makes a blocking handshake if this happens. Done like this because fixing
  3596. this the "proper" way (that would handshake asynchronously) will require
  3597. quite some work and I really need a good way to test this to do such a
  3598. change.
  3599. Daniel (21 October 2005)
  3600. - "Ofer" reported a problem when libcurl re-used a connection and failed to do
  3601. it, it could then accidentally actually crash. Presumably, this concerns FTP
  3602. connections. http://curl.haxx.se/bug/view.cgi?id=1330310
  3603. - Temprimus improved the MSVC makefile so that the static debug SSL libs are
  3604. linked to the executable and not to the libcurld.lib
  3605. http://curl.haxx.se/bug/view.cgi?id=1326676
  3606. - Bradford Bruce made the windows resolver code properly return
  3607. CURLE_COULDNT_RESOLVE_PROXY and CURLE_COULDNT_RESOLVE_HOST on resolving
  3608. errors (as documented).
  3609. Daniel (20 October 2005)
  3610. - Dave Dribin made libcurl understand and handle cases when the server
  3611. (wrongly) sends *two* WWW-Authenticate headers for Digest. While this should
  3612. never happen in a sane world, libcurl previously got into an infinite loop
  3613. when this occurred. Dave added test 273 to verify this.
  3614. - Temprimus improved the MSVC makefile: "makes a build option available so if
  3615. you set rtlibcfg=static for the make, then it would build with /MT. The
  3616. default behaviour is /MD (the original)."
  3617. http://curl.haxx.se/bug/view.cgi?id=1326665
  3618. Daniel (14 October 2005)
  3619. - Reverted the LIBCURL_VERSION_NUM change from October 6. As Dave Dribin
  3620. reported, the define is used by the configure script and is assumed to use
  3621. the 0xYYXXZZ format. This made "curl-config --vernum" fail in the 7.15.0
  3622. release version.
  3623. Version 7.15.0 (13 October 2005)
  3624. Daniel (12 October 2005)
  3625. - Michael Sutton of iDEFENSE reported and I fixed a securitfy flaw in the NTLM
  3626. code that would overflow a buffer if given a too long user name or domain
  3627. name. This would happen if you enable NTLM authentication and either
  3628. A - pass in a user name and domain name to libcurl that together are longer
  3629. than 192 bytes
  3630. B - allow (lib)curl to follow HTTP "redirects" (Location: and the
  3631. appropriate HTTP 30x response code) and the new URL contains a URL with
  3632. a user name and domain name that together are longer than 192 bytes
  3633. See http://curl.haxx.se/docs/security.html for further details and updates
  3634. Daniel (5 October 2005)
  3635. - Darryl House reported a problem with using -z to download files from FTP.
  3636. It turned out that if the given time stamp was exact the same as the remote
  3637. time stamp, the file would still wrongly be downloaded. Added test case 272
  3638. to verify.
  3639. Daniel (4 October 2005)
  3640. - Domenico Andreoli fixed a man page malformat and removed odd (0xa0) bytes
  3641. from the configure script.
  3642. - Michael Wallner reported that the date parser had wrong offset stored for
  3643. the MEST and CEST time zones.
  3644. Daniel (27 September 2005)
  3645. - David Yan filed bug #1299181 (http://curl.haxx.se/bug/view.cgi?id=1299181)
  3646. that identified a silly problem with Content-Range: headers with the 'bytes'
  3647. keyword written in a different case than all lowercase! It would cause a
  3648. segfault!
  3649. - TJ Saunders of the proftpd project identified and pointed out problems with
  3650. the modified FTPS negotiation change of August 19 2005. Thus, we revert the
  3651. change back to pre-7.14.1 status.
  3652. Daniel (21 September 2005)
  3653. - Fixed "cut off" sentence in the libcurl-tutorial man page:
  3654. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329305
  3655. - Clarified in the curl_easy_setopt man page what the default
  3656. CURLOPT_WRITEFUNCTION and CURLOPT_WRITEDATA mean:
  3657. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329311
  3658. - Clarified in the curl_easy_setopt man page that CURLOPT_ERRORBUFFER
  3659. sometimes doesn't fill in the buffer even though it is supposed to:
  3660. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329313
  3661. - When CURLE_URL_MALFORMAT is returned due to a missing URL, it now has an
  3662. error string set.
  3663. Daniel (19 September 2005)
  3664. - Dmitry Bartsevich made the SSPI support work on Windows 9x as well.
  3665. Daniel (15 September 2005)
  3666. - Added a TFTP server to the test suite and made the test suite capable of
  3667. using it.
  3668. Daniel (7 September 2005)
  3669. - Ben Madsen's detailed reports that funnily enough only occurred with certain
  3670. glibc versions turned out to be curl using an already closed file handle
  3671. during certain conditions (like when saving FTP server "headers").
  3672. - Scott Davis helped me track down a problem in the test HTTP server that made
  3673. test case 56 wrongly fail at times. It turned out it was due to the server
  3674. finding the end of a chunked-encoded POST too early.
  3675. Daniel (6 September 2005)
  3676. - Now curl warns if an unknown variable is used in the -w/--writeout argument.
  3677. Daniel (4 September 2005)
  3678. - I applied Nicolas François' man page patch he posted to the Debian bug
  3679. tracker. It corrected two lines that started with apostrophes, which isn't
  3680. legal nroff format. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=326511
  3681. - Added --ftp-skip-pasv-ip to the command line tool, that sets the new
  3682. CURLOPT_FTP_SKIP_PASV_IP option. It makes libcurl re-use the control
  3683. connection's IP address when setting up the data connection instead of
  3684. extractting the IP address from the PASV response. It has turned out this
  3685. feature is frequently needed by people to circumvent silly servers and silly
  3686. firewalls, especially when FTPS is used and the PASV command-response is
  3687. sent encrtyped.
  3688. Sponsored by CU*Answers
  3689. Daniel (1 September 2005)
  3690. - John Kelly added TFTP support to libcurl. A bunch of new error codes was
  3691. added. TODO: add them to docs. add TFTP server to test suite. add TFTP to
  3692. list of protocols whereever those are mentioned.
  3693. Version 7.14.1 (1 September 2005)
  3694. Daniel (29 August 2005)
  3695. - Kevin Lussier pointed out a problem with curllib.dsp and how to fix it.
  3696. - Igor Polyakov fixed a rather nasty problem with the threaded name resolver
  3697. for Windows, that could lead to an Access Violation when the multi interface
  3698. was used due to an issue with how the resolver thread was and was not
  3699. terminated.
  3700. - Simon Josefsson brought a patch that allows curl to get built to use GNU GSS
  3701. instead of MIT/Heimdal for GSS capabilities.
  3702. Daniel (24 August 2005)
  3703. - Toby Peterson added CURLOPT_IGNORE_CONTENT_LENGTH to the library, accessible
  3704. from the command line tool with --ignore-content-length. This will make it
  3705. easier to download files from Apache 1.x (and similar) servers that are
  3706. still having problems serving files larger than 2 or 4 GB. When this option
  3707. is enabled, curl will simply have to wait for the server to close the
  3708. connection to signal end of transfer. I wrote test case 269 that runs a
  3709. simple test to verify that this works.
  3710. - (Trying hard to exclude emotions now.) valgrind version 3 suddenly renamed
  3711. the --logfile command line option to --log-file, and thus the test script
  3712. valgrind autodetection now has yet another version check to do and then it
  3713. alters the valgrind command line accordingly.
  3714. - Fixed CA cert verification using GnuTLS with the default bundle, which
  3715. previously failed due to GnuTLS not allowing x509 v1 CA certs by default.
  3716. Ralph Mitchell reported.
  3717. Daniel (19 August 2005)
  3718. - Norbert Novotny had problems with FTPS and he helped me work out a patch
  3719. that made curl run fine in his end. The key was to make sure we do the
  3720. SSL/TLS negotiation immediately after the TCP connect is done and not after
  3721. a few other commands have been sent like we did previously. I don't consider
  3722. this change necessary to obey the standards, I think this server is pickier
  3723. than what the specs allow it to be, but I can't see how this modified
  3724. libcurl code can add any problems to those who are interpreting the
  3725. standards more liberally.
  3726. Daniel (17 August 2005)
  3727. - Jeff Pohlmeyer found out that if you ask libcurl to load a cookiefile (with
  3728. CURLOPT_COOKIEFILE), add a cookie (with CURLOPT_COOKIELIST), tell it to
  3729. write the result to a given cookie jar and then never actually call
  3730. curl_easy_perform() - the given file(s) to read was never read but the
  3731. output file was written and thus it caused a "funny" result.
  3732. - While doing some tests for the bug above, I noticed that Firefox generates
  3733. large numbers (for the expire time) in the cookies.txt file and libcurl
  3734. didn't treat them properly. Now it does.
  3735. Daniel (15 August 2005)
  3736. - Added more verbose "warning" messages to the curl client for cases where it
  3737. fails to open/read files etc to help users diagnose why it doesn't do what
  3738. you'd expect it to. Converted lots of old messages to use the new generic
  3739. function I wrote for this purpose.
  3740. Daniel (13 August 2005)
  3741. - James Bursa identified a libcurl HTTP bug and a good way to repeat it. If a
  3742. site responds with bad HTTP response that doesn't contain any header at all,
  3743. only a response body, and the write callback returns 0 to abort the
  3744. transfer, it didn't have any real effect but the write callback would be
  3745. called once more anyway.
  3746. Daniel (12 August 2005)
  3747. - Based on Richard Clayton's reports, I found out that using curl -d @filename
  3748. when 'filename' was not possible to access made curl use a GET request
  3749. instead.
  3750. - The time condition illegal syntax warning is now inhibited if -s is used.
  3751. Daniel (10 August 2005)
  3752. - Mario Schroeder found out that one of the debug callbacks calls that regards
  3753. SSL data with the CURLINFO_TEXT type claimed that the data was one byte
  3754. larger than it actually is, thus falsely telling the application that the
  3755. terminating zero was part of the data.
  3756. Daniel (9 August 2005)
  3757. - Christopher R. Palmer fixed the offsets used for date parsings when the time
  3758. zone name of a daylight savings time was used. For example, PDT vs PDS. This
  3759. flaw was introduced with the new date parser (11 sep 2004 - 7.12.2).
  3760. Fortunately, no web server or cookie string etc should be using such time
  3761. zone names thus limiting the effect of this bug.
  3762. Daniel (8 August 2005)
  3763. - Jon Grubbs filed bug report #1249962
  3764. (http://curl.haxx.se/bug/view.cgi?id=1249962) which identified a problem
  3765. with NTLM on a HTTP proxy if an FTP URL was given. libcurl now properly
  3766. switches to pure HTTP internally when an HTTP proxy is used, even for FTP
  3767. URLs. The problem would also occur with other multi-pass auth methods.
  3768. Daniel (7 August 2005)
  3769. - When curl is built with GnuTLS, curl-config didn't include "SSL" when
  3770. --features was used.
  3771. Daniel (28 July 2005)
  3772. - If any of the options CURLOPT_HTTPGET, CURLOPT_POST and CURLOPT_HTTPPOST is
  3773. set to 1, CURLOPT_NOBODY will now automatically be set to 0.
  3774. Daniel (27 July 2005)
  3775. - Dan Fandrich changes over the last week: fixed numerous minor configure
  3776. option parsing flaws: --without-gnutls, --without-spnego --without-gssapi
  3777. and --without-krb4. Spellfixed several error messages.
  3778. - Peteris Krumins added CURLOPT_COOKIELIST and CURLINFO_COOKIELIST, which is a
  3779. simple interface to extracting and setting cookies in libcurl's internal
  3780. "cookie jar". See the new cookie_interface.c example code.
  3781. Daniel (13 July 2005)
  3782. - Diego Casorran provided patches to make curl build fine on Amiga again.
  3783. Daniel (12 July 2005)
  3784. - Adrian Schuur added trailer support in the chunked encoding stream. The
  3785. trailer is then sent to the normal header callback/stream. I wrote up test
  3786. case 266 to verify the basic functionality. Do note that test case 34
  3787. contains a flawed chunked encoding stream that still works the same.
  3788. Daniel (5 July 2005)
  3789. - Gisle Vanem came up with a nice little work-around for bug #1230118
  3790. (http://curl.haxx.se/bug/view.cgi?id=1230118). It seems the Windows (MSVC)
  3791. libc time functions may return data one hour off if TZ is not set and
  3792. automatic DST adjustment is enabled. This made curl_getdate() return wrong
  3793. value, and it also concerned internal cookie expirations etc.
  3794. Daniel (4 July 2005)
  3795. - Andrew Bushnell provided enough info for me to tell that we badly needed to
  3796. fix the CONNECT authentication code with multi-pass auth methods (such as
  3797. NTLM) as it didn't previously properly ignore response-bodies - in fact it
  3798. stopped reading after all response headers had been received. This could
  3799. lead to libcurl sending the next request and reading the body from the first
  3800. request as response to the second request. (I also renamed the function,
  3801. which wasn't strictly necessary but...)
  3802. The best fix would to once and for all make the CONNECT code use the
  3803. ordinary request sending/receiving code, treating it as any ordinary request
  3804. instead of the special-purpose function we have now. It should make it
  3805. better for multi-interface too. And possibly lead to less code...
  3806. Added test case 265 for this. It doesn't work as a _really_ good test case
  3807. since the test proxy is too stupid, but the test case helps when running the
  3808. debugger to verify.
  3809. Daniel (30 June 2005)
  3810. - Dan Fandrich improved the configure script's ability to figure out what kind
  3811. of strerror_r() API that is used when cross-compiling. If __GLIB__ is
  3812. defined, it assumes the glibc API. If not, it issues a notice as before that
  3813. the user needs to manually edit lib/config.h for this.
  3814. Daniel (23 June 2005)
  3815. - David Shaw's fix that unifies proxy string treatment so that a proxy given
  3816. with CURLOPT_PROXY can use a http:// prefix and user + password. The user
  3817. and password fields are now also URL decoded properly. Test case 264 added
  3818. to verify.
  3819. Daniel (22 June 2005)
  3820. - David Shaw updated libcurl.m4
  3821. Daniel (14 June 2005)
  3822. - Gisle Vanem fixed a potential thread handle leak. Bug report #1216500
  3823. (http://curl.haxx.se/bug/view.cgi?id=1216500). Comment in
  3824. http://curl.haxx.se/mail/lib-2005-06/0059.html
  3825. Daniel (13 June 2005)
  3826. - Made buildconf run libtoolize in the ares dir too (inspired by Tupone's
  3827. reverted patch).
  3828. Daniel (9 June 2005)
  3829. - Incorporated Tupone's findtool fix in buildconf (slightly edited)
  3830. - Incorporated Tupone's head -n fix in buildconf.
  3831. Daniel (8 June 2005)
  3832. - Reverted Tupone's patch again, it broke numerous autobuilds. Let's apply it
  3833. in pieces, one by one and see what we need to adjust to work all over.
  3834. Daniel (6 June 2005)
  3835. - Tupone Alfredo fixed three problems in buildconf:
  3836. 1) findtool does look per tool in PATH and think ./perl is the perl
  3837. executable, while is just a local directory (I have . in the PATH)
  3838. 2) I got several warning for head -1 deprecated in favour of head -n 1
  3839. 3) ares directory is missing some file (missing is missing :-) ) because
  3840. automake and friends is not run.
  3841. Daniel (3 June 2005)
  3842. - Added docs/libcurl/getinfo-times, based on feedback from 'Edi':
  3843. http://curl.haxx.se/feedback/display.cgi?id=11178325798299&support=yes
  3844. - Andres Garcia provided yet another text mode patch for several test cases so
  3845. that they do text comparisions better on Windows (newline-wise).
  3846. Daniel (1 June 2005)
  3847. - The configure check for c-ares now adds the cares lib before the other libs,
  3848. to make it build fine with mingw. Inspired by Tupone Alfredo's bug report
  3849. and patch: http://curl.haxx.se/bug/view.cgi?id=1212940
  3850. Daniel (31 May 2005)
  3851. - Todd Kulesza reported a flaw in the proxy option, since a numerical IPv6
  3852. address was not possible to use. It is now, but requires it written
  3853. RFC2732-style, within brackets - which incidently is how you enter numerical
  3854. IPv6 addresses in URLs. Test case 263 added to verify.
  3855. Daniel (30 May 2005)
  3856. - Eric Cooper reported about a problem with HTTP servers that responds with
  3857. binary zeroes within the headers. They confused libcurl to do wrong so the
  3858. downloaded headers become incomplete. The fix is now verified with test case
  3859. 262. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=310948
  3860. Daniel (25 May 2005)
  3861. - Fixed problems with the test suite, and in particular the FTP test cases
  3862. since it previously was failing every now and then in a nonsense manner.
  3863. - --trace-time now outputs the full microsecond, all 6 digits.
  3864. Daniel (24 May 2005)
  3865. - Andres Garcia provided a text mode patch for several test cases so that they
  3866. do text comparisions better on Windows (newline-wise).
  3867. - Any 2xx response (and not just 200) is now considered a fine response to
  3868. TYPE, as some servers obviously sends a 226 there. Added test case 261 to
  3869. verify. Based on a question/report by Georg Wicherski.
  3870. Daniel (20 May 2005)
  3871. - Improved runtests.pl to allow stdout tests to be mode=text as well, just
  3872. as file comparisons already supports. Added this info to the FILEFORMAT
  3873. docs.
  3874. Daniel (18 May 2005)
  3875. - John McGowan identified a problem in bug report #1204435
  3876. (http://curl.haxx.se/bug/view.cgi?id=1204435) with malformed URLs like
  3877. "http://somehost?data" as it added a slash too much in the request ("GET
  3878. /?data/"...). Added test case 260 to verify.
  3879. - The configure check for strerror_r() failed to detect the proper API at
  3880. times, like on HP-UX 10.20. Then lib/strerror.c badly assumed the glibc
  3881. version if the posix define wasn't set (since it _had_ found a strerror_r).
  3882. Daniel (16 May 2005)
  3883. - The gmtime_r() function in HP-UX 10.20 is broken. About 13 test cases fail
  3884. due to this. There's now a configure check that attempts to detect the bad
  3885. function and not use it on such systems.
  3886. Version 7.14.0 (16 May 2005)
  3887. Daniel (13 May 2005)
  3888. - Grigory Entin reported that curl's configure detects a fine poll() for Mac
  3889. OS X 10.4 (while 10.3 or later detected a "bad" one), but the executable
  3890. doesn't work as good as if built without poll(). I've adjusted the configure
  3891. to always skip the fine-poll() test on Mac OS X (darwin).
  3892. Daniel (12 May 2005)
  3893. - When doing a second request (after a disconnect) using the same easy handle,
  3894. over a proxy that uses NTLM authentication, libcurl failed to use NTLM again
  3895. properly (the auth method was accidentally reset to the same as had been set
  3896. for host auth, which defaults to Basic). Bug report #1200661
  3897. (http://curl.haxx.se/bug/view.cgi?id=1200661) identified the the problem and
  3898. the fix.
  3899. - If -z/--time-cond is used with an invalid date syntax, this is no longer
  3900. silently discarded. Instead a proper warning message is diplayed that
  3901. informs about it. But it still continues without the condition.
  3902. Version 7.14.0-pre2 (11 May 2005)
  3903. Daniel (11 May 2005)
  3904. - Starting now, libcurl sends a little different set of headers in its default
  3905. HTTP requests:
  3906. A) Normal non-proxy HTTP:
  3907. - no more "Pragma: no-cache" (this only makes sense to proxies)
  3908. B) Non-CONNECT HTTP request over proxy:
  3909. - "Pragma: no-cache" is used (like before)
  3910. - "Proxy-Connection: Keep-alive" (for older style 1.0-proxies)
  3911. C) CONNECT HTTP request over proxy:
  3912. - "Host: [name]:[port]"
  3913. - "Proxy-Connection: Keep-alive"
  3914. The A) case is mostly to reduce the default header size and remove a
  3915. pointless header.
  3916. The B) is to address (rare) problems with HTTP 1.0 proxies
  3917. The C) headers are both to address (rare) problems with some proxies. The
  3918. code in libcurl that deals with CONNECT requests need a rewrite, but it
  3919. feels like a too big a job for me to do now. Details are added in the code
  3920. comments for now.
  3921. Updated a large amount of test cases to reflect the news.
  3922. Daniel (10 May 2005)
  3923. - Half-baked attempt to bail out if select() returns _only_ errorfds when the
  3924. transfer is in progress. An attempt to fix Allan's problem. See
  3925. http://curl.haxx.se/mail/lib-2005-05/0073.html and the rest of that thread
  3926. for details.
  3927. I'm still not sure this is the right fix, but...
  3928. Version 7.14.0-pre1 (9 May 2005)
  3929. Daniel (2 May 2005)
  3930. - Sort of "fixed" KNOWN_BUGS #4: curl now builds IPv6 enabled on AIX 4.3. At
  3931. least it should no longer cause a compiler error. However, it does not have
  3932. AI_NUMERICHOST so we cannot getaddrinfo() any numerical addresses with it
  3933. (we use that for FTP PORT/EPRT)! So, I modified the configure check that
  3934. checks if the getaddrinfo() is working, to use AI_NUMERICHOST since then
  3935. it'll fail on AIX 4.3 and it will automatically build with IPv6 support
  3936. disabled.
  3937. - Added --trace-time that when used adds a time stamp to each trace line that
  3938. --trace, --trace-ascii and --verbose output. I also made the '>' display
  3939. separate each line on the linefeed so that HTTP requests etc look nicer in
  3940. the -v output.
  3941. - Made curl recognize the environment variables Lynx (and others?) support for
  3942. pointing out the CA cert path/file: SSL_CERT_DIR and SSL_CERT_FILE. If
  3943. CURL_CA_BUNDLE is not set, they are checked afterwards.
  3944. Like before: on windows if none of these are set, it checks for the ca cert
  3945. file like this:
  3946. 1. application's directory
  3947. 2. current working directory
  3948. 3. Windows System directory (e.g. C:\windows\system32)
  3949. 4. Windows Directory (e.g. C:\windows)
  3950. 5. all directories along %PATH%
  3951. Daniel (1 May 2005)
  3952. - The runtests.pl script now starts test servers by doing fork() and exec()
  3953. instead of the previous approach. This is less complicated and should
  3954. hopefully lead to less "leaked" servers (servers that aren't stopped
  3955. properly when the tests are stopped).
  3956. - Alexander Zhuravlev found a case when you did "curl -I [URL]" and it
  3957. complained on the chunked encoding, even though a HEAD should never return a
  3958. body and thus it cannot be a chunked-encoding problem!
  3959. Daniel (30 April 2005)
  3960. - Alexander Zhuravlev found out that (lib)curl SIGSEGVed when using
  3961. --interface on an address that can't be bound.
  3962. Daniel (28 April 2005)
  3963. - Working on fixing up test cases to mark sections as 'mode=text' for things
  3964. that curl writes as text files, since then they can get different line
  3965. endings depending on OS. Andrés García helps me work this out.
  3966. Did lots of other minor tweaks on the test scripts to work better and more
  3967. reliably find test servers and also kill test servers.
  3968. - Dan Fandrich pointed out how the runtests.pl script killed the HTTP server
  3969. instead of the HTTPS server when closing it down.
  3970. Daniel (27 April 2005)
  3971. - Paul Moore made curl check for the .curlrc file (_curlrc on windows) on two
  3972. more places. First, CURL_HOME is a new environment variable that is used
  3973. instead of HOME if it is set, to point out where the default config file
  3974. lives. If there's no config file in the dir pointed out by one of the
  3975. environment variables, the Windows version will instead check the same
  3976. directory the executable curl is located in.
  3977. Daniel (26 April 2005)
  3978. - Cory Nelson's work on nuking compiler warnings when building on x64 with
  3979. VS2005.
  3980. Daniel (25 April 2005)
  3981. - Fred New reported a bug where we used Basic auth and user name and password
  3982. in .netrc, and when following a Location: the subsequent requests didn't
  3983. properly use the auth as found in the netrc file. Added test case 257 to
  3984. verify my fix.
  3985. - Based on feedback from Cory Nelson, I added some preprocessor magic in
  3986. */setup.h and */config-win32.h to build fine with VS2005 on x64.
  3987. Daniel (23 April 2005)
  3988. - Alex Suykov made the curl tool now assume that uploads using HTTP:// or
  3989. HTTPS:// are the only ones that show output and thus motivates a switched
  3990. off progress meter if the output is sent to the terminal. This makes FTP
  3991. uploads without '>', -o or -O show the progress meter.
  3992. Daniel (22 April 2005)
  3993. - Dave Dribin's MSVC makefile fix: set CURL_STATICLIB when it builds static
  3994. library variants.
  3995. - Andres Garcia fixed configure to set the proper define when building static
  3996. libcurl on windows.
  3997. - --retry-delay didn't work.
  3998. Daniel (18 April 2005)
  3999. - Olivier reported that even though he used CURLOPT_PORT, libcurl clearly
  4000. still used the default port. He was right. I fixed the problem and added the
  4001. test cases 521, 522 and 523 to verify the fix.
  4002. - Toshiyuki Maezawa reported that when doing a POST with a read callback,
  4003. libcurl didn't properly send an Expect: 100-continue header. It does now.
  4004. - I committed by mig change in the test suite's FTP server that moves out all
  4005. socket/TCP code to a separate C program named sockfilt. And added 4 new
  4006. test cases for FTP over IPv6.
  4007. Daniel (8 April 2005)
  4008. - Cory Nelson reported a problem with a HTTP server that responded with a 304
  4009. response containing an "illegal" Content-Length: header, which was not
  4010. properly ignored by libcurl. Now it is. Test case 249 verifies.
  4011. Daniel (7 April 2005)
  4012. - Added ability to build and run with GnuTLS as an alternative to OpenSSL for
  4013. the secure layer. configure --with-gnutls enables with. Note that the
  4014. previous OpenSSL check still has preference and if it first detects OpenSSL,
  4015. it will not check for GnuTLS. You may need to explictly diable OpenSSL with
  4016. --without-ssl.
  4017. This work has been sponsored by The Written Word.
  4018. Daniel (5 April 2005)
  4019. - Christophe Legry fixed the post-upload check for FTP to not complain if the
  4020. upload was skipped due to a time-condition as set with
  4021. CURLOPT_TIMECONDITION. I added test case 247 and 248 to verify.
  4022. Version 7.13.2 (5 April 2005)
  4023. Daniel (4 April 2005)
  4024. - Marcelo Juchem fixed the MSVC makefile for libcurl
  4025. - Gisle Vanem fixed a crash in libcurl, that could happen if the easy handle
  4026. was killed before the threading resolver (windows only) still hadn't
  4027. completed.
  4028. - Hardeep Singh reported a problem doing HTTP POST with Digest. (It was
  4029. actually also affecting NTLM and Negotiate.) It turned out that if the
  4030. server responded with 100 Continue before the initial 401 response, libcurl
  4031. didn't take care of the response properly. Test case 245 and 246 added to
  4032. verify this.
  4033. Daniel (30 March 2005)
  4034. - Andres Garcia modified the configure script to check for libgdi32 before
  4035. libcrypto, to make the SSL check work fine on msys/mingw.
  4036. Daniel (29 March 2005)
  4037. - Tom Moers identified a flaw when you sent a POST with Digest authentication,
  4038. as in the first request when curl sends a POST with Content-Length: 0, it
  4039. still forcibly closed the connection before doing the next step in the auth
  4040. negotiation.
  4041. - Jesper Jensen found out that FTP-SSL didn't work since my FTP
  4042. rewrite. Fixing that was easy, but it also revealed a much worse problem:
  4043. the FTP server response reader function didn't properly deal with reading
  4044. responses in multiple tiny chunks properly! I modified the FTP server to
  4045. allow it to produce such split-up responses to make sure curl deals with
  4046. them as it should.
  4047. - Based on Augustus Saunders' comments and findings, the HTTP output auth
  4048. function was fixed to use the proper proxy authentication when multiple ones
  4049. are accepted. test 239 and test 243 were added to repeat the problems and
  4050. verify the fixes.
  4051. --proxy-anyauth was added to the curl tool
  4052. Daniel (16 March 2005)
  4053. - Tru64 and some IRIX boxes seem to not like test 237 as it is. Their
  4054. inet_addr() functions seems to use &255 on all numericals in a ipv4 dotted
  4055. address which makes a different failure... Now I've modified the ipv4
  4056. resolve code to use inet_pton() instead in an attempt to make these systems
  4057. better detect this as a bad IP address rather than creating a toally bogus
  4058. address that is then passed on and used.
  4059. Daniel (15 March 2005)
  4060. - Dan Fandrich made the code properly use the uClibc's version of
  4061. inet_ntoa_r() when built with it.
  4062. - Added test 237 and 238: test EPSV and PASV response handling when they get
  4063. well- formated data back but using illegal values. In 237 PASV gets an IP
  4064. address that is way bad. In 238 EPSV gets a port that is way out of range.
  4065. Daniel (14 March 2005)
  4066. - Added a few missing features to the curl-config --features list
  4067. - Modified testcurl.pl to now offer
  4068. 1 - command line options for all info it previously only read from
  4069. file: --name, --email, --desc and --configure
  4070. 2 - --nocvsup makes it not attempt to do cvs update
  4071. 3 - --crosscompile informs it and makes it not attempt things it can't do
  4072. - Fixed numerous win32 compiler warnings.
  4073. - Removed the lib/security.h file since it shadowed the mingw/win32 header
  4074. with the same name which is needed for SSPI builds. The contents of the
  4075. former security.h is now i krb4.h
  4076. - configure --enable-sspi now enables SSPI in the build. It only works for
  4077. windows builds (including cross-compiles for windows).
  4078. Daniel (12 March 2005)
  4079. - David Houlder added --form-string that adds that string to a multipart
  4080. formpost part, without special characters having special meanings etc like
  4081. --form features.
  4082. Daniel (11 March 2005)
  4083. - curl_version_info() returns the feature bit CURL_VERSION_SSPI if it was
  4084. built with SSPI support.
  4085. - Christopher R. Palmer made it possible to build libcurl with the
  4086. USE_WINDOWS_SSPI on Windows, and then libcurl will be built to use the
  4087. native way to do NTLM. SSPI also allows libcurl to pass on the current user
  4088. and its password in the request.
  4089. Daniel (9 March 2005)
  4090. - Dan F improved the SSL lib setup in configure.
  4091. - Nodak Sodak reported a crash when using a SOCKS4 proxy.
  4092. - Jean-Marc Ranger pointed out an embarassing debug printf() leftover in the
  4093. multi interface code.
  4094. - Adjusted the man page for the curl_getdate() return value for dates after
  4095. year 2038. For 32 bit time_t it returns 0x7fffffff but for 64bit time_t it
  4096. returns either the correct value or even -1 on some systems that still seem
  4097. to not deal with this properly. Tor Arntsen found a 64bit AIX system for us
  4098. that did the latter. Gwenole Beauchesne's Mandrake patch put the lights on
  4099. this problem in the first place.
  4100. Daniel (8 March 2005)
  4101. - Dominick Meglio reported that using CURLOPT_FILETIME when transferring a FTP
  4102. file got a Last-Modified: header written to the data stream, corrupting the
  4103. actual data. This was because some conditions from the previous FTP code was
  4104. not properly brought into the new FTP code. I fixed and I added test case
  4105. 520 to verify. (This bug was introduced in 7.13.1)
  4106. - Dan Fandrich fixed the configure --with-zlib option to always consider the
  4107. given path before any standard paths.
  4108. Daniel (6 March 2005)
  4109. - Randy McMurchy was the first to report that valgrind.pm was missing from the
  4110. release archive and thus 'make test' fails.
  4111. Daniel (5 March 2005)
  4112. - Dan Fandrich added HAVE_FTRUNCATE to several config-*.h files.
  4113. - Added test case 235 that makes a resumed upload of a file that isn't present
  4114. on the remote side. This then converts the operation to an ordinary STOR
  4115. upload. This was requested/pointed out by Ignacio Vazquez-Abrams.
  4116. It also proved (and I fixed) a bug in the newly rewritten ftp code (and
  4117. present in the 7.13.1 release) when trying to resume an upload and the
  4118. servers returns an error to the SIZE command. libcurl then loops and sends
  4119. SIZE commands infinitely.
  4120. - Dan Fandrich fixed a SSL problem introduced on February 9th that made
  4121. libcurl attempt to load the whole random file to seed the PRNG. This is
  4122. really bad since this turns out to be using /dev/urandom at times...
  4123. Version 7.13.1 (4 March 2005)
  4124. Daniel (4 March 2005)
  4125. - Dave Dribin made it possible to set CURLOPT_COOKIEFILE to "" to activate
  4126. the cookie "engine" without having to provide an empty or non-existing file.
  4127. - Rene Rebe fixed a -# crash when more data than expected was retrieved.
  4128. Daniel (22 February 2005)
  4129. - NTLM and ftp-krb4 buffer overflow fixed, as reported here:
  4130. http://www.securityfocus.com/archive/1/391042 and the CAN report here:
  4131. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0490
  4132. If these security guys were serious, we'd been notified in advance and we
  4133. could've saved a few of you a little surprise, but now we weren't.
  4134. Daniel (19 February 2005)
  4135. - Ralph Mitchell reported a flaw when you used a proxy with auth, and you
  4136. requested data from a host and then followed a redirect to another
  4137. host. libcurl then didn't use the proxy-auth properly in the second request,
  4138. due to the host-only check for original host name wrongly being extended to
  4139. the proxy auth as well. Added test case 233 to verify the flaw and that the
  4140. fix removed the problem.
  4141. Daniel (18 February 2005)
  4142. - Mike Dobbs reported a mingw build failure due to the lack of
  4143. BUILDING_LIBCURL being defined when libcurl is built. Now this is defined by
  4144. configure when mingw is used.
  4145. Daniel (17 February 2005)
  4146. - David in bug report #1124588 found and fixed a socket leak when libcurl
  4147. didn't close the socket properly when returning error due to failing
  4148. localbind
  4149. Daniel (16 February 2005)
  4150. - Christopher R. Palmer reported a problem with HTTP-POSTing using "anyauth"
  4151. that picks NTLM. Thanks to David Byron letting me test NTLM against his
  4152. servers, I could quickly repeat and fix the problem. It turned out to be:
  4153. When libcurl POSTs without knowing/using an authentication and it gets back
  4154. a list of types from which it picks NTLM, it needs to either continue
  4155. sending its data if it keeps the connection alive, or not send the data but
  4156. close the connection. Then do the first step in the NTLM auth. libcurl
  4157. didn't send the data nor close the connection but simply read the
  4158. response-body and then sent the first negotiation step. Which then failed
  4159. miserably of course. The fixed version forces a connection if there is more
  4160. than 2000 bytes left to send.
  4161. Daniel (14 February 2005)
  4162. - The configure script didn't check for ENGINE_load_builtin_engines() so it
  4163. was never used.
  4164. Daniel (11 February 2005)
  4165. - Removed all uses of strftime() since it uses the localised version of the
  4166. week day names and month names and servers don't like that.
  4167. Daniel (10 February 2005)
  4168. - Now the test script disables valgrind-testing when the test suite runs if
  4169. libcurl is built shared. Otherwise valgrind only tests the shell that runs
  4170. the wrapper-script named 'curl' that is a front-end to curl in this case.
  4171. This should also fix the huge amount of reports of false positives when
  4172. valgrind has identified leaks in (ba)sh and not in curl and people report
  4173. that as curl bugs. Bug report #1116672 is one example.
  4174. Also, the valgrind report parser has been adapted to check that at least one
  4175. of the sources in a stack strace is one of (lib)curl's source files or
  4176. otherwise it will not consider the problem to concern (lib)curl.
  4177. - Marty Kuhrt streamlined the VMS build.
  4178. Daniel (9 February 2005)
  4179. - David Byron fixed his SSL problems, initially mentioned here:
  4180. http://curl.haxx.se/mail/lib-2005-01/0240.html. It turned out we didn't use
  4181. SSL_pending() as we should.
  4182. - Converted lots of FTP code to a statemachine, so that the multi interface
  4183. doesn't block while communicating commands-responses with an FTP server.
  4184. I've added a comment like BLOCKING in the code on all spots I could find
  4185. where we still have blocking operations. When we change curl_easy_perform()
  4186. to use the multi interface, we'll also be able to simplify the code since
  4187. there will only be one "internal interface".
  4188. While doing this, I've now made CURLE_FTP_ACCESS_DENIED separate from the
  4189. new CURLE_LOGIN_DENIED. The first one is now access denied to a function,
  4190. like changing directory or retrieving a file, while the second means that we
  4191. were denied login.
  4192. The CVS tag 'before_ftp_statemachine' was set just before this went in, in
  4193. case of future need.
  4194. - Gisle made the DICT code send CRLF and not just LF as the spec says so.
  4195. Daniel (8 February 2005)
  4196. - Gisle fixed problems when libcurl runs out of memory, and worked on making
  4197. sure the proper error code is returned for those occations.
  4198. Daniel (7 February 2005)
  4199. - Maruko pointed out a problem with inflate decompressing exactly 64K
  4200. contents.
  4201. Daniel (5 February 2005)
  4202. - Eric Vergnaud found a use of an uninitialised variable in the ftp when doing
  4203. PORT on ipv6-enabled hosts.
  4204. - David Byron pointed out we could use BUFSIZE to read data (in
  4205. lib/transfer.c) instead of using BUFSIZE -1.
  4206. Version 7.13.0 (1 February 2005)
  4207. Daniel (31 January 2005)
  4208. - Added Lars Nilsson's htmltitle.cc example
  4209. Daniel (30 January 2005)
  4210. - Fixed a memory leak when using the multi interface and the DO operation
  4211. failed (as in test case 205).
  4212. - Fixed a valgrind warning for file:// operations.
  4213. - Fixed a valgrind report in the url globbing code for the curl command line
  4214. tool.
  4215. - Bugfixed the parser that scans the valgrind report outputs (in runtests.pl).
  4216. I noticed that it previously didn't detect and report the "Conditional jump
  4217. or move depends on uninitialised value(s)" error. When I fixed this, I
  4218. caught a few curl bugs with it. And then I had to spend time to make the
  4219. test suite IGNORE these errors when OpenSSL is used since it produce massive
  4220. amounts of valgrind warnings (but only of the "Conditional..." kind it
  4221. seems). So, if a test that requires SSL is run, it ignores the
  4222. "Conditional..." errors, and you'll get a "valgrind PARTIAL" output instead
  4223. of "valgrind OK".
  4224. Daniel (29 January 2005)
  4225. - Using the multi interface, and doing a requsted a re-used connection that
  4226. gets closed just after the request has been sent failed and did not re-issue
  4227. a request on a fresh reconnect like the easy interface did. Now it does!
  4228. - Define CURL_MULTIEASY when building libcurl (lib/easy.c to be exact), to use
  4229. my new curl_easy_perform() that uses the multi interface to run the
  4230. request. It is a great testbed for the multi interface and I believe we
  4231. shall do it this way for real in the future when we have a successor to
  4232. curl_multi_fdset(). I've used this approach to detect and fix several of the
  4233. recent multi-interfaces issues.
  4234. - Adjusted the KNOWN_BUGS #17 fix a bit more since the FTP code also did some
  4235. bad assumptions.
  4236. - multi interface: when a request is denied due to "Maximum redirects
  4237. followed" libcurl leaked the last Location: URL.
  4238. - Connect failures with the multi interface was often returned as "connect()
  4239. timed out" even though the reason was different.
  4240. Daniel (28 January 2005)
  4241. - KNOWN_BUGS #17 fixed. A DNS cache entry may not remain locked between two
  4242. curl_easy_perform() invokes. It was previously unlocked at disconnect, which
  4243. could mean that it remained locked between multiple transfers. The DNS cache
  4244. may not live as long as the connection cache does, as they are separate.
  4245. To deal with the lack of DNS (host address) data availability in re-used
  4246. connections, libcurl now keeps a copy of the IP adress as a string, to be
  4247. able to show it even on subsequent requests on the same connection.
  4248. The problem could be made to appear with this stunt:
  4249. 1. create a multi handle
  4250. 2. add an easy handle
  4251. 3. fetch a URL that is persistent (leaves the connection alive)
  4252. 4. remove the easy handle from the multi
  4253. 5. kill the multi handle
  4254. 6. create a multi handle
  4255. 7. add the same easy handle to the new multi handle
  4256. 8. fetch a URL from the same server as before (re-using the connection)
  4257. - Stephen More pointed out that CURLOPT_FTPPORT and the -P option didn't work
  4258. when built ipv6-enabled. I've now made a fix for it. Writing test cases for
  4259. custom port hosts turned too tricky so unfortunately there's none.
  4260. Daniel (25 January 2005)
  4261. - Ian Ford asked about support for the FTP command ACCT, and I discovered it
  4262. is present in RFC959... so now (lib)curl supports it as well. --ftp-account
  4263. and CURLOPT_FTP_ACCOUNT set the account string. (The server may ask for an
  4264. account string after PASS have been sent away. The client responds
  4265. with "ACCT [account string]".) Added test case 228 and 229 to verify the
  4266. functionality. Updated the test FTP server to support ACCT somewhat.
  4267. - David Shaw contributed a fairly complete and detailed autoconf test you can
  4268. use to detect libcurl and setup variables for the protocols the installed
  4269. libcurl supports: docs/libcurl/libcurl.m4
  4270. Daniel (21 January 2005)
  4271. - Major FTP third party transfer overhaul.
  4272. These four options are now obsolete: CURLOPT_SOURCE_HOST,
  4273. CURLOPT_SOURCE_PATH, CURLOPT_SOURCE_PORT (this option didn't work before)
  4274. and CURLOPT_PASV_HOST.
  4275. These two options are added: CURLOPT_SOURCE_URL and CURLOPT_SOURCE_QUOTE.
  4276. The target-side didn't use the proper path with RETR, and thus this only
  4277. worked correctly in the login path (i.e without doing any CWD). The source-
  4278. side still uses a wrong path, but the fix for this will need to wait. Verify
  4279. the flaw by using a source URL with included %XX-codes.
  4280. Made CURLOPT_FTPPORT control weather the target operation should use PORT
  4281. (or not). The other side thus uses passive (PASV) mode.
  4282. Updated the ftp3rdparty.c example source to use the updated options.
  4283. Added support for a second FTP server in the test suite. Named... ftp2.
  4284. Added test cases 230, 231 and 232 as a few first basic tests of very simple
  4285. 3rd party transfers.
  4286. Changed the debug output to include 'target' and 'source' when a 3rd party
  4287. is being made, to make it clearer what commands/responses came on what
  4288. connection.
  4289. Added three new command line options: --3p-url, --3p-user and --3p-quote.
  4290. Documented the command line options and the curl_easy_setopt options related
  4291. to third party transfers.
  4292. (Temporarily) disabled the ability to re-use an existing connection for the
  4293. source connection. This is because it needs to force a new in case the
  4294. source and target is the same host, and the host name check is trickier now
  4295. when the source is identified with a full URL instead of a plain host name
  4296. like before.
  4297. TODO (short-term) for 3rd party transfers: quote support. The options are
  4298. there, we need to add test cases to verify their functionality.
  4299. TODO (long-term) for 3rd party transfers: IPv6 support (EPRT and EPSV etc)
  4300. and SSL/TSL support.
  4301. Daniel (20 January 2005)
  4302. - Philippe Hameau found out that -Q "+[command]" didn't work, although some
  4303. code was written for it. I fixed and added test case 227 to verify it.
  4304. The curl.1 man page didn't mention the '+' so I added it.
  4305. Daniel (19 January 2005)
  4306. - Stephan Bergmann made libcurl return CURLE_URL_MALFORMAT if an FTP URL
  4307. contains %0a or %0d in the user, password or CWD parts. (A future fix would
  4308. include doing it for %00 as well - see KNOWN_BUGS for details.) Test case
  4309. 225 and 226 were added to verify this
  4310. - Stephan Bergmann pointed out two flaws in libcurl built with HTTP disabled:
  4311. 1) the proxy environment variables are still read and used to set HTTP proxy
  4312. 2) you couldn't disable http proxy with CURLOPT_PROXY (since the option was
  4313. disabled). This is important since apps may want to disable HTTP proxy
  4314. without actually knowing if libcurl was built to disable HTTP or not.
  4315. Based on Stephan's patch, both these issues should now be fixed.
  4316. Daniel (18 January 2005)
  4317. - Cody Jones' enhanced version of Samuel Díaz García's MSVC makefile patch was
  4318. applied.
  4319. Daniel (16 January 2005)
  4320. - Alex aka WindEagle pointed out that when doing "curl -v dictionary.com", curl
  4321. assumed this used the DICT protocol. While guessing protocols will remain
  4322. fuzzy, I've now made sure that the host names must start with "[protocol]."
  4323. for them to be a valid guessable name. I also removed "https" as a prefix
  4324. that indicates HTTPS, since we hardly ever see any host names using that.
  4325. Daniel (13 January 2005)
  4326. - Inspired by Martijn Koster's patch and example source at
  4327. http://www.greenhills.co.uk/mak/gentoo/curl-eintr-bug.c, I now made the
  4328. select() and poll() calls properly loop if they return -1 and errno is
  4329. EINTR. glibc docs for this is found here:
  4330. http://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html
  4331. This last link says BSD doesn't have this "effect". Will there be a problem
  4332. if we do this unconditionally?
  4333. Daniel (11 January 2005)
  4334. - Dan Torop cleaned up a few no longer used variables from David Phillips'
  4335. select() overhaul fix.
  4336. - Cyrill Osterwalder posted a detailed analysis about a bug that occurs when
  4337. using a custom Host: header and curl fails to send a request on a re-used
  4338. persistent connection and thus creates a new connection and resends it. It
  4339. then sent two Host: headers. Cyrill's analysis was posted here:
  4340. http://curl.haxx.se/mail/archive-2005-01/0022.html
  4341. - Bruce Mitchener identified (bug report #1099640) the never-ending SOCKS5
  4342. problem with the version byte and the check for bad versions. Bruce has lots
  4343. of clues on this, and based on his suggestion I've now removed the check of
  4344. that byte since it seems to be able to contain 1 or 5.
  4345. Daniel (10 January 2005)
  4346. - Pavel Orehov reported memory problems with the multi interface in bug report
  4347. #1098843. In short, a shared DNS cache was setup for a multi handle and when
  4348. the shared cache was deleted before the individual easy handles, the latter
  4349. cleanups caused read/writes to already freed memory.
  4350. - Hzhijun reported a memory leak in the SSL certificate code, that leaked the
  4351. remote certificate name when it didn't match the used host name.
  4352. Gisle (8 January 2005)
  4353. - Added Makefile.Watcom files (src/lib). Updated Makefile.dist.
  4354. Daniel (7 January 2005)
  4355. - Improved the test script's valgrind log parser to actually work! Also added
  4356. the ability to disable the log scanner for specific test cases. Test case
  4357. 509 results in numerous problems and leaks in OpenSSL and has to get it
  4358. disabled.
  4359. Daniel (6 January 2005)
  4360. - Fixed a single-byte read out of bounds in test case 39 in the curl tool code
  4361. (i.e not in the library).
  4362. - Bug report #1097019 identified a problem when doing -d "data" with -G and
  4363. sending it to two URLs with {}. Added test 199 to verify the fix.
  4364. Daniel (4 January 2005)
  4365. - Marty Kuhrt adjusted a VMS build script slightly
  4366. - Kai Sommerfeld and Gisle Vanem fixed libcurl to build with IPv6 support on
  4367. Win2000.
  4368. Daniel (2 January 2005)
  4369. - Alex Neblett updated the MSVC makefiles slightly.
  4370. Daniel (25 December 2004)
  4371. - Removed src/config.h.in from CVS, it is now copied from the (generated)
  4372. lib/config.h.in instead, as they can very well be the same. This removes a
  4373. "manual hassle". You may want to re-run buildconf now.
  4374. - Werner Koch filed Debian bug report #286794, mentioning that curl contained
  4375. non-free (by Debian's view) source code. This was Angus Mackay's
  4376. src/getpass.c source code. I tried to contact him about it to quickly solve
  4377. this issue, but his email addresses bounce and I got some time "over" and
  4378. reimplemented the functionality once brought by Angus. We no longer use any
  4379. of Angus' original code and the new function is much simpler (IMO). Issue
  4380. solved.
  4381. Daniel (24 December 2004)
  4382. - David Shaw added --protocols to curl-config, so that it now lists all
  4383. protocols libcurl was built to support. --feature no longer lists disabled
  4384. protocols.
  4385. Daniel (23 December 2004)
  4386. - David Shaw fixed the configure --disable-[protocol] variables so that
  4387. curl-config --feature now works correctly!
  4388. Daniel (22 December 2004)
  4389. - Rune Kleveland fixed a minor memory leak for received cookies with the
  4390. (rare) version attribute set.
  4391. - Marcin Konicki provided two configure fixes and a source fix to make curl
  4392. build out-of-the-box on BeOS.
  4393. Daniel (21 December 2004)
  4394. - Added test case 217 that verified CURLINFO_HTTP_CONNECTCODE, and I made the
  4395. -w option support 'http_connect' to make it easier to verify!
  4396. - Fixed lib/select.c include order to build fine on FreeBSD
  4397. - Fixed failf()'s reuse of the va_list variable that crashed on FreeBSD.
  4398. Pointed out by Peter Pentchev.
  4399. Version 7.12.3 (20 December 2004)
  4400. Daniel (19 December 2004)
  4401. - I investigated our PKCS12 build problem on Solaris 2.7 with OpenSSL 0.9.7e,
  4402. and it turned out to be the fault of the zlib 1.1.4 headers doing a typedef
  4403. named 'free_func' and the OpenSSL headers have a prototype that uses
  4404. 'free_func' in one of its arguments. This is why the compile errors out.
  4405. In other words, we need to include the openssl/pkcs12.h header before the
  4406. zlib.h header and it builds fine. The configure script now checks for this
  4407. file and it then gets included early in lib/urldata.h.
  4408. Daniel (18 December 2004)
  4409. - Samuel Listopad added support for PKCS12 formatted certificates.
  4410. - Samuel Listopad fixed -E to support "C:/path" (with forward slash) as well.
  4411. Daniel (16 December 2004)
  4412. - Gisle found and fixed a problem in the directory re-use for FTP.
  4413. I added test case 215 and 216 to better verify the functionality.
  4414. - Dinar in bug report #1086121, found a file handle leak when a multipart
  4415. formpost (including a file upload part) was aborted before the whole file
  4416. was sent.
  4417. Daniel (15 December 2004)
  4418. - Tom Lee found out that globbing of strings with backslashes didn't work as
  4419. you'd expect. Backslashes are such a central part of windows file names that
  4420. forcing backslashes to have to be escaped with backslashes is a bit too
  4421. awkward to users. Starting now, you only need to escape globbing characters
  4422. such as the five letters: "[]{},". Added test case 214 to verify this.
  4423. Daniel (14 December 2004)
  4424. - Harshal Pradhan patched a HTTP persistent connection flaw: if the user name
  4425. and/or password were modified between two requests on a persistent
  4426. connection, the second request were still made with the first setup!
  4427. I added test case 519 to verify the fix.
  4428. Daniel (13 December 2004)
  4429. - Gisle added CURLINFO_SSL_ENGINES to curl_easy_getinfo() to allow an app
  4430. to list all available crypto ENGINES.
  4431. - Gisle fixed bug report #1083542, which pointed out a problem with resuming
  4432. large file (>4GB) file:// transfers on windows.
  4433. Daniel (11 December 2004)
  4434. - Made the test suite HTTP server (sws) capable of using IPv6, and then
  4435. extended the test environment to support that and also added three test
  4436. cases (240, 241, 242) that run tests using IPv6. Test 242 uses a URL that
  4437. didn't work before the 10 dec fix by Kai Sommerfeld.
  4438. - Made a failed file:// resume output an error message
  4439. - Corrected the CURLE_BAD_DOWNLOAD_RESUME error message in lib/strerror.c
  4440. - Dan Fandrich:
  4441. simplified and consolidated the SSL checks in configure and the usage of the
  4442. defines in lib/setup.h
  4443. provided a first libcurl.pc.in file for pkg-config (but the result is not
  4444. installed anywhere at this point)
  4445. extended the cross compile section in the docs/INSTALL file
  4446. Daniel (10 December 2004)
  4447. - When providing user name in the URL and a IPv6-style IP-address (like in
  4448. "ftp://user@[::1]/tmp"), the URL parser didn't get the host extracted
  4449. properly. Reported and fixed by Kai Sommerfeld.
  4450. Daniel (9 December 2004)
  4451. - Ton Voon provided a configure fix that should fix the notorious (mostly
  4452. reported on Solaris) problem where the size_t check fails due to the SSL
  4453. libs being found in a dir not searched through by the run-time linker.
  4454. patch-tracker entry #1081707.
  4455. - Bryan Henderson pointed out in bug report #1081788 that the curl-config
  4456. --vernum output wasn't zero prefixed properly (as claimed in documentation).
  4457. This is fixed in maketgz now.
  4458. Daniel (8 December 2004)
  4459. - Matt Veenstra updated the mach-O framework files for Mac OS X.
  4460. - Rene Bernhardt found and fixed a buffer overrun in the NTLM code, where
  4461. libcurl always and unconditionally overwrote a stack-based array with 3 zero
  4462. bytes. This is not an exploitable buffer overflow. No need to get alarmed.
  4463. Daniel (7 December 2004)
  4464. - Fixed so that the final error message is sent to the verbose info "stream"
  4465. even if no errorbuffer is set.
  4466. Daniel (6 December 2004)
  4467. - Dan Fandrich added the --disable-cookies option to configure to build
  4468. libcurl without cookie support. This is mainly useful if you want to build a
  4469. minimalistic libcurl with no cookies support at all. Like for embedded
  4470. systems or similar.
  4471. - Richard Atterer fixed libcurl's way of dealing with the EPSV
  4472. response. Previously, libcurl would re-resolve the host name with the new
  4473. port number and attempt to connect to that, while it should use the IP from
  4474. the control channel. This bug made it hard to EPSV from an FTP server with
  4475. multiple IP addresses!
  4476. Daniel (3 December 2004)
  4477. - Bug report #1078066: when a chunked transfer was pre-maturely closed exactly
  4478. at a chunk boundary it was not considered an error and thus went unnoticed.
  4479. Fixed by Maurice Barnum.
  4480. Added test case 207 to verify.
  4481. Daniel (2 December 2004)
  4482. - Fixed the CONNECT loop to default timeout to 3600 seconds.
  4483. Added test case 206 that makes CONNECT with Digest.
  4484. Fixed a flaw that prepended "(nil)" to the initial CONNECT rqeuest's user-
  4485. agent field.
  4486. Daniel (30 November 2004)
  4487. - Dan Fandrich's fix for libz 1.1 and "extra field" usage in a gzip stream
  4488. - Dan also helped me with input data to create three more test cases for the
  4489. --compressed option.
  4490. Daniel (29 November 2004)
  4491. - I improved the test suite to enable binary contents in the tests (by proving
  4492. it base64 encoded), like for testing decompress etc. Added test 220 and 221
  4493. for this purpose. Tests can now also depend on libz to run.
  4494. - As reported by Reinout van Schouwen in Mandrake's bug tracker bug 12285
  4495. (http://qa.mandrakesoft.com/show_bug.cgi?id=12285), when connecting to an
  4496. IPv6 host with FTP, --disable-epsv (or --disable-eprt) effectively disables
  4497. the ability to transfer a file. Now, when connected to an FTP server with
  4498. IPv6, these FTP commands can't be disabled even if asked to with the
  4499. available libcurl options.
  4500. Daniel (26 November 2004)
  4501. - As reported in Mandrake's bug tracker bug 12289
  4502. (http://qa.mandrakesoft.com/show_bug.cgi?id=12289), curl would print a
  4503. newline to "finish" the progress meter after each redirect and not only
  4504. after a completed transfer.
  4505. Daniel (25 November 2004)
  4506. - FTP improvements:
  4507. If EPSV, EPRT or LPRT is tried and doesn't work, it will not be retried on
  4508. the same server again even if a following request is made using a persistent
  4509. connection.
  4510. If a second request is made to a server, requesting a file from the same
  4511. directory as the previous request operated on, libcurl will no longer make
  4512. that long series of CWD commands just to end up on the same spot. Note that
  4513. this is only for *exactly* the same dir. There is still room for improvements
  4514. to optimize the CWD-sending when the dirs are only slightly different.
  4515. Added test 210, 211 and 212 to verify these changes. Had to improve the
  4516. test script too and added a new primitive to the test file format.
  4517. Daniel (24 November 2004)
  4518. - Andrés García fixed the configure script to detect select properly when run
  4519. with Msys/Mingw on Windows.
  4520. Daniel (22 November 2004)
  4521. - Made HTTP PUT and POST requests no longer use HEAD when doing multi-pass
  4522. auth negotiation (NTLM, Digest and Negotiate), but instead use the request
  4523. keyword "properly". Details in lib/README.httpauth. This also introduces
  4524. CURLOPT_IOCTLFUNCTION and CURLOPT_IOCTLDATA, to be used by apps that use the
  4525. "any" auth alternative as then libcurl may need to send the PUT/POST data
  4526. more than once and thus may need to ask the app to "rewind" the read data
  4527. stream to start.
  4528. See also the new example using this: docs/examples/anyauthput.c
  4529. - David Phillips enhanced test 518. I made it depend on a "feature" so that
  4530. systems without getrlimit() won't attempt to test 518. configure now checks
  4531. for getrlimit() and setrlimit() for this test case.
  4532. Daniel (18 November 2004)
  4533. - David Phillips fixed libcurl to not crash anymore when more than FD_SETSIZE
  4534. file descriptors are in use. Test case 518 added to verify.
  4535. Daniel (15 November 2004)
  4536. - To test my fix for the CURLINFO_REDIRECT_TIME bug, I added time_redirect and
  4537. num_redirects support to the -w writeout option for the command line tool.
  4538. - Wojciech Zwiefka found out that CURLINFO_REDIRECT_TIME didn't work as
  4539. documented.
  4540. Daniel (12 November 2004)
  4541. - Gisle Vanem modigied the MSVC and Netware makefiles to build without
  4542. libcurl.def
  4543. - Dan Fandrich added the --disable-crypto-auth option to configure to allow
  4544. libcurl to build without Digest support. (I figure it should also explicitly
  4545. disable Negotiate and NTLM.)
  4546. - *** Modified Behaviour Alert ***
  4547. Setting CURLOPT_POSTFIELDS to NULL will no longer do a GET.
  4548. Setting CURLOPT_POSTFIELDS to "" will send a zero byte POST and setting
  4549. CURLOPT_POSTFIELDS to NULL and CURLOPT_POSTFIELDSIZE to zero will also make
  4550. a zero byte POST. Added test case 515 to verify this.
  4551. Setting CURLOPT_HTTPPOST to NULL makes a zero byte post. Added test case 516
  4552. to verify this.
  4553. CURLOPT_POSTFIELDSIZE must now be set to -1 to signal "we don't know".
  4554. Setting it to zero simply says this is a zero byte POST.
  4555. When providing POST data with a read callback, setting the size up front
  4556. is now made with CURLOPT_POSTFIELDSIZE and not with CURLOPT_INFILESIZE.
  4557. Daniel (11 November 2004)
  4558. - Dan Fandrich added --disable-verbose to the configure script to allow builds
  4559. without verbose strings in the code, to save some 12KB space. Makes sense
  4560. only for systems with very little memory resources.
  4561. - Jeff Phillips found out that a date string with a year beyond 2038 could
  4562. crash the new date parser on systems with 32bit time_t. We now check for
  4563. this case and deal with it.
  4564. Daniel (10 November 2004)
  4565. - I installed Heimdal on my Debian box (using the debian package) and noticed
  4566. that configure --with-gssapi failed to create a nice build. Fixed now.
  4567. Daniel (9 November 2004)
  4568. - Gisle Vanem marked all external function calls with CURL_EXTERN so that now
  4569. the Windows, Netware and other builds no longer need libcurl.def or similar
  4570. files.
  4571. Daniel (8 November 2004)
  4572. - Made the configure script check for tld.h if libidn was detected, since
  4573. libidn 0.3.X didn't have such a header and we don't work with anything
  4574. before libidn 0.4.1 anyway! Suse 9.1 apparently ships with a 0.3.X version
  4575. of libidn which makes the curl 7.12.2 build fail. Jean-Philippe
  4576. Barrette-LaPierre helped pointing this out.
  4577. - Ian Gulliver reported in debian bug report #278691: if curl is invoked in an
  4578. environment where stderr is closed the -v output will still be sent to file
  4579. descriptor 2 which then might be the network socket handle! Now we have a
  4580. weird hack instead that attempts to make sure that file descriptor 2 is
  4581. opened (with a call to pipe()) before libcurl is called to do the transfer.
  4582. configure now checks for pipe() and systems without pipe don't get the weird
  4583. hack done.
  4584. Daniel (5 November 2004)
  4585. - Tim Sneddon made libcurl send no more than 64K in a single first chunk when
  4586. doing a huge POST on VMS, as this is a system limitation. Default on general
  4587. systems is 100K.
  4588. Daniel (4 November 2004)
  4589. - Andres Garcia made it build on mingw againa, my --retry code broke the build.
  4590. Daniel (2 November 2004)
  4591. - Added --retry-max-time that allows a maximum time that may not have been
  4592. reached for a retry to be made. If not set there is no maximum time, only
  4593. the amount of retries set with --retry.
  4594. - Paul Nolan provided a patch to make libcurl build nicely on Windows CE.
  4595. Daniel (1 November 2004)
  4596. - When cross-compiling, the configure script no longer attempts to use
  4597. pkg-config on the build host in order to detect OpenSSL compiler options.
  4598. Daniel (27 October 2004)
  4599. - Dan Fandrich:
  4600. An improvement to the gzip handling of libcurl. There were two problems with
  4601. the old version: it was possible for a malicious gzip file to cause libcurl
  4602. to leak memory, as a buffer was malloced to hold the header and never freed
  4603. if the header ended with no file contents. The second problem is that the
  4604. 64 KiB decompression buffer was allocated on the stack, which caused
  4605. unexpectedly high stack usage and overflowed the stack on some systems
  4606. (someone complained about that in the mailing list about a year ago).
  4607. Both problems are fixed by this patch. The first one is fixed when a recent
  4608. (1.2) version of zlib is used, as it takes care of gzip header parsing
  4609. itself. A check for the version number is done at run-time and libcurl uses
  4610. that feature if it's present. I've created a define OLD_ZLIB_SUPPORT that
  4611. can be commented out to save some code space if libcurl is guaranteed to be
  4612. using a 1.2 version of zlib.
  4613. The second problem is solved by dynamically allocating the memory buffer
  4614. instead of storing it on the stack. The allocation/free is done for every
  4615. incoming packet, which is suboptimal, but should be dwarfed by the actual
  4616. decompression computation.
  4617. I've also factored out some common code between deflate and gzip to reduce
  4618. the code footprint somewhat. I've tested the gzip code on a few test files
  4619. and I tried deflate using the freshmeat.net server, and it all looks OK. I
  4620. didn't try running it with valgrind, however.
  4621. - Added a --retry option to curl that takes a numerical option for the number
  4622. of times the operation should be retried. It is retried if a transient error
  4623. is detected or if a timeout occurred. By default, it will first wait one
  4624. second between the retries and then double the delay time between each retry
  4625. until the delay time is ten minutes which then will be the delay time
  4626. between all forthcoming retries. You can set a static delay time with
  4627. "--retry-delay [num]" where [num] is the number of seconds to wait between
  4628. each retry.
  4629. Daniel (25 October 2004)
  4630. - Tomas Pospisek filed bug report #1053287 that proved -C - and --fail on a
  4631. file that was already completely downloaded caused an error, while it
  4632. doesn't if you don't use --fail! I added test case 194 to verify the fix.
  4633. Grrr. CURLOPT_FAILONERROR is now added to the list stuff to remove in
  4634. libcurl v8 due to all the kludges needed to support it.
  4635. - Mohun Biswas found out that formposting a zero-byte file didn't work very
  4636. good. I fixed.
  4637. Daniel (19 October 2004)
  4638. - Alexander Krasnostavsky made it possible to make FTP 3rd party transfers
  4639. with both source and destination being the same host. It can be useful if
  4640. you want to move a file on a server or similar.
  4641. - Guillaume Arluison added CURLINFO_NUM_CONNECTS to allow an app to figure
  4642. out how many new connects a previous transfer required.
  4643. I added %{num_connects} to the curl tool and added test case 192 and 193
  4644. to verify the new code.
  4645. Daniel (18 October 2004)
  4646. - Peter Wullinger pointed out that curl should call setlocale() properly to
  4647. initiate the specific language operations, to make the IDN stuff work
  4648. better.
  4649. Version 7.12.2 (18 October 2004)
  4650. Daniel (16 October 2004)
  4651. - Alexander Krasnostavsky made the CURLOPT_FTP_CREATE_MISSING_DIRS option work
  4652. fine even for third party transfers.
  4653. - runekl at opoint.com found out (and provided a fix) that libcurl leaked
  4654. memory for cookies with the "max-age" field set.
  4655. Gisle (16 October 2004)
  4656. - Issue 50 in TODO-RELEASE; Added Traian Nicolescu's patches for threaded
  4657. resolver on Windows. Plugged some potential handle and memory leaks.
  4658. Daniel (14 October 2004)
  4659. - Eric Vergnaud pointed out that libcurl didn't treat ?-letters in the user
  4660. name and password fields properly in URLs, like
  4661. ftp://us?er:pass?word@site.com/. Added test 191 to verify the fix.
  4662. Daniel (11 October 2004)
  4663. - libcurl now uses SO_NOSIGPIPE for systems that support it (Mac OS X 10.2 or
  4664. later is one) to inhibit the SIGPIPE signal when writing to a socket while
  4665. the peer dies. The same effect is provide by the MSG_NOSIGNAL parameter to
  4666. send() on other systems. Alan Pinstein verified the fix.
  4667. Daniel (10 October 2004)
  4668. - Systems with 64bit longs no longer use strtoll() or our strtoll- replacement
  4669. to parse 64 bit numbers. strtol() works fine. Added a configure check to
  4670. detect if [constant]LL works and if so, use that in the strtoll replacement
  4671. code to work around compiler warnings reported by Andy Cedilnik.
  4672. Gisle (6 October 2004)
  4673. - For USE_LIBIDN builds: Added Top-Level-Domain (TLD) check of host-name
  4674. used in fix_hostname(). Checks if characters in 'host->name' (indirectly
  4675. via 'ace_hostname') are legal according to the TLD tables in libidn.
  4676. Daniel (6 October 2004)
  4677. - Chih-Chung Chang reported that if you use CURLOPT_RESUME_FROM and enabled
  4678. CURLOPT_FOLLOWLOCATION, libcurl reported error if a redirect happened even
  4679. if the new URL would provide the resumed file. Test case 188 added to verify
  4680. the fix (together with existing test 99).
  4681. - Dan Fandrich fixed a configure flaw for systems that need both nsl and socket
  4682. libs to use gethostbyname().
  4683. - Removed tabs and trailing whitespace from lots of source files.
  4684. Daniel (5 October 2004)
  4685. - Made configure --with-libidn=PATH try the given PATH before the default
  4686. paths to make it possible to override.
  4687. - If idna_strerror() is present in libidn, we can use that instead of our
  4688. internal replacement. This function was added by Simon in libidn 0.5.6 and
  4689. is detected by configure.
  4690. - It seems basename() on IRIX is in the libgen library and since we don't use
  4691. that, configure finds libgen.h but not basename and then we get a compiler
  4692. error because our basename() replacement doesn't match the proto in
  4693. libgen.h. Starting now, we don't include the file if basename wasn't found
  4694. as well.
  4695. Daniel (4 October 2004)
  4696. - Chris found a race condition resulting in CURLE_COULDNT_RESOLVE_HOST and
  4697. potential crash, in the windows threaded name resolver code.
  4698. Daniel (3 October 2004)
  4699. - Replaced the use of isspace() in cookie.c with our own version instead since
  4700. we have most data as 'char *' and that makes us pass in negative values if
  4701. there is 8bit data in the string. Changing to unsigned causes too much
  4702. warnings or too many required typecasts to the normal string functions.
  4703. Harshal Pradhan identified this problem.
  4704. Daniel (2 October 2004)
  4705. - Bertrand Demiddelaer found a case where libcurl could read already freed
  4706. data when CURLOPT_VERBOSE is used and a (very) persistent connection. It
  4707. happened when the dns cache entry for the connection was pruned while the
  4708. connection was still alive and then again re-used. We worked together on
  4709. this fix.
  4710. - Gisle Vanem provided code that displays an error message when the (libidn
  4711. based) IDN conversion fails. This is really due to a missing suitable
  4712. function in the libidn API that I hope we can remove once libidn gets a
  4713. function like this.
  4714. Daniel (1 October 2004)
  4715. - Aleksandar Milivojevic reported a problem in the Redhat bugzilla (see
  4716. https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=134133) and not to
  4717. anyone involved in the curl project! This happens when you try to curl a
  4718. file from a proftpd site using SSL. It seems proftpd sends a somewhat
  4719. unorthodox response code (232 instead of 230). I relaxed the response code
  4720. check to deal with this and similar cases.
  4721. - Based on Fedor Karpelevitch's formpost path basename patch, file parts in
  4722. formposts no longer include the path part. If you _really_ want them, you
  4723. must provide your preferred full file name with CURLFORM_FILENAME.
  4724. Added detection for libgen.h and basename() to configure. My custom
  4725. basename() replacement function for systems without it, might be a bit too
  4726. naive...
  4727. Updated 6 test cases to make them work with the stripped paths.
  4728. Daniel (30 September 2004)
  4729. - Larry Campbell added CURLINFO_OS_ERRNO to curl_easy_getinfo() that allows an
  4730. app to retrieve the errno variable after a (connect) failure. It will make
  4731. sense to provide this for more failures in a more generic way, but let's
  4732. start like this.
  4733. - Günter Knauf and Casey O'Donnell worked out an extra #if condition for the
  4734. curl/multi.h header to work better in winsock-using apps.
  4735. - Jean-Philippe Barrette-LaPierre made buildconf run better on Mac OS X by
  4736. properly using glibtoolize instead of plain libtoolize. (This is made if
  4737. glibtool was found and used instead of plain libtool.)
  4738. Daniel (29 September 2004)
  4739. - Bertrand Demiddelaer fixed curl_easy_reset() so that it doesn't mistakingly
  4740. enable the progress meter.
  4741. Daniel (28 September 2004)
  4742. - "Mekonikum" found out that if you built curl without SSL support, although
  4743. your current SSL installation supports Engine, the compile fails.
  4744. Daniel (27 September 2004)
  4745. - When --with-ssl=PATH is used to the configure script, it no longer uses
  4746. pkg-config to figure out extra details. That is now only done if no PATH is
  4747. included or if SSL is checked for by default without the --with-ssl option.
  4748. Daniel (25 September 2004)
  4749. - Peter Sylvester pointed out that CURLOPT_SSLENGINE couldn't even be set to
  4750. NULL when no engine was supported. It can now.
  4751. Daniel (22 September 2004)
  4752. - Dan Fandrich fixed three test cases to no longer use "localhost" but instead
  4753. use "127.0.0.1" to avoid requiring that localhost resolves nicely.
  4754. - Jean-Claude Chauve fixed an LDAP crash when more than one record was
  4755. retrieved.
  4756. Daniel (19 September 2004)
  4757. - Andreas Rieke pointed out that when attempting to connect to a host without
  4758. a service on the specified port, curl_easy_perform() didn't properly provide
  4759. an error message in the CURLOPT_ERRORBUFFER buffer.
  4760. Daniel (16 September 2004)
  4761. - Daniel at touchtunes uses the FTP+SSL server "BSDFTPD-SSL from
  4762. http://bsdftpd-ssl.sc.ru/" which accordingly doesn't properly work with curl
  4763. when "AUTH SSL" is issued (although the server responds fine and everything)
  4764. but requires that curl issues "AUTH TLS" instead. See
  4765. http://curl.haxx.se/feedback/display.cgi?id=10951944937603&support=yes
  4766. Introducing CURLOPT_FTPSSLAUTH that allows the application to select which
  4767. of the AUTH strings to attempt first.
  4768. - Anonymous filed bug report #1029478 which identified a bug when you 1) used
  4769. a URL without properly seperating the host name and the parameters with a
  4770. slash. 2) the URL had parameters to the right of a ? that contains a slash
  4771. 3) curl was told to follow Location:s 4) the request got a response that
  4772. contained a Location: to redirect to "/dir". curl then appended the new path
  4773. on the wrong position of the original URL.
  4774. Test case 187 was added to verify that this was fixed properly.
  4775. Daniel (11 September 2004)
  4776. - Added parsedate.c that contains a rewrite of the date parser currently
  4777. provided by getdate.y. The new one is MUCH smaller and will allow us to run
  4778. away from the yacc/bison jungle. It is also slightly lacking in features
  4779. compared to the old one, but it supports parsing of all date formats HTTP
  4780. involves (and a fair bunch of others).
  4781. Daniel (10 September 2004)
  4782. - As found out by Jonas Forsman, curl didn't allow -F to set Content-Type on
  4783. text-parts. Starting now, we can do -F "name=daniel;type=text/extra". Added
  4784. test case 186 to verify.
  4785. - Bug report #1025986. When following a Location: with a custom Host: header
  4786. replacement, curl only replaced the Host: header on the initial request
  4787. and didn't replace it on the following ones. This resulted in requests with
  4788. two Host: headers.
  4789. Now, curl checks if the location is on the same host as the initial request
  4790. and then continues to replace the Host: header. And when it moves to another
  4791. host, it doesn't replace the Host: header but it also doesn't make the
  4792. second Host: header get used in the request.
  4793. This change is verified by the two new test cases 184 and 185.
  4794. Daniel (8 September 2004)
  4795. - Modified the test suite to be able to use and run with customized port
  4796. numbers. This was always intended but never before possible. Now a simple
  4797. change in the runtests.pl script can make all tests use different ports.
  4798. The default ports in use from now on are 8990 to 8993.
  4799. Daniel (2 September 2004)
  4800. - Minor modification of an SSL-related error message.
  4801. Daniel (31 August 2004)
  4802. - David Tarendash found out that curl_multi_add_handle() returned
  4803. CURLM_CALL_MULTI_PERFORM instead of CURLM_OK.
  4804. Daniel (30 August 2004)
  4805. - Make "Proxy-Connection: close" close the current proxy connection, as Roman
  4806. Koifman found out.
  4807. Daniel (24 August 2004)
  4808. - Fixed a getdate problem by post-replacing the getdate.c file after the
  4809. bison/yacc process to add the fix Harshal Pradhan suggested. The problem
  4810. caused a crash on Windows when parsing some dates.
  4811. Daniel (23 August 2004)
  4812. - Roman Koifman pointed out that libcurl send Expect: 100-continue on POSTs
  4813. even when told to use HTTP 1.0, which is not correct. Test case 180 and
  4814. 181 verify this.
  4815. - Added test case 182 to verify that zero byte transfers call the callback
  4816. properly.
  4817. Daniel (20 August 2004)
  4818. - Alexander Krasnostavsky made the write callback get called even when a zero
  4819. byte file is downloaded.
  4820. Daniel (18 August 2004)
  4821. - Ling Thio pointed out that when libcurl is built ipv6-enabled, it still did
  4822. reverse DNS lookups when fed with a numerical IP-address (like
  4823. http://127.0.0.1/), although it doesn't when built ipv6-disabled. libcurl
  4824. should never do reverse lookups.
  4825. Daniel (17 August 2004)
  4826. - Kjetil Jacobsen noticed that when transferring a file:// URL pointing to an
  4827. empty file, libcurl would return with the file still open.
  4828. - Alexander Krasnostavsky pointed out that the configure script needs to define
  4829. _THREAD_SAFE for AIX systems to make libcurl built really thread-safe.
  4830. Also added a check for the xlc compiler on AIX, and if that is detect we use
  4831. the -qthreaded compiler option
  4832. Daniel (16 August 2004)
  4833. - libcurl now allows a custom "Accept-Encoding:" header override the
  4834. internally set one that gets set with CURLOPT_ENCODING. Pointed out by Alex.
  4835. - Roland Krikava found and fixed a cookie problem when using a proxy (the
  4836. path matching was wrong). I added test case 179 to verify that we now do
  4837. right.
  4838. Daniel (15 August 2004)
  4839. - Casey O'Donnell fixed some MSVC makefile targets to link properly.
  4840. Daniel (11 August 2004)
  4841. - configure now defines _XOPEN_SOURCE to 500 on systems that need it to build
  4842. warning-free (the only known one so far is non-gcc builds on 64bit SGI
  4843. IRIX). (Reverted this change later as it caused compiler errors.)
  4844. - the FTP code now includes the server response in the error message when the
  4845. server gives back a 530 after the password is provided, as it isn't
  4846. necessary because of a bad user name or password.
  4847. Version 7.12.1 (10 August 2004)
  4848. Daniel (10 August 2004)
  4849. - In OpenSSL 0.9.7d and earlier, ASN1_STRING_to_UTF8 fails if the input is
  4850. already UTF-8 encoded. This made the certificate verification fail if the
  4851. remote server used a certificate with the name UTF-8 encoded.
  4852. Work-around brought by Alexis S. L. Carvalho.
  4853. Daniel (9 August 2004)
  4854. - I fixed the configure script for krb4 to use -lcom_err as well, as I started
  4855. to get link problems with it unless I did that on my Solaris 2.7 box. I
  4856. don't understand why I started to get problems with this now!
  4857. Daniel (5 August 2004)
  4858. - Enrico Scholz fixed the HTTP-Negotiate service name to be uppercase as
  4859. reported in bug report #1004105
  4860. Daniel (4 August 2004)
  4861. - Gisle Vanem provided a fix for the multi interface and connecting to a host
  4862. using multiple IP (bad) addresses.
  4863. - Dylan Salisbury made libcurl no longer accept cookies set to a TLD only (it
  4864. previously allowed that on the seven three-letter domains).
  4865. Daniel (31 July 2004)
  4866. - Joel Chen reported that the digest code assumed quotes around the contents a
  4867. bit too much.
  4868. Daniel (28 July 2004)
  4869. - Bertrand Demiddelaer fixed the host name to get setup properly even when a
  4870. connection is re-used, when a proxy is in use. Previously the wrong Host:
  4871. header could get sent when re-using a proxy connection to a different target
  4872. host.
  4873. - Fixed Brian Akins' reported problems with duplicate Host: headers on re-used
  4874. connections. If you attempted to replace the Host: header in the second
  4875. request, you got two such headers!
  4876. - src/Makefile.am now includes the Makefile.inc file to get info about files
  4877. Daniel (26 July 2004)
  4878. - Made "curl [URL] -o name#2" work as expected. If there's no globbing for the
  4879. #-number, it will simply be used as #2 in the file name.
  4880. - Bertrand Demiddelaer fixed testing with valgrind 2.1.x and added two missing
  4881. newlines in the cookie informationals.
  4882. Daniel (24 July 2004)
  4883. - I fixed the autobuilds with ares, since they now need to have buildconf run
  4884. in the ares dir before the configure script is run.
  4885. - Added Casey O'Donnell's curl_easy_reset() function. It has a proto in
  4886. curl/curl.h but we have no man page yet.
  4887. Daniel (20 July 2004)
  4888. - Added buildconf and buildconf.bat to the release archives, since they are
  4889. handy for rebuilding curl when using a daily snapshot (and not a pure CVS
  4890. checkout).
  4891. Daniel (16 July 2004)
  4892. - As suggested by Toby Peterson, libcurl now ignores Content-Length data if the
  4893. given size is a negative number. Test case 178 verifies this.
  4894. Daniel (14 July 2004)
  4895. - Günter Knauf has made the Netware builds do without the config-netware.h
  4896. files, so they are now removed from the dist packages.
  4897. - Günter Knauf made curl and libcurl build with Borland again.
  4898. - Andres Garcia fixed the common test 505 failures on windows.
  4899. Daniel (6 July 2004)
  4900. - Andrés García found out why the windows tests failed on file:// "uploads".
  4901. Daniel (2 July 2004)
  4902. - Andrés García reported a curl_share_cleanup() crash that occurs when no
  4903. lock/unlock callbacks have been set and the share is cleaned up.
  4904. Daniel (1 July 2004)
  4905. - When using curl --trace or --trace-ascii, no trace messages that were sent
  4906. by curl_easy_cleanup() were included in the trace file. This made the
  4907. message "Closing connection #0" never appear in trace dumps.
  4908. Daniel (30 June 2004)
  4909. - Niels van Tongeren found that setting CURLOPT_NOBODY to TRUE doesn't disable
  4910. a previously set POST request, making a very odd request get sent (unless
  4911. you disabled the POST) a HEAD request with a POST request-body. I've now
  4912. made CURLOPT_NOBODY enforce a proper HEAD. Added test case 514 for this.
  4913. Daniel (29 June 2004)
  4914. - Günter Knauf made the testcurl.pl script capable of using a custom setup
  4915. file to easier run multiple autobuilds on the same source tree.
  4916. - Gisle fixed the djgpp build and fixed a memory problem in some of the
  4917. reorged name resolved code.
  4918. - Fixed code to allow connects done using the multi interface to attempt the
  4919. next IP when connecting to a host that resolves to multiple IPs and a
  4920. connect attempt fails.
  4921. Daniel (27 June 2004)
  4922. - Based on Rob Stanzel's bug report #979480, I wrote a configure check that
  4923. checks if poll() can be used to wait on NULL as otherwise select() should be
  4924. used to do it. The select() usage was also fixed according to his report.
  4925. Mac OS X 10.3 says "poll() functionality for Mac OS X is implemented via an
  4926. emulation layer on top of select(), not in the kernel directly. It is
  4927. recommended that programs running under OS X 10.3 prefer select() over
  4928. poll(). Configure scripts should look for the _POLL_EMUL_H_ define (instead
  4929. of _POLL_H_ or _SYS_POLL_H_) and avoid implementations where poll is not
  4930. implemented in the kernel."
  4931. Yes, we can probably use select() on most platforms but today I prefered to
  4932. leave the code unaltered.
  4933. Daniel (24 June 2004)
  4934. - The standard curl_version() string now only includes version info about
  4935. involved libraries and not about particular features. Thus it will no longer
  4936. include info about ipv6 nor GSS. That info is of course still available in
  4937. the feature bitmask curl_version_info() offers.
  4938. - Replaced all occurances of sprintf() with snprintf(). This is mostly because
  4939. it is "A Good Thing" rather than actually fixing any known problem. This
  4940. will help preventing future possible mistakes to cause buffer overflows.
  4941. - Major reorganization in the host resolve code (again). This time, I've
  4942. modified the code to now always use a linked list of Curl_addrinfo structs
  4943. to return resolved info in, no matter what resolver method or support that
  4944. is available on the platform. It makes it a lot easier to write code that
  4945. uses or depends on resolved data.
  4946. Internally, this means amongst other things that we can stop doing the weird
  4947. "increase buffer size until it works" trick when resolving hosts on
  4948. ipv4-only with gethostbyname_r(), we support socks even on libcurls built
  4949. with ipv6 enabled (but only to socks servers that resolve to an ipv4
  4950. address) and we no longer deep-copy or relocate hostent structs (we create
  4951. Curl_addrinfo chains instead).
  4952. The new "hostent to Curl_addrinfo" converter function is named Curl_he2ai()
  4953. and is slightly naive and simple, yet I believe it is functional enough to
  4954. work for libcurl.
  4955. Daniel (22 June 2004)
  4956. - David Cohen pointed out that RFC2109 says clients should allow cookies to
  4957. contain least 4096 bytes while libcurl only allowed 2047. I raised the limit
  4958. to 4999 now and made the used buffer get malloc()ed instead of simply
  4959. allocated on stack as before. Extended test case 46 to include a cookie with
  4960. very huge content to verify the fix.
  4961. - Günter Knauf fixed getdate.y to remove a few warnings. I removed the
  4962. ifdef'ed test we never ever use anyway.
  4963. - Gisle Vanem fixed the certificate wildcard checks to support a '*'-letter
  4964. anywhere in the wildcard string, support multiple '*'-letters in the
  4965. wildcard and to allow the '*'-letter to match a string that includes a dot.
  4966. Daniel (21 June 2004)
  4967. - testcurl.sh is now removed completely, tests/testcurl.pl is the script to
  4968. use when autobuilding curl!
  4969. - Kjetil Jacobsen brought my attention to the fact that you cannot properly
  4970. abort an upload with the readfunction callback, since returning 0 or -1 only
  4971. stops the upload and libcurl will continue waiting for downloaded data and
  4972. the server often waits for the rest of the upload data to arrive.
  4973. Thus, I've now added the ability for read callbacks to return
  4974. CURL_READFUNC_ABORT to abort an upload from a read callback. This will stop
  4975. the transfer immediately with a CURLE_ABORTED_BY_CALLBACK return code.
  4976. Test case 513 was added to verify that it works. I had to improve the test
  4977. HTTP server too to dump the request to a file even when the client
  4978. disconnects prematurely.
  4979. Daniel (19 June 2004)
  4980. - Luca Alteas provided a test case with a failing curl operation: when we POST
  4981. to a site with --digest (or similar) set, and the server responded with a 302
  4982. Location: to the "authprobe" request, it was not treated correctly. We still
  4983. will behave badly if FOLLOWLOCATION is enabled for this case, but I'm not
  4984. in the mood to dive into this right now and will leave it as-is for now.
  4985. Verified my fix with test case 177.
  4986. Daniel (18 June 2004)
  4987. - Gisle Vanem's patch that provides more details from the SSL layers (if you
  4988. use an OpenSSL version that supports it). It also introduces two new types
  4989. of data that can be sent to the debug callback: CURLINFO_SSL_DATA_IN and
  4990. CURLINFO_SSL_DATA_OUT.
  4991. - With David Byron's test server I could repeat his problem and make sure that
  4992. POSTing over HTTPS:// with NTLM works fine now. There was a general problem
  4993. with multi-pass authentication with non-GET operations with CONNECT.
  4994. Daniel (16 June 2004)
  4995. - Modified to keep the upload byte counter in an curl_off_t, not an int as
  4996. before. 32bits is not enough. This is most likely the bug Jean-Louis Lemaire
  4997. reported that makes 2GB FTP uploads to report error ("unaligned file sizes")
  4998. when completed.
  4999. Daniel (15 June 2004)
  5000. - Luca Alteas reported a problem that I fixed: if you did a POST with
  5001. CURLAUTH_DIGEST set but the server didn't require any authentication,
  5002. libcurl would repeatedly send HEAD lots of times until it gives up. This was
  5003. actually the case for all multi-pass authentications. Added test case 174,
  5004. 175 and 176 to verify this.
  5005. Daniel (14 June 2004)
  5006. - Multipart formposts uploading files no longer inserts the files themselves
  5007. into the huge prebuilt chunk. This enables libcurl to formpost files that is
  5008. larger than the amount of system memory. When the file given is passed on
  5009. stdin, libcurl still uses the old method of reading the full fill before the
  5010. upload takes place. This approach was selected in order to not alter the
  5011. behavior for existing applications, as when using stdin libcurl can't know
  5012. the size of the upload and chunked transfer-encoding can only be used on
  5013. HTTP 1.1 servers.
  5014. Daniel (13 June 2004)
  5015. - Gisle found out that we did wildcard cert name checks wrong, so that parts
  5016. of the check wrongly was case sensitive.
  5017. Daniel (11 June 2004)
  5018. - Tim Sneddon brought a minor VMS fix to make curl build properly on his VMS
  5019. machine. He also had some interesting libcurl patches... they might be able
  5020. to do in a slightly nicer way. Discussions are in progress.
  5021. Daniel (10 June 2004)
  5022. - Gisle Vanem brought code cleanupsm better verbose output and better connect
  5023. timeout handling when attempting to connect to a host that resolves to
  5024. multiple IP addresses.
  5025. - Steven Bazyl and Seshubabu Pasam pointed out a bug on win32 when freeing the
  5026. path after a file:// transfer.
  5027. Daniel (9 June 2004)
  5028. - Alexander Krasnostavsky made 'configure --disable-http' work to build libcurl
  5029. without HTTP support. I added a new return code for curl_formadd() in case
  5030. libcurl is built with HTTP disable: CURL_FORMADD_DISABLED.
  5031. - Alexander Krasnostavsky pointed out a missing file in the generated
  5032. curllib.dsp file, and now people building with this should get a libcurl.lib
  5033. file generated as it used to do before we generated this file.
  5034. Daniel (8 June 2004)
  5035. - Marty Kuhrt fixed a minor build problem for VMS.
  5036. Daniel (7 June 2004)
  5037. - Reverted the configure check from the 4th since it obviously didn't work.
  5038. Remade it in a different manner that hopefully works better.
  5039. Daniel (4 June 2004)
  5040. - Günter Knauf brought patches to make curl build fine on NetWare again.
  5041. - Made the configure checks for strerror_r() not exit the configure script
  5042. when built for cross-compiling.
  5043. Daniel (3 June 2004)
  5044. - Chris Gaukroger pointed out that 'make test' attempts to run the tests even
  5045. if curl is built cross-compiled. I've now made it output a short message
  5046. instead, saying it isn't possible to do.
  5047. - Alexander Krasnostavsky brought FTP 3rd party transfer support to libcurl.
  5048. You can now use libcurl to transfer files between two remote hosts using
  5049. FTP. There are a bunch of new options to control this with:
  5050. CURLOPT_SOURCE_HOST
  5051. CURLOPT_SOURCE_USERPWD
  5052. CURLOPT_SOURCE_PATH
  5053. CURLOPT_SOURCE_PORT
  5054. CURLOPT_PASV_HOST
  5055. CURLOPT_SOURCE_PREQUOTE
  5056. CURLOPT_SOURCE_POSTQUOTE
  5057. (They still remain to be documented properly in the curl_easy_setopt man
  5058. page.)
  5059. When using this, the ordinary CURLOPT_URL specifies the target URL, and you
  5060. specify the source data with these additional options. ftp3rdparty.c is a
  5061. new example source code showing how to use this.
  5062. - Vincent Bronner fixed the HTTP Digest code to use the proxy user name and
  5063. password when doing proxy authentication, it previously always used the host
  5064. user name and password!
  5065. Daniel (2 June 2004)
  5066. - CURLOPT_UPLOAD and CURLOPT_PUT now do the exact same thing internally, which
  5067. fixes some old confusions on when which of these should be used and what the
  5068. differences are.
  5069. - Applied Gisle's fixes to make curl build fine with lcc-win32
  5070. Version 7.12.0 (2 June 2004)
  5071. Daniel (1 June 2004)
  5072. - I clarified the --create-dirs option somewhat in the curl man page.
  5073. - Renaud Duhaut corrected the curl_unescape man page.
  5074. - David Byron modified one of Massimiliano Ziccardi's recent MSVC makefile
  5075. changes to now again use the mm lib by default.
  5076. Daniel (26 May 2004)
  5077. - Mohun Biswas added release-zlib and debug-zlib targets to the MSVC libcurl
  5078. Makefile
  5079. - David Byron reported a problem with proxy authentication when doing CONNECT,
  5080. like when accessing HTTPS sites wiht a proxy. This probably broke when I
  5081. rewrote the auth stuff recently.
  5082. - I added fileupload.c in the examples directory, showing how an upload to a
  5083. file:// URL is made.
  5084. Daniel (25 May 2004)
  5085. - Massimiliano Ziccardi updated the MSVC makefiles.
  5086. Daniel (24 May 2004)
  5087. - libcurl now supports "uploading" to file:// URLs. Test 204 and 205 were
  5088. added to verify.
  5089. - Simon Josefsson added a idn_free() function in libidn 0.4.5 as a reaction to
  5090. Gisle's previous mail. We now use this function, and thus we require libidn
  5091. 0.4.5 or later. No earlier version will do.
  5092. - Robert D. Young reported that CURLOPT_COOKIEFILE and CURLOPT_COOKIE could
  5093. not be used both in one request. Fixed it and added test case 172 to verify.
  5094. Daniel (21 May 2004)
  5095. - While talking to host a.b.c, libcurl did wrongly not accept cookies that
  5096. were set to the domain .a.b.c (that is with a dot prefix). This is now fixed
  5097. and test case 171 verifies it.
  5098. Daniel (20 May 2004)
  5099. - Jesse Noller reported that the upload speed info reported by libcurl was
  5100. wrong. The same was true for the download speed. Fixed now.
  5101. Daniel (19 May 2004)
  5102. - David Byron added test case 170 - this used to crash the previous version of
  5103. curl.
  5104. Daniel (17 May 2004)
  5105. - Peter Sylvester's patch that addresses two flaws in the peer certificate
  5106. name verification:
  5107. o when multiple common names are used (as in the curl tests), the last name
  5108. needs to be selected.
  5109. o allow comparing with encoded values, at least with BMP and ISO latin1
  5110. encoded T61strings.
  5111. - All 191 test cases run through the torture test OK! 'make test-torture' is
  5112. now available in the root makefile (on configure-based environments).
  5113. Daniel (14 May 2004)
  5114. - With a slightly modified ftpserver.pl I've now run almost all tests through
  5115. with runtests.pl -t. This is goodness!
  5116. - Since I have been unable to contact the CVS admins for several months, I've
  5117. decided that the current CVS hosting was not good enough. I've now moved the
  5118. CVS repo once again, see README for updated cvs checkout instructions.
  5119. Daniel (13 May 2004)
  5120. - runtests.pl -t now runs fine all the way to test 100. I believe test case
  5121. 100 fails because of an FTP server problem.
  5122. Daniel (12 May 2004)
  5123. - General cleanups all over to make libcurl survive and do well when a memory
  5124. function returns NULL. runtests.pl -t now works fine for the first 26 test
  5125. cases.
  5126. Daniel (11 May 2004)
  5127. - Seshubabu Pasam provided a patch that introduces curl_global_init_mem() -
  5128. like normal curl_global_init() but allows the app to replace all memory
  5129. functions with its own set. I modified it slightly.
  5130. - Based on Luca Alteas' comments, I modified the curllib.dsp generation code.
  5131. Daniel (10 May 2004)
  5132. - Gisle mailed Simon Josefsson (of libidn fame) about the benefits of a
  5133. separate free()-function by that lib to make sure the memory is freed by the
  5134. same memory subsystem that allocated it. He responded positively and this
  5135. will likely cause us to require a newer version of libidn as soon as Simon
  5136. releases one with such a libidn_free() function.
  5137. - James Bursa made runtests.pl's -t option work for any given test case, and I
  5138. edited to allow -g too. Not even test case 1 worked...
  5139. - Luca Altea made the nc= field not use quotes in outgoing HTTP Digest headers.
  5140. - Andrés García fixed a problem in the test script that made it fail to
  5141. recognize our own running HTTP server.
  5142. Daniel (7 May 2004)
  5143. - James Bursa fixed the memanalyze.pl script to conder malloc(0) areas OK to
  5144. free() and he made two failed-resolve error messages use the new display-
  5145. name instead of the internally-used name.
  5146. - Gisle Vanem tried curl with
  5147. www.etdomenenavnkanmaksimaltinneholdesekstitrebokstaversliksomdette.com
  5148. which caused problems, and I fixed the single zero byte buffer overwrite
  5149. that occurred (due to a stupid protocol buffer size and parser).
  5150. - Made the lib/curllib.dsp file get generated automaticly when a distribution
  5151. package is made, with the msvcproj.* files as templates and all
  5152. win32-sources added. I think this can be made to work better than the always
  5153. lagging-behind previous approach. I'm not sure this builds a working project
  5154. file right now though!
  5155. Daniel (6 May 2004)
  5156. - Michael Benedict brought a fix that fills in the errorbuffer properly when
  5157. ares fails to resolve a name for a case not previously dealt with like this.
  5158. Daniel (5 May 2004)
  5159. - Joe Halpin fixed the annoying typecast warning in lib/ldap.c
  5160. - Gisle Vanem fixes:
  5161. o memdebug to not access NULL on several places
  5162. o libcurl.def; curl_formparse is gone.
  5163. o progress.c; fixed the percent values being trunced to 0.
  5164. o if2ip.*; constified the 'interface' argument.
  5165. - Tor Arntsen reported that many of his autobuilds froze and I found and fixed
  5166. a problem introduced with the HTTP auth overhaul that could lead to a
  5167. never-ending internal request-loop due to un-initialized variables!
  5168. - Removed several compiler warnings on various compilers/platforms.
  5169. Daniel (4 May 2004)
  5170. - curl_formparse() has been removed from the library. It has been marked and
  5171. mentioned as deprecated for several years.
  5172. Daniel (3 May 2004)
  5173. - Rewritten HTTP authentication code. The previous code could not properly
  5174. deal with the added test cases 167, 168 and 169. I've now rewritten the code
  5175. to better separate host and proxy authentication and not re-use the same
  5176. variables as much as before as it proved non working in the more involved
  5177. cases. All the current tests run OK now, and so do the new ones. The curl
  5178. tool got a new option named --proxy-digest to enable HTTP Digest
  5179. authentication with the proxy. I also made the library support it.
  5180. - Gisle Vanem made the LDAP code work with wldap32.dll as supplied with
  5181. Win-98/ME/2000/XP, so no extra .dlls are required when curl/libcurl is used
  5182. on these Windows versions.
  5183. Daniel (30 April 2004)
  5184. - runtests.pl now scans the valgrind log for valgrind-detected memory leaks
  5185. after each test case if valgrind was found and used.
  5186. - I modified the app-code in curl to include the new lib/curlx.h and only
  5187. access those functions using the curlx_-prefix in preparation for the future
  5188. removal of several curl_-functions from the public libcurl API.
  5189. - Introduced lib/curlx.h as a single header to provide the curlx_-functions
  5190. to apps.
  5191. - Added notices in the man pages for curl_getenv, curl_mprintf, curl_strequal
  5192. and curl_strnequal that they are subject for removal in a future release.
  5193. STOP USING THESE FUNCTIONS.
  5194. - Mihai Ionescu noticed he couldn't do formposts with whitespace in the file
  5195. names and yes, I broke that on April 23. Sigh. I fixed it now and added
  5196. test case 166 to verify it.
  5197. - Luca Altea pointed out a mistake left from the Digest patch of yesterday.
  5198. Daniel (29 April 2004)
  5199. - Made IDN domains work when sending requsts over HTTP proxy as well. Added
  5200. test case 165 to verify the functionality.
  5201. - Fixed a bug in the new internal host name setup when re-using connections.
  5202. - James Bursa found out that curl_easy_duphandle() with ares-built libcurl
  5203. created a bad handle that would crash in the first name resolve attempt. This
  5204. is now fixed and test case 512 was added to verify it.
  5205. - Luca Altea provided a major HTTP Digest code fix and cleanup. We now follow
  5206. the Digest RFC a lot better.
  5207. - Gisle Vanem made the SSL code use ERR_error_string_n() where applicable.
  5208. Daniel (27 April 2004)
  5209. - I remodeled Gisle's IDN code slightly and now we convert both the host name
  5210. and proxy name to the ACE encoded version to use internally for resolves and
  5211. cookies etc. They are now using one 'struct hostname' each that keep both
  5212. the original name and the possibly encoded name. IDN resolves work for me
  5213. now using ipv6, ipv4 and ares resolving. Even cookies on IDN sites seem to
  5214. do right. I got some failures at first when CHARSET wasn't set at all which
  5215. confused libidn completely and it decided by encoding of choice was
  5216. 'ANSI_X3.4-1968'...
  5217. - made 'configure --without-libidn' work
  5218. Daniel (25 April 2004)
  5219. - Fixed the src/hugehelp.c file to include "setup.h" instead of "config.h" to
  5220. make the problems with USE_MANUAL on windows go away.
  5221. - configure --without-ssl could still wrongly include some OpenSSL info in the
  5222. Makefiles if pkg-config had info about OpenSSL. Bug #941762 reported by
  5223. Martin.
  5224. - Since we can now build and use quite a large set of 3rd party libraries, I
  5225. decided I would make configure produce a summary at the end showing what
  5226. libraries it uses and if not, what option to use to make it use that. I also
  5227. added some other random info that is nice in a "configure summary" output.
  5228. - Applied TommyTam's patch that now make curl work with telnet and stdin
  5229. properly on Windows.
  5230. - The changes for today below were made by me and Gisle Vanem.
  5231. The file previously known as hostip.c has now undergone a huge cleanup and
  5232. split:
  5233. hostip.c explained
  5234. ==================
  5235. The main COMPILE-TIME DEFINES to keep in mind when reading the host*.c
  5236. source file are these:
  5237. CURLRES_IPV6 - this host has getaddrinfo() and family, and thus we use
  5238. that. The host may not be able to resolve IPv6, but we don't really have to
  5239. take that into account. Hosts that aren't IPv6-enabled have CURLRES_IPV4
  5240. defined.
  5241. CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
  5242. name resolves. It cannot have ENABLE_IPV6 defined at the same time, as
  5243. c-ares has no ipv6 support. This can be Windows or *nix.
  5244. CURLRES_THREADED - is defined if libcurl is built to run under (native)
  5245. Windows, and then the name resolve will be done in a new thread, and the
  5246. supported asynch API will be the same as for ares-builds.
  5247. If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
  5248. libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
  5249. defined.
  5250. The host*.c sources files are split up like this:
  5251. hostip.c - method-independent resolver functions and utility functions
  5252. hostasyn.c - functions for asynchronous name resolves
  5253. hostsyn.c - functions for synchronous name resolves
  5254. hostares.c - functions for ares-using name resolves
  5255. hostthre.c - functions for threaded name resolves
  5256. hostip4.c - ipv4-specific functions
  5257. hostip6.c - ipv6-specific functions
  5258. The hostip.h is the single united header file for all this. It defines the
  5259. CURLRES_* defines based on the config*.h and setup.h defines.
  5260. - Added function header comments to many functions in an attempt to better
  5261. explain the purpose of them all.
  5262. - configure --with-libidn is now supported. It makes the configure script
  5263. check for libidn libs and include files in the prefix path given. If you
  5264. say --with-libidn=/usr/local, it will check for the lib in /usr/local/lib
  5265. and the includes in /usr/local/include etc.
  5266. - curl_version_info() now returns a struct aged CURLVERSION_THIRD including
  5267. libidn version info. The string curl_version() returns also includes libidn
  5268. version info, if available.
  5269. Version 7.11.2 (26 April 2004)
  5270. Daniel (25 April 2004)
  5271. - Erwin Authried pointed out that configure --disable-manual didn't do right
  5272. if you already had a src/hugehelp.c source file present (which most people
  5273. do I guess). It now uses the USE_MANUAL define properly.
  5274. Daniel (23 April 2004)
  5275. - Gisle Vanem found and fixed a memory leak when doing (failing) Windows
  5276. threaded name resolves.
  5277. - I also added test case 163 just to make sure -F "var=<file" works fine and
  5278. can pass on characters such as newlines, carriage-return and tabs.
  5279. - When we added test case 162 without adding the necessary requirement field
  5280. in the test meta data we could see that curl didn't complain if you used
  5281. --proxy-ntlm even if the underlying libcurl it uses has no NTLM support! I
  5282. now made it check this first, and it now exists with a "the installed
  5283. libcurl version doesn't support this" message if it happens again.
  5284. Daniel (22 April 2004)
  5285. - David Byron found and fixed a small bug with the --fail and authentication
  5286. stuff added a few weeks ago. Turns out that if you specify --proxy-ntlm and
  5287. communicate with a proxy that requires basic authentication, the proxy
  5288. properly returns a 407, but the failure detection code doesn't realize it
  5289. should give up, so curl returns with exit code 0. Test case 162 added to
  5290. verify the functionality.
  5291. - allow newlines in the contents when doing -F "var=[contents]"
  5292. Robert Marlow reported.
  5293. - If a transfer is found out to be only partial, libcurl will now treat that
  5294. as a problem serious enough to skip the final QUIT command before closing
  5295. the control connection. To avoid the risk that it will "hang" waiting for
  5296. the QUIT response. Added test case 161 to verify this.
  5297. Daniel (21 April 2004)
  5298. - Modified the heuristics for dealing with the test 160 scenario. When a
  5299. connection is re-used and nothing at all is received from it (because the
  5300. server closes the connection), we will now retry the request on a fresh new
  5301. connection. The previous ECONNRESET stuff from January 30 was removed again
  5302. as it didn't detect the situation good enough.
  5303. Daniel (20 April 2004)
  5304. - Added test case 160 to verify that curl works correctly when it gets a
  5305. connection reset when trying to re-use a connection. It should then simply
  5306. create a new connection and resend the request.
  5307. Daniel (19 April 2004)
  5308. - No more 512 byte limit for host name (inclusing name + password) in libcurl.
  5309. An added bonus is that we use less memory for the typical (shorter URL)
  5310. case.
  5311. - Cleaned up the sources to better use the terms 'hostname' and 'path'
  5312. internally when referring to that data. The buffers used for keep that info
  5313. is called 'namebuffer' and 'pathbuffer'. Much easier to read and understand
  5314. than the previous mess.
  5315. Daniel (15 April 2004)
  5316. - Modified runtests.pl again to remove all log files in the log/ dir between
  5317. each test, and then made -p display all non-zero byte files in the log dir.
  5318. It should make that data more usable and contain less rubbish.
  5319. - ftpserver.pl now produces log files more similar to how the sws ones look
  5320. and they now also contains a bit more details to help debugging ftp
  5321. problems.
  5322. - Removed the fixed maximum amount of dir levels the FTP code supported.
  5323. Previously we had a fixed array for 100 levels, now we save space in each
  5324. handle by allocating only for a few level by default and then enlarging that
  5325. in case of need (with no maximum depth). Adjusted test case 142 to verify
  5326. that 150 dir levels work fine. An added bonus is that we use less memory
  5327. for the typical (not very deep) case.
  5328. Daniel (14 April 2004)
  5329. - Asking for CURL_IPRESOLVE_V6 when ipv6 addresses can't be resolved will
  5330. now cause the resolve function to return NULL immediately. This flaw was
  5331. pointed out by Gisle Vanem.
  5332. - Gisle Vanem made curl -4/-6 actually set the desired option to libcurl.
  5333. - runtests.pl now has a new option (-p) that will display "interesting" log
  5334. files to stdout in case of a test failure. This is primarily intended to be
  5335. used in the 'full-test' make target that is used by the autobuild tests, as
  5336. we then get a much better chance to understand (remote) test failures based
  5337. on autobuild logs alone.
  5338. Daniel (13 April 2004)
  5339. - Gisle Vanem made the multi interface work again on Windows even when built
  5340. without ares. Before this, select() would return -1 during the name resolve
  5341. phase since curl_multi_fdset() didn't return any fd_set at all which wasn't
  5342. appreciated!
  5343. - curl_easy_duphandle() now duplicates the tcp_nodelay info as well.
  5344. Daniel (11 April 2004)
  5345. - Applied David Byron's patch for the MSVC libcurl makefile for builds with
  5346. zlib.
  5347. Daniel (9 April 2004)
  5348. - Dirk Manske improved the timer resolution for CURLINFO_*_TIME, it can now
  5349. be down to usec if the system sypports it.
  5350. Daniel (7 April 2004)
  5351. - A request that sends "Expect: 100-continue" and gets nothing but a single
  5352. 100 response back will now return a CURLE_GOT_NOTHING. Test 158 verifies.
  5353. - The strtoofft() macro is now named curlx_strtoofft() to use the curlx_*
  5354. approach fully.
  5355. Daniel (6 April 2004)
  5356. - Gisle Vanem's fixed bug #927979 reported by Nathan O'Sullivan. The problem
  5357. made libcurl on Windows leak a small amount of memory in each name resolve
  5358. when not used as a DLL.
  5359. - New authentication code added, particularly noticable when doing POST or PUT
  5360. with Digest or NTLM. libcurl will now use HEAD to negotiate the
  5361. authentication and when done perform the requested POST. Previously libcurl
  5362. sent POST immediately and expected the server to reply a final status code
  5363. with an error and then libcurl would not send the request-body but instead
  5364. send then next request in the sequence.
  5365. The reason for this change is due to IIS6 barfing on libcurl when we attempt
  5366. to POST with NTLM authentication. The reason for the problems is found in
  5367. RFC2616 section 8.2.3 regarding how servers should deal with the 100
  5368. continue request-header:
  5369. If it responds with a final status code, it MAY close the transport
  5370. connection or it MAY continue to read and discard the rest of the
  5371. request.
  5372. Previous versions of IIS clearly did close the connection in this case,
  5373. while this newer version decided it should "read and discard". That would've
  5374. forced us to send the whole POST (or PUT) data only to have it discarded and
  5375. then be forced to send it again. To avoid that huge penality, we switch to
  5376. using HEAD until we are authenticated and then send the POST.
  5377. The only actual drawback I can think of (except for the odd sites that might
  5378. treat HEAD differently than they would treat POST/PUT when given the same
  5379. URL) is that if you do POST with CURLAUTH_ANY set and the site requires NO
  5380. authentication, libcurl will still use a HEAD in a first round and then do a
  5381. POST.
  5382. If you do a HEAD or a GET on a site using CURLAUTH_ANY, libcurl will send
  5383. an un-authenticated request at once, which then is the only request if the
  5384. site requires no auth.
  5385. Alan Pinstein helped me work out the protocol details by figuring out why
  5386. libcurl failed and what IIS6 expects.
  5387. - The --limit-rate logic was corrected and now it works a lot better for
  5388. higher speeds, such as '10m' or similar. Reported in bug report #930249.
  5389. - Introducing curlx_tvnow() and curlx_tvdiff() using the new curlx_* fashion.
  5390. #include "timeval.h" from the lib dir to get the protos etc. Note that
  5391. these are NOT part of the libcurl API. The curl app simply uses the same
  5392. source files as the library does and therefore the file needs to be compiled
  5393. and linked with curl too, not just when creating libcurl.
  5394. - lib/strerror.c no longer uses sys_nerr on non-windows platforms since it
  5395. isn't portable enough
  5396. Daniel (2 April 2004)
  5397. - In the curl_strnqual.3 man page, we now prepend the man3 dir to the file
  5398. name to work better. As pointed out by Robin Kay.
  5399. - Andrés García updated the mingw makefiles.
  5400. - Dirk Manske fixed a problem I recently added in the progress meter code that
  5401. broke subsecond resolution for CURLINFO_TOTAL_TIME. He also pointed out a
  5402. mistake in the code that produces the final update of the progress meter
  5403. that would often prevent it from actually being updated that final time.
  5404. Daniel (1 April 2004)
  5405. - Dirk Manske fixed a memory leak that happened when we use ares for name
  5406. resolves and decides to time-out before ares does it. This fix uses the
  5407. brand new ares_cancel() function which is not present in c-ares 1.1.0.
  5408. When told to enable ares, the configure script now checks for presence of
  5409. the ares_cancel function to alert users if they attempt to use a too old
  5410. c-ares library.
  5411. Daniel (31 March 2004)
  5412. - Roy Shan fixed a flaw that prevented ares name resolve timeouts to occur!
  5413. - Dirk Manske found out that libcurl timed out waiting for resolves far too
  5414. easy when libcurl was built to use (c-)ares for name resolving.
  5415. - Further Digest fixing and a successful test case 153 now makes me believe
  5416. Mitz Wark's problems are fixed.
  5417. - Andres Garcia figured out that test case 63, while working, only proved a
  5418. flaw in libcurl's 'http_proxy' parser when a user name and password is
  5419. provided. The user name was not extracted properly (and 'http' was always
  5420. used as user name).
  5421. - Andrés García fixed compiler warnings in our ioctlsocket() usage.
  5422. Daniel (30 March 2004)
  5423. - Joe Halpin faced problems with the getnameinfo() argument ai_flags and the
  5424. particular bit named 'NI_WITHSCOPEID' on Solaris 9 for Intel. I've now
  5425. written a configure test that checks for a working NI_WITHSCOPEID
  5426. implemenation. No code uses the result from this test yet, it is still
  5427. experimental. James Carlson wrote in comp.unix.solaris: "It's a bug
  5428. (5006623) -- it's not supported and shouldn't be in the header file."
  5429. - I provided Mitz Wark with a first patch in order to fix libcurl's problems
  5430. to re-negotiate Digest authentication (when 'stale=true' is included in the
  5431. response header).
  5432. - Roy Shan discovered that the multi interface didn't properly timeout name
  5433. lookups which could make handles get stuck in that state and thus never get
  5434. completed. I've produced a first test patch that attempts to correct this.
  5435. - David Byron's patch was appplied to make CURLOPT_FAILONERROR work nicely
  5436. even with authentcations such as NTLM or Digest enabled. Test cases 150, 151
  5437. and 152 were added to verify the functionality.
  5438. Daniel (29 March 2004)
  5439. - Gisle Vanem updated files for the djgpp/MS-DOS build.
  5440. - Andrés García helped me work out a fix for the runtests.pl script to make
  5441. the file:// tests run fine when tested with the mingw-built version of curl.
  5442. - Fixed an include issue with netinet/tcp.h on AIX, based on input by Tor.
  5443. This also required a minor fix of the configure script.
  5444. - The postit2.c source example used the wrong struct name for the post data.
  5445. Daniel (26 March 2004)
  5446. - Gisle Vanem improved ipv6 support on windows by making the curl build to use
  5447. the correct getaddrinfo() function.
  5448. Daniel (25 March 2004)
  5449. - It turned out that AIX, despite having a "thread-safe libc", doesn't offer
  5450. all traditional functions thread-safe. This URL is informative on this
  5451. subject:
  5452. http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
  5453. genprogc/thread_quick_ref.htm
  5454. As a result of this, we now check for three *_r() functions on recent AIX
  5455. versions as well that the URL mentions aren't thread-safe in AIX 5.1.
  5456. - renamed curl_strerror.[ch] to strerror.[ch]
  5457. - Joe Halpin added CURLOPT_TCP_NODELAY and --tcp-nodelay to make it possible
  5458. for users to disable the Nagle algorthim-usage.
  5459. - Tor Arntsen provided some interesting strerror_r() knowledge. glibc has its
  5460. own API which differs from the POSIX one. Daniel adjusted the configure
  5461. script to detect the version in use, and the code now uses the new defines
  5462. accordingly.
  5463. - Fixed some build flaws with the new lib/curl_strerror.c source file.
  5464. Daniel (24 March 2004)
  5465. - Gisle Vanem's fix to replace the bad use of strerror(). This introduces
  5466. Curl_strerror() that attempts to be thread-safe _and_ works on Windows too!
  5467. - Tor Arntsen spell-fixed lots of libcurl man pages.
  5468. - Tor Arntsen made testcurl.pl work with older perl 5 versions, and Daniel
  5469. made it not use chdir .. to go back, as that isn't very good when you've
  5470. setup a testdir containing symlinks.
  5471. - Added a check for strerror_r() in the configure script.
  5472. Daniel (23 March 2004)
  5473. - Added Greg Hewgill's testcurl.pl script to CVS. We have not moved over to
  5474. use this script for the real distributed testing just yet, but it is only
  5475. a matter of time.
  5476. - Gisle Vanem provided code that makes curl report a better error message
  5477. if --interface fails on windows.
  5478. - The regular progress meter is now fixed to never wrap due to long lines. All
  5479. fields are now static sized. If the time in the time fields get a time value
  5480. that would represent a time that is 100 hours or more (if not, it remains
  5481. using a HH:MM:SS display), it switches first to a "NNNd NNh" display (for
  5482. days and hours) and if that isn't enough it switches to a "NNNd" display if
  5483. it is more than 999 days.
  5484. Several of the calculations were also moved to fixed-point math instead of
  5485. using doubles.
  5486. Daniel (22 March 2004)
  5487. - Glen Nakamura noticed CURLINFO_CONTENT_LENGTH_DOWNLOAD didn't work as it
  5488. used to do if CURLOPT_NOBODY is set TRUE.
  5489. - Kevin Roth patched the cygwin package makefile and README to adjust to
  5490. new cygwin packaging guidelines.
  5491. - Enabled "NT responses" in the NTLM authentication. Doing this simply means
  5492. that we provide an extra chunk of data in each "type-3 message". The only
  5493. reason for doing this is that it seems that using only the "Lanmanager hash"
  5494. (as we've been doing until now) doesn't support passwords longer than 14
  5495. characters and it turns out there are users out there who want to use
  5496. libcurl and NTLM with such passwords! ;-) Seven NTLM-related test cases were
  5497. updated accordingly. Mentioned as issue 29 in TODO-RELEASE, bug report
  5498. #915609
  5499. - Moved the generated libcurl version info to a new header file, named
  5500. curl/curlver.h. Now interested parties can include ONLY version info, should
  5501. anyone want that (and it seems at least some windows resource files would).
  5502. Mentioned as issue 27 in TODO-RELEASE.
  5503. Daniel (21 March 2004)
  5504. - Fixed the root Makefile to use tabs for the netware target. Günter Knauf
  5505. pointed this out.
  5506. - Marty Kuhrt's VMS cleanup
  5507. - Thomas Schwinge made buildconf recognize ACLOCAL_FLAGS to invoke aclocal
  5508. with particular pre-determined options.
  5509. Version 7.11.1 (19 March 2004)
  5510. Daniel (18 March 2004)
  5511. - Tor Arntsen brought some info about SGI IRIX:
  5512. IRIX supports 3 different executable/object formats, -32, -n32 and -64.
  5513. -n32 is default 32-bit format, -32 is the "old" 32-bit format, and -64 is
  5514. the 64-bit format. Libraries for the different formats are in lib, lib32
  5515. and lib64 respectively.
  5516. We've now adjusted the configure script to adapt to this when scanning for
  5517. 3rd party libs, such as OpenSSL.
  5518. Daniel (17 March 2004)
  5519. - Watz pointed out a few missing files in the MSVC project description file.
  5520. - Günter Knauf brought patches, code and makefiles to build curl on Novell
  5521. NetWare.
  5522. Daniel (15 March 2004)
  5523. - Lots of libcurl man pages were updated to contain references to other man
  5524. pages the recognized way so that they appear as nice hyperlinks in the HTML
  5525. versions.
  5526. - buildconf now checks the m4 version too, since autoconf requires a GNU m4
  5527. version to build proper configure scripts.
  5528. Daniel (12 March 2004)
  5529. - Added CURLOPT_POSTFIELDSIZE_LARGE, the large file version of
  5530. CURLOPT_POSTFIELDSIZE to allow POSTs larger than 2GB.
  5531. - David Byron fixed an uninitialized variable case/crash.
  5532. Daniel (10 March 2004)
  5533. - Jeff Lawson fixed the SSL connection to deal with received signals during the
  5534. connect.
  5535. - Changed the OS string for win32 to become "i386-pc-win32".
  5536. Daniel (9 March 2004)
  5537. - Changed the internals to use curl_socket_t for socket variable type. This
  5538. should enable us to build with less warnings on Windows, where SOCKET is
  5539. used which is an unsigned int, while most other platforms use a mere int.
  5540. - Modified lib/config-win32.h to build fine on MSVC again.
  5541. Version 7.11.1-pre1 (8 March 2004)
  5542. Daniel (8 March 2004)
  5543. - Minor fix to make curl CURL_VERSION_LARGEFILE is only set if curl_off_t is
  5544. larger than 4 bytes.
  5545. Daniel (4 March 2004)
  5546. - Improved PUT/POST with NTLM/Digest authentication, the so called issue 12.
  5547. - Modified the test HTTP server a lot to work with the upcoming changes for
  5548. PUT/POST with NTLM/Digest authentication (like test case 88). Added Andrés
  5549. García's win32-changes. Improved the logging.
  5550. - Fixed the file:-related progress/getinfo stuff a bit more.
  5551. Daniel (4 March 2004)
  5552. - I corrected a problem with the multi interface when following a Location:
  5553. header or when doing multiple-request authentications. A subsequent request
  5554. could erroneously re-use a previous connection that was sent with
  5555. Connection: close. Christopher R. Palmer reported.
  5556. - Andrés García patched curl to prevent warnings while compiling with mingw,
  5557. mainly because it is now possible to have both WIN32 and HAVE_CONFIG_H
  5558. defined.
  5559. - When transferring files from a file: URL, the progress meter and other
  5560. transfer metrics were not updated properly.
  5561. - David Byron provided a "version resource" file to the curl executable for
  5562. the windows builds.
  5563. Daniel (3 March 2004)
  5564. - David Byron's work on making libcurl only require winsock 1.1 on Windows
  5565. machines.
  5566. - More variable cleanups based on compiler warnings generated by Tor Arntsen's
  5567. autobuilds with MIPSPro.
  5568. - Joe Halpin helped us fix some pedantic compiler warnings on FreeBSD.
  5569. - Applied Tom Bates' patch to build on nsr-tandem-nsk.
  5570. - Dan Fandrich corrected some flaws in the configure GSS detection.
  5571. Daniel (2 March 2004)
  5572. - Fixed the libcurl code to use FORMAT_OFF_T for printf() formatting
  5573. curl_off_t types internally.
  5574. Daniel (1 March 2004)
  5575. - Added CURL_VERSION_LARGEFILE as a feature-bit in the curl_version_info()
  5576. response, that signals if this libcurl supports >2GB files. curl -V now
  5577. outputs 'Largefile' in the Features: field if this is the case. Most systems
  5578. are likely to support this.
  5579. - We offer a CURL_FORMAT_OFF_T define in the public header, which can be used
  5580. to printf() curl_off_t variables. We also modified the libcurl sources to
  5581. use this define instead of the previous %Od approach (although I've left the
  5582. O-flag functional in the code). This should also prevent compilers to warn
  5583. on the home-grown option.
  5584. - Fixed the resume-check code to test for a working resume at the end of the
  5585. headers and not at the first body-byte.
  5586. - CURLOPT_DNS_USE_GLOBAL_CACHE is now considered obsolete. Stop using it. If
  5587. you need a global DNS cache for whatever reason, use the share interface and
  5588. you'll get a global cache that works the way it should work. You can even
  5589. have any number of global caches, all at your command. This is now also
  5590. mentioned in the docs.
  5591. - Made the *printf code support the z-flag to enable size_t printf() in a
  5592. manner similar to how glibc allows it. To make printfing of this work on
  5593. platforms with 64bit size_t and 32bit ints. If there even are any! ;-)
  5594. - Christopher R. Palmer discovered that if you CURLOPT_FRESH_CONNECT and
  5595. CURLAUTH_NTLM (or CURLAUTH_ANY and libcurl then picked NTLM), libcurl would
  5596. loop without succeeding to authenticate due to the new connection that was
  5597. made for all round-trips in the authentication. Now, the FRESH_CONNECT is
  5598. remade to only matter for the first connection made with curl_easy_perform()
  5599. and all the rest that might follow due to FOLLOWLOCATION or HTTP
  5600. authentication are now ignoring that option.
  5601. - Adjusted the QUIT code slightly since it could core-dump.
  5602. - Corrected the test suite's FTP server to provide a correct size to the
  5603. 'verifiedserver' request.
  5604. Daniel (27 February 2004)
  5605. - Joe Halpin made the FTP code send QUIT on the control connection before
  5606. disconnecting the TCP connection. This is what good-behaving ftp clients
  5607. should do.
  5608. Daniel (26 February 2004)
  5609. - David Byron updated several files to make curl build fine on MSVC 6. He
  5610. also added the 'buildconf.bat' that works like the 'buildconf + configure'
  5611. combo does on unixes.
  5612. - Gisle Vanem made the memdebug stuff support calloc() as well.
  5613. - Tor Arntsen pointed out that testcurl.sh needed to remove the generated
  5614. files in order to have them re-generated in each build.
  5615. - Andy Serpa found out that the share interface did not enjoy life when not
  5616. having the lock and unlock callbacks set, even though documented to be
  5617. OK. It still is OK, and now the code won't segfault anymore!
  5618. Daniel (25 February 2004)
  5619. - Based on a patch by Greg Hewgill I modified how long long is used in the
  5620. mprintf code, as we can use a 64bit type with MSVC that is a long long
  5621. equivalent. This corrects some weird large file behaviors on windows.
  5622. - Tor Arntsen helped me work out --enable-debug to work better with different
  5623. versions of the gcc and icc compilers.
  5624. - Added CURLOPT_SHARE to the curl_easy_setopt.3 man page.
  5625. Daniel (22 February 2004)
  5626. - Applied the final pieces of Gisle Vanem's patch that brings a working name
  5627. resolve timeout to the windows versions of curl!
  5628. Daniel (21 February 2004)
  5629. - David Byron's fix to allow the speed-limit logic work even if you set
  5630. limit-rate. It does work on the expense of the rate limiter.
  5631. Daniel (20 February 2004)
  5632. - configure --enable-debug with gcc now also tries to detect the icc compiler
  5633. (which somehow gets treated as if it is a gcc) to stop using all the gcc
  5634. options with it, and we also provide -isystem options for each extra -I
  5635. option the configure script has figured out (for OpenSSL, kerberos, zlib,
  5636. Heimdal etc). This of course to prevent warnings on headers we don't have
  5637. control of.
  5638. Daniel (19 February 2004)
  5639. - Doug Porter made libcurl use the HOME environment variable before the
  5640. getpwuid results when looking for .netrc files.
  5641. - If 'configure --enable-debug' is used with gcc, it now checks which gcc
  5642. version it is and uses as picky compiler options as possible for the
  5643. particular version.
  5644. - Code that can be used in both the lib and in the curl app is now made to use
  5645. the curlx_ prefix. The first function to be available like this is the
  5646. curlx_strtoll() function. This is made to allow the app to use existing code,
  5647. but without polluting the libcurl API. Further explanations posted here:
  5648. http://curl.haxx.se/mail/lib-2004-02/0215.html
  5649. Daniel (18 February 2004)
  5650. - Fixed buildconf to not use "which" as AIX and Tru64 have what have been
  5651. referred to as "horribly broken 'which' programs".
  5652. - Made sure dns cache timeout set to -1 really means caching forever.
  5653. Daniel (17 February 2004)
  5654. - Made it possibly to build c-ares with the libcurl memdebug system to better
  5655. track memory.
  5656. Daniel (16 February 2004)
  5657. - When using ares, we now initialize the ares 'channel' in curl_easy_init()
  5658. and re-use that same handle during the entire curl handle's life-time. It
  5659. improves performance.
  5660. - Fixed a problem when displaying verbose for ipv6-enabled libcurls and
  5661. re-used connections. Problem reported and fix verified by Grigory Entin.
  5662. - Jeff Lawson fixed the version-check in the SOCKS5 code.
  5663. Daniel (15 February 2004)
  5664. - Fixed a case where a host cache entry was not flagged in-use properly when a
  5665. cached entry was used.
  5666. - Andrés García's patch that checks for winmm in the configure script was
  5667. applied.
  5668. Daniel (13 February 2004)
  5669. - Ben Greear's SO_BINDTODEVICE patch for the binding of the local end to a
  5670. specific network interface.
  5671. - Greg Hewgill found out that the variable holding 'contentlength' wasn't big
  5672. enough to hold a large file!
  5673. - Tor Arntsen fixed a 64bit-related problem in date-related code in the ftp
  5674. department, and there was another potential problem in the name resolve code
  5675. too.
  5676. Daniel (11 February 2004)
  5677. - Removed a few variables that were only set but never used, as some compilers
  5678. warn about that and we do not like compiler warnings!
  5679. - Removed the need for symlinks in the tests/data directory if curl is built
  5680. outside of the source directory and the 'make test' is used. This was done
  5681. by providing a "source dir path" to the scripts/servers.
  5682. - Now, if the configure script can't find an nroff tool or an option to nroff
  5683. to use to convert man pages with, it will completely switch off the built-in
  5684. manual.
  5685. - 'configure --disable-manual' completely disables the built-in manual from
  5686. the curl command tool.
  5687. - Andrés García fixed the configure script and a minor source edit, and now
  5688. he has managed to get msys/mingw to run configure and then build!
  5689. Daniel (9 February 2004)
  5690. - The default HTTP Accept: header was modified to the much simpler
  5691. "Accept: */*".
  5692. - P R Schaffner updated the curl-ssl spec file for RPMs.
  5693. - Dominick Meglio brought lots of documentation for the share interface's man
  5694. pages that were previously missing.
  5695. - Tor Arntsen provided a patch that makes libcurl work-around a bug in the
  5696. AIX5 implementation of getaddrinfo(). This makes the FTP PORT stuff work on
  5697. ipv6-enabled AIX builds.
  5698. - Ken Rastatter provided portability fixes for the curlgtk.c example, and now
  5699. it runs on windows with GTK as well!
  5700. Daniel (6 February 2004)
  5701. - Andrés García made the configure script find gethostbyname() fine when run
  5702. with mingw on windows.
  5703. - Modified the ldap code to use proper function pointers all over (instead of
  5704. mixed data and function pointers) to work-around the picky MIPSPro compiler
  5705. warnings.
  5706. - A custom Host: header is only considered if the request is not made by
  5707. following a location. After discussions with Tim Baker.
  5708. Daniel (5 February 2004)
  5709. - The libz part of the configure script now only set the two libz-related
  5710. define HAVE_ZLIB_H and HAVE_LIBZ if both the lib and the header is found.
  5711. If one is missing, none of the defines is set.
  5712. - Andrés García fixed the Mingw makefiles.
  5713. - Len Krause reported that curl 7.9.X could do uploading from stdin without
  5714. doing chunked encoding, which current curl cannot do even if you disable
  5715. the transfer-encoding chunked header. Now it can again, and test case 98
  5716. verifies this functionality.
  5717. - Tor Arntsen fixed a weird getaddrinfo() usage in the FTP code, preventing
  5718. the ipv6-code for PORT work on AIX 5.2. We now also provide (better) error
  5719. messages when bailing out in the that function.
  5720. - Tor Arntsen now provides AIX and IRIX (using gcc, xlc and the MIPSPro
  5721. compilers) automated build logs (http://curl.haxx.se/auto/) and we've fixed
  5722. numerous minor quirks to make less warnings appear.
  5723. Daniel (4 February 2004)
  5724. - Based on a patch by Gilad, we now use the custom timeouts when waiting for a
  5725. server to connect when using FTP PORT. Previously we always waited 10
  5726. seconds, no more no less. We now also changed the default (if no timeout is
  5727. set) to wait 60 seconds for the connect before we fail.
  5728. Daniel (3 February 2004)
  5729. - Modified to link with c-ares instead of ares.
  5730. Daniel (2 February 2004)
  5731. - Added a configure test to check for which option the (g)nroff tool wants
  5732. to extract plain text from the man pages. Tor Arntsen told us the AIX
  5733. version of GNU gnroff doesn't support -man!
  5734. - Added an undef of accept in memdebug.h to make curl build with --enable-debug
  5735. on AIX 5.2 which seems to have accept defined. Reported by Tor Arntsen.
  5736. - curl_version() now includes c-ares version info, and curl_version_info() now
  5737. returns a struct with version SECOND that also includes that info.
  5738. - We are now officially using c-ares for asynch name resolves. c-ares is the
  5739. new library, based on the existing ares but with an extended and slightly
  5740. modified API.
  5741. - Dirk improved the ares timeout code, and now we also include the ares error
  5742. string when we fail to resolve a name.
  5743. - Another tweak to make test case 91 run fine. Now we have another bit on a
  5744. connection that is set true if the connection is marked for 'retry'. That
  5745. makes the connection get closed and re-opened and the HTTP-done code must
  5746. not complain on the fact that no data was received.
  5747. - Based on Dirk Manske's patch, I modified the name resolving with ares to
  5748. feature a timeout for really slow lookups. It now defaults to 300 seconds,
  5749. but is now adjusted to the CONNECTTIMEOUT/TIMOUE timeouts if one of them
  5750. is set.
  5751. - Fixed the inclusion of ca-bundle.h to really use the one in the build dir
  5752. before the one in the source dir. Domenico Andreoli found out and reported.
  5753. - Added test case 97, a simple POST with a custom Content-Type header
  5754. replacing the original application/x-www-form-urlencoded one.
  5755. Daniel (30 January 2004)
  5756. - Added code that attempts to fix the test 91 failure. As has been figured out
  5757. by Patrick Smith, the error happens because we re-use a connection that the
  5758. server is just about to close and we even manage to send away the request
  5759. without seeing an error. On the first read attempt we get a ECONNRESET.
  5760. Starting now, we attempt to detect this and if so, we retry the request on a
  5761. fresh connection.
  5762. - I added test case 510 which is a custom program that does a POST using a
  5763. read callback, with chunked transfer-encoding.
  5764. - Adjusted one of the MPE/iX changes as it made test case 504 fail all over.
  5765. - Added --socks as a recognized option. It works just like --proxy but sets a
  5766. SOCKS5 proxy to use. SOCKS5 support has been available in libcurl for a
  5767. while, just not provided by the curl tool. This does not currently work for
  5768. IPv6-enabled libcurls.
  5769. Daniel (29 January 2004)
  5770. - Stadler Stephan pointed out that src/hugehelp.c included config.h without
  5771. checking the define if its present...
  5772. - Ken Hirsch provided patches to make curl build fine on the MPE/iX operating
  5773. system.
  5774. - Dan Fandrich compiled curl with lots of aggressively pedantic compiler
  5775. options and thus found a few minor errors and did some general cleanups to
  5776. avoid them.
  5777. - Dirk Manske fixed a flaw in ares that prevented it to use non-blocking
  5778. sockets properly.
  5779. Daniel (28 January 2004)
  5780. - Richard Bramante fixed chunked transfer-encoded "uploads" to send a final
  5781. CRLF combo properly.
  5782. Daniel (27 January 2004)
  5783. - Made the response-headers during a CONNECT request to a proxy get passed on
  5784. as regular headers, so they appear with -i/-I options and similar.
  5785. - Based on a patch by Gisle Vanem, I've made the progress meter display
  5786. properly switch to a GB-display when more than 9999MB have been transfered.
  5787. Daniel (23 January 2004)
  5788. - Gisle Vanem pointed out a curlrc parser problem/crash when an option with a
  5789. required didn't have one and was on the last line of a file.
  5790. - More Windows fixes for large files. We now build and link with
  5791. ../lib/strtoofft.c in the app code since Curl_strtoll() is not a provided
  5792. libcurl function... Perhaps we should consider a 'common' dir or similar
  5793. where we put source code used in both the lib and the client. Or perhaps
  5794. we'll just make this function available in the library...
  5795. - Vincent Bronner found out the socks5 code crashed when no username was
  5796. set.
  5797. - Vincent Bronner spotted a problem with proxy username/password when re-using
  5798. a persistent connection.
  5799. - Fixed the progress meter display for files larger than 2^31 bytes. Gisle
  5800. Vanem reported.
  5801. Daniel (22 January 2004)
  5802. - Gisle Vanem made strtoll() get used when curl is built with the mingw
  5803. compiler.
  5804. - Gisle Vanem fixed the compressed help text code to display properly.
  5805. - Removed the '#define HttpPost' from the public header file, as curl_httppost
  5806. is the proper name and it has been for quite some time now. Fixes another
  5807. name space pollution.
  5808. - Added 'curl_off_t' typedef in the public header file, to be used to provide
  5809. large file sizes to the *_LARGE options. Adjusted the code all over to use
  5810. this variable type instead of 'off_t'. This is an attempt to make the large
  5811. file support work on more platforms. The configure script now checks the
  5812. size of the curl_off_t instead of the plain off_t.
  5813. Version 7.11.0 (22 January 2004)
  5814. Daniel (21 January 2004)
  5815. - Removed the defines in the public header file with TIMECOND_ prefixes. They
  5816. have been obsolete since April 22nd 2002, and if this causes anyone any
  5817. problems now it is very easy to just add CURL_ to the names. This corrects
  5818. this name space pollution.
  5819. Daniel (19 January 2004)
  5820. - David Byron cleaned up how --trace with no option was treated, and also
  5821. arguments in a config file without a required parameter!
  5822. Daniel (16 January 2004)
  5823. - Gisle Vanem fixed a few issues where compilers warned about variables
  5824. possibly being used unassigned.
  5825. - Minor Interix build problem fixed.
  5826. Daniel (15 January 2004)
  5827. - Peter Sylvester pointed out some necessary escaping needed in the
  5828. acinclude.m4 file when automake 1.8 or later is used.
  5829. Daniel (14 January 2004)
  5830. - Vincent Bronner fixed the Curl_resolv() return code. This extends the fix
  5831. Steve Green provided on december 3...
  5832. Daniel (13 January 2004)
  5833. - Luke Call made the win32 version of the password prompting function support
  5834. backspace.
  5835. - Dan Fandrich fixed the hugehelp source file to contain both a compressed and
  5836. an uncompressed version in the distribution, so that more people easier can
  5837. build curl with the compressed version.
  5838. - Diego Casorran brought another AmigaOS build patch for native Amiga builds.
  5839. - Matt Veenstra updated the Mac OS X framework files.
  5840. - Brian R Duffy brought a section to the INSTALL file on how to build a
  5841. SSL-enabled curl using the free Borland C++ compiler. He also updated the
  5842. Borland lib/Makefile.b32.
  5843. - I fixed the test case 509 which I broke yesterday. Now the libtest are
  5844. compiled with an include path that points to the library's source dir, so
  5845. that the libtests can include files from the source tree. This was made to
  5846. make it possible to use the USE_SSLEAY define in the library test files.
  5847. Daniel (12 January 2004)
  5848. - Peter Sylvester brought code that now allows a callback to modified the URL
  5849. even when the multi interface is used, and then libcurl will simulate a
  5850. "follow location" to that new URL. Test 509 was added to test this feature.
  5851. - Extended the time we retry servers in the test script, and I also made it
  5852. retry the https and ftps servers before they are considered bad. I believe
  5853. the previous approach could turn problematic on really slow hosts.
  5854. Version 7.11.0-pre1 (12 January 2004)
  5855. Daniel (11 January 2004)
  5856. - Dominick Meglio pointed out FTPS should use default port 990 according to
  5857. IANA.
  5858. Daniel (8 January 2004)
  5859. - Fixed the SPNEGO configure check to not use -R or other non-portable options
  5860. in the LDFLAGS. Reported by Pierre in bug report #872930.
  5861. Daniel (5 January 2004)
  5862. - Dan Fandrich provided a fix on our zlib usage.
  5863. - David J Meyer's patch that introduce large file support to libcurl was
  5864. applied. New curl_easy_setopt options that accept 'off_t' arguments are:
  5865. INFILESIZE_LARGE
  5866. RESUME_FROM_LARGE
  5867. MAXFILESIZE_LARGE
  5868. Daniel (4 January 2004)
  5869. - Based on Dominick Meglio's comments, I made our private version of
  5870. gettimeofday() declared static. This would otherwise collide with the same
  5871. function in other libs (like ares for example).
  5872. - Added Dominick Meglio's description on how to build libcurl with ares
  5873. on win32.
  5874. Daniel (19 December)
  5875. - CURLOPT_IPRESOLVE was not possible to set.
  5876. - Gisle Vanem updated the djgpp build files.
  5877. Daniel (18 December)
  5878. - John McGowan reported a redirect-problem that happened if a site used a URL
  5879. like "url.com?var=content" (without a proper slash) and from that address
  5880. redirected the user-agent to an absolute directory.
  5881. - David Byron made libcurl build fine with both the .NET and VC6 versions of
  5882. MSVC
  5883. Daniel (16 December)
  5884. - Updated test 506 since it started to fail after the cache prune change
  5885. yesterday. I also changed it slightly to feature a counter in each debug
  5886. output for easier tracing.
  5887. Daniel (15 December)
  5888. - Old DNS cache entries are now only pruned after curl is done with a request,
  5889. and not in the actual name resolve call.
  5890. - corrected the --enable-ares patch
  5891. - Giuseppe Attardi found and fixed a problem within libcurl that re-used
  5892. already freed memory.
  5893. Daniel (10 December)
  5894. - Gisle Vanem reported that the dict support was broken. I broke it during my
  5895. ftps-changes overhaul. I've now added a 'curlassert' function that can be
  5896. used to verify expressions, to prevent future errors of the same
  5897. kind. They're only present in debug-builds.
  5898. - Diego Casorran made curl and libcurl possible to build natively (no more
  5899. need for the ixemul library) on AmigaOS.
  5900. - Dominick Meglio made configure --enable-ares support a given path to the
  5901. installed ares lib, instead of always using it in the curl source tree.
  5902. This also fixed the curl-config --libs output.
  5903. - Eric S. Raymond patched a very minor man page format error in
  5904. libcurl-errors.3
  5905. Daniel (8 December)
  5906. - Fixed the flaw that made -lz appear twice on the link command line.
  5907. - After correspondence with Gisle Vanem, I changed the 'connection aborted'
  5908. error text when the FTP response reader failed to more specificly identify
  5909. what the problem is.
  5910. - Based on a patch from Dominick Meglio, curl-config --feature now outputs
  5911. 'AsynchDNS' as a feature if libcurl was built with ares. The feature name
  5912. is the same that 'curl -V' outputs, for simplicity.
  5913. Daniel (3 December)
  5914. - Marty Kuhrt made the build up-to-date on VMS, and moved most of the VMS-
  5915. specific stuff in the client code to a separate header file.
  5916. - Steve Green fixed a return code bug in Curl_resolv(), that made the socks5
  5917. code fail.
  5918. - swalkaus at yahoo.com patched libcurl to ignore Content-Length: headers
  5919. when Transfer-Encoding: chunked is used, as mandated by RFC2616.
  5920. Daniel (2 December)
  5921. - --ftp-pasv was added, which serves the only purpose of overriding a
  5922. previously set --ftpport option. Starting now, --ftp-port is a recognized
  5923. alias for --ftpport for consistency.
  5924. - Giuseppe Attardi pointed out that we should use MSG_NOSIGNAL when we use
  5925. send() and recv(). I added checks for the define in the configure script and
  5926. adjusted the code accordingly. If the symbol is present, we won't attempt
  5927. to ignore the SIGPIPE signal.
  5928. Daniel (1 December)
  5929. - Mathias Axelsson set up a bsdftpd-ssl server for me and I could make curl
  5930. run fine against its FTPS implementation. Now these FTPS-related things
  5931. work:
  5932. o explicit and implicit FTPS
  5933. o active (PORT) and passive (PASV)
  5934. o upload and download
  5935. o verified against bsdftpd-ssl and RaidenFTPD
  5936. Daniel (27 November)
  5937. - James Clancy made the Borland Makefiles up to date.
  5938. - Markus Moeller improved the SPNEGO detection in the configure script.
  5939. Daniel (25 November)
  5940. - Dave May filed bug report #848371, identifying that if you'd do POST over a
  5941. proxy to a https server, libcurl didn't POST at all, it just made a GET! It
  5942. turned out to be because libcurl wrongly didn't consider the authentication
  5943. "negotiation phase" to be complete yet.
  5944. I added test case 95 to verify my fix for this.
  5945. Daniel (24 November)
  5946. - Thanks to Mathias Axelsson, I've been able to work on FTPS for libcurl and it
  5947. seems to work somewhat fine now.
  5948. The FTPS stuff is based on RFC2228 and the murray-auth-ftp-ssl draft
  5949. (version 12). There seems to exist quite a few servers that have implemented
  5950. the server side of this.
  5951. We can now use ftps:// URLs to explicitly switch on SSL/TSL for the control
  5952. connection and the data connection (dealing with two SSL connections forced
  5953. me to change a lot of stuff in libcurl).
  5954. Alternatively, and what seems to be the recommended way, we can set the new
  5955. option CURLOPT_FTP_SSL to one of these values:
  5956. CURLFTPSSL_NOPE, - do not attempt to use SSL
  5957. CURLFTPSSL_TRY - try using SSL, proceed anyway otherwise
  5958. CURLFTPSSL_CONTROL - SSL for the control connection or fail
  5959. CURLFTPSSL_ALL - SSL for all communication or fail
  5960. Any failure to set the desired level will make libcurl fail with the error
  5961. code CURLE_FTP_SSL_FAILED. This new option makes a "normal" ftp:// transfer
  5962. attempt to be made securely.
  5963. I've been able to login and get files (passively) from Mathias' server using
  5964. both ftps:// and CURLOPT_FTP_SSL. (I've made 'curl' understand the --ftp-ssl
  5965. option that sets CURLFTPSSL_TRY.)
  5966. - Gaz Iqbal fixed a range string memory leak.
  5967. - Gisle Vanem fixed the Windows builds.
  5968. - Added the new FTPSSL defines in curl/curl.h
  5969. Daniel (20 November)
  5970. - Josh Kapell filed bug report #845247 as he found an endless loop when
  5971. getting a 407 back from a proxy when no user+password was given. Added test
  5972. case 94 to verify the fix.
  5973. Daniel (19 November)
  5974. - Kevin Roth fixed a progress-bar problem on Windows.
  5975. - While working with Nicolas Croiset's bug report #843739, I noticed two minor
  5976. problems related to ftp partial downloads: if a partial transfer is
  5977. detected, we must close the connection as we cannot know in what state it is
  5978. anymore. This looks like a ProFTPD bug:
  5979. http://curl.haxx.se/mail/lib-2003-11/0079.html
  5980. Daniel (17 November)
  5981. - Maciej W. Rozycki made the configure script use a cache variable for the
  5982. writable argv test. This way, the default can be overridden better (for
  5983. cross-compiles etc)
  5984. Daniel (15 November)
  5985. - Mathias Axelsson found out libcurl sometimes freed the server certificate
  5986. twice, leading to crashes!
  5987. Daniel (14 November)
  5988. - Siddhartha Prakash Jain found a case with a bad resolve that we didn't
  5989. properly bail out from, when using ares.
  5990. Daniel (13 November)
  5991. - Default Content-Type for parts in multipart formposts has changed to
  5992. "application/octet-stream". This seems more appropriate, and I believe
  5993. mozilla and the likes do this. In the same area: .html files now get
  5994. text/html as Content-Type. (Pointed out in bug report #839806)
  5995. - Gisle Vanem corrected the --progress-bar output by doing a flush of the
  5996. output, which apparently makes it look better on at least windows, but
  5997. possibly other platforms too.
  5998. - Peter Sylvester identified a problem in the connect code, which made the
  5999. multi interface on a ipv6-enabled solaris box do bad. Test case 504 to be
  6000. specific. I've spent some time to clean-up the Curl_connecthost() function
  6001. now to use less duplicated code for the two different sections: ipv6 and
  6002. ipv4.
  6003. Daniel (11 November)
  6004. - Added CURLOPT_NETRC_FILE. Use this to tell libcurl which file to use instead
  6005. of trying to find a .netrc in the current user's home directory. The
  6006. existing .netrc file finder is somewhat naive and is far from perfect on
  6007. several platforms that aren't unix-style. If this option isn't set when
  6008. CURLOPT_NETRC is set, the previous approach will still be used.
  6009. The current .netrc check code now also support longer than 256 bytes path
  6010. names.
  6011. Daniel (10 November)
  6012. - Kang-Jin Lee pointed out that the generated ca-bundle.h file shouldn't be
  6013. written in the source dir if a different build dir is used.
  6014. - After Sébastien Willemijns' bug report, we now check the separators properly
  6015. in the 229-reply servers respond on a EPSV command and bail out better if
  6016. the reply string is not RFC2428-compliant.
  6017. Daniel (7 November)
  6018. - Based on Gisle Vanem's patch, I made curl try harder to get the home
  6019. directory of the current user, in order to find the default .curlrc file.
  6020. We're also considering moving out the HOME-dir code from libcurl, and
  6021. instead have the app pass in the path to the .netrc file (which is the only
  6022. logic left in libcurl that uses the HOME dir). Then curl can use the home
  6023. dir for that purpose too.
  6024. - Ralph Mitchell's updated testcurl.sh to the script to take an existing
  6025. directory name and build/run/test curl in there instead of trying to update
  6026. from CVS. Using this approach, the script can now be used to test daily
  6027. tarballs etc.
  6028. - Gisle Vanem added a "resource file" to the Windows DLL builds, to contain
  6029. information such as version number, library name, copyright info etc.
  6030. Daniel (6 November)
  6031. - curl checks if the existing libcurl supports things like --ntlm, --negotiate
  6032. and --krb4 and returns error if not.
  6033. - I added three new global defines in the curl/curl.h header:
  6034. LIBCURL_VERSION_MAJOR, LIBCURL_VERSION_MINOR and LIBCURL_VERSION_PATCH. They
  6035. are the three numbers in the library's version number, separated for easier
  6036. usage. 'maketgz' was updated accordingly to generate these numbers properly
  6037. when building release-archives.
  6038. - Uninitialized variable fix, reported by both Marty Kuhrt and Benjamin
  6039. Gerard.
  6040. - Matt Veenstra provided build files to build libcurl as a "framework" under
  6041. Mac OS X. See the lib/libcurl.framework.make for details.
  6042. - Removed the defines of TRUE and FALSE from the curl/curl.h header file.
  6043. They're not in our name space so we should not fiddle with them.
  6044. Daniel (5 November)
  6045. - Replaced the man page to HTML converter program with a new one: roffit.
  6046. Makes nicer web pages.
  6047. Daniel (4 November)
  6048. - Troels Walsted Hansen fixed the MSVC makefiles to let them build curl fine
  6049. on Windows.
  6050. - Kevin Roth corrected the cygwin package generator and spell-fixed the
  6051. comment in the ca-bundle.h file.
  6052. Version 7.10.8 (1 November 2003)
  6053. Daniel (31 October)
  6054. - Assume that MDTM on an FTP server returns the timestamp using the UTC time
  6055. zone. This changes the time CURLINFO_FILETIME returns for a given file over
  6056. FTP, and will change existing uses of CURLOPT_TIMECONDITION. It will make
  6057. the functionality more similar to how the HTTP one is already working.
  6058. - Command line options that take numerical parameters (such as -y, -Y, -C etc)
  6059. now report error and exit if the parameter isn't truly a number greater than
  6060. or equal to zero. This helps users to notice bad usage earlier. Before, when
  6061. a user forgot or missed to add a numerical parameter to an option, the
  6062. command line parser would simply "eat" the following option and it would
  6063. cause great confusion.
  6064. Daniel (30 October)
  6065. - David Hull made libcurl deal with NOBODY and HEADER for file:// the same way
  6066. it already does for FTP: it provides HTTP-looking headers that provide info
  6067. only about the file, without doing the actual transfer. The curl tool then
  6068. lets --head do this.
  6069. Daniel (29 October)
  6070. - runtests.pl now checks for and use valgrind if present. It will redirect the
  6071. valgrind results in log/valgrind[num] but it currently doesn't scan that
  6072. file for any errors or anything, that is still only made manually.
  6073. - David Hull made the file: URL parser also accept the somewhat sloppy file
  6074. syntax: file:/path. I added test case 203 to verify this.
  6075. Daniel (28 October)
  6076. - Dan C tracked down yet another weird behavior in the glibc gethostbyname_r()
  6077. function for some specific versions (reported on 2.2.5 and 2.1.1), and
  6078. provided a fix. On Linux machines with these glibc versions, non-ipv6
  6079. builds of libcurl would often fail to resolve perfectly resolvable host
  6080. names.
  6081. Daniel (26 October)
  6082. - James Bursa found out that curl_msnprintf() could write the trailing
  6083. zero-byte outside its given buffer size. This could happen if you generated
  6084. a very long error message as then libcurl would overwrite the ERRORBUFFER
  6085. with one byte. Using a non-existing very long local file:// name is one case
  6086. that could make this occur.
  6087. Daniel (24 October)
  6088. - David Hull filed bug report #829827. It identified a problem with -C - if
  6089. the full file already was downloaded and thus the server responded with a
  6090. 416. libcurl would then wrongly use the Content-Length: header and expect
  6091. that size to get transfer, causing a "hang" until the server closed the
  6092. connection and then an error 18 ("still N bytes data left of the transfer").
  6093. Now we don't return any error at all, but I think libcurl should perhaps
  6094. return some kind of info since the requested range was out of the size of
  6095. the document.
  6096. - Based on David Hull's fix in bug report #804599, we now check for solaris and
  6097. gcc in configure and set the -mimpure-text link flag for linking the lib
  6098. better.
  6099. - I've introduced a -t option to the runtests.pl script. With that option set,
  6100. the script runs special "memory torture" tests. For each test command line
  6101. in that section, the script first runs the command line and counts the total
  6102. amount of allocations made. It then runs the exact same command line again,
  6103. forcing allocation number N to fail. It will try every N from 1 to the total
  6104. number of amounts made. For every invoke, it checks that no memory was
  6105. leaked as that would indicate a bad cleanup somewhere in the code.
  6106. This is just beginning to work, and I've already made some corrections in
  6107. libcurl code. When this code works somewhat fine, I'll make sure 'make test'
  6108. in the root dir will run these tests as well.
  6109. Daniel (23 October)
  6110. - Georg Horn fixed how the CA verification is made. Verifications can now be
  6111. made while at the same time the result of it can be ignored. This also
  6112. affects the curl tool as -k can now be used together with --cacert or
  6113. --capath.
  6114. Daniel (22 October)
  6115. - Gisle Vanem found out --disable-eprt didn't work and patched it.
  6116. - Test case 91 was modified and could now repeat the problem Kevin Roth has
  6117. reported, and the bug was fixed.
  6118. - Dylan Ellicott added vc-libcurl-ssl-dll as a target to the root makefile
  6119. to build a static libcurl that links with a shared OpenSSL using MSVC.
  6120. Daniel (21 October)
  6121. - Andrés García updated the mingw32 makefiles.
  6122. Version 7.10.8-pre5 (21 October 2003)
  6123. Daniel (19 October)
  6124. - Georg Horn made libcurl output more info on SSL failures when receiving
  6125. data.
  6126. Version 7.10.8-pre4 (18 October 2003)
  6127. Daniel (17 October)
  6128. - Dominick Meglio implemented CURLOPT_MAXFILESIZE and --max-filesize.
  6129. - Made libcurl show verbose info about what auth type and user name that is
  6130. being sent in its HTTP request-headers.
  6131. Daniel (16 October)
  6132. - Removed support for CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA. libcurl
  6133. no longer prompt for passwords under any circumstances. Password prompting
  6134. was instead moved to curl, which now prompts for password if -u or -U lack
  6135. it. This solves the problem Kevin Roth reported when curl prompted for
  6136. password twice when doing NTLM authentication.
  6137. - I rewrote the SSL subjectAltName check to avoid having to rely on OpenLDAP-
  6138. licensed derivate code.
  6139. Daniel (15 October)
  6140. - Avoid doing getsockopt() on Windows to verify connects. It seems that this
  6141. hogs Windows machines when libcurl is being used multi-threaded (with > ~50
  6142. threads). Andrew Fuller helped us verify and test this.
  6143. Daniel (14 October)
  6144. - Kimmo Kinnunen fixed a crash with duphandle() when CURLDEBUG is set.
  6145. - Gisle Vanem made libcurl build and work with IPv6 on Windows.
  6146. Daniel (13 October)
  6147. - Giuseppe Attardi reported yet another segfault with ares and the multi
  6148. interface. Me fixed.
  6149. - Domenico Andreoli removed the extra LDFLAGS assignment in lib/Makefile.am
  6150. that was reported about in the debian bug report #212086.
  6151. Domenico also fixed two makefiles where we used 'gnroff' instead of the more
  6152. portable $(NROFF).
  6153. Daniel (12 October)
  6154. - Dirk Manske made the share locking around DNS lookups slightly different to
  6155. allow the share system's DNS lookups to run somewhat more
  6156. independent/faster.
  6157. Daniel (9 October)
  6158. - Lachlan O'Dea fixed a resume problem: "If I set CURLOPT_RESUME_FROM, perform
  6159. an HTTP download, then reset CURLOPT_RESUME_FROM to 0, the next download
  6160. still has a Range header with a garbage value." bug report #820502
  6161. - Dominick Meglio made the inet_pton.c file build fine using MSVC.
  6162. - The 'sws' test suite web server now #include setup.h from the lib directory.
  6163. This makes it more portable easier.
  6164. Version 7.10.8-pre3 (8 October 2003)
  6165. Daniel (8 October)
  6166. - Frank Ticheler provided a patch that fixes how libcurl connects to multiple
  6167. addresses, if one of them fails (ipv4-code).
  6168. Daniel (7 October)
  6169. - Neil Dunbar provided a patch that now makes libcurl check SSL
  6170. subjectAltNames when matching certs. This is apparently detailed in RFC2818
  6171. as the right thing to do. I had to add configure checks for inet_pton() and
  6172. our own (strictly speaking, code from BIND written by Paul Vixie) provided
  6173. code for the function for platforms that miss it.
  6174. - HTTP POST using the read callback didn't work, as Florian Schoppmann
  6175. reported.
  6176. Daniel (5 October)
  6177. - Shared provided a few fixes to make libcurl build on BeOS
  6178. out-of-the-box. New code for BeOS-style non-blocking sockets, provided by
  6179. Shard and Jeremy Friesner. Modified the autoconf check for non-blocking
  6180. sockets to check for this kind too.
  6181. Daniel (4 October)
  6182. - Vincent Bronner pointed out that if you set CURLOPT_COOKIE for a transfer
  6183. and then set it to NULL in a subsequent one, the previous cookie was still
  6184. sent off!
  6185. - Jon Turner fixed a problem libcurl had when it failed on an FTP transfer due
  6186. to a bad path, it would cause the next transfer to use a bad path as well.
  6187. - Siddhartha Prakash Jain provided a patch with a fix for libcurl with ares,
  6188. when working on IP-only names as we then could return "wait" status when the
  6189. name in fact already was resolved. I edited the patch slightly to not expose
  6190. asynch details to non-ares aware source code.
  6191. Daniel (3 October)
  6192. - Neil Spring posted the debian bug report #213180, and pointed out that using
  6193. the name 'access' in a function prototype is not very wise as some compilers
  6194. complain.
  6195. - Peter Sylvester provided his and Jean-Paul Merlin's curlx.c example source
  6196. code that shows how they use ssl and callbacks.
  6197. Daniel (2 October)
  6198. - James MacMillan's patch makes curl build on QNX 6.2.x.
  6199. Daniel (26 September)
  6200. - My daughter was born!
  6201. Daniel (23 September)
  6202. - Added support for -4/--ipv4 and -6/--ipv6 to force names to resolve to that
  6203. particular IP version. They only work for IPv6-enabled libcurls.
  6204. - curl -V now outputs 'SPNEGO' as a feature in case libcurl was built to
  6205. support that.
  6206. Version 7.10.8-pre2 (22 September 2003)
  6207. Daniel (22 September)
  6208. - Giuseppe Attardi found a segfault in libcurl when using the multi interface
  6209. with ares and doing repeated operations against a non-resolving host name.
  6210. Daniel (19 September)
  6211. - Added the CURLOPT_IPRESOLVE option, that allows an application to select
  6212. what kind of IP addresses he wants to use when resolving host names. This
  6213. is only interesting when using host names that resolve addresses using more
  6214. than one version of IP.
  6215. - Applied Markus Moeller's patch that introduces SPNEGO support if libcurl
  6216. is built with the FBopenssl libraries. curl_version_info() now returns
  6217. info on SPNEGO availability. The patch also made the GSSAPI stuff work fine
  6218. with the MIT GSS-library (the Heimdal one still works too).
  6219. Daniel (16 September)
  6220. - Doing PUT with --digest failed, as reported in bug report #805853.
  6221. - Using --anyauth that picked NTLM, and then a redirect closed the connection
  6222. and took curl to a second NTLM page made curl fail. Bug report #806328
  6223. identified the problem, test case 90 was added to verify the fix.
  6224. Daniel (14 September)
  6225. - codemastr brought a patch for ares to make the Windows portions of it work
  6226. properly on NT4. I uploaded a new diff and updated the docs on where to get
  6227. it etc.
  6228. - Jeff Pohlmeyer tracked down a very hard-to-find bug where we removed a
  6229. cached DNS entry even though it may be in use, which caused "random" memory
  6230. to get overwritten and thus "random" crashes.
  6231. Daniel (12 September)
  6232. - Based on a bug report by David Kimdon, I made the runtests.pl script clear
  6233. all possible proxy environment variables before the tests are run.
  6234. - By default, easy handles within a multi handle now share DNS cache.
  6235. - Tim Bartley brought a patch that makes the GSSNEGOTIATE option work for
  6236. Microsoft's "Negotiate" authentication as well.
  6237. Daniel (11 September)
  6238. - A zero-length proxy string confused FTP transfers.
  6239. - Bjorn Reese found a case with an uninitialized pointer, only present when
  6240. built for ares.
  6241. Version 7.10.8-pre1 (8 September 2003)
  6242. Daniel (7 September)
  6243. - Jurij Smakov found out that the non-OpenSSL MD5 code was not working on
  6244. Alpha (or ia64). Only the OpenSSL-version did. I made a fix I think corrects
  6245. the problem.
  6246. Daniel (5 September)
  6247. - Kevin Fisk reported that configure --enable-thread didn't work. I fixed.
  6248. - De-macrofied the lib/hash.c source code somewhat.
  6249. Daniel (4 September)
  6250. - CURLINFO_HTTPAUTH_AVAIL and CURLINFO_PROXYAUTH_AVAIL added, Based on Joerg
  6251. Mueller-Tolk's patch,
  6252. Early (4 September)
  6253. - Added CURLOPT_FTP_RESPONSE_TIMEOUT - allows user to set strict timeout
  6254. requirements on the FTP server's ability to respond to individual commands
  6255. without placing global requirements on transfer or connect time. Files
  6256. affected:
  6257. - include/curl/curl.h
  6258. Added option CURLOPT_FTP_RESPONSE_TIMEOUT
  6259. - lib/ftp.c
  6260. Added branch inside Curl_GetFTPResponse to check for
  6261. data->set.ftp_response_timeout
  6262. - lib/url.c
  6263. Modified Curl_setopt to recognize CURLOPT_FTP_RESPONSE_TIMEOUT
  6264. - lib/urldata.h
  6265. Added ftp_response_timeout to struct UserDefined
  6266. Daniel (3 September)
  6267. - Peter Pentchev found and fixed two problems in the test suite's web server
  6268. code, that made it segfault at times.
  6269. - Jörg Mueller-Tolk improved the proxy user+password handling, especially
  6270. when providing a blank password.
  6271. Daniel (2 September)
  6272. - Fix for making CONNECT to proxies do the correct magic to allow NTLM, Digest
  6273. and similar to work.
  6274. Daniel (1 September)
  6275. - Henrik Storner made libcurl work fine with OpenLDAP 2.1.22 (current).
  6276. - Jeff Pohlmeyer added a proper error message for non-resolving hosts when
  6277. using ares for lookups.
  6278. Daniel (25 August)
  6279. - John McGowan reported that curl -k still failed if the HTTPS server's CN
  6280. field wasn't obtainable. This was due to the CURLOPT_SSL_VERIFYHOST being
  6281. set to 1, and libcurl failed if the CN was missing. Starting now, having it
  6282. set to 1 will simply output a warning if no CN could be obtained (as having
  6283. a mismatch is OK).
  6284. Daniel (21 August)
  6285. - Vincent Sanders provided a fix for name resolving when linked with uClibc.
  6286. Daniel (20 August)
  6287. - Gerd v. Egidy provided a patch that makes libcurl store the FTP response
  6288. code from ftp servers. Using curl_easy_getinfo() with CURLINFO_HTTP_CODE
  6289. returns that data. The option is therefore now also known as
  6290. CURLINFO_RESPONSE_CODE.
  6291. - Antoine Calando found a segfault when doing multi-part/formpost using
  6292. the multi interface.
  6293. - Antoine Calando pointed out that curl_multi_info_read() didn't set the
  6294. msgs_in_queue to 0 properly when returning NULL.
  6295. Daniel (19 August)
  6296. - I made curl support multiple -T options, as well as -T "{file1,file2}"
  6297. style globbing. One -T for each URL is supported.
  6298. - Jeff Pohlmeyer found a segfault when using ares-enabled libcurl and the
  6299. multi interface when trying a non-existing host name.
  6300. - Made the libcurl printf code support long longs if available.
  6301. - Loren Kirkby pointed out that we did not clean up all SSL-allocated memory
  6302. in curl_global_cleanup().
  6303. Daniel (17 August)
  6304. - Setting CURLOPT_WRITEFUNCTION or CURLOPT_READFUNCTION to NULL will now make
  6305. them get the internal defaults restored. Previously this could cause a
  6306. segfault. We should aim at having all pointer-related options get restored
  6307. to default/safe values when set to NULL.
  6308. Version 7.10.7 (15 August 2003)
  6309. Daniel (14 August)
  6310. - I modified the memdebug system to return failure on memory allocation
  6311. functions after a set amount of successful ones. This enables us to test
  6312. out-of-memory situations in a controlled manner and we can make sure that
  6313. curl/libcurl behaves good in those.
  6314. This made me find and fix several spots where we did not cleanup properly
  6315. when bailing out due to errors (low memory).
  6316. - Corrected test case 74. Made using -o with bad #[num] codes complain and
  6317. bail out. Made #[num] support numbers larger than 9 as well. Added test
  6318. case 86 for a proper range globbing test as well.
  6319. Version 7.10.7-pre4 (12 August 2003)
  6320. Daniel (12 August)
  6321. - curl_version_info() now returns a flag if libcurl was built with asynch DNS
  6322. support, and this is now also displayed with 'curl -V'.
  6323. - Added a few new man pages to the docs/libcurl dir: curl_share_init,
  6324. curl_share_setopt, curl_share_cleanup, libcurl-easy and libcurl-share.
  6325. Daniel (11 August)
  6326. - Mike Cherepov made the local binding code work for Windows, which makes
  6327. the option CURLOPT_INTERFACE work on Windows as well.
  6328. - Vincent Sanders updated the fopen.c example code a lot.
  6329. - --proxy-ntlm is now supported by the curl tool. It forces the proxy
  6330. authentication to be made using NTLM. It does not yet work for HTTPS over
  6331. proxies (or other proxy-tunneling options). Test case 81 and 82 do some
  6332. simple initial ntlm testing.
  6333. - Found and fixed a minor memory leak on re-used connections with
  6334. proxy-authentication.
  6335. - I removed -@ and -Z as valid short options. They were very rarely used (@
  6336. wasn't even documented).
  6337. - Serge Semashko introduced CURLOPT_PROXYAUTH, and make it work when set to
  6338. CURLAUTH_NTLM and/or CURLAUTH_BASIC. The PROXAUTH is similar to HTTPAUTH,
  6339. but is for the proxy connection only, and HTTPAUTH is for the remote host.
  6340. - Fixed loading of cookies with blank contents from a cookie jar. Also made the
  6341. cookie functions inform on added and skipped cookies (for cookie debugging).
  6342. Version 7.10.7-pre3 (8 August 2003)
  6343. Daniel (8 August)
  6344. - Applied David Byron's fix for file:// URLs with drive letters included.
  6345. - I added the --ftp-create-dirs to the client code, which activates Early's
  6346. CURLOPT_FTP_CREATE_MISSING_DIRS option, and wrote test case 147 to verify
  6347. it. Added the option to the curl.1 man page too. Added the option to the
  6348. curl_easy_setopt.3 man page too.
  6349. Daniel (7 August)
  6350. - Test case 60 failed on ia64 and AMD Opteron. Fixed now.
  6351. - Fixed a printf problem that resulted in urlglobbing bugs (bug #203827 in the
  6352. debian bug tracker). Added test case 74 to verify the fix and to discover if
  6353. this breaks in the future.
  6354. - "make distcheck" works again.
  6355. Version 7.10.7-pre2 (6 August 2003)
  6356. Daniel (5 August)
  6357. - Duncan Wilcox helped me verify that the latest incarnation of my ares patch
  6358. builds fine on Mac OS X (see the new lib/README.ares) file for all details.
  6359. - Salvatore Sorrentino filed bug report #783116 and Early Ehlinger posted a
  6360. bug report to the libcurl list, both identifying a problem with FTP
  6361. persistent connections and how the dir hierarchy was not properly reset
  6362. between files.
  6363. - David Byron's thoughts on a fixed Makefile in tests/ were applied.
  6364. - Jan Sundin reported a case where curl ignored a cookie that browsers don't,
  6365. which turned up to be due to the number of dots in the 'domain'. I've now
  6366. made curl follow the the original netscape cookie spec less strict on that
  6367. part.
  6368. Daniel (4 August)
  6369. - Dirk Manske added cookie support for the experimental, hidden and still
  6370. undocumented share feature!
  6371. - Mark Fletcher provided an excellent bug report that identified a problem
  6372. with FOLLOWLOCATION and chunked transfer-encoding, as libcurl would not
  6373. properly ignore the body contents of 3XX response that included the
  6374. Location: header.
  6375. Early (6 August)
  6376. - Added option CURLOPT_FTP_CREATE_MISSING_DIRS
  6377. This option will force the target file's path to be created if it
  6378. does not already exist on the remote system.
  6379. Files affected:
  6380. - include/curl/curl.h
  6381. Added option CURLOPT_FTP_CREATE_MISSING_DIRS
  6382. - lib/ftp.c
  6383. Added function ftp_mkd, which issues a MKD command
  6384. Added function ftp_force_cwd, which attempts a CWD,
  6385. and does a MKD and retries the CWD if the original CWD
  6386. fails
  6387. Modified ftp_perform() to call its change directory function
  6388. through a pointer. The pointer points to ftp_cwd by default,
  6389. and is modified to point to ftp_force_cwd IFF
  6390. data->set.ftp_create_missing_dirs is not 0.
  6391. - lib/url.c
  6392. Modified Curl_setopt to recognize CURLOPT_FTP_CREATE_MISSING_DIRS
  6393. - lib/urldata.h
  6394. Added ftp_create_missing_dirs to struct UserDefined
  6395. - Minor Bugfix for CURLOPT_TIMECONDITION with FTP - if the file was not
  6396. present to do the time comparison, it would fail.
  6397. Files affected:
  6398. - lib/ftp.c
  6399. In ftp_perform(), the call to ftp_getfiletime() used to be followed
  6400. by
  6401. if (result)
  6402. return result;
  6403. And then by the code that actually did the time comparison.
  6404. The code that did the comparison handled the case where the filetime
  6405. was not available (as indicated by info.filetime < 0 or set.timevalue
  6406. < 0), so I replaced the if (result) return result with a switch(result)
  6407. that allows CURLE_FTP_COULDNT_RETR_FILE to fall through to the
  6408. normal time comparison.
  6409. Daniel (3 August)
  6410. - When proxy authentication is used in a CONNECT request (as used for all SSL
  6411. connects and otherwise enforced tunnel-thru-proxy requests), the same
  6412. authentication header is also wrongly sent to the remote host.
  6413. This is a rather significant info leak. I've fixed it now and mailed a patch
  6414. and warning to the mailing lists.
  6415. Daniel (1 August)
  6416. - David Byron provided a patch to make 7.10.6 build correctly with the
  6417. compressed hugehelp.c source file.
  6418. Version 7.10.7-pre1 (31 July 2003)
  6419. Daniel (30 July)
  6420. - Jörg Müller-Tolk updated the VC makefile.
  6421. - Daniel Noguerol made the ftp code output "Accept-Ranges: bytes" in similar
  6422. style like other faked HTTP headers when NOBODY and HEADER are used. I
  6423. updated two corresponding test cases too.
  6424. - Marty Kuhrt pointed out a compilation problem on VMS due to my having
  6425. changed a type from long to time_t, and I'm now changing it back to work
  6426. more portably...
  6427. He also indicated that distributing the src/hugehelp.c in a compressed state
  6428. like I accidentally did may not be the smartest move... I've now fixed the
  6429. distribute procedure to automatically generate an uncompressed version when I
  6430. make release archives.
  6431. Daniel (29 July)
  6432. - Gisle Vanem brought changes to the mkhelp script for the generation of the
  6433. compressed help text on some platforms.
  6434. Version 7.10.6 (28 July 2003)
  6435. Daniel (28 July)
  6436. - François Pons brought a patch that once again made curl deal with ftp and
  6437. "double slash" as indicating the root directory. In the RFC1738-fix of April
  6438. 30, that ability was removed (since it is not the "right" way). So, starting
  6439. now we can list the root dir of an ftp server both these ways:
  6440. curl ftp://server.com/%2f as well as
  6441. curl ftp://server.com//
  6442. Daniel (24 July)
  6443. - Henry Bland pointed out that we included sys/resource.h without good reason
  6444. in several source files. Without it included, QNX builds better...
  6445. - Andrés García updated the mingw makefiles.
  6446. Daniel (23 July)
  6447. - Tracy Boehrer experienced DNS cache problems and did some nice debugging
  6448. and tracking which made it easy for me to correct the problem and Tracy
  6449. could verify that it did cure the problem! When re-using a connection we
  6450. now make sure we don't re-use the 'connect_addr' struct.
  6451. - Daniel Kouril corrected the GSS-Negotiate code.
  6452. - Juan F. Codagnone provided fixes to allow curl to build fine on Windows
  6453. again.
  6454. Daniel (22 July)
  6455. - Edited the curl/curl.h include file to build on Windows properly.
  6456. Daniel (21 July)
  6457. - Moved the proxy credentials from the SessionHandle struct to the connectdata
  6458. struct, to make multiple proxy connections with differerent user names work.
  6459. - Adjusted the NTLM code to support proxy functionality.
  6460. - Made the krb4 stuff compile with the user+password fields moved.
  6461. Version 7.10.6-pre4 (21 July 2003)
  6462. Daniel (20 July)
  6463. - David Gardner pointed out in bug report 770755 that using the FTP command
  6464. CWD with a blank argument is a bad idea and I made libcurl skip empty path
  6465. segments starting now.
  6466. Daniel (18 July)
  6467. - Cris pointed out that my fix on July 16th didn't work fully. His pointing
  6468. out this (and his patch) also made me realize that we have a very similar
  6469. bug in the FTP connection re-use code. We must store a separate user and
  6470. password field for each connection we keep (at least for FTP and HTTP+NTLM
  6471. connections, so I made us do this unconditionally).
  6472. - Since NTLM authenticates connections instead of single requests, I had to
  6473. re-arrange how we store the NTLM data and I had to improve the test suite to
  6474. finally work properly with persistency to make the NTLM tests run fine
  6475. again. This also forced me to have to update lots of HTTP test cases.
  6476. Daniel (16 July)
  6477. - Cris Bailiff's bug report 768275 pointed out that using Basic auth with
  6478. wrong user+password caused an endless loop. Fixed now. He also found out that
  6479. we didn't properly authenticate connections with NTLM. Fixed too.
  6480. - Dan Winship provided fixes for the NTLM code.
  6481. Daniel (5 July)
  6482. - Doug Kaufman provided additional fixes for the DOS port.
  6483. Daniel (4 July)
  6484. - Rick Richardson pointed out that using setvbuf() to achieve non-buffering
  6485. on output is no-good for SCO Xenix and other unixes. We switched over to
  6486. using plain fflush() instead.
  6487. - Dan Grayson pointed out that we set the CURL_CA_BUNDLE variable wrongly in
  6488. the configure script, and I had to change some build stuff to make the new
  6489. way work.
  6490. - Peter Sylvester's patch was applied that introduces the following:
  6491. CURLOPT_SSL_CTX_FUNCTION to set a callback that gets called with the
  6492. OpenSSL's ssl_ctx pointer passed in and allow a callback to act on it. If
  6493. anything but CURLE_OK is returned, that will also be returned by libcurl
  6494. all the way back. If this function changes the CURLOPT_URL, libcurl will
  6495. detect this and instead go use the new URL.
  6496. CURLOPT_SSL_CTX_DATA is a pointer you set to get passed to the callback set
  6497. with CURLOPT_SSL_CTX_FUNCTION.
  6498. Daniel (1 July)
  6499. - David Byron provided a patch that allows a client to quit the test suite's
  6500. HTTP server.
  6501. - Gisle Vanem found and patched a lib handle leak in the ldap code.
  6502. Daniel (25 June)
  6503. - More NTLM-improvements. Less code. Smaller packets back and forth.
  6504. Daniel (23 June)
  6505. - Eric Glass provided us with a better doc on NTLM details, and I added more
  6506. comments and clarified the current code more. Using the new knowledge, we
  6507. should be able to make the NTLM stuff work even better.
  6508. Eric's original URL: http://davenport.sourceforge.net/ntlm.html
  6509. Version stored and provided at curl site: http://curl.haxx.se/rfc/ntlm.html
  6510. - Fixed the minor compile problems pre3 had if built without GSSAPI and/or
  6511. SSL.
  6512. Version 7.10.6-pre3 (19 June 2003)
  6513. Daniel (19 June)
  6514. - Made curl use curl_free() on memory returned by curl_getenv(), as this
  6515. should theoreticly make it possibly to build and run curl and libcurl with
  6516. different memory allocation schemes with no problems.
  6517. Daniel (18 June)
  6518. - Improved the mkhelp.pl a bit further to make a nicer hugehelp text and to
  6519. include a better comment in the top for the gzip compressed version.
  6520. Daniel (17 June)
  6521. - CURLOPT_HTTPAUTH is now a bitmask, in which you set which authentication
  6522. type(s) you want to use. If more than one is set, libcurl will use one of
  6523. the selected one and the one it considers is more secure. Test case 67 and
  6524. 68 (for NTLM) were fixed and we've reduced a round-trip for specific --ntlm
  6525. fetches, and test case 69 and 70 were added for testing authentication
  6526. "picking". --anyauth is the new command line tool option, and I also added
  6527. --basic for completeness (that's the default type).
  6528. - Fixed the runtests.pl script to use the info provided by the new curl -V
  6529. output.
  6530. - --enable-debug now sets the CURLDEBUG define instead of MALLOCDEBUG, as it
  6531. is meant to be a generic debug conditional.
  6532. - curl_version_info() can now return CURL_VERSION_DEBUG as a feature bit, to
  6533. indicate that the library was built with CURLDEBUG set.
  6534. - Ralph Mitchell found out that some web applications very badly uses white
  6535. spaces in Location: redirects, and apparently IE is a browser (the only
  6536. one?) that supports this abomination. Based on Ralph's patch, I added code
  6537. that now attempts to replace white spaces with the proper "%20" or "+".
  6538. Test case 40 and 42 were added to verify my changes.
  6539. - curl -V now also outputs a list of features the available library offers (if
  6540. any).
  6541. - The curl_version() string now includes "GSS" if libcurl is built with GSSAPI
  6542. support.
  6543. - David Orrell reported that libcurl still crashed when sending HUGE requests
  6544. over HTTPS... I fixed.
  6545. Version 7.10.6-pre2 (16 June 2003)
  6546. Daniel (16 June)
  6547. - curl_version_info() now returns bitmasked information weather NTLM and
  6548. GSSNEGOTIATE are supported, since it is doomed to vary on different
  6549. installations.
  6550. - I remade the HTTP Digest code to use the MD5-code provided by OpenSSL if
  6551. that is present, and only use our own MD5-code if it isn't.
  6552. Daniel (13 June)
  6553. - More NTLM help, fixes and patches from Cris Bailiff.
  6554. - Marty Kuhrt brought include fixes for making VMS builds warning-free.
  6555. Daniel (12 June)
  6556. - NTLM authentication works somewhat against the test servers provided by
  6557. Mathias Axelsson and Cris Bailiff. Use by setting CURLOPT_HTTPAUTH to
  6558. CURLAUTH_NTLM to libcurl, or --ntlm for the curl tool. Test case 67 and 68
  6559. were added for this. NTLM-support requires OpenSSL.
  6560. - Dan Fandrich provided a patch, that granted that gzip and libz are available
  6561. at build-time, compresses the hugehelp text in the curl command line and
  6562. uncompresses it at request. Saves some ~60K in the final output executable.
  6563. Daniel (11 June)
  6564. - Long day of fighting the NTLM demons.
  6565. Daniel (10 June)
  6566. - Modified how to set auth type to libcurl. Now use CURLOPT_HTTPAUTH instead,
  6567. and pick method. Supported ones currently are:
  6568. CURLAUTH_BASIC - default selection
  6569. CURLAUTH_DIGEST - formerly CURLOPT_HTTPDIGEST
  6570. CURLAUTH_GSSNEGOTIATE
  6571. - Daniel Kouril added HTTP GSS-Negotiate authentication support, as defined in
  6572. the IETF draft draft-brezak-spnego-http-04.txt. In use already by various
  6573. Microsoft web applications. --negotiate is the new family member. To take
  6574. advantage of this, you need one of these packages:
  6575. o Heimdal Kerberos5 http://www.pdc.kth.se/heimdal/heimdal.html
  6576. o GSSAPI from Globus http://www.globus.org/
  6577. o GSSAPI libraries from MIT Kerberos5 http://web.mit.edu/kerberos/www/
  6578. - A missing ending bracket (']') while doing URL globbing could lead to a
  6579. segfault. While fixing this, I also introduced better error reporting in the
  6580. globbing code. (All this is application code outside libcurl.)
  6581. Daniel (6 June)
  6582. - David Orrell found out that sending a huge GET request over HTTPS could
  6583. make libcurl fail and return an error code.
  6584. Daniel (2 June)
  6585. - Richard Bramante found out that "Content-Length: 0" was not properly used by
  6586. libcurl if the response-headers indicated that the connection would be
  6587. closed.
  6588. - David Byron's patch was applied, that makes the --progress-bar take the
  6589. local size into account when doing resumed downloads.
  6590. - Feedback from Serge Semashko made me change the error message returned when
  6591. CURLE_HTTP_RETURNED_ERROR is returned.
  6592. - Anonymous in bug report #745122 pointed out that we should really be using
  6593. SSL_CTX_set_options(... SSL_OP_ALL) to work around flaws in existing SSL
  6594. implementations.
  6595. Daniel (27 May)
  6596. - Andreas Ley and Rich Gray helped me point out that no version of HP-UX has
  6597. the sys/select.h header file so including it unconditionally in curl/multi.h
  6598. is not a good thing. Now we check for HPUX and avoid using that header on
  6599. such systems.
  6600. - Rudy Koento experienced problems with curl's recent habit of POSTing data in
  6601. two separate send() calls, first the headers and then the data. I've now
  6602. made a fix that for static and known content that is less than 100K in size,
  6603. everything is now sent in one single system call again. This is also better
  6604. for network performance reasons.
  6605. - I modified the main makefile to not build the test suite and a few other
  6606. unnecessary things by default. Now, the test suite is built when 'make test'
  6607. is run. This reduces build time for those who don't care for the test
  6608. suite, and it also reduces confusion for people using platforms where the
  6609. test suite build fails!
  6610. Daniel (26 May)
  6611. - Chris Lewis pointed out a flaw in the #ifdefs in curl/multi.h for Windows,
  6612. which is now corrected.
  6613. - Jis Joy found another flaw in the SOCK5 code, as libcurl treated the socks5
  6614. proxy a little too much like as if it was a http proxy.
  6615. Daniel (23 May)
  6616. - Ricardo Cadime found a socket leak when listing directories without
  6617. contents. Test cases 144 and 145 were added to verify the fix.
  6618. - Rudy Koento found yet another problem when a HTTP server returns only a
  6619. single-line of contents without any headers at all. libcurl then failed to
  6620. count the data, thus returning error 52 "no contents". Test case 66 was
  6621. added to verify that we now do right.
  6622. Version 7.10.6-pre1 (23 May 2003)
  6623. Daniel (23 May)
  6624. - Jis in bug report #741841, fixed a bug in the SOCKS5 proxy-using code.
  6625. Daniel (22 May)
  6626. - David Remahl set up a test-server for me providing Digest authentication,
  6627. and I wrote the first working code that support it. The test suite was
  6628. modified slightly as well to work better for it and --digest was added to
  6629. the command line options (and CURLOPT_HTTPDIGEST to the library)... RFC2617
  6630. has all the gory details.
  6631. Daniel (21 May)
  6632. - David Balazic pointed out that curl_unescape() didn't check that %-codes
  6633. were correctly followed by two hexadecimal digits when it unescape strings.
  6634. Now, we do the check and only %XX codes are unescaped if the X letters are
  6635. hexadecimals.
  6636. - Gisle Vanem made curl build with djgpp on DOS.
  6637. - Gisle Vanem improved the mkhelp.pl script to make a nicer manual that is
  6638. shown with curl -M.
  6639. Daniel (20 May)
  6640. - Gisle Vanem provided a fix that makes libcurl more conservative, not
  6641. expecting h_aliases of the hostent struct to always be non-NULL.
  6642. Daniel (19 May)
  6643. - As requested by Martin Michlmayr in Debian bug report #193630, libcurl now
  6644. supports user name and password in the proxy environment variables. Added
  6645. test case 63 to verify this.
  6646. Version 7.10.5 (19 May 2003)
  6647. Daniel (15 May)
  6648. - Changed the order for the in_addr_t testing, as 'unsigned long' seems to be
  6649. a very common type inet_addr() returns.
  6650. Daniel (14 May)
  6651. - George Comninos provided a fix that calls the progress meter when waiting
  6652. for FTP command responses take >1 second. It'll make applications more
  6653. "responsive" even when dealing with very slow ftp servers.
  6654. Daniel (12 May)
  6655. - George Comninos pointed out that libcurl uploads had two quirks:
  6656. o when using FTP PORT command, it used blocking sockets!
  6657. o it could loop a long time without doing progress meter updates
  6658. Both items are fixed now.
  6659. Daniel (9 May)
  6660. - Dan Fandrich changed CURLOPT_ENCODING to select all supported encodings if
  6661. set to "". This frees the application from having to know which encodings
  6662. the library supports.
  6663. - Dan Fandrich pointed out we had three unnecessary files in CVS that is
  6664. generated with libtoolize, so they're now removed and libtoolize is invoked
  6665. accordingly in the buildconf script.
  6666. - Avery Fay found out that the CURLOPT_INTERFACE way of first checking if the
  6667. given name is a network interface gave a real performance penalty on Linux,
  6668. so now we more appropriately first check if it is an IP number and if so
  6669. we don't check for a network interface with that name.
  6670. - CURLOPT_FTP_USE_EPRT added. Set this to FALSE to disable libcurl's attempts
  6671. to use EPRT and LPRT before the traditional PORT command. The command line
  6672. tool sets this option with '--disable-eprt'.
  6673. Version 7.10.5-pre2 (6 May 2003)
  6674. Daniel (6 May)
  6675. - Kevin Delafield reported another case where we didn't correctly check for
  6676. EAGAIN but only EWOULDBLOCK, which caused badness on HPUX.
  6677. Daniel (4 May)
  6678. - Ben Greear noticed that the check for 'writable argv' exited the configure
  6679. script when run for cross-compiling, which wasn't nice. Now it'll default to
  6680. no and output a warning about the fact that it was not checked for.
  6681. Daniel (2 May)
  6682. - Added test case 62 and fixed some more on the cookie sending with a custom
  6683. Host: header set.
  6684. Daniel (1 May)
  6685. - Andy Cedilnik fixed a few compiler warnings.
  6686. - Made the "SSL read error: 5" error message more verbose, by adding code that
  6687. queries the OpenSSL library to fill in the error buffer.
  6688. Daniel (30 Apr)
  6689. - Added sys/select.h include in the curl/multi.h file, after having been
  6690. reminded about this by Rich Gray.
  6691. - I made each test set its own server requirements, thus abandoning the
  6692. previous system where the test number implied what server(s) to use for a
  6693. specific test.
  6694. - David Balazic made curl more RFC1738-compliant for FTP URLs, by fixing so
  6695. that libcurl now uses one CWD command for each path part. A bunch of test
  6696. cases were fixed to work accordingly.
  6697. - Cookie fixes:
  6698. A. Save domains in jars like Mozilla does. It means all domains set in
  6699. Set-Cookie: headers are dot-prefixed.
  6700. B. Save and use the 'tailmatch' field in the Mozilla/Netscape cookie jars
  6701. (the second column).
  6702. C. Reject cookies using illegal domains in the Set-Cookie: line. Concerns
  6703. both domains with too few dots or domains that are outside the currently
  6704. operating server host's domain.
  6705. D. Set the path part by default to the one used in the request, if none was
  6706. set in the Set-Cookie line.
  6707. To make item C really good, I also made libcurl notice custom Host: headers
  6708. and extract the host name set in there and use that as the host name for the
  6709. site we're getting the cookies from. This allows user to specify a site's
  6710. IP-address, but still be able to receive and send its cookies properly if
  6711. you provide a valid Host: name for the site.
  6712. Daniel (29 Apr)
  6713. - Peter Kovacs provided a patch that makes the CURLINFO_CONNECT_TIME work fine
  6714. when using the multi interface (too).
  6715. Version 7.10.5-pre1 (23 Apr 2003)
  6716. Daniel (23 Apr)
  6717. - Upgraded to libtool 1.5.
  6718. Daniel (22 Apr)
  6719. - Peter Sylvester pointed out that curl_easy_setopt() will always (wrongly)
  6720. return CURLE_OK no matter what happens.
  6721. - Dan Fandrich fixed some gzip decompression bugs and flaws.
  6722. Daniel (16 Apr)
  6723. - Fixed minor typo in man page, reported in the Debian bug tracker.
  6724. Daniel (15 Apr)
  6725. - Fixed some FTP tests in the test suite that failed on my Solaris host, due
  6726. to the config.h not being included before the system headers. When done that
  6727. way, it did get a mixed sense of if big files are supported or not and then
  6728. stat() and fstat() (as used in test case 505) got confused and failed to
  6729. return a proper file size.
  6730. - Formposting a file using a .html suffix is now properly set to Content-Type: text/html.
  6731. Daniel (14 Apr)
  6732. - Fixed the SSL error handling to return proper SSL error messages again, they
  6733. broke in 7.10.4. I also attempt to track down CA cert problems and then
  6734. return the CURLE_SSL_CACERT error code.
  6735. - The curl tool now intercepts the CURLE_SSL_CACERT error code and displays
  6736. a fairly big and explanatory error message. Kevin Roth helped me out with
  6737. the wording.
  6738. Daniel (11 Apr)
  6739. - Nic Hines provided a second patch for gzip decompression, and fixed a bug
  6740. when deflate or gzip contents were downloaded using chunked encoding.
  6741. - Dan Fandrich made libcurl support automatic decompression of gzip contents
  6742. (as an addition to the previous deflate support).
  6743. - I made the CWD command during FTP session consider all 2xy codes to be OK
  6744. responses.
  6745. Daniel (10 Apr)
  6746. - Vlad Krupin fixed a URL parsing issue. URLs that were not using a slash
  6747. after the host name, but still had "?" and parameters appended, as in
  6748. "http://hostname.com?foobar=moo", were not properly parsed by libcurl.
  6749. Daniel (9 Apr)
  6750. - Made CURLOPT_TIMECONDITION work for FTP transfers, using the same syntax as
  6751. for HTTP. This then made -z work for ftp transfers too. Added test case 139
  6752. and 140 for verifying this.
  6753. - Getting the file date of an ftp file used the wrong time zone when
  6754. displayed. It is supposedly always GMT. Added test case 141 for this.
  6755. - Made the test suite's FTP server support MDTM.
  6756. - The default DEBUGFUNCTION, as enabled with CURLOPT_VERBOSE now outputs
  6757. CURLINFO_HEADER_IN data as well. The most notable effect from this is that
  6758. using curl -v, you get to see the incoming "headers" as well. This is
  6759. perhaps most useful when doing ftp.
  6760. Daniel (8 Apr)
  6761. - James Bursa fixed a flaw in the Content-Type extraction code, which missed
  6762. the first letter if no space followed the colon.
  6763. - Magnus Nilsson pointed out that share.c was missing in the MSVC project
  6764. file.
  6765. Daniel (6 Apr)
  6766. - Ryan Weaver provided a patch that makes the CA cert bundle not get installed
  6767. anymore when 'configure --without-ssl' has been used.
  6768. Daniel (4 Apr)
  6769. - Martijn Broenland found another cases where a server application didn't
  6770. like the boundary string used by curl when doing a multi-part/formpost. We
  6771. modified the boundary string to look like the one IE uses, as this is
  6772. probably gonna make curl work with more applications.
  6773. Daniel (3 Apr)
  6774. - Kevin Roth reported that a bunch of tests fails on cygwin. One set fails
  6775. when using perl 5.8 (and they run fine with perl 5.6), and another set
  6776. failed because of an artifact in the test suite's FTP server that I
  6777. corrected. It turned out the FTP server code was still having a file opened
  6778. while the main test script removed it and invoked the HTTP server that
  6779. attempted to create the same file name of the file the FTP server kept open.
  6780. This operation works fine on unix, but not on cygwin.
  6781. Version 7.10.4 (2 Apr 2003)
  6782. Daniel (1 Apr)
  6783. - Added test case 505 to exercise FTP upload with rename done with libcurl,
  6784. and for that I had to extend the test suite's FTP server to deal with the
  6785. RNFR and RNTO commands.
  6786. Daniel (31 Mar)
  6787. - Even more SSL config check modifications after Richard's testing.
  6788. Version 7.10.4-pre6 (31 Mar 2003)
  6789. Daniel (31 Mar)
  6790. - More fixes for the SSL session ID cache checks when SSL configs are changed
  6791. between connections. Based on tests and talks with Richard Bramante.
  6792. - Guillaume Cottenceau provided a patch that added CURLOPT_UNRESTRICTED_AUTH.
  6793. When enabled, it will prevent libcurl from limiting to which host it sends
  6794. user+password to when following locations. By default, libcurl only sends
  6795. name and password to the original host used in the first URL, but with this
  6796. option set it will send the auth info to all hosts it follows location
  6797. headers to. The new tool command line option for this is named
  6798. "--location-trusted".
  6799. - Frankie Fong reported a problem with libcurl if you re-used an easy handle
  6800. with a proxy, and you first made a https:// connection to a host and then
  6801. switched to a http:// one to the same host. libcurl would then wrongly re-use
  6802. the same connection for it and fail to get the second URL properly
  6803. Daniel (29 Mar)
  6804. - Dan Shearer's fix that makes curl complain if invoked with nothing but "curl
  6805. -O" was applied.
  6806. Daniel (26 Mar)
  6807. - Bryan Kemp was friendly enough to lend me an account on his Redhat 9 box and
  6808. I could fix the configure problems on redhat 8.1 and 9 in no time thanks to
  6809. this. Thanks a bunch Bryan!
  6810. Daniel (25 Mar)
  6811. - Renamed configure.in to configure.ac
  6812. Version 7.10.4-pre5 (25 Mar 2003)
  6813. Daniel (25 Mar)
  6814. - Richard Bramante provided a fix for a handle re-use problem seen when you
  6815. change options on an SSL-enabled connection between requests. Previously,
  6816. changing peer verification or host verification and similar things was not
  6817. taken into account when a connection were checked for re-use and thus
  6818. enabling stricter check between requests on a re-used connection made no
  6819. difference and the connection would thus be used erroneously.
  6820. Daniel (24 Mar)
  6821. - Götz Babin-Ebell pointed out that the ca-bundle.crt file contained a
  6822. certificate from Trustcenter that was a demo certificate only that was never
  6823. intended to be part of a CA bundle.
  6824. Daniel (21 Mar)
  6825. - Life is a mystery. Within a time period of 17 hours, Tim Pope and Michael
  6826. Churchill filed one bug report each, both identifying problems with a second
  6827. transfer when doing persistent transfers re-using a connection. Tim's one is
  6828. #706624, labeled "Multiple uploads per handle fail" and Michael's #707003
  6829. "Does not send Authorization: header when reusing connection". I could track
  6830. both down to the same piece of logic and it turned out libcurl was not using
  6831. new settings properly when re-using an existing connection. This concerned
  6832. both uploading and downloading and involved exactly those pieces these two
  6833. reports identified. This code has been this faulty since the day I
  6834. introduced persistent connection support in libcurl, more than 2 years ago.
  6835. Daniel (20 Mar 2003)
  6836. - Five year anniversary. Today five years ago, the first ever curl release saw
  6837. the light of day.
  6838. Daniel (17 Mar)
  6839. - Andy Cedilnik corrected flaws in some libcurl example-usage sources.
  6840. Daniel (16 Mar)
  6841. - Juan F. Codagnone reported that the fix from March 2nd was incomplete.
  6842. - Added code to the configure.in to check for select() argument types. I've
  6843. not made any code use the results just yet though.
  6844. Daniel (15 Mar)
  6845. - Gisle Vanem provided two patches to build better on Windows.
  6846. - Adjusted the test suite code to better make sure that the server(s) required
  6847. for a specific test is properly started before the test case is attempted.
  6848. Many tests now run a lot faster than before.
  6849. Daniel (14 Mar)
  6850. - Another configure.in adjustment made the configure detect functions properly
  6851. on HPUX now.
  6852. Daniel (13 Mar)
  6853. - Philippe Raoult fixed pre4-compile quirks for FreeBSD.
  6854. Version 7.10.4-pre4 (13 Mar 2003)
  6855. Daniel (13 Mar)
  6856. - Added a backup-check for functions that aren't found by AC_CHECK_FUNCS()
  6857. as I believe some checks on HPUX need this. At least some of the info given
  6858. to us by Rick Jones seemed to indicate this.
  6859. Daniel (12 Mar)
  6860. - Thomas Tonino found out that if you used the curl tool to do PUT operations
  6861. as in 'curl www.foo.com/dir/ -T file' and the file name included for example
  6862. space or other characters that don't belong in URLs, curl did not properly
  6863. URL encode them before using them in the URL.
  6864. - Added an option to configure called --enable-libgcc that simply adds -lgcc
  6865. to the LIBS variable, as this seems to be a common problem.
  6866. - I modified the configure.in file, so that the headers are now checked in an
  6867. order of "viality". We must also make sure to use the "default headers"
  6868. parameter to AC_CHECK_HEADERS() so that headers are checked with the proper
  6869. prerequisites included (i.e all the major and generally important header
  6870. files are included there by default). This might be what we need for various
  6871. Sun, HP, AIX and Tru64 systems to behave good again on the header check
  6872. front.
  6873. - Rick Jones pointed out a few compiler warnings on HP-UX that I addressed.
  6874. - I made the configure --help output nicer by using AC_HELP_STRING() a lot
  6875. more.
  6876. Daniel (11 Mar)
  6877. - Christophe Demory fixed the socket sending code to work better on HP-UX
  6878. when sending data to a socket that would block. It then returns EAGAIN, not
  6879. EWOULDBLOCK.
  6880. - Richard Gorton improved the seeding function for systems without a good
  6881. and reliable random source.
  6882. - Richard Gorton fixed a few warnings that popped up when you built curl
  6883. using the Sun compiler on a 64bit SPARC platform.
  6884. - Martin C. Martin fixed a case where a connect failure using the multi
  6885. interface didn't produce a human readable error string.
  6886. Daniel (10 Mar)
  6887. - Reverted ltmain.sh back to libtool 1.4.2 status again, as the 1.4.3 version
  6888. broke the build on numerous platforms. It seems that libtool 1.4.3 puts some
  6889. requirements on what versions of the other tools (autoconf + automake) that
  6890. I am not familiar with and thus I couldn't fulfill at this point.
  6891. Yes, this is more than mildly frustrating.
  6892. Daniel (7 Mar)
  6893. - Run libtoolize version 1.4.3.
  6894. Version 7.10.4-pre3 (4 Mar 2003)
  6895. Daniel (3 Mar)
  6896. - Added share.obj to the VC6 and Borland libcurl makefiles.
  6897. - Troels Walsted Hansen found and investigated a problem with libcurl on AIX,
  6898. presumably only on 4.3 or later. gethostbyname_r() is not returning data
  6899. that is possible to "keep" and cache the way libcurl does. But instead these
  6900. versions of AIX uses a gethostbyname() that works thread-safely we can
  6901. instead use the ordinary gethostbyname() and our pack_hostent() approach to
  6902. achieve what we want. The configure script now attempts to detect AIX 4.3 or
  6903. later to adjust for this.
  6904. Daniel (2 Mar)
  6905. - Juan F. Codagnone found a problem introduced in 7.10.3 when you first did a
  6906. POST and then back to a GET using the same easy handle.
  6907. Daniel (28 Feb)
  6908. - Removed the strequal and strnequal defines from curl/curl.h header. They
  6909. were never meant for the public header anyway. Philippe Raoult brought it
  6910. up.
  6911. - James Bursa fixed the RISC OS build.
  6912. Daniel (27 Feb)
  6913. - Avery Fay pointed out the very misleading curl_multi_info_read man page, and
  6914. I updated it to become more accurate.
  6915. - Salvatore Sorrentino found a problem with FTP downloading that turned out to
  6916. be his FTP server returning size zero (0 bytes) when SIZE was used on a file
  6917. while being in BINARY mode. We now make a second check for the actual size
  6918. by scanning the RETR reply anyway, even if the SIZE command returned 0.
  6919. Daniel (26 Feb)
  6920. - Kyle Sallee reported a case where he would do a transfer that didn't update
  6921. the progress meter properly. It turned out to be a case where libcurl would
  6922. loop a little too eagerly in the transfer loop, which isn't really good for
  6923. the APIs, especially not the multi API.
  6924. Version 7.10.4-pre2 (24 Feb 2003)
  6925. Daniel (24 Feb)
  6926. - Kjetil Jacobsen found out that setting CURLOPT_MAXCONNECTS to a value higher
  6927. than 5 could cause a segfault.
  6928. - I believe I fixed the 'Expect: 100-continue' behavior that has been broken
  6929. for a while (I think since my change dated Dec 10 2002). When this header is
  6930. used, libcurl should wait for a HTTP 100 (or timeout) before sending the
  6931. post/put data.
  6932. Daniel (14 Feb)
  6933. - Matthew Clarke provided some info what to modify to make curl build
  6934. flawlessly on AIX 3.2.5.
  6935. - Martin C. Martin found and fixed a problem in the multi interface when
  6936. running on Windows and trying to connect to a port without a listener.
  6937. Daniel (13 Feb)
  6938. - Christopher R. Palmer fixed Curl_base64_encode() to deal with zeroes in the
  6939. data to encode.
  6940. Daniel (4 Feb)
  6941. - Jean-Philippe added the first code that enables the 'share' system. This
  6942. should now enable sharing of DNS data between two curl easy handles.
  6943. - Incorporated Nico Baggus' fixes to again compile flawlessly on VMS.
  6944. - James Bursa corrected a bad comment in the public include file curl/multi.h
  6945. - Peter Forret reported one of those error:00000000 cases in libcurl again
  6946. when connecting to a HTTPS site, and this time I did discover some oddities
  6947. in how curl reports SSL errors back. It could miss showing the actual error.
  6948. Version 7.10.4-pre1 (3 Feb 2003)
  6949. Daniel (3 Feb)
  6950. - Removed things in the docs saying capath doesn't work on Windows, as Julian
  6951. Noble told us it works fine.
  6952. Daniel (31 Jan)
  6953. - Kevin Roth fixed the zlib build stuff in the Mingw32 makefile.
  6954. Daniel (30 Jan)
  6955. - Kevin Roth found out that curl on Windows always checked for the CA cert
  6956. bundle using the environment variable and the path scan, even though
  6957. -k/--insecure was used.
  6958. - Hamish Mackenzie pointed out that curl only did strict host name verifying
  6959. if capath or cainfo was used. Now it'll always do it unless -k / --insecure
  6960. is used!
  6961. - Pavel Cenek pointed out that the Content-Type extraction was done wrongly
  6962. as the full string was not fetched. Added test case 57 to verify that curl
  6963. does it right now.
  6964. Daniel (29 Jan)
  6965. - Jamie Wilkinson provided a patch that now makes curl attempt to clear out
  6966. "sensitive" command line arguments so that they don't appear in ps outputs
  6967. (only on platforms that allow writing to argv[]).
  6968. - John McGowan found out that the DEBUGFUNCTION could be called with bad
  6969. arguments and thus cause the --trace outputs to go wrong.
  6970. - Removed all the emacs local variables from all files. Mats Lidell provided
  6971. the new sample.emacs file (for a sample of what to include in your .emacs)
  6972. and the curl-style.el that sets a better c-style for editing curl sources.
  6973. - Dave Halbakken found a problem with FTP downloads that could accidently
  6974. return CURLE_PARTIAL_FILE when curl_easy_perform() was called with NOBODY
  6975. set TRUE.
  6976. Daniel (27 Jan)
  6977. - The fopen.c example was flawed as Nick Humfrey noticed, and I fixed it to
  6978. work again.
  6979. Daniel (24 Jan)
  6980. - Bertrand Demiddelaer found and fixed a memory leak (the content-type string)
  6981. when following locations.
  6982. Daniel (22 Jan 2003)
  6983. - Ian Wilkes and Legoff Vincent both independently provided fixes for making
  6984. curl/multi.h work properly when compiled with a C++ compiler.
  6985. Daniel (20 Jan 2003)
  6986. - Fixed 'buildconf' to check version number of the required tools before
  6987. they're actually used.
  6988. - Wrote 'testcurl.sh', a script targeted for automatic and distributed curl
  6989. tests on various platforms.
  6990. - David Thiel pointed out that the .netrc file was not being dealt with
  6991. properly anymore. I broke this in the password prompting "fix".
  6992. - Markus F.X.J. Oberhumer patched libcurl to allocate the scratch buffer only
  6993. on demand and thus we save 32KB in each curl handle that don't use that
  6994. buffer. This need appeared when some people started using thousands of
  6995. simultaneous curl handles... :-)
  6996. Daniel (16 Jan 2003)
  6997. - Markus Oberhumer fixed curl-config --cflags when the includedir was not
  6998. /usr/include.
  6999. - Markus Oberhumer fixed CURLINFO_PRIVATE to properly return NULL if it was
  7000. set to NULL!
  7001. Version 7.10.3 (14 Jan 2003)
  7002. Daniel (10 Jan 2003)
  7003. - Steve Oliphant pointed out that test case 105 did not work anymore and this
  7004. was due to a missing fix for the password prompting.
  7005. Version 7.10.3-pre6 (10 Jan 2003)
  7006. Daniel (9 Jan 2003)
  7007. - Bryan Kemp pointed out that curl -u could not provide a blank password
  7008. without prompting the user. It can now. -u username: makes the password
  7009. empty, while -u username makes curl prompt the user for a password.
  7010. - Kjetil Jacobsen found a remaining connect problem in the multi interface on
  7011. ipv4 systems (Linux only?), that I fixed and Kjetil verified that it fixed
  7012. his problems.
  7013. - memanalyze.pl now reads a file name from the command line, and no longer
  7014. takes the data on stdin as before.
  7015. Version 7.10.3-pre5 (9 Jan 2003)
  7016. Daniel (9 Jan 2003)
  7017. - Fixed tests/memanalyze.pl to work with file names that contain colons (as on
  7018. Windows).
  7019. - Kjetil Jacobsen quickly pointed out that lib/share.h was missing...
  7020. Version 7.10.3-pre4 (9 Jan 2003)
  7021. Daniel (9 Jan 2003)
  7022. - Updated lib/share.c quite a bit to match the design document at
  7023. http://curl.haxx.se/dev/sharing.txt a lot more.
  7024. I'll try to update the document soonish. share.c is still not actually used
  7025. by libcurl, but the API is slowly getting there and we can start
  7026. implementing code that takes advantage of this system.
  7027. Daniel (8 Jan 2003)
  7028. - Updated share stuff in curl/curl.h, including data types, structs and
  7029. function prototypes. The corresponding files in lib/ were also modified
  7030. of course to remain compilable. Based on input from Jean-Philippe and also
  7031. to make it more in line with the design document.
  7032. - Jean-Philippe Barrette-LaPierre patched a very trivial memory leak in
  7033. curl_escape() that would happen when realloc() returns NULL...
  7034. - Matthew Blain provided feedback to make the --create-dirs stuff build
  7035. properly on Windows.
  7036. - Fixed the #include in tests/libtest/first.c as Legoff Vincent pointed out.
  7037. Daniel (7 Jan 2003)
  7038. - Philippe Raoult provided a patch that now makes libcurl properly support
  7039. wildcard checks for certificate names.
  7040. - Simon Liu added CURLOPT_HTTP200ALIASES, to let an application set other
  7041. strings recognized as "HTTP 200" to allow http-like protocols to get
  7042. downloaded fine by curl.
  7043. - Now using autoconf 2.57 and automake 1.7.2
  7044. - Doing "curl -I ftp://domain/non-existing-file" still outputed a date!
  7045. Wayne Haigh reported.
  7046. - The error message is now written properly with a newline in the --trace
  7047. file.
  7048. Daniel (6 Jan 2003)
  7049. - Sterling Hughes fixed a possible bug: previously, if you called
  7050. curl_easy_perform and then set the global dns cache, the global cache
  7051. wouldn't be used. Pointed out by Jean-Philippe Barrette-LaPierre.
  7052. - Matthew Blain's fixed the VC6 libcurl makefile to include better debug data
  7053. on debug builds.
  7054. Daniel (27 Dec 2002)
  7055. - Philippe Raoult reported a bug with HTTPS connections which I evidently
  7056. added in my 19 dec fix. I corrected it.
  7057. Daniel (20 Dec)
  7058. - Idea from the Debian latest patch: use AM_MAINTAINER_MODE in the configure
  7059. script to make the default makefile less confusing "to the casual
  7060. installer".
  7061. Version 7.10.3-pre3 (20 Dec)
  7062. Daniel (19 Dec)
  7063. - Matthew Blain patched the Curl_base64_decode() function.
  7064. - Evan Jordan reported in bug report #653022 that the SSL_read() usage was
  7065. wrong, and it certainly was. It could lead to curl using too much CPU due to
  7066. a stupid loop.
  7067. Daniel (18 Dec)
  7068. - As suggested by Margus Freudenthal, CURLE_HTTP_NOT_FOUND was renamed to
  7069. CURLE_HTTP_RETURNED_ERROR since it is returned on any >= 400 code when
  7070. CURLOPT_FAILONERROR is set.
  7071. Daniel (17 Dec)
  7072. - Bug reported #651464, reported by Christopher Palmer, provided an example
  7073. source code using the multi interface that hang when trying to connect to a
  7074. proxy on a localhost port where no proxy was listening. This bug was not
  7075. repeatable on libcurls that were IPv6-enabled.
  7076. Daniel (16 Dec)
  7077. - Christopher Palmer also noticed what Vojtech Janota already was
  7078. experiencing: The attempted name resolve fix for glibc 2.2.93 caused libcurl
  7079. to crash when used on some older glibc versions. The problem is of course
  7080. the silliness of the 2.2.93. I committed a fix that hopefully should make
  7081. the binary run fine on either one of the versions, even though the solution
  7082. is not as nice as I'd like it to be.
  7083. Daniel (13 Dec)
  7084. - Bug report #651460 by Christopher R. Palmer showed that when using libcurl
  7085. to for example go over a proxy on localhost, it would attempt to connect
  7086. through the proxy TWICE.
  7087. I added test case 503 with which I managed to repeat this problem and I
  7088. fixed the code to not re-attempt any connects (which also made it a nicer
  7089. fix for the #650941 bug mentioned below).
  7090. The sws server was extended to deal with CONNECT in order to make test
  7091. case 503 do good.
  7092. - Evan Jordan posted bug report #650989 about a memory leak in the public key
  7093. retrieving code. He provided a suggested fix and I merely applied it!
  7094. - Bug report #650941, posted by Christopher R. Palmer identified a problem
  7095. with the multi interface and getting file:// URLs. This was now fixed and
  7096. test case 502 was added to verify this.
  7097. Daniel (12 Dec)
  7098. - Test case 500 and 501 are the first ever libcurl test cases that run.
  7099. - Made "configure --enable-debug" cut off all -O* options to the compiler
  7100. - Finally fixed the test suite's ftp server so that test case 402 doesn't
  7101. cause the following test case to fail anymore!
  7102. Daniel (11 Dec)
  7103. - CURL_MAX_WRITE_SIZE is now decreased to 16KB since it makes the Windows
  7104. version perform uploads much faster!!! RBramante did lots of research on
  7105. this topic.
  7106. - Fixed the #include in curl/curl.h to include the other files outside the
  7107. extern "C" scope.
  7108. Daniel (10 Dec)
  7109. - Moved around and added more logic:
  7110. First, POST data is never sent as part of the request headers in the http.c
  7111. code. It is always sent the "normal" read callback then send() way. This now
  7112. enables a plain HTTP POST to be sent chunked if we want to. This also
  7113. reduces the risk of having very big POSTs causing problems.
  7114. Further, sending off the initial HTTP request is not done using a loop
  7115. anymore. If it wasn't all sent off in the first send(), the rest of the
  7116. request is sent off in the normal transfer select() loop. This makes several
  7117. things possible, but mainly it makes libcurl block less when used from the
  7118. multi interface and it also reduces the risk of problems with issuing very
  7119. large requests.
  7120. Daniel (9 Dec)
  7121. - Moved the read callback pointer and data within the structs to a more
  7122. suitable place. This in preparation for a better HTTP-request sending code
  7123. without (a silly) loop.
  7124. - The Dodds fix seems not to work.
  7125. - Vojtech Janota tests proved that the resolve fix from oct 21st is not good
  7126. enough since obviously older glibcs might return EAGAIN without this meaning
  7127. that the buffer was too small.
  7128. - [the other day] Made libcurl loop on recv() and send() now until done, and
  7129. then get back to select(). Previously it went back to select() more often
  7130. which really was a slight overhead. This was due to the reported performance
  7131. problems on HTTP PUT on Windows. I couldn't see any notable difference on
  7132. Linux...
  7133. Version 7.10.3-pre2 (4 Dec 2002)
  7134. Daniel (4 Dec 2002)
  7135. - Lots of work with Malcolm Dodds made me add a temporary code fix that now
  7136. shortens the timeout waiting for the 226 or 250 line after a completed
  7137. FTP transfer.
  7138. If no data is received within 60 seconds, this is taken as a sign of a dead
  7139. control connection and we bail out.
  7140. Daniel (3 Dec 2002)
  7141. - Ralph's bug report #644841 identified a problem in which curl returned a
  7142. timeout error code when in fact the problem was not a timeout. The proper
  7143. error should now be propagated better when they're detected in the FTP
  7144. response reading function.
  7145. - Updated the Borland Makefiles.
  7146. Daniel (2 Dec 2002)
  7147. - Nicolas Berloquin provided a patch that introduced --create-dirs to the
  7148. command line tool. When used in combination with -o, it lets curl create
  7149. [non-existing] directories used in -o, suitably used with #-combinations
  7150. such as:
  7151. curl "www.images.com/{flowers,cities,parks,mountains}/pic_[1-100].jpg \
  7152. -o "dir_#1/pic#2.jpg" --create-dirs
  7153. Version 7.10.3-pre1
  7154. Daniel (28 Nov 2002)
  7155. - I visited Lars Nordgren and had a go with his problem, which lead me to
  7156. implement this fix. If libcurl detects the added custom header
  7157. "Transfer-Encoding: chunked", it will now enable a chunked transfer.
  7158. Also, chunked transfer didn't quite work before but seems to do so now.
  7159. - Kjetil Jacobsen pointed out that ./configure --disable-ipv6 --without-zlib
  7160. didn't work on any platform...
  7161. Daniel (26 Nov 2002)
  7162. - Fixed a bad addrinfo free in the hostip.c code, hardly exposed anywhere
  7163. - Dan Becker found and fixed a minor memory leak on persistent connnections
  7164. using CURLOPT_USERPWD.
  7165. Daniel (22 Nov 2002)
  7166. - Based on Ralph Mitchell's excellent analysis I found a bug in the test suite
  7167. web server (sws) which now lets test case 306 run fine even in combination
  7168. with the other test cases.
  7169. - Juan Ignacio Hervás found a crash in the verbose connect message that is
  7170. used on persistent connections. This bug was added in 7.10.2 due to the
  7171. rearranged name resolve code.
  7172. Daniel (20 Nov 2002)
  7173. - Kjetil Jacobsen provided a patch that introduces:
  7174. CURLOPT_PRIVATE stores a private pointer in the curl handle.
  7175. CURLINFO_PRIVATE retrieves the private pointer from the curl handle.
  7176. - Karol Pietrzak pointed out how curl-config --cflags didn't output a good
  7177. include dir so I've removed that for now.
  7178. Version 7.10.2 (18 Nov 2002)
  7179. Daniel (11 Nov 2002)
  7180. - Dave Halbakken added curl_version_info to lib/libcurl.def to make libcurl
  7181. properly build with MSVC on Windows.
  7182. Daniel (8 Nov 2002)
  7183. - Doing HTTP PUT without a specified file size now makes libcurl use
  7184. Transfer-Encoding: chunked.
  7185. Daniel (7 Nov 2002)
  7186. - Bug report #634625 identified how curl returned timeout immediately when
  7187. CURLOPT_CONNECTTIMEOUT was used and provided a fix.
  7188. Version 7.10.2-pre4 (6 Nov 2002)
  7189. Daniel (5 Nov 2002)
  7190. - Lehel Bernadt found out and fixed. libcurl sent error message to the debug
  7191. output when it stored the error message.
  7192. - Avery Fay found some problems with the DNS cache (when the cache time was
  7193. set to 0 we got a memory leak, but when the leak was fixed he got a crash
  7194. when he used the CURLOPT_INTERFACE with that) that had me do some real
  7195. restructuring so that we now have a reference counter in the dns cache
  7196. entries to prevent an entry to get flushed while still actually in use.
  7197. I also detected that we previously didn't update the time stamp when we
  7198. extracted an entry from the cache so that must've been a reason for some
  7199. very weird dns cache bugs.
  7200. Version 7.10.2-pre3
  7201. Daniel (31 Oct 2002)
  7202. - Downgraded automake to 1.6.3 in an attempt to fix cygwin problems. (It
  7203. turned out this didn't help though.)
  7204. - Disable the DNS cache (by setting the timeout to 0) made libcurl leak
  7205. memory. Avery Fay brought the example code that proved this.
  7206. Version 7.10.2-pre2
  7207. Daniel (28 Oct 2002)
  7208. - Upgraded to autoconf 2.54 and automake 1.7 on the release-build host.
  7209. - Kevin Roth made the command line tool check for a CURL_CA_BUNDLE environment
  7210. variable (if --cacert isn't used) and if not set, the Windows version will
  7211. check for a file named "curl-ca-bundle.crt" in the current directory or the
  7212. directory where curl is located. That file is then used as CA root cert
  7213. bundle.
  7214. - Avery Fay pointed out that curl's configure scrip didn't get right if you
  7215. used autoconf newer than 2.52. This was due to some badly quoted code.
  7216. Version 7.10.2-pre1
  7217. Daniel (23 Oct 2002)
  7218. - Emiliano Ida confirmed that we now build properly with the Borland C++
  7219. compiler too. We needed yet another fix for the ISO cpp check in the curl.h
  7220. header file.
  7221. - Yet another fix was needed to get the HTTP download without headers to work.
  7222. This time it was needed if the first "believed header" was read all in the
  7223. first read. Test 306 has not run properly since the 11th october fix.
  7224. Daniel (21 Oct 2002)
  7225. - Zvi Har'El pointed out a problem with curl's name resolving on Redhat 8
  7226. machines (running IPv6 disabled). Mats Lidell let me use an account on his
  7227. machine and I could verify that gethostbyname_r() has been changed to return
  7228. EAGAIN instead of ERANGE when the given buffer size is too small. This is
  7229. glibc 2.2.93.
  7230. - Albert Chin helped me get the -no-undefined option corrected in
  7231. lib/Makefile.am since Cygwin builds want it there while Solaris builds don't
  7232. want it present. Kevin Roth helped me try it out on cygwin.
  7233. - Nikita Schmidt provided a bug fix for a FOLLOWLOCATION bug introduced when
  7234. the ../ support got in (7.10.1).
  7235. Daniel (18 Oct 2002)
  7236. - Fabrizio Ammollo pointed out a remaining problem with FOLLOWLOCATION in
  7237. the multi interface.
  7238. Daniel (17 Oct 2002)
  7239. - Richard Cooper's experimenting proved that -j (CURLOPT_COOKIESESSION) didn't
  7240. work quite as supposed. You needed to set it *before* you use
  7241. CURLOPT_COOKIEFILE, and we dont' want that kind of dependencies.
  7242. Daniel (15 Oct 2002)
  7243. - Andrés García provided corrections for erratas in four libcurl man pages.
  7244. Daniel (13 Oct 2002)
  7245. - Starting now, we generate and include PDF versions of all the docs in the
  7246. release archives.
  7247. Daniel (12 Oct 2002)
  7248. - Trying to connect to a host on a bad port number caused the multi interface
  7249. to never return failure and it appeared to keep on trying forever (it just
  7250. didn't do anything).
  7251. Daniel (11 Oct 2002)
  7252. - Downloading HTTP without headers didn't work 100%, some of the initial data
  7253. got written twice. Kevin Roth reported.
  7254. - Kevin Roth found out the "config file" parser in the client code could
  7255. segfault, like if DOS newlines were used.
  7256. Version 7.10.1 (11 Oct 2002)
  7257. Daniel (10 Oct 2002)
  7258. - Jeff Lawson fixed a few problems with connection re-use that remained when
  7259. you set CURLOPT_PROXY to "".
  7260. Daniel (9 Oct 2002)
  7261. - Craig Davison found a terrible flaw and Cris Bailiff helped out in the
  7262. search. Getting HTTP data from servers when the headers are split up in
  7263. multiple reads, could cause junk data to get inserted among the saved
  7264. headers. This only concerns HTTP(S) headers.
  7265. Daniel (8 Oct 2002)
  7266. - Vincent Penquerc'h gave us the good suggestion that when the ERRRORBUFFER
  7267. is set internally, the error text is sent to the debug function as well.
  7268. - I fixed the telnet code to timeout properly as the option tells it to. On
  7269. non-windows platforms.
  7270. Daniel (7 Oct 2002)
  7271. - John Crow pointed out that libcurl-the-guide wasn't included in the release
  7272. tarball!
  7273. - Kevin Roth pointed out that make install didn't do right if build outside
  7274. the source tree (ca-bundle wise).
  7275. - FOLLOWLOCATION bugfix for the multi interface
  7276. Daniel (4 Oct 2002)
  7277. - Kevin Roth got problems with his cygwin build with -no-undefined was not
  7278. present in lib/Makefile.am so I put it back in there again. The poor one who
  7279. needs to remove it again must write a configure script to detect that need.
  7280. - Ralph Mitchell pointed out that curl was a bit naive and didn't deal with ./
  7281. or ../ stuff in the string passed back in a Location: header when following
  7282. locations.
  7283. - Albert Chin helped me to work out a better configure.in check for zlib, and
  7284. both --without-zlib and -with-zlib seem to work rather well right now.
  7285. - Zvi Har'El improvied the OpenSSL ENGINE check in the configure script to
  7286. become more accurate.
  7287. Daniel (1 Oct 2002)
  7288. - Detlef Schmier pointed out the lack of a --without-libz option to configure,
  7289. so I added one.
  7290. Version 7.10 (1 Oct 2002)
  7291. Daniel (30 Sep 2002)
  7292. - Modified the curl_version_info() proto and returned struct once again, and
  7293. updated the man page accordingly.
  7294. - Cris Bailiff found out that the pre-releases crashed on name lookups on
  7295. names such as "a:" or "baz:" (on Linux versions not being ipv6-enabled) due
  7296. to some weird return codes from gethostbyname_r(). I'll blame the complete
  7297. lack of docs in that department. Cris provided a fix, which I modified only
  7298. slightly.
  7299. Daniel (27 Sep 2002)
  7300. - After a suggestion from Christian Kurz to Debian curl package maintainer
  7301. Domenico Andreoli, I made it possible to override the proxy environment
  7302. variables better. Now, by setting -x "" you can explicitly tell libcurl to
  7303. not use a proxy, no matter whan the environment variables say.
  7304. Version 7.10-pre4
  7305. Daniel (26 Sep 2002)
  7306. - Extended curl_version_info() more and wrote a man page for it.
  7307. Daniel (25 Sep 2002)
  7308. - libcurl could leak memory when downloading multiple files using http ranges,
  7309. reported and fixed by Jean-Luc Guevel.
  7310. - Walter J. Mack provided code and docs for the new curl_free() function that
  7311. shall be used to free memory that is allocated by libcurl and returned back
  7312. to the application, as curl_escape() and curl_unescape() do.
  7313. - Yarram Sunil pointed out a flaw in the multi interface where a failed
  7314. connection didn't close down properly and thus a second transfer using the
  7315. same handle failed.
  7316. - Andrés García fixed a flaw that made (among other things) dict-fetches
  7317. return a random value.
  7318. Daniel (24 Sep 2002)
  7319. - Wez Furlong brought his initial patch that introduced curl_version_info().
  7320. We might need to tweak it somewhat before release.
  7321. Daniel (20 Sep 2002)
  7322. - Craig Markwardt fixed another Tru64 IP resolve problem.
  7323. Daniel (19 Sep 2002)
  7324. - Dolbneff A.V and Spiridonoff A.V made the file:// code work with resumes
  7325. in the same style other code does.
  7326. - Ilguiz Latypov fixed a flaw in the client code when fetching multiple URLs
  7327. and -C - was used. The first file's resume position was then accidentally
  7328. reused on all the other files too.
  7329. Daniel (18 Sep 2002)
  7330. - The curl_easy_setopt.3 man page was greatly modified and the options have
  7331. now been grouped in logical groups so that it should be somewhat easier to
  7332. read it and find things you search for.
  7333. Daniel (13 Sep 2002)
  7334. - Kevin Roth pinpointed a scary flaw in libcurl, when the HTTP server doesn't
  7335. send any headers back, only raw content. Right, that is a violation of the
  7336. standard but still happens at times and we need to deal with it. Test case
  7337. 306 was added to verify that we do right now.
  7338. Version 7.10-pre3
  7339. Daniel (11 Sep 2002)
  7340. - Lukasz Czekierda found out that curl didn't send a correct HTTP Host: header
  7341. when you specified the URL with an IPv6 IP-address.
  7342. Daniel (4 Sep 2002)
  7343. - Sven Neuhaus made --silent being acknowledged even when multiple URLs
  7344. were used. It used to output "[1/2]: http://host/a.html.de --> a.html.d" etc
  7345. even when told to shut up.
  7346. Daniel (3 Sep 2002)
  7347. - Updated all source code headers to use MIT-license references only, and
  7348. point to the COPYING file and the http://curl.haxx.se/docs/copyright.html
  7349. URL. I've cut out all references to MPL that I could find.
  7350. - Corected the makefiles to not always use -lz when linking
  7351. Version 7.10-pre2
  7352. Daniel (2 Sep 2002)
  7353. - James Gallagher added Content-Encoding support to libcurl so now curl and
  7354. libcurl-using apps can request compressed contents using the 'deflate'
  7355. method. See the special file lib/README.encoding for details.
  7356. curl --compressed is now used to request compressed contents.
  7357. curl-config --feature will include 'libz' if this feature was around when
  7358. the library was built.
  7359. Daniel (30 Aug 2002)
  7360. - Applied an anonymous SOCKS5-proxy patch. Not properly working in all
  7361. situations though, as all getaddrinfo()-using libcurls will fail on this.
  7362. This is because of the somewhat naive way the current code tries to extract
  7363. the IP address of the proxy.
  7364. - Fixed up the SSL cert fixes from the other day even more after more inputs
  7365. from Cris. Added three new SSL error codes to make the
  7366. CURLE_SSL_CONNECT_ERROR slightly less overloaded.
  7367. Daniel (27 Aug 2002)
  7368. - After lots of talk with Tom Zerucha, Nick Gimbrone and Cris Bailiff I
  7369. decided to talk the bold path and I now made libcurl do CA certificate
  7370. verification by default. Thus library users need to explicitly turn this off
  7371. if you want to connect to sites without proper checking. We also install a
  7372. CA cert bundle on 'make install' now.
  7373. The curl tool now requires the -k/--insecure option in order to allow
  7374. connections and operations on SSL sites that aren't properly verified with
  7375. -cafile or --capath.
  7376. curl-config --ca displays the built-in path to the CA cert bundle.
  7377. Daniel (26 Aug 2002)
  7378. - Andrew Francis cleaned up some code that now compiles fine without the need
  7379. for ugly MSVC pragmas.
  7380. - Keith MacDonald found a minor bug in src/main.c that made it close stdin
  7381. instead of the actual file handle. It shouldn't have resulted in much
  7382. trouble as most operating systems close all file handles on process exit
  7383. anyway.
  7384. Daniel (22 Aug 2002)
  7385. - Markus Oberhumer provided some documentation for his previously provided
  7386. CURLOPT_NOSIGNAL fix.
  7387. - Patched the lib/Makefile.am to hopefully no longer complain on undefined
  7388. symbols that seemed to occur on builds with shared OpenSSL libraries on
  7389. Solaris lately...
  7390. Daniel (20 Aug 2002)
  7391. - Fixed compiler warnings on MSCV++ compiles. We're looking for help here:
  7392. remove the pragmas from lib/config-win32.h and adjust the sources where
  7393. the warnings occur. Hiding them with pragmas like this is not the correct
  7394. way of dealing with compiler warnings.
  7395. Daniel (13 Aug 2002)
  7396. - Ulrich Zadow made the global include files in curl/* include themselves
  7397. using "curl.h" instead of <curl/curl.h> which thus allows people to more
  7398. freely decide how to include curl and how to setup their include paths.
  7399. - Sterling Hughes added the curl_share* interface, somewhat as discussed
  7400. previously.
  7401. - Jörn Hartroth pointed out that poll() was used in the pre1 source code and
  7402. it isn't very portable, so now I check for it in the configure script and
  7403. work around it.
  7404. Version 7.9.9-pre1
  7405. Daniel (12 Aug 2002)
  7406. - Applied my initial take on making the multi stuff more asynchronous. Connects
  7407. should now return back without "hanging" until it has connected for real.
  7408. This should also be the case for FTP-PASV connects.
  7409. Daniel (9 Aug 2002)
  7410. - Applied Markus F.X.J. Oberhumer's patch that introduces CURLOPT_NOSIGNAL,
  7411. which effectively prevents libcurl from doing anything that may cause
  7412. signals to get sent. This is basicly for multi-threaded applications that
  7413. now can use timeouts properly, without risking any signals to burst in and
  7414. ruin the party.
  7415. Daniel (5 Aug 2002)
  7416. - Lukasz Czekierda reported that RFC2732-style literal IPv6 addresses didn't
  7417. work. When did that code vanish? Anyway, it's back again now and seems to
  7418. work!
  7419. - Jonatan Lander found out that POSTing an empty string didn't work with the
  7420. command line tool.
  7421. Daniel (3 Aug 2002)
  7422. - Jörn Hartroth fixed the libcurl.def file to build the windows DLL with
  7423. the multi interface enabled.
  7424. Daniel (1 Aug 2002)
  7425. - The ftp PORT command now uses a better default IP address, as it will
  7426. extract and use the local IP address used by the control connection.
  7427. - Modified the #include lines in curl/multi.h to work better on more
  7428. platforms.
  7429. Daniel (31 Jul 2002)
  7430. - Attempted a fix for Ray DeGennaro's reported HP-UX host name resolve
  7431. problems.
  7432. Daniel (30 Jul 2002)
  7433. - Priya Ramakrishnan and Ryan Jones compiles curl/curl.h with a C++ compiler
  7434. and don't get __STDC__ defined, which required us to extend the preprocessor
  7435. check for the ## operator usage.
  7436. - Correct the description for CURLOPT_PASSWDFUNCTION, if set to NULL the
  7437. internal default function will be put back.
  7438. - danfuzz at milk.com found out that libcurl badly assumed a space after
  7439. 'Set-Cookie:' so if it wasn't present, it caused the first letter of the
  7440. cookie name to fall off!
  7441. Daniel (29 Jul 2002)
  7442. - The password prompt asking for user password used stdout and now uses
  7443. stderr instead to better allow redirecting. It also leaked a fopen() file
  7444. handle that is now fixed.
  7445. Daniel (28 Jul 2002)
  7446. - HAVE_SETVBUF was left out from src/main.c which made -N not work. Found out
  7447. by M T.
  7448. Daniel (26 Jun 2002)
  7449. - Glen Nakamura solved a crash in the name resolving function for IP-only
  7450. addresses on Alpha Linux (at least).
  7451. - T. Bharath corrected the high resolution timer introduced in 7.9.8.
  7452. Daniel (22 Jun 2002)
  7453. - Andrés García pointed out man page errors in curl_formadd.3. I fixed.
  7454. Daniel (19 Jun 2002)
  7455. - Chris Combes pointed out a flaw in curl_escape(). I fixed. We no longer
  7456. tries to generate nor parse '+' in URLs. Spaces become %20, and only %-codes
  7457. are translated by curl_unescape().
  7458. Daniel (15 Jun 2002)
  7459. - Added --limit-rate to the curl tool. Allows the user to set a maxmimum
  7460. upper limit to how much bandwidth to use for transfers.
  7461. - CURLOPT_BUFFERSIZE was added to libcurl. This sets a prefered size for the
  7462. receive buffer in libcurl. The main point of this would be that the write
  7463. callback gets called more often and with smaller chunks.
  7464. Daniel (14 Jun 2002)
  7465. - Yarram Sunil found out that the SocketIsDead() function performed a lot
  7466. faster on Windows when removing the 1 microsecond timeout.
  7467. - Hanno L. Kranzhoff fixed the VC++ project files.
  7468. - Tom Mattison found out that ftp transfers closed the connection a little
  7469. too often.
  7470. - Miklos Nemeth posted a VC++ makefile fix and some INSTALL comments on how
  7471. to disable specific protocols when building for Windows.
  7472. Version 7.9.8
  7473. Daniel (13 Jun 2002)
  7474. - Time to let this baby go.
  7475. Daniel (12 Jun 2002)
  7476. - Chris Combes added three new options for curl_formadd(): CURLFORM_BUFFER,
  7477. CURLFORM_BUFFERPTR, CURLFORM_BUFFERLENGTH. They are used to create a
  7478. multipart that appears as a regular file upload, but the data is provided
  7479. with a pointer and length.
  7480. - Nico Baggus made the VMS version use sigsetjmp() too.
  7481. - Jörn Hartroth fixed the mingw32 build using the mm lib.
  7482. - Applied patches by Kris Kennaway that correct format string problems in
  7483. lib/ftp.c and lib/ldap.c.
  7484. Version 7.9.8-pre3
  7485. Daniel (11 Jun 2002)
  7486. - James Cone brought the idea of using sigsetjmp() in the signal handler to
  7487. make the time-out of name lookups to work, even when the underlying name
  7488. resolver library traps EINTR. The use of sigsetjmp() and siglongjmp() for
  7489. this may be a bit drastic, and also not likely to exist on all platforms. I
  7490. added careful checking for this in the configure script, even checks for it
  7491. being a macro (which seems to be the case in for example Linux).
  7492. sigsetjmp() seems to be mentioned in the Single Unix specification.
  7493. - Miklos Nemeth brought a patch that allows libcurl to get built with specific
  7494. protocols disabled. This is done by running ./configure
  7495. --disable-[protocol].
  7496. - FTP range downloads could make CURLE_FTP_WRITE_ERROR get returned. We now
  7497. make precautions to not return this for range downloads.
  7498. Added test case 135 that makes an ftp range download. Had to tweak the
  7499. runtests.pl script a bit too.
  7500. - Bug report #566835 identified a strlen() on a NULL pointer. Added additional
  7501. check to prevent this.
  7502. Daniel (10 Jun 2002)
  7503. - Found and corrected a connect failure problem that didn't create a human
  7504. error text.
  7505. - Added code to compile with OpenSSL 0.9.7. Based on patch from Jacob Meuser
  7506. and comments from Götz Babin-Ebell.
  7507. - Gautam Mani found a socket descriptor leak that happened when FTP transfers
  7508. failed and you reinvoked curl_easy_perform().
  7509. Daniel (5 Jun 2002)
  7510. - Gustaf Hui corrected curl_multi_remove_handle() so that it won't crash no
  7511. matter when you decide to remove the CURL handle.
  7512. - HAVE_RAND_STATUS was added to lib/config-win32.h by Andreas Olsson, as it
  7513. makes windows builds stop complaining about "weak seeding" when it in fact
  7514. isn't.
  7515. - Another 64bit architecture crash that was introduced in 7.9.7 was now
  7516. removed, as bug report #564585 clarified. This happened due to our attempts
  7517. to only allocate only as much memory as is actually needed for name
  7518. resolving (using realloc) which called for a function that could 'move' a
  7519. hostent struct in memory.
  7520. Version 7.9.8-pre2
  7521. Daniel (3 Jun 2002)
  7522. - T. Bharath fixed the CURLINFO_REDIRECT_TIME to return a correct time and
  7523. made the CURLINFO_REQUEST_SIZE return the correct total request size. He
  7524. also made the win32 timers use higher resolution than before.
  7525. Daniel (29 May 2002)
  7526. - Renaud Chaillat made me aware of the fact that libcurl returned an error if
  7527. you tried to get an empty FTP file. This seemed like a wrong thing to do, so
  7528. now it no longer does that! I just hope that no one built anything fancy
  7529. upon this unexpected behavior...
  7530. Daniel (28 May 2002)
  7531. - Cris Bailiff brought CURLOPT_CAPATH that works like CURLOPT_CAINFO but
  7532. specifies a path to a directory with certificates rather than a single file
  7533. with them all concatenated. --capath was added to the command line tool
  7534. for the same function.
  7535. Windows users need to pay attention that the directory should be setup with
  7536. the c_rehash tool of the OpenSSL package, and that creates symlinks by
  7537. default that need to be replaced with actual copies to work on Windows.
  7538. - Gustaf Hui provided new code that changes how curl_multi_info_read()
  7539. messages are stored, so that they don't have to be kept around for the multi
  7540. handle's entire life time. He also made it return failure codes properly
  7541. which it didn't do before.
  7542. Daniel (27 May 2002)
  7543. - Gustaf Hui pointed out that running curl_multi_perform() without doing
  7544. curl_multi_fdset() first was not really a working combo. I added an internal
  7545. check for this and have some extra select() code without timeout to make the
  7546. library internals work identically nevertheless. We might need to somehow
  7547. either document that once you've used the *_fdset() you should remain using
  7548. them in select() or you should blank them somehow so that libcurl won't go
  7549. crazy.
  7550. Version 7.9.8-pre1
  7551. Daniel (22 May 2002)
  7552. - James Cone brought an excellent patch, including several tests and docs!
  7553. CURLOPT_NETRC now takes an enum as argument instead of the previous boolean.
  7554. --netrc-optional was introduced as an addition to --netrc to allow the
  7555. command line client to take use of all that new netrc stuff.
  7556. - Bug report #558888 showed a case where libcurl re-used the previous host
  7557. name when a connection over a proxy was re-used but to a different target
  7558. host.
  7559. Daniel (21 May 2002)
  7560. - Edin Kadribasic helped me sort out a problem to made libcurl crash when
  7561. trying to HTTP POST an empty string.
  7562. - Clarified that Juergen Wilke donated the original tests/server/sws.c code.
  7563. - Jean-Philippe Barrette-LaPierre made curl_formadd() return a typedef named
  7564. CURLFORMcode instead of the previous 'int', and the various return codes are
  7565. now globally exported. It allows applications to better figure out what goes
  7566. wrong when curl_formadd() returns errors.
  7567. Daniel (20 May 2002)
  7568. - Roland Zimmermann pointed out that SSL_CTX_use_certificate_chain_file()
  7569. is prefered to SSL_CTX_use_certificate_file().
  7570. Daniel (17 May 2002)
  7571. - Bug report #556869 pointed out that src/writeout.c didn't compile on freebsd
  7572. after my AIX fixes the other week.
  7573. - Bug report #556930 pointed out a FreeBSD core dump introduced in 7.9.7 in
  7574. the DNS struct realloc stuff. Actually, this crash could happen on all
  7575. systems that made the pack_hostent() function get invoked.
  7576. - I removed several compiler warnings in the test suite's HTTP server.
  7577. Version 7.9.7
  7578. Daniel (10 May 2002)
  7579. - Kevin Roth adjusted the --trace-ascii output slightly.
  7580. - Paul Harrington found out that src/writeout.c needed an additional header
  7581. file included for AIX builds
  7582. Version 7.9.7-pre2
  7583. Daniel (7 May 2002)
  7584. - Updated the man page with --trace-ascii and -j/--junk-session-cookies.
  7585. - Made --trace-ascii do pretty much the same as --trace but without the hex
  7586. part in the output.
  7587. - Added CURLOPT_COOKIESESSION that when enabled makes libcurl ignore session
  7588. cookies read from a file. This option is enforced by the curl command line
  7589. tool using the new -j/--junk-session-cookies option. After discussions with
  7590. Kevin Roth. This makes it easier to use curl to fully emulate a browser's
  7591. behavior, even when it comes to "session cookies". Session cookies are
  7592. cookies that a normal browser discards when the browser is shut
  7593. down. They're identified by not having any expire date/time.
  7594. - When CURLOPT_DEBUGDATA was set, it ruined the CURLOPT_STDERR setting and
  7595. this was discovered when --trace was made to crash.
  7596. - Using -v and --trace at the same time confused matters. -v is now pretty
  7597. much ignored when --trace or --trace-ascii is used.
  7598. - Made --trace (and --trace-ascii) support - as file name to pass output to
  7599. stdout instead. It makes it consistent with how other options work.
  7600. Version 7.9.7-pre1
  7601. Daniel (6 May 2002)
  7602. - Added multi-post.c to the examples directory. I got the basic source for
  7603. this from Gustaf Hui.
  7604. Daniel (3 May 2002)
  7605. - CURL_MAX_WRITE_SIZE is now an exported #define in the curl/curl.h header and
  7606. can be used to figure out the maximum buffer size your write callback can
  7607. get.
  7608. - CURLOPT_READDATA is now an alias for CURLOPT_INFILE and CURLOPT_WRITEDATE is
  7609. an alias for CURLOPT_FILE. These two were added for conformity. Most other
  7610. callback function's userdata are provided with options using a similar name-
  7611. scheme.
  7612. - Added "--trace [file]" to the command line tool. It makes a very detailed
  7613. trace dump get stored, with a full protocol dump that includes all received
  7614. and transmitted data. This could be a very effective tool for debugging what
  7615. goes wrong. This dump includes every byte the way it is sent to/received
  7616. from the server. The dump is the plain-text version, so SSL transfers will
  7617. still be readable.
  7618. - I found out that the DEBUGFUNCTION was not called properly everywhere as we
  7619. wanted it to. I fixed it.
  7620. - -D now stores all headers to the same file if multiple URLs are given on the
  7621. command line! Kevin Roth made me aware of that it didn't already do this!
  7622. - Gustaf Hui wrote an excellent formpost example that used the multi
  7623. interface. Unfortunately, it didn't work due to several bugs in how
  7624. transfers were made when the multi interface was used.
  7625. Daniel (2 May 2002)
  7626. - Hanno Kranzhoff found out that when doing multiple transfers on the same
  7627. easy handle, the progress meter would show a bad "currently downloaded
  7628. value" when the transfer starts.
  7629. Daniel (1 May 2002)
  7630. - Applied another patch by Jacky Lam to make the name resolve info realloc()
  7631. stuff work properly.
  7632. Daniel (28 April 2002)
  7633. - curl_multi_info_read() is now implemented!
  7634. Daniel (27 April 2002)
  7635. - Updated BUGS, TODO, FAQ, INSTALL and added BINDINGS.
  7636. - I think I fixed the DNS cache prune crach Jacky Lam found and reported.
  7637. - I cleaned up the name prefix stuff in the hash and llist modules.
  7638. - FTP responses should now be better on timing out properly. The timeout value
  7639. is maximum timeout for the entire request operation, but before this, the
  7640. timeout was used as a maximum allowed time between two reads...
  7641. Daniel (26 April 2002)
  7642. - Fixed the test suite http server to not use snprintf() anymore due to better
  7643. portability.
  7644. Daniel (25 April 2002)
  7645. - With Sterling Hughes' new DNS pruning, Jacky Lam asked if this wouldn't
  7646. cause problems since the pruning is only checking the entry time, and it
  7647. sure could cause problems. Therefor, I've now added and changed code so that
  7648. this should not be a problem. Nowhere in the code will be store name
  7649. resolved information around so that a sunsequent DNS cache prune should
  7650. cause a problem. This of course called for some mild internal changes.
  7651. Daniel (23 April 2002)
  7652. - Improved the 'no_proxy' check, as using port numbers in the URL confused it
  7653. previously. Reported by Erwan Legrand in bug report #547484.
  7654. - The --interface option now works even on IPv6 enabled builds. Reported by
  7655. 'thor'.
  7656. Daniel (22 April 2002)
  7657. - The #defines names starting with TIMECOND now has CURL_ prefixes. (The old
  7658. names are still #defined too.) Pointed out by Robert Olson.
  7659. - Jacky Lam brought code that lets the name resolve function only use as much
  7660. memory as it actually needs. This only works on certain operating systems,
  7661. but is totally transparant to all users.
  7662. Daniel (19 April 2002)
  7663. - Bjorn Reese fixed pack_hostent to work properly with 64 bit pointers.
  7664. Daniel (18 April 2002)
  7665. - Sterling Hughes added code to prune old DNS cache entries, since Jacky Lam
  7666. experienced very big caches.
  7667. Daniel (17 April 2002)
  7668. - Dirk Manske patched the 301 response to work against the RFC but more like
  7669. common browsers do. If a POST get a 301 back, it'll switch to GET in the
  7670. next request (if location-following is enabled).
  7671. Daniel (16 April 2002)
  7672. - Dirk Manske posted a patch originally written by Ingo Wilken that introduced
  7673. two new CURLINFO_* values: CURLINFO_REDIRECT_TIME and
  7674. CURLINFO_REDIRECT_COUNT.
  7675. Daniel (15 April 2002)
  7676. - Jonatan Lander patched the verbose text 'Disables POST, goes with GET' to
  7677. reflect reality better, like when the first request isn't POST and when
  7678. the second isn't GET... :-)
  7679. - Craig Davison pointed out that when curl_formadd()ing a file that doesn't
  7680. exist, libcurl doesn't return error. Now, curl_easy_perform() will return
  7681. CURLE_READ_ERROR if that is the case. Test 41 was added to verify this.
  7682. Version 7.9.6
  7683. Daniel (14 April 2002)
  7684. - Dirk Manske brought a fix that makes libcurl strip off white spaces from the
  7685. beginning of cookie contents.
  7686. - Had to patch include/curl/curl.h since MSVC doesn't set the __STDC__ define.
  7687. Moonesamy pointed out the problem, Bjorn Reese the solution.
  7688. Version 7.9.6-pre5
  7689. Daniel (12 April 2002)
  7690. - Fixed the TIMER_CONNECT to be more accurate for FTP transfers. Previously
  7691. FTP transfers got the "connect done" time set after the initial FTP commands
  7692. and not directly after the TCP/IP connect as it should.
  7693. I also made the time stamp get set even if the connect itself fails, which
  7694. it didn't do previously.
  7695. - Jean-Philippe Barrette-LaPierre provided his patch that introduces
  7696. CURLOPT_DEBUGFUNCTION and CURLOPT_DEBUGDATA. They allow a program to a set a
  7697. callback to receive debug/information data. That includes headers and data
  7698. that is received and sent. CURLOPT_VERBOSE still controls it.
  7699. By default, there is an internal debugfunction that will make things look
  7700. and work as before if not changed.
  7701. Daniel (10 April 2002)
  7702. - Sebastien Willemijns found out that -x didn't use the default port number as
  7703. is documented. It does now.
  7704. - libcurl-errors.3 is a new man page attempting to document all libcurl error
  7705. codes
  7706. - Added two new error codes and changed the behaviour of two old ones
  7707. slightly:
  7708. CURLE_WRITE_ERROR
  7709. This error was returned *both* for errors that occured when writing
  7710. received data to a local file, as well as when we get problems writing data
  7711. to a remote server. CURLE_SEND_ERROR has now been added for the latter
  7712. error.
  7713. CURLE_READ_ERROR
  7714. This error was similarly returned *both* for errors when reading a local
  7715. file, as well as when getting problems when reading network data.
  7716. CURLE_RECV_ERROR has now been added for the latter error.
  7717. (Two test cases were adjusted accordingly.)
  7718. Daniel (9 April 2002)
  7719. - runtests.pl now sets the HOME variable before running curl, to prevent any
  7720. actual ~/.curlrc file to fool the tests!
  7721. Version 7.9.6-pre4
  7722. Daniel (8 April 2002)
  7723. - Michael Curtis provided new functionality for curl on some platforms. Using
  7724. the --environment option, curl will *set* a bunch of environment variables
  7725. to values. The names are the same ones as for the -w/--writeout option.
  7726. For now, this only works on the RISC OS version, as this feature relies on
  7727. both OS support and that it matches OS paradigms.
  7728. - Jacky Lam provided a fix for getting headers-only when the reply is HTTP/1.0
  7729. and 304, I edited it slightly.
  7730. Daniel (5 April 2002)
  7731. - As requested by Jay Graves, the '.curlrc' file (or _curlrc as it is called
  7732. when used in windows), is now loaded from the current directory if the HOME
  7733. environment variable isn't set (or if it is too long). I also enlarged the
  7734. array used to store the full file path in, to 512 bytes.
  7735. - Kevin Roth pointed out to me why the "19 March" change regarding -G and -I
  7736. was stupid and the change was reverted. Added test case 48 to verify the
  7737. functionality.
  7738. Version 7.9.6-pre3
  7739. Daniel (4 April 2002)
  7740. - Jonatan Lander brought a patch that makes curl/curl.h compile nicely on
  7741. pre-ISO compilers, like when using gcc -traditional.
  7742. Daniel (3 April 2002)
  7743. - Jacky Lam identified a glitch when getting headers-only, where libcurl would
  7744. "hang" 1 second in vain in the select() loop before returning back.
  7745. - Tor Arntsen brought a patch for multipart formposts. It turned out that the
  7746. "CGI_Lite Perl package" makes some bad assumptions on what letters that may
  7747. be used in boundary strings and thus curl could confuse it by including '+'
  7748. and '/'. While this is standards-compliant, we change the behavior to work
  7749. smoothly with existing software based on that package.
  7750. Daniel (2 April 2002)
  7751. - Gerhard Herre filed bug report #536238 where he pointed out a crash in
  7752. verbose FTP passive transfers for AIX.
  7753. - Clarence Gardner pointed out a minor flaw in how libcurl didn't properly
  7754. take care of all errors that SSL_read() could return.
  7755. - Jacky Lam fixed a MALLOCDEBUG problem in lib/getinfo.c
  7756. Daniel (27 March 2002)
  7757. - T. Bharath pointed out a flaw in the connection re-use function that didn't
  7758. check proxy connections properly for "deadness" before they were re-used.
  7759. - Pedro Neves found out that HTTP POSTing with --data-binary did not properly
  7760. work under Windows as the file specified wasn't read fully binary!
  7761. Daniel (25 March 2002)
  7762. - Jacky Lam brought a fix that improves treatment of cookies using identical
  7763. domains but with leading dots properly.
  7764. Daniel (22 March 2002)
  7765. - Miklos Nemeth updated the windows section of the docs/INSTALL file and the
  7766. windows makefiles.
  7767. - Jon Dillon provided us with several good-looking curl images for
  7768. promotion. View them here http://curl.haxx.se/icons.html
  7769. Daniel (20 March 2002)
  7770. - Peter Verhas found out that CRLF replacement in uploads was not working. I
  7771. fixed it, and added test case 128 that verifies the functionality.
  7772. - The list formerly known as curl-main is now named curl-users and is hosted
  7773. by sourceforge. Susbcribe to the new list, get off the old one.
  7774. Version 7.9.6-pre2
  7775. Daniel (19 March 2002)
  7776. - Made -G and -I on the same command line cause an error.
  7777. - Moved the multi.h file to the "public" include directory and made it get
  7778. included by curl.h so that no extra include files will be necessary to use
  7779. it.
  7780. Added docs and man pages for the multi interface to the release archive.
  7781. Added the three example source codes too.
  7782. Necessary steps in my campaign to sneak in the multi interface... ;-)
  7783. - Updated the year in all copyright notices in all C and H files.
  7784. Daniel (18 March 2002)
  7785. - Tomas Szepe found out that -d and -G didn't mix as they should. I broke this
  7786. in 7.9.5... Added test case 32 for this.
  7787. Version 7.9.6-pre1
  7788. Daniel (16 March 2002)
  7789. - Peter Verhas pointed out that the curl_escape and curl_unscape man pages
  7790. contained factual errors.
  7791. - Albert Choy found and corrected a problem with the verbose output when doing
  7792. PASV ftp transfers. It could make libcurl crash.
  7793. Details in bug report #530562:
  7794. http://sourceforge.net/tracker/?func=detail&atid=100976&aid=530562&group_id=976
  7795. Daniel (15 March 2002)
  7796. - Jun-ichiro itojun Hagino filed bug report #530204 that clearly pointed out
  7797. the PF_INET fix from February 19 as a not-very-good fix as it broke IPv6
  7798. capability! That patch is now reverted.
  7799. The problem with slow name lookups with getaddrinfo() on non-IPv6 enabled
  7800. hosts are instead made by first checking if the stack is IPv6-enabled and if
  7801. not, the PF_INET is used and otherwise we go with the full PF_UNSPEC.
  7802. - T. Bharath pointed out that when we return an "error" from a WRITEFUNCTION
  7803. as described in the man page, libcurl did not return the documented error
  7804. code (CURLE_WRITE_ERROR) but would instead return CURLE_READ_ERROR. This is
  7805. now corrected.
  7806. Daniel (14 March 2002)
  7807. - Setting CURLOPT_POST without setting CURLOPT_POSTFIELDS now read the POST-
  7808. data from the callback.
  7809. - The GOPHER support seems to be broken. I don't think I'll even start fixing
  7810. it until someone else finds out... :-)
  7811. Daniel (13 March 2002)
  7812. - Trying 'curl -I ftp.sunet.se' or similar did a SIZE on a silly "(nil)"
  7813. string. If such a file would be present, curl returned the size of it! Now
  7814. we prevent this.
  7815. - Curl_sendf() was fixed to deal with situation where Curl_write() would've
  7816. blocked and thus return -1.
  7817. - Setting CURLOPT_PROGRESSFUNCTION to NULL now restores the internal function.
  7818. - All CURLFORM_* options can now be used in a CURLFORM_ARRAY except the
  7819. CURLFORM_ARRAY itself. This was necessary since we couldn't expand the
  7820. CURLFORM_* list proprely and unrestricted until this was the case. It was
  7821. also a bit peculiar to users why some options could be used in an array
  7822. while others couldn't.
  7823. - Removed some silly CRLF lines that had accidentally slipped into src/main.c
  7824. Nico Baggus pointed them out to me.
  7825. Daniel (11 March 2002)
  7826. - CURLFORM_FILENAME was added. This can be set when creating a file upload
  7827. part, to set the 'filename' field to a custom value. If this isn't used,
  7828. the actually used filename will be included instead (as libcurl always has
  7829. done). curl was adjusted accordingly, and now -F accepts a 'filename=' field
  7830. too, and allows constructs such as:
  7831. -F 'name=@filename;filename=/dev/null'
  7832. and this can be combined with type= too, in a manner similar to:
  7833. -F "file=@log/test39.txt;filename=fakerfile;type=moo/foobar"
  7834. Test case 39 was added to verify this functionality.
  7835. - The struct formerly known as HttpPost is now named curl_httppost to properly
  7836. use the curl name space. I added a #define for the old name to make existing
  7837. programs compile even when this new include file is used.
  7838. Daniel (8 March 2002)
  7839. - Clifford also discovered that if the client code failed early, as when doing
  7840. "curl -O" only, it would do fclose(NULL) which caused a segmentation fault
  7841. on some systems.
  7842. - Clifford Wolf provided a patch that made --progress-bar work again.
  7843. - I closed bug report #527032 by making sure that we add a newline after a
  7844. transfer when --progress-bar has been used. Before, without the newline, it
  7845. made the subsequent text come out wrong.
  7846. Version 7.9.5
  7847. Daniel (7 March 2002)
  7848. - Added docs/KNOWN_BUGS to the release archive.
  7849. Daniel (6 March 2002)
  7850. - Kevin Roth corrected a flaw in the curl client globbing code that made it
  7851. mess up backslashes. This was most notable on windows (cygwin) machines when
  7852. using file://.
  7853. - Brad provided another fix for building outside the source-tree.
  7854. - Ralph Mitchell patched away a few compiler warnings in tests/server/sws.c
  7855. Daniel (5 March 2002)
  7856. - I noticed that the typedef in curl.h for the progress callback prototype was
  7857. wrong and thus applications that used it would not get the proper input
  7858. data. It used size_t where the implementation actually uses doubles!
  7859. I wish I could blame someone else, but this was my fault. Again.
  7860. Version 7.9.5-pre6
  7861. Daniel (4 March 2002)
  7862. - Cut off the changes done during 2001 from this changelog file and put them
  7863. in a separate file (CHANGES.2001), available from CVS of course.
  7864. - I removed the multi directory. The example sources were moved to the
  7865. docs/examples directory where they belong.
  7866. - Wrote 7 new man pages for the current functions in the new multi interface.
  7867. They're all still pretty basic, but we can use them as a start and add more
  7868. contents to them when we figure out what to write. The large amount of man
  7869. pages for libcurl now present made me decide to put them in a new separate
  7870. subdirectory in the docs directory. Named libcurl.
  7871. - Giuseppe Corbelli provided a template file for the EPM package manager, it
  7872. gets generated nicely by the configure script now.
  7873. Version 7.9.5-pre5
  7874. Daniel (1 March 2002)
  7875. - Moved the memanalyze.pl script into the tests/ dir and added it to the
  7876. release archives. It was previously only present in the CVS tree.
  7877. - Modified the February 17th Host: fix, as bug report #523718 pointed out that
  7878. it caused crashes!
  7879. - Nico Baggus added more error codes to the VMS stuff.
  7880. - Wesley Laxton brought the code that introduced the new CURLOPT_PREQUOTE
  7881. option. It is just another FTP quote option that allows the user to specify
  7882. a list of FTP commands to issue *just before* the transfer command (RETR or
  7883. STOR etc). It has turned up a few systems that really need this.
  7884. The curl command line tool can also take advantage of this by prefixing the
  7885. quote commands with a plus (+) in similar style that post transfer quote
  7886. commands are specified.
  7887. This is not yet documented. There is no test case for this yet.
  7888. Daniel (28 February 2002)
  7889. - Ralph Mitchell made some serious efforts and put a lot of sweat in setting
  7890. up scripts and things for me to be able to repeat his problems, and I
  7891. finally could. I found a problem with the header byte counter that wasn't
  7892. increased properly and thus we could return CURLE_GOT_NOTHING when we in
  7893. fact had received data.
  7894. Daniel (27 February 2002)
  7895. - I had to revert the non-space parsing cookie fix I posted to the mailing
  7896. list. Expire dates do have spaces and still need to get parsed properly!
  7897. Instead we just ignore trailing white space and it seems to work...
  7898. Daniel (26 February 2002)
  7899. - Made the cookie property 'Max-Age' work, just since we already tried to
  7900. support it, it is better to do it right. No one uses this anyway.
  7901. - The cookie parser could crash if a really weird (illegal) cookie line was
  7902. received. I also made it better discard really oddly formatted lines better.
  7903. Made the cookie jar store the second field from the left using the syntax
  7904. that Netscape and Mozilla probably like. Curl itself ignores it.
  7905. Added test case 31 for these cases.
  7906. Clay Loveless' email regarding some cookie issues started my cleanup.
  7907. - Kevin Roth pointed out that my automake fiddles broke the ability to build
  7908. outside the source-tree and I posted a patch to the mailing list that brings
  7909. this ability back.
  7910. Version 7.9.5-pre4
  7911. Daniel (25 February 2002)
  7912. - Fiddled with the automake files to make all source files in the lib
  7913. directory not have ../src in the include path, and the src sources shouldn't
  7914. have ../lib!
  7915. - All 79 test cases ran OK under Linux and Solaris using the new HTTP server
  7916. in the test suite. The new HTTP server was first donated by Georg Horn and
  7917. subsequently modified to work with the test suite. It is currently still not
  7918. portable enough to run on "all over" but this is a start and I can run all
  7919. curl tests on my machines. This is an important requirement for the upcoming
  7920. public release.
  7921. - Using -d and -I on the same command line now reports an error, as it implies
  7922. two different HTTP requests that can't be mixed.
  7923. - Jeffrey Pohlmeyer provided a patch that made the -w/--write-out option
  7924. support %{content_type} to get the content type of the recent download.
  7925. - Kevin Roth reported that pre2 and pre3 didn't compile properly on cygwin,
  7926. and this was because I used #ifdef HAVE_WINSOCK_H in lib/multi.h to figure
  7927. out if we could include winsock.h which turns out not to be a wise choice to
  7928. do on cygwin since it has the file but can't include it!
  7929. Daniel (22 February 2002)
  7930. - Added src/config-vms.h to the release archive.
  7931. - Fixed the connection timeout value again, the change from February 18 wasn't
  7932. complete.
  7933. Version 7.9.5-pre3
  7934. Daniel (21 February 2002)
  7935. - Kevin Roth and Andrés García both found out that lib/config.h.in was missing
  7936. in the pre-release archive and thus the configure script failed.
  7937. Version 7.9.5-pre2
  7938. Daniel (20 February 2002)
  7939. - Andrés García provided a solution to bug report #515228. the total time
  7940. counter was not set correctly when -I was used during some conditions (all
  7941. headers were read in one single read).
  7942. - Nico Baggus provided a huge patch with minor tweaks all over to make curl
  7943. compile nicely on VMS.
  7944. Daniel (19 February 2002)
  7945. - Rick Richardson found out that by replacing PF_UNSPEC with PF_INET in the
  7946. getaddrinfo() calls, he could speed up some name resolving calls with an
  7947. order of magnitudes on his Redhat Linux 7.2.
  7948. - Philip Gladstone found a second INADDR_NONE problem where we used long
  7949. intead of in_addr_t which caused 64bit problemos. We really shouldn't define
  7950. that on two different places.
  7951. Daniel (18 February 2002)
  7952. - Philip Gladstone found a problem in how HTTP requests were sent if the
  7953. request couldn't be sent all at once.
  7954. - Emil found and corrected a bad connection timeout comparison that made curl
  7955. use the longest of connect-timeout and timout as a timeout value, instead of
  7956. the shortest as it was supposed to!
  7957. - Aron Roberts provided updated information about LDAP URL syntax to go into
  7958. the manual as a replacement for the old references.
  7959. Daniel (17 February 2002)
  7960. - Philip Gladstone pointed out two missing include files that made curl core
  7961. dump on 64bit architectures. We need to pay more attention on these details.
  7962. It is *lethal* to for example forget the malloc() prototype, as 'int' is
  7963. 32bit and malloc() must return a 64bit pointer on these platforms.
  7964. - Giaslas Georgios fixed a problem with Host: headers on repeated requests on
  7965. the same handle using a proxy.
  7966. Daniel (8 February 2002)
  7967. - Hanno L. Kranzhoff accurately found out that disabling the Expect: header
  7968. when doing multipart formposts didn't work very well. It disabled other
  7969. parts of the request header too, resulting in a broken header. When I fixed
  7970. this, I also noticed that the Content-Type wasn't possible to disable. It is
  7971. now, even though it probably is really stupid to try to do this (because of
  7972. the boundary string that is included in the internally generated header,
  7973. used as form part separator.)
  7974. Daniel (7 February 2002)
  7975. - I moved the config*.h files from the root directory to the lib/ directory.
  7976. - I've added the new test suite HTTP server to the CVS repository, It seems to
  7977. work pretty good now, but we must make it get used by the test scripts
  7978. properly and then we need to make sure that it compiles, builds and runs on
  7979. most operating systems.
  7980. Version 7.9.5-pre1
  7981. Daniel (6 February 2002)
  7982. - Miklos Nemeth provided updated windows makefiles and INSTALL docs.
  7983. - Mr Larry Fahnoe found a problem with formposts and I managed to track down
  7984. and patch this bug. This was actually two bugs, as the posted size was also
  7985. said to be two bytes too large.
  7986. - Brent Beardsley found out and brought a correction for the
  7987. CURLINFO_CONTENT_TYPE parser that was off one byte. This was my fault, I
  7988. accidentaly broke Giaslas Georgios' patch.
  7989. Daniel (5 February 2002)
  7990. - Kevin Roth found yet another SSL download problem.
  7991. Version 7.9.4
  7992. - no changes since pre-release
  7993. Version 7.9.4-pre2
  7994. Daniel (3 February 2002)
  7995. - Eric Melville provided a few spelling corrections in the curl man page.
  7996. Daniel (1 February 2002)
  7997. - Andreas Damm corrected the unconditional use of gmtime() in getdate, it now
  7998. uses gmtime_r() on all hosts that have it.
  7999. Daniel (31 January 2002)
  8000. - An anonymous bug report identified a problem in the DNS caching which made it
  8001. sometimes allocate one byte too little to store the cache entry in. This
  8002. happened when the port number started with 1!
  8003. - Albert Chin provided a patch that improves the gethostbyname_r() configure
  8004. check on HP-UX 11.00.
  8005. Version 7.9.4-pre1
  8006. Daniel (30 January 2002)
  8007. - Georg Horn found another way the SSL reading failed due to the non-blocking
  8008. state of the sockets! I fixed.
  8009. Daniel (29 January 2002)
  8010. - Multipart formposts now send the full request properly, including the CRLF.
  8011. They were previously treated as part of the post data.
  8012. - The upload byte counter bugged.
  8013. - T. Bharath pointed out that we seed SSL on every connect, which is a time-
  8014. consuming operation that should only be needed to do once. We patched
  8015. libcurl to now only seed on the first connect when unseeded. The seeded
  8016. status is global so it'll now only happen once during a program's life time.
  8017. If the random_file or egdsocket is set, the seed will be re-made though.
  8018. - Giaslas Georgios introduced CURLINFO_CONTENT_TYPE that lets
  8019. curl_easy_getinfo() read the content-type from the previous request.
  8020. Daniel (28 January 2002)
  8021. - Kjetil Jacobsen found a way to crash curl and after much debugging, it
  8022. turned out it was a IPv4-linux only problem introduced in 7.9.3 related to
  8023. name resolving.
  8024. - Andreas Damm posted a huge patch that made the curl_getdate() function fully
  8025. reentrant!
  8026. - Steve Marx pointed out that you couldn't mix CURLOPT_CUSTOMREQUEST with
  8027. CURLOPT_POSTFIELDS. You can now!
  8028. Daniel (25 January 2002)
  8029. - Krishnendu Majumdar pointed out that the header length counter was not reset
  8030. between multiple requests on the same handle.
  8031. - Pedro Neves rightfully questioned why curl always append \r\n to the data
  8032. that is sent in HTTP POST requests. Unfortunately, this broke the test suite
  8033. as the test HTTP server is lame enough not to deal with this... :-O
  8034. - Following Location: headers when the connection didn't close didn't work as
  8035. libcurl didn't properly stop reading. This problem was added in 7.9.3 due to
  8036. the restructured internals. 'Frank' posted a bug report about this.
  8037. Daniel (24 January 2002)
  8038. - Kevin Roth very quickly spotted that we wrongly installed the example
  8039. programs that were built in the multi directory, when 'make install' was
  8040. used. :-/
  8041. Version 7.9.3
  8042. Daniel (23 January 2002)
  8043. - Andrés García found a persistancy problem when doing HTTP HEAD, that made
  8044. curl "hang" until the connection was closed by the server. This problem has
  8045. been introduced in 7.9.3 due to internal rewrites, this was not present in
  8046. 7.9.2.
  8047. Version 7.9.3-pre4
  8048. Daniel (19 January 2002)
  8049. - Antonio filed bug report #505514 and provided a fix! When doing multipart
  8050. formposts, libcurl would include an error text in the actual post if a
  8051. specified file wasn't found. This is not libcurl's job. Instead we add an
  8052. empty part.
  8053. Daniel (18 January 2002)
  8054. - Played around with stricter compiler warnings for gcc (when ./configure
  8055. --enable-debug is used) and changed some minor things to stop the warnings.
  8056. - Commented out the 'long long' and 'long double' checks in configure.in, as
  8057. we don't currently use them anyway and the code in lib/mprintf.c that use
  8058. them causes warnings.
  8059. - Saul Good and jonatan pointed out Mac OS X build problems with pre3 and how
  8060. to correct them. Two compiler warnings were removed as well.
  8061. - Andrés García fixed two minor mingw32 building problems.
  8062. Version 7.9.3-pre3
  8063. Daniel (17 January 2002)
  8064. - docs/libcurl-the-guide is a new tutorial for our libcurl programming
  8065. friends.
  8066. - Richard Archer brought back the ability to compile and build with OpenSSL
  8067. versions before 0.9.5.
  8068. [http://sourceforge.net/tracker/?func=detail&atid=100976&aid=504163&group_id=976]
  8069. - The DNS cache code didn't take the port number into account, which made it
  8070. work rather bad on IPv6-enabled hosts (especially when doing passive
  8071. FTP). Sterling fixed it.
  8072. Daniel (16 January 2002)
  8073. - Georg Horn could make a transfer time-out without error text. I found it and
  8074. corrected it.
  8075. - SSL writes didn't work, they return an uninitialized value that caused
  8076. havoc all over. Georg Horn experienced this.
  8077. - Kevin Roth patched the curl_version() function to use the proper OpenSSL
  8078. function for version information. This way, curl will report the version of
  8079. the SSL library actually running right now, not the one that had its headers
  8080. installed when libcurl was built. Mainly intersting when running with shared
  8081. OpenSSL libraries.
  8082. Version 7.9.3-pre2
  8083. Daniel (16 January 2002)
  8084. - Mofied the main transfer loop and related stuff to deal with non-blocking
  8085. sockets in the upload section. While doing this, I've now separated the
  8086. connection oriented buffers to have one for downloads and one for uploads
  8087. (as two can happen simultaneously). I also shrunk the buffers to 20K
  8088. each. As we have a scratch buffer twice the size of the upload buffer, we
  8089. arrived at 80K for buffers compared with the previous 150K.
  8090. - Added the --cc option to curl-config command as it enables so very cool
  8091. one-liners. Have a go a this one, building the simple.c example:
  8092. $ `curl-config --cc --cflags --libs` -o example simple.c
  8093. Daniel (14 January 2002)
  8094. - I made all socket reads (recv) handle EWOULDBLOCK. I hope nicely. Now we
  8095. only need to address all writes (send) too and then I'm ready for another
  8096. pre-release...
  8097. - Stoned Elipot patched the in_addr_t configure test to make it work better on
  8098. more platforms.
  8099. Daniel (9 January 2002)
  8100. - Cris Bailiff found out that filling up curl's SSL session cache caused a
  8101. crash!
  8102. - Posted the curl questionnaire on the web site. If you haven't posted your
  8103. opinions there yet, go there and do it now while it is still there:
  8104. http://curl.haxx.se/q/
  8105. - Georg Horn quickly found out that the SSL reading no longer worked as
  8106. supposed since the switch to non-blocking sockets. I've made a quick patch
  8107. (for reading only) but we should improve it even further.
  8108. Version 7.9.3-pre1
  8109. Daniel (7 January 2002)
  8110. - I made the 'bool' typedef use an "unsigned char". It makes it the same on
  8111. all platforms, no matter what the platform thinks the default format for
  8112. char is. This was noticed since we made a silly comparison involving such a
  8113. bool variable, and only one compiler/platform combination (on Debian Linux)
  8114. complained about it (that happened to have its char unsigned by default).
  8115. - Bug report #495290 identified a cookie parsing problem that was corrected.
  8116. When a Set-Cookie: line is received without a trailing semicolon, libcurl
  8117. didn't read the last "name=value" pair of the line, leading to confusions...
  8118. - Sterling committed his updated DNS cache code.
  8119. - I worked with Georg Horn and comments from Götz Babin-Ebell and switched
  8120. curl's socket operations completely over to non-blocking for the entire
  8121. operation (previously we used non-blocking only for the connection phase).
  8122. We had to do this to make the SSL connection phase timeout properly without
  8123. the use of signals. A little extra code to deal with this was added.
  8124. - T. Bharath pointed out a slightly obscure cookie engine flaw.
  8125. - Pete Su pointed out that libcurl didn't treat HTTP code 204 as it should.
  8126. 204-replies never provides a response-body. This resulted in bad persistant
  8127. behavior when 204 was received.
  8128. Daniel (5 January 2002)
  8129. - SM updated the VC++ library Makefiles for the new source files.
  8130. Daniel (4 January 2002)
  8131. - I discovered that we wrongly used inet_ntoa() (instead of inet_ntoa_r() in
  8132. two places in the source code). One happened with VERBOSE set on connects,
  8133. and the other when VERBOSE was on and krb4 over nat was used... I honestly
  8134. don't think anyone has suffered from these mistakes.
  8135. - I replaced a lot of silly occurances of printf() to instead use the more
  8136. appropriate Curl_infof() or Curl_failf(). The krb4 and telnet code were
  8137. affected.
  8138. - Philip Gladstone found a few more problems with 64-bit archs (the 64-bit
  8139. sparc on solaris 8).
  8140. - After discussions on the libcurl list with Raoul Cridlig, I just made FTP
  8141. response lines get passed to the header callback if such a one is
  8142. registered. It'll make it possible for any application to get all the
  8143. responses an FTP server sends to libcurl.
  8144. Daniel (3 January 2002)
  8145. - Sterling Hughes brought a few buckets of code. Now, libcurl will
  8146. automatically cache DNS lookups and re-use the previous results first if any
  8147. such is available. It greatly improves speed when doing many repeated
  8148. operations to the same host.
  8149. - As the test case uses --include and then --head, I had to modify src/main.c
  8150. to deal with this situation slightly better than previously. When done, we
  8151. have 100% good tests again in the main branch.
  8152. Daniel (2 January 2002)
  8153. - Made test case 25 run again in the multi-dev branch. But it seems that the
  8154. changes done on dec-20 made test case 104 cease to work (in both branches).
  8155. - Philip Gladstone pointed out a few portability problems in the source code
  8156. that didn't compile on 64-bit sparcs using Sun's native compiler.
  8157. Daniel (20 December 2001)
  8158. - Björn Stenberg caught an unpleasent (but hard-to-find) bug that could cause
  8159. libcurl to hang on transfers over proxy, when the proxy was specified with
  8160. an environment variable!
  8161. - Added code to make ftp operations treat the NO_BODY and HEADERS options
  8162. better:
  8163. NO_BODY set TRUE and HEADERS set TRUE:
  8164. Return a set of headers with file info
  8165. NO_BODY set FALSE
  8166. Transfer data as usual, HEADERS is ignored
  8167. NO_BODY set TRUE and HEADERS set FALSE
  8168. Don't transfer any data, don't return any headers. Just perform the set
  8169. of FTP commands.
  8170. Daniel (17 December 2001)
  8171. - Götz Babin-Ebell dove into the dark dungeons of the OpenSSL ENGINE stuff and
  8172. made libcurl support it! This allows libcurl to do SSL connections with the
  8173. private key stored in external hardware.
  8174. To make this good, he had to add a bunch of new library options that'll be
  8175. useful to others as well:
  8176. CURLOPT_SSLCERTTYPE set SSL cert type (PEM/DER)
  8177. CURLOPT_SSLKEY set SSL private key (file)
  8178. CURLOPT_SSLKEYTYPE: set SSL key type (PEM/DER/ENG)
  8179. CURLOPT_SSLKEYPASSWD: set the passphrase for your private key
  8180. (CURLOPT_SSLCERTPASSWD is an alias)
  8181. CURLOPT_SSLENGINE: set the name of the crypto engine
  8182. (returns CURLE_SSL_ENGINE_NOTFOUND on error)
  8183. CURLOPT_SSLENGINE_DEFAULT: set the default engine
  8184. There are two new failure codes:
  8185. CURLE_SSL_ENGINE_NOTFOUND
  8186. CURLE_SSL_ENGINE_SETFAILED
  8187. Daniel (14 December 2001)
  8188. - We have "branched" the source-tree at a few places. Checkout the CVS sources
  8189. with the 'multi-dev' label to get the latest multi interface development
  8190. tree. The idea is to only branch affected files and to restrict the branch
  8191. to the v8 multi interface development only.
  8192. *NOTE* that if we get bug reports and patches etc, we might need to apply
  8193. them in both branches!
  8194. The multi-dev branch is what we are gonna use as main branch in the future
  8195. if it turns out successful. Thus, we must maintain both now in case we need
  8196. them. The current main branch will be used if we want to release a 7.9.3 or
  8197. perhaps a 7.10 release before version 8. Which is very likely.
  8198. - Marcus Webster provided code for the new CURLFORM_CONTENTHEADER option for
  8199. curl_formadd(), that lets an application add a set of headers for that
  8200. particular part in a multipart/form-post. He also provided a section to the
  8201. man page that describes the new option.
  8202. Daniel (11 December 2001)
  8203. - Ben Greear made me aware of the fact that the Curl_failf() usage internally
  8204. was a bit sloppy with adding newlines or not to the error messages. Let's
  8205. once and for all say that they do not belong there!
  8206. - When uploading files with -T to give a local file name, and you end the URL
  8207. with a slash to have the local file name used remote too, we now no longer
  8208. use the local directory as well. Only the file part of the -T file name
  8209. will be appended to the right of the slash in the URL.
  8210. Daniel (7 December 2001)
  8211. - Michal Bonino pointed out that Digital Unix doesn't have gmtime_r so the
  8212. link failed. Added a configure check and corrected source code.
  8213. Version 7.9.2
  8214. Daniel (5 December 2001)
  8215. - Jon Travis found out that if you used libcurl and CURLOPT_UPLOAD and then
  8216. on the same handle used CURLOPT_HTTPGET it would still attempt to upload.
  8217. His suggested fix was perfect.
  8218. Daniel (4 December 2001)
  8219. - Incorporated more macos fixes and added four specific files in a new
  8220. subdirectory below src.
  8221. Daniel (3 December 2001)
  8222. - Eric Lavigne reported two problems:
  8223. First one in the curl_strnequal() function. I think this problem is rather
  8224. macos 9 specific, as most platform provides a function to use instead of the
  8225. one provided by libcurl.
  8226. A second, more important, was in the way we take care of FTP responses. The
  8227. code would read a large chunk of data and search for the end-of-response
  8228. line within that chunk. When found, it would just skip the rest of the
  8229. data. However, when the network connections are special, or perhaps the
  8230. server is, we could actually get more than one response in that chunk of
  8231. data so that when the next invoke to this function was done, the response
  8232. had already been read and thrown away. Now, we cache the data not used in
  8233. one call, as it could be useful in the subsequent call. Test case 126 was
  8234. added and the test ftp server modified, to exercise this particular case.
  8235. Version 7.9.2-pre8
  8236. Daniel (2 December 2001)
  8237. - Bug report #487825 correctly identified a problem when using a proxy and
  8238. following a redirection from HTTP to HTTPS. libcurl then re-used the same
  8239. proxy connection but without doing a proper HTTPS request.
  8240. - Fixed win32 compiling quirks.
  8241. Version 7.9.2-pre7
  8242. Daniel (30 November 2001)
  8243. - Documented --disable-epsv and CURLOPT_FTP_USE_EPSV.
  8244. Daniel (29 November 2001)
  8245. - Added --disable-epsv as an option. When used, curl won't attempt to use the
  8246. EPSV command when doing passive FTP downloads. Wrote a test case for it.
  8247. - Eric provided a few more fixes for building on Macs. He also pointed out
  8248. a flaw in the signal handler restoration code.
  8249. Daniel (28 November 2001)
  8250. - Fiddled with some Tru64 problems reported by Dimitris Sarris. They appeared
  8251. only when using VERBOSE ftp transfers. Do we use a too small buffer for
  8252. gethostbyaddr_r(), was the lack of using in_addr_t wrong or is it that the
  8253. hostent struct must be blanked before use? With Dimitris help and these
  8254. patches, the problems seem to be history.
  8255. - CURLOPT_FTP_USE_EPSV was added and can be set to FALSE to prevent libcurl
  8256. from using the EPSV command before trying the normal PASV. Heikki Korpela
  8257. pointed out that some firewalls and similar don't like the EPSV so we must
  8258. be able to shut if off to work everywhere.
  8259. - I added a configure check for 'in_addr_t' and made the ftp code use that to
  8260. receive the inet_addr() return code in. Works on Solaris and Linux at
  8261. least. The Linux man page for inet_addr() doesn't even mention in_addr_t...
  8262. - Adjusted (almost) all FTP tests to the new command sequence.
  8263. - FTP command sequence changes:
  8264. EPSV is now always attempted before PASV. It is the final touch to make IPv6
  8265. passive FTP downloads to work, but EPSV is not restricted to IPv6 but works
  8266. fine with IPv4 too on the servers that support it.
  8267. SIZE is now always issued before RETR. It makes curl know the actual
  8268. download size before the download takes place, as it makes it less important
  8269. to find the size sent in RETR responses. Many sites don't include the size
  8270. in there.
  8271. Both these changes made it necessary to change the test suite's ftp server
  8272. code, and all FTP test cases need to be checked and adjusted!
  8273. Daniel (27 November 2001)
  8274. - Hans Steegers pointed out that the telnet code read from stdout, not stdin
  8275. as it is supposed to do!
  8276. Version 7.9.2-pre6
  8277. Daniel (27 November 2001)
  8278. - Eric Lavigne's minor changes to build on MacOS before OS X were applied.
  8279. - greep at mindspring.com provided a main index.html page for our release
  8280. archive docs directory. It just links to all the existing HTML files, but
  8281. I think it may come useful to people.
  8282. - There's now some initial code to support the EPSV FTP command. That should
  8283. be used to do passive transfers IPv6-style. The code is still #if 0'ed in
  8284. lib/ftp.c as I have no IPv6 ftp server to test this with.
  8285. Daniel (26 November 2001)
  8286. - Robert Schlabbach had problems to understand how to do resumed transfers,
  8287. and I clarified the man page -C section somewhat.
  8288. Version 7.9.2-pre5
  8289. Daniel (22 November 2001)
  8290. - Andrés García helped me out to track down the roots of bug report #479537,
  8291. which was concerning curl returning the wrong error code when failing to
  8292. connect. This didn't happen on all systems, and more specificly I've so far
  8293. only seen this happen on IPv4-only Linux hosts.
  8294. - I applied the fixes for the two bugs Eric Lavigne found when doing his MacOS
  8295. port. A missing comma in arpa_telnet.h and a pretty wild write in the FTP
  8296. response reader function. The latter write is however likely to occur in our
  8297. own buffer unless very big FTP server replies (>25K) are read. I've never
  8298. seen such a reply ever, so I think this is a relatively minor risk.
  8299. Daniel (21 November 2001)
  8300. - Moonesamy provided code to prevent junk from being output when libcurl
  8301. returns an error code but no error description and that corrects how make is
  8302. run in the Makefile.dist file (that appears as root Makefile in release
  8303. archives).
  8304. - Eric Lavigne mailed me bugfixes and patches for building libcurl on MacOS
  8305. (non-X).
  8306. - Kevin Roth modified the cygwin files once again, now to build against the
  8307. shared OpenSSL DLLs.
  8308. Version 7.9.2-pre4
  8309. Daniel (20 November 2001)
  8310. - Georg Horn brought a patch that introduced CURLINFO_STARTTRANSFER_TIME,
  8311. complete with man page updates!
  8312. Daniel (19 November 2001)
  8313. - Miklos Nemeth provided details enough to update the Borland makefile
  8314. properly.
  8315. - Lars M Gustafsson found a case with a bad free(). In fact, it was so bad I'm
  8316. amazed we never saw this before!
  8317. - Kevin Roth patched the cygwin Makfile.
  8318. Daniel (16 November 2001)
  8319. - Klevtsov Vadim fixed a bug in how time-conditionals were sent when doing
  8320. HTTP.
  8321. Version 7.9.2-pre3
  8322. Daniel (14 November 2001)
  8323. - Samuel Listopad patched away the problem with SSL we got when someone call
  8324. curl_global_init() => curl_global_cleanup() => curl_global_init(). The
  8325. second init would not "take" and SSL would be unusable with curl from that
  8326. point. This doesn't change the fact that calling the functions that way is
  8327. wrong. curl_global_init() should be called exactly once and not more.
  8328. Daniel (13 November 2001)
  8329. - Fixed some minor variable type mixups in ftp.c that caused compiler warnings
  8330. on HP-UX 11.00.
  8331. - The FTP fix I did yesterday used an uninitialized variable that caused
  8332. spurious errors when doing FTP.
  8333. Version 7.9.2-pre2
  8334. Daniel (12 November 2001)
  8335. - Ricardo Cadime fell over a multiple-requests problem when first a FTP
  8336. directory fetch failed and then a second request is made after that. The
  8337. second request happened to get the FTP server response back from the
  8338. previous request, when it did its initial CWD command.
  8339. - Bjorn Reese pointed out that we could improve the time diff function to
  8340. prevent truncation a bit.
  8341. - Kai-Uwe Rommel made me aware that -p (http proxy tunnel) silly enough didn't
  8342. work for plain HTTP requests! So I made that work.
  8343. Version 7.9.2-pre1
  8344. Daniel (12 November 2001)
  8345. - Rewrote the Curl_ConnectHTTPProxyTunnel(). It should now not only work a lot
  8346. faster, it should also support such ("broken") proxies that John Lask
  8347. previously have reported problems with. His proxy sends a trailing zero byte
  8348. after the end of the (proxy-) headers. I've tested this myself and it seems
  8349. to work on a proxy the previous version also worked with...! This rewrite is
  8350. due to the problems John Lask previously experienced.
  8351. - Andrés García found out why the "current speed" meter sometimes showed 2048K
  8352. for very quick transfers. It turned out the "time diff"-function returned a
  8353. zero millisecond diff. We now always say it is at least one millisecond! In
  8354. reality, these timers very rarely have that good resolution so even though
  8355. the time diff was longer than 1 millisecond, it was reported as no diff.
  8356. - I also modified the getinfo() again when returning times, as Paul Harrington
  8357. reports that 7.9.1 only returns times with 1 second accuracy, which indeed
  8358. is wrong.
  8359. Daniel (8 November 2001)
  8360. - Marcus Webster found out that curl_formadd() could read one byte outside a
  8361. buffer boundary, which then of course could lead to a crash. Marcus also
  8362. gracefully provided a patch for this this.
  8363. - Glen Scott ran configure on his Cobalt Qube and it didn't figure out the
  8364. correct way of calling gethostbyname_r() and thus failed to resolve hosts.
  8365. This is two errors: it shouldn't continue the configure script if it finds
  8366. gethostbyname_r() but can't figure out how to use it, and it should really
  8367. figure out how to use it as it was running Linux and we know how that
  8368. works...
  8369. Daniel (7 November 2001)
  8370. - docs/VERSIONS is a new file in the archive that explains the version number
  8371. system we use in the curl project.
  8372. - Did some more fixes that now makes libcurl only ignore signals as long as
  8373. it needs to, and then restore (if any) previous signal handler again.
  8374. Daniel (6 November 2001)
  8375. - Enrik Berkhan posted bug report #478780, in which he very correctly pointed
  8376. out two bad timeout matters in libcurl: we didn't restore the sigaction
  8377. struct (the alarm handler for SIGALRM) nor did we restore the previous
  8378. alarm() timeout that could've been set by a "parent" process or similar.
  8379. - Kevin Roth made the cygwin binary get stripped before install.
  8380. Daniel (5 November 2001)
  8381. - Detlef Schmier reported that curl didn't compile using Solaris 8 with the
  8382. native cc compiler. It was due to a bad function prototype. Fixed now.
  8383. Unfortunately, I can't enable the -Wstrict-prototypes in my debug builds
  8384. though, as gcc then complains like crazy on OpenSSL include files... :-(
  8385. - John Lask provided SSL over HTTP proxy fixes. They'll need some tweaking
  8386. to work on all platforms.
  8387. - John Lask added the -1/--TLSv1 options that forces SSL into using TLS
  8388. version 1 when speaking HTTPS.
  8389. - John Lask brought a brand new VC++ makefile for the lib directory, that
  8390. works a lot better than the previous!
  8391. - Ramana Mokkapati brought some clever insights on the LDAP failures (bug
  8392. report #475407), and his suggested changes are now applied.
  8393. Version 7.9.1
  8394. Daniel (4 November 2001)
  8395. - I've added a number of new test cases the last few days. A few of them since
  8396. I got reports that hinted on problems on timeouts, so I added four tests
  8397. with timeouts for all sorts of protocols and stuff. I also came to think of
  8398. a few other error scenarios that we currently didn't test properly, so I
  8399. wrote up tests for a few of those too.
  8400. Daniel (2 November 2001)
  8401. - Replaced read() and write() with recv() and send() for socket operations
  8402. even under normal unixes.
  8403. Daniel (1 November 2001)
  8404. - When an FTP transfer was aborted due to a timeout, it wasn't really aware of
  8405. how many bytes that had been transferred and the error text always said 0
  8406. bytes. I modified this to output the actually transferred amount! :-)
  8407. - The FTP fixes in pre7 didn't compile on IPv6 enabled hosts. Does now. I also
  8408. added more comments in the lib/ftp.c source file.
  8409. - Minor updates to the FAQ, added a brand new section to the web site about
  8410. the name issue (who owns "curl"? will someone sue us? etc etc):
  8411. http://curl.haxx.se/legal/thename.html
  8412. Version 7.9.1-pre7
  8413. Daniel (31 October 2001)
  8414. - The curl_easy_getinfo() timers accidentally lost their subsecond accuracy as
  8415. the calculations used longs instead of doubles! Paul Harrington reported.
  8416. - The SSL SocketIsDead() checks weren't good enough (as expected really), so I
  8417. had to add a generic internal try-it-out system. If the request on a re-used
  8418. connection seems to fail, then we go back and get a new (fresh) connection
  8419. and re-tries the request on that instead. It kind of makes the
  8420. SocketIsDead() check obsolete, but I think it is a quicker way for those
  8421. cases where it actually discovers that the connection is dead.
  8422. - When fixing the above, I noticed that we did quite a few writes to sockets
  8423. in libcurl where we didn't check the return code (that it actually worked to
  8424. send the data). With the new "attempted request" system we must detect those
  8425. situations so I went over a bunch of functions, changed return types and
  8426. added checks for what they actually return.
  8427. Version 7.9.1-pre6
  8428. Daniel (31 October 2001)
  8429. - Paul Harrington detected a problem with persistant SSL connections. Or to be
  8430. more exact, we didn't properly detect that the connection was dead and then
  8431. a second connection would try to re-use it wrongly. The solution to this
  8432. problem is still not very clear and I'm working on it. One OpenSSL insider
  8433. said there is no way to know if the SSL connection is alive or not without
  8434. actually trying an operation.
  8435. Daniel (30 October 2001)
  8436. - If a cookie was read from a file, it could accidentally strdup() a NULL
  8437. pointer. Paul Harrington reported. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/cookie.c.diff?r1=1.25&r2=1.26]
  8438. - The MANUAL file now documents -t correctly. I also fixed the -T description
  8439. in the curl.1 man page.
  8440. Daniel (29 October 2001)
  8441. - John Janssen found out that curl_formadd was missing in the libcurl.def file
  8442. and that the docs stated the wrong return type for the function.
  8443. - Andrés García found a bug with multiple files in the curl_formadd() function,
  8444. that I removed with this patch [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/formdata.c.diff?r1=1.25&r2=1.26].
  8445. - Kevin Roth brought another patch that moved the cygwin package files to the
  8446. packages/Win32/cygwin directory.
  8447. - A bug in the connection re-use logic made repeated requests to the same FTP
  8448. server (when using name+pasword in the URL) sometimes use more than one
  8449. connection. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/url.c.diff?r1=1.166&r2=1.167]
  8450. - Moonesamy tracked down and fixed a problem with the new 7.9.1 connect
  8451. code. This corrected the error Kevin Roth reported on the 7.9.1-pre5 release
  8452. (test 19)...
  8453. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/connect.c.diff?r1=1.13&r2=1.14]
  8454. Daniel (26 October 2001)
  8455. - Added test28 which verifies that "Location:"-following works even if the
  8456. contents is separated with more than one space.
  8457. Daniel (25 October 2001)
  8458. - Ramana Mokkapati pointed out that LDAP transfers would 'hang' after the
  8459. correct data has been output.
  8460. Version 7.9.1-pre5
  8461. Daniel (24 October 2001)
  8462. - T. Bharath found a memory leak in the cookie engine. When we update a cookie
  8463. that we already knew about, we lost a chunk of memory in the progress... The
  8464. brand new test case 27 now tests for this occurrence. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/cookie.c.diff?r1=1.24&r2=1.25]
  8465. Daniel (23 October 2001)
  8466. - pack_hostent() didn't properly align some pointers, so at least SPARC CPUs
  8467. would core. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/hostip.c.diff?r1=1.34&r2=1.35]
  8468. Daniel (22 October 2001)
  8469. - Tom Benoist reported that this SGI IRIX compiler didn't handle indented
  8470. preprocessor instructions, so they're no longer in the source code!
  8471. - Applied Kevin Roth's patches to make it easier to build cygwin packages from
  8472. the out-of-the-box curl release archives.
  8473. - I forgot to mention it below, but libcurl now closes connections that report
  8474. transfer failures. Unconditionally. This could be made more nicely in the
  8475. future if we set a flag or something that the connection is still good to be
  8476. used for the errors that know that for a fact. We have to close the
  8477. connection for the cases where we abort for example a HTTP transfer in the
  8478. middle, or otherwise we might re-use that connection later with lots of data
  8479. still being sent to us on it. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/transfer.c.diff?r1=1.63&r2=1.64]
  8480. Daniel (19 October 2001)
  8481. - CURLE_GOT_NOTHING is now returned when a HTTP server doesn't return
  8482. anything, not even a header. test case 37 was added to test for this.
  8483. - T. Bharath made curl_easy_duphandle() properly clone the cookie status as
  8484. well.
  8485. Version 7.9.1-pre4
  8486. Daniel (18 October 2001)
  8487. - CURLOPT_FAILONERROR, set with "curl --fail" no longer returns an error if
  8488. the HTTP return code is below 400.
  8489. Daniel (17 October 2001)
  8490. - The test suite now kills any running test http server when you re-start the
  8491. tests.
  8492. - We had to remove 'use strict' from two perl scripts, as the cygwin
  8493. adjustments didn't play nicely otherwise for some reason. Any perl wizard
  8494. out there who can put the scrict back and still make it run good on unix and
  8495. cygwin?
  8496. - A potential memory leak pointed out to us by Yanick Pelletier was removed.
  8497. It would occur when a http file transfer fails. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/transfer.c.diff?r1=1.60&r2=1.61]
  8498. - The memory debugging system should no longer display anything to stderr
  8499. if the curl_memdebug() hasn't been used to explicitly say so. This makes it
  8500. easier to use the memory debug system and switch the logging on/off.
  8501. Daniel (16 October 2001)
  8502. - Kevin Roth provided fixes for building curl nicer in cygwin environments.
  8503. Daniel (12 October 2001)
  8504. - Cleaning up the progress meter/info code. The "current speed" is now more
  8505. accurate than before as we now use the true time spent between the measures,
  8506. and not just "assuming" every-second-update like before. The output should
  8507. now also be of the same width at all times, never to show "extra" zeroes on
  8508. the right edge.
  8509. - After talking about possible Location: bugs on the mailing list, I modified
  8510. the "absolute URL" checker in lib/transfer.c to be more strict when checking
  8511. if the redirected URL is absolute.
  8512. Daniel (11 October 2001)
  8513. - Kevin Roth provided patches that make the test suite run fine on Windows
  8514. 2000 running cygwin.
  8515. Daniel (10 October 2001)
  8516. - Setting the -c or the CURLOPT_COOKIEJAR option now enables the cookie parser.
  8517. Previously -b or CURLOPT_COOKIEFILE was also required for the jar to work.
  8518. Version 7.9.1-pre3
  8519. Daniel (9 October 2001)
  8520. - Added a new option to the command line client: -0/--http1.0. It uses the new
  8521. libcurl option CURLOPT_HTTP_VERSION to request that libcurl uses HTTP 1.0
  8522. requests instead of the default version (1.1). It should only be used if you
  8523. really MUST do that because of a silly remote server.
  8524. - Renamed the 'TimeCond' typedef in curl/curl.h to use a 'curl_' prefix as
  8525. all public curl-symbols should.
  8526. - libcurl now explicitly ignores the SIGPIPE signal.
  8527. Daniel (8 October 2001)
  8528. - Kevin Roth's change to the cookie-jar comment (in the stored file) was
  8529. applied.
  8530. - Lucas Adamski's minor bug in the bind error code failf() was fixed.
  8531. Daniel (5 October 2001)
  8532. - Moonesamy fixed the Curl_connecthost() function to not give compiler errors
  8533. on a bunch of compilers, due to the argument named 'socket'.
  8534. - Moonesamy also provided updated VC++ makefiles and project files.
  8535. Version 7.9.1-pre2
  8536. Daniel (4 October 2001)
  8537. - Albert Chin provided a configure patch that makes the script detect proper
  8538. gethostbyname_r() method without actually running any code, only compiling
  8539. is necessary. This also removes the need of having a resolving 'localhost'
  8540. name.
  8541. - Found and removed memory leakage (name resolve data) in libcurl on
  8542. IPv6-enabled hosts. These could sneak through because we didn't have any
  8543. resource tracing on the IPv6-related functions. We do now.
  8544. Daniel (3 October 2001)
  8545. - Keith McGuigan patched away a (mainly Windows-) problem with the name
  8546. resolver data being kept in the static memory area, which is removed when a
  8547. thread is killed. The curl handle itself though perfectly handles being
  8548. passed between threads.
  8549. - Dirk Eddelbuettel reported an odd bug that turned out to be his proxy that
  8550. required an Authorization: header. Now, proxies are not supposed to require
  8551. that header, that is for true servers...
  8552. - I accidentally ruined Georg's curl_formadd(). Uh, bad me. Corrected now.
  8553. Version 7.9.1-pre1
  8554. Daniel (3 October 2001)
  8555. - Georg Huettenegger once again made an effort beyond the call of duty and not
  8556. only improved the curl_formadd() function, but also took care of adjusting
  8557. the curl command line client to use this new function instead of the
  8558. obsoleted curl_formparse.
  8559. Daniel (2 October 2001)
  8560. - Major fix in how libcurl does TCP connects. It now does non-blocking
  8561. connects to enable good timeouts without signals, and it now tries all IP
  8562. addresses for any given host (if it resolves more than one and the first
  8563. one(s) don't connect). Added a new source file 'connect.c' to deal with all
  8564. the TCP connect stuff.
  8565. - We now support IPv4-style IP-addresses in rfc2732-format, to better support
  8566. people writing scripts without knowing what address there is.
  8567. Daniel (28 September 2001)
  8568. - Cleanups in the FTP source code. Divided the code into even more smaller
  8569. functions and generally tried to make the differences between IPv4 and IPv6
  8570. get less noticable in the sources.
  8571. - If the remote file time is not readable/accessable/understood by libcurl,
  8572. libcurl now returns -1 in the CURLINFO_FILETIME data, not 0 as it previously
  8573. did. This should make curl not touch the file data unless there was a known
  8574. remote date when -R is used.
  8575. Daniel (27 September 2001)
  8576. - Working on getting non-blocking connects working platform independent. We
  8577. will also make curl try all IPs for a given host if the first one should
  8578. fail.
  8579. Daniel (26 September 2001)
  8580. - Kevin Roth provided a cookie example that proved the cookie jar
  8581. functionality wasn't working properly. I added test case 46 and made it
  8582. work.
  8583. Daniel (25 September 2001)
  8584. - Jörn Hartroth updated the mingw32 makefiles.
  8585. Version 7.9
  8586. Daniel (23 September 2001)
  8587. - Found and removed a 'socket leak' that would occur on IPv6 enabled hosts
  8588. when FTP RETR failed.
  8589. - Made the FTP upload tests run fine on machines with IPv6 enabled.
  8590. Version 7.9-pre8
  8591. Daniel (19 September 2001)
  8592. - Vojtech Minarik set up a special-purpose test server and provided me with
  8593. test certificates in order for me to repeat the bug reports #440068 and
  8594. #440373. It turned out we didn't check all the error codes properly. We do
  8595. now, and connecting with a unacceptable certificate will make libcurl fail
  8596. to connect with an error code returned.
  8597. - Ramana Mokkapati found a case when the Location: following code did wrong.
  8598. I wrote a test case for this (45).
  8599. Version 7.9-pre7
  8600. Daniel (17 September 2001)
  8601. - Linus Nielsen Feltzing fixed telnet for win32. It makes libcurl require
  8602. winsock 2.0.
  8603. Version 7.9-pre6
  8604. - libtool 1.4.2 is now in use!
  8605. Version 7.9-pre5
  8606. Daniel (14 September 2001)
  8607. - Added another 14 ftp tests.
  8608. Daniel (13 September 2001)
  8609. - Added curl_easy_duphandle() to the easy.h header file. It has now been
  8610. tested and proved to work in a real-world tests by T Bharath. We still need
  8611. to write up some docs for this function.
  8612. - Added four more ftp tests to the test suite.
  8613. Daniel (12 September 2001)
  8614. - CURLOPT_SSL_CIPHER_LIST was added, and the curl tool option is named
  8615. --ciphers. Use them to specify a list of ciphers to use in the SSL
  8616. connection.
  8617. - T. Bharath found a memory leak in libcurl's windows version. It turned out
  8618. to be the new duphandle() that didn't quite work yet.
  8619. Version 7.9-pre4
  8620. Daniel (11 September 2001)
  8621. - Added verbose output for SSL connections that output the server
  8622. certificate's start and expire dates. As suggested by Paul Harrington.
  8623. - Heikki Korpela found problems in the perl ftp server used for the test
  8624. suite, when he runs on on OpenBSD with perl 5.6. Some changes have been
  8625. made, but nothing really certain.
  8626. - T. Bharath has experienced problems with libcurl's stack usage on windows
  8627. and works on reducing it.
  8628. Daniel (10 September 2001)
  8629. - Cris Bailiff fixed the perl interface. It stopped working since the changed
  8630. behavior with WRITEHEADER and NULL pointers.
  8631. - The "output cookies" function could dump core if no cookies were enabled.
  8632. Daniel (7 September 2001)
  8633. - SM pointed out that the SSL code didn't compile any longer if SSL was
  8634. disabled... Also, we needed to correct the #include for the utime stuff on
  8635. windows.
  8636. Daniel (6 September 2001)
  8637. - T. Bharath pointed out a flaw in the SSL session cache code that made it
  8638. sometimes read from a NULL pointer.
  8639. Version 7.9-pre3
  8640. Daniel (3 September 2001)
  8641. - Added the -R/--remote-time option, that uses the remote file's datestamp to
  8642. set the local file's datestamp. Thus, when you get a remote file your local
  8643. file will get the same time and date. Note that this only works when you use
  8644. -o or -O.
  8645. - Installed libtool 1.4.1, libtoolized and everything.
  8646. Daniel (1 September 2001)
  8647. - Heikki Korpela pointed out that I did not ship the proper libtool stuff in
  8648. the pre-releases, even though that was my intention. libtoolize has now
  8649. been re-run.
  8650. - Heikki also patched away the bad use of 'make -C' in the test suite
  8651. makefile. make -C is not very portable and is now banned from here.
  8652. Version 7.9-pre2
  8653. Daniel (31 August 2001)
  8654. - I just made a huge internal struct rehaul, and all the big internally used
  8655. structs have been renamed, redesigned and stuff have been moved around a bit
  8656. to make the source easier to follow, more logically grouped and to hopefully
  8657. decrease future bugs. I also hope that this will make new functions to get
  8658. easier to add, and make it less likely that we have bugs left like the URL-
  8659. free bug from August 23.
  8660. Version 7.9-pre1
  8661. Daniel (29 August 2001)
  8662. - The new cookie code have enabled the brand new '-c/--cookie-jar' option. Use
  8663. that to specify the file name in which you want to have all cookies curl
  8664. knows of, dumped to. It'll be written using the netscape cookie format.
  8665. This is internally done with the new CURLOPT_COOKIEJAR option to libcurl,
  8666. which in turn dumps this information when curl_easy_cleanup() is invoked.
  8667. There might be reasons to re-consider my choice of putting it there. Perhaps
  8668. it is better placed to get done just before *_perform() is done. It is all
  8669. of course depending on how you guys want to use this feature...
  8670. - Added ftpupload.c in the source examples section, based on source code posted
  8671. by Erick Nuwendam.
  8672. Daniel (28 August 2001)
  8673. - Now running libtool CVS branch-1-4 to generate stuff. Should fix problems
  8674. on OpenBSD and hopefully on FreeBSD as well!
  8675. - Georg Huettenegger modified the curl_formadd() functionality slightly, and
  8676. added support for error code 417 when doing form post and using the Expect:
  8677. header. Great work!
  8678. - Made some tests with cached SSL session IDs, and they seem to work. There
  8679. should be a significant speed improvement in the SSL connection phase, but
  8680. in my tiny tests it just isn't possible to notice any difference. Like other
  8681. caching in libcurl, you must reuse the same handle for the caching to take
  8682. effect. SSL session ID caching is done on a per host-name and destination
  8683. port number basis.
  8684. Set verbose, and you'll get informational tests when libcurl detects and
  8685. uses a previous SSL session ID.
  8686. - Upgraded to automake 1.5 on my development/release machine.
  8687. Daniel (27 August 2001)
  8688. - Slowly started writing SSL session ID caching code
  8689. Daniel (24 August 2001)
  8690. - T. Bharath removed compiler warnings on windows and updated the MS project
  8691. files.
  8692. - Kevin Roth reported two kinds of command line constructs with the new -G that
  8693. curl didn't really deal with the way one would like.
  8694. - Tim Costello patched away a use of strcasecmp() in the SSL code. We have our
  8695. own portable version named strequal() that should be used!
  8696. - Tim also pointed out a problem in the lib/Makefile.vc6 file that made it mix
  8697. debug object modules causing confusions.
  8698. Daniel (23 August 2001)
  8699. - T. Bharath accurately found a libcurl bug that would happen when doing a
  8700. second invoke of curl_easy_perform() with a new URL when the previous invoke
  8701. followed a Location: header.
  8702. - Started the improvement work on the cookie engine:
  8703. - Now keeps cookies in the same order as the cookie file
  8704. - A write to the possibly static string was removed
  8705. - Added a function that can output all cookies
  8706. - Now supports reading multiple cookie files
  8707. - Steve Lhomme corrected a DLL naming issue in the MSVC++ project file.
  8708. - Split up the monster function in lib/ftp.c to use more smallish functions to
  8709. increase readability and maintainability.
  8710. Daniel (21 August 2001)
  8711. - Georg Huettenegger's big patch was applied. Now we have:
  8712. o "Expect: 100-continue" support. We will from now on send that header in
  8713. all rfc1867-posts, as that makes us abort much faster when the server
  8714. rejects our POST. Posting without the Expect: header is still possible in
  8715. the standard replace-internal-header style.
  8716. o curl_formadd() is a new formpost building function that is introduced to
  8717. replace the now deprecated curl_formparse() function. The latter function
  8718. will still hang around for a while, but the curl_formadd() is the new way
  8719. and correct way to build form posts.
  8720. o Documentation has been updated to reflect these changes
  8721. These changes are reason enough to name the next curl release 7.9...
  8722. - We now convert man pages to HTML pages and include them in the release
  8723. archive. For the pleasure of everyone without nroff within reach.
  8724. - Andrés García's suggested flushing of the progress meter output stream was
  8725. added. It should make the progress meter look better on Windows.
  8726. - Troy Engel pointed out a mistake in the configure script that made it fail
  8727. on many Red Hat boxes!
  8728. Daniel (20 August 2001)
  8729. - We need an updated libtool to make a better build environment for OpenBSD
  8730. as well as FreeBSD
  8731. Version 7.8.1
  8732. Daniel (20 August 2001)
  8733. - Brad pointed out that we ship two extra libtool files in the tarballs that
  8734. we really don't need to! Removing them makes the gz-archive about 60K
  8735. smaller!
  8736. - Albert Chin brought fixes for the configure script to detect socklen_t
  8737. properly as well as moving lots of our custom autoconf macros to
  8738. acinclude.m4.
  8739. Daniel (19 August 2001)
  8740. - Moonesamy improved his -G feature for host names only URLs...
  8741. Daniel (17 August 2001)
  8742. - Finally cleaned up the kerberos code to use Curl_ prefixes on all global
  8743. symbols and to not use global variables.
  8744. Version 7.8.1-pre6
  8745. Daniel (16 August 2001)
  8746. - S. Moonesamy added the -G option to curl, that converts the data specified
  8747. with -d to a GET request. Default action when using -d is POST. When -G is
  8748. used, the -d specified data will be appended to the URL with a '?'
  8749. separator. As suggested previously by Kevin Roth.
  8750. - curl-config --libs should now display all linker options required to link
  8751. with libcurl. It includes the path and options for libcurl itself.
  8752. curl-config --cflags displays the compiler option(s) needed to compile
  8753. source files that use libcurl functions. Basically, that sets the include
  8754. path correct.
  8755. Daniel (15 August 2001)
  8756. - Arkadiusz Miskiewicz pointed out a mistake in how IPv6-style IP-addresses
  8757. were parsed and used. (RFC2732-format)
  8758. - Bug #12733 over on php.net identified a problem in libcurl that made it core
  8759. dump if you used CURLOPT_POST without setting any data to post with
  8760. CURLOPT_POSTFIELDS! This is no longer the case. Not using CURLOPT_POSTFIELDS
  8761. now equals setting it to no data at all.
  8762. - Ramana Mokkapati reported that curl with '-w %{http_code}' didn't work
  8763. properly when used for multiple URLs on a single command line. Indeed, the
  8764. variable was not reset between the requests. This is now fixed.
  8765. - David James fixed the Borland makefile so that libcurl still compiles and
  8766. builds with that compiler.
  8767. Daniel (14 August 2001)
  8768. - Oops. I ruined Nico's socklen_t define in config-vms.h, corrected it now.
  8769. - An older item not mentioned here before: CURL_GLOBAL_WIN32 is a define for
  8770. windows users to curl_global_init(), that makes libcurl init the winsock
  8771. stuff. If libcurl is all socket stuff you do, then allowing it to fiddle
  8772. with this is a comfortable shortcut to fame.
  8773. Version 7.8.1-pre5
  8774. Daniel (14 August 2001)
  8775. - Nico Baggus provided more feedback from his VMS porting efforts and a few
  8776. minor changes were necessary.
  8777. - I modified configure.in so that --enable-debug sets more picky gcc options.
  8778. I then removed almost all the new warnings that appeared, and by doing so I
  8779. corrected the size_t-treated-as-signed problem that has been discussed on
  8780. the mailing list previously. I also removed a bunch of the just recently
  8781. added #ifdef VMS lines.
  8782. - I removed the use of a global variable in the SSL code. It was once
  8783. necessary but hasn't been needed since OpenSSL 0.9.4. The old code should
  8784. (hopefully) still work if libcurl is built against an ancient version of
  8785. OpenSSL.
  8786. Daniel (13 August 2001)
  8787. - Peter Todd posted a patch that now allows non-file rc1867-style form posts
  8788. to be larger than 4K.
  8789. Daniel (10 August 2001)
  8790. - S. Moonesamy fixed bugs for building debug and SSL lib in VC makefile
  8791. Daniel (9 August 2001)
  8792. - The redirected error stream was closed before the curl_easy_cleanup() call
  8793. was made, and when VERBOSE was enabled, the cleanup function tried to use
  8794. the stream. It could lead to a segmentation fault. Also, the stream was
  8795. closed even if we looped to get more files. Corrects Dustin Boswell's bug
  8796. report #441610
  8797. - Now generates the release configure script with autoconf 2.52
  8798. Version 7.8.1-pre4
  8799. Daniel (8 August 2001)
  8800. - curl -E uses a colon to separate a file name from a passphrase. This turned
  8801. out really bad for the windows people who wants to include a drive letter in
  8802. the file name like "c:\cert.pem". There's now a win32 work-around
  8803. implemented that tries work around that, when the colon seems to be used for
  8804. this kind of construct.
  8805. - Patrick Bihan-Faou introduced CURLOPT_SSL_VERIFYHOST, which makes curl
  8806. verify the server's CN field when talking https://. If --cacert is not used,
  8807. any failures in matching is only displayed as information (-v).
  8808. Daniel (7 August 2001)
  8809. - Wrote up nine more test cases, more or less converted from the former test
  8810. suite.
  8811. Daniel (6 August 2001)
  8812. - Heikki Korpela posted a patch that makes 'curl-config --libs' include the
  8813. directory in which libcurl itself is installed in. While this wasn't my
  8814. initial intention with this option, it makes sense and makes linking with
  8815. libcurl easier.
  8816. - Stefan Ulrich pointed out to us that other tools and libraries treat file://
  8817. URLs with only one slash after the host name slighly different than libcurl
  8818. does. Since all the others seem to agree, we better follow them.
  8819. - Nico Baggus provided us with a huge set of fixes to make curl compile and
  8820. build under OpenVMS.
  8821. Version 7.8.1-pre3
  8822. Daniel (6 August 2001)
  8823. - Jonathan Hseu noticed that you couldn't get a header callback unless you
  8824. set CURLOPT_WRITEHEADER to non-NULL, even if you didn't care about that
  8825. data. This is now fixed.
  8826. Daniel (5 August 2001)
  8827. - Sergio Ballestrero provided a patch for reading responses from NCSA httpd
  8828. 1.5.x servers, as they return really screwed up response headers when asked
  8829. for with HTTP 1.1.
  8830. - curl_escape() no longer treats already encoded characters in the input
  8831. string especially.
  8832. Daniel (3 August 2001)
  8833. - I replaced the former lib/arpa_telnet.h file with one I wrote myself, to
  8834. avoid the BSD annoucement clause of the license in the former file.
  8835. - Andrew Francis provided a new version of base64.c to work around the license
  8836. boiler plate that came with the previous one. I patched it, but the glory
  8837. should go to Andrew for his heads up.
  8838. - Tomasz Lacki noticed that when you do repeated transfers with libcurl you
  8839. couldn't always reliably change HTTP request. This has now been fixed and a
  8840. new libcurl option was added: CURLOPT_HTTPGET, that can force the HTTP
  8841. requestr (back) to GET.
  8842. - Linus Nielsen Feltzing pointed out that httpsserver.pl wasn't included in
  8843. release archives. It should be now.
  8844. Daniel (2 August 2001)
  8845. - Frank Keeney pointed out a manual mistake for certificate convertions.
  8846. - Tomasz Lacki pointed out a problem in the transfer loop that could make the
  8847. select() loop use far too much CPU.
  8848. - Pawel A. Gajda pointed out an output mistake done when using libcurl's
  8849. progress callback.
  8850. Daniel (29 June 2001)
  8851. - Naveen Noel noticed that the Borland library makefile wasn't updated.
  8852. - Nic Roets brought a fix for the certificate verification when using SSL.
  8853. Daniel (27 June 2001)
  8854. - Made the FTP tests run OK even on machines running curl IPv6-enabled.
  8855. - Troy Engel corrected some RPM package details.
  8856. Version 7.8.1-pre2
  8857. Daniel (25 June 2001)
  8858. - Björn Stenberg correctly identified a problem that occurred when downloading
  8859. several files with curl, and using resume. The first file's resume index was
  8860. then used for all files, resulting in weird results...
  8861. - Anton Kalmykov provided a fix that makes curl work with form field names
  8862. with spaces like when -F is used.
  8863. Version 7.8.1-pre1
  8864. Daniel (20 June 2001)
  8865. - Mike Bytnar provided a fine report that proved that the --with-ssl option
  8866. for configure needed tweaking. It no longer searches the default directories
  8867. for OpenSSL libs or directories when a specified path is given.
  8868. Daniel (19 June 2001)
  8869. - When an FTP transfer is cut off during transfer, curl could present a truly
  8870. garbaged error message and in worst case dump core. Thanks to detailed
  8871. reports from Shawn Poulson we nailed this.
  8872. Daniel (12 June 2001)
  8873. - Salvador Dávila provided a fix for FTP range downloads.
  8874. - Added a few more test cases from the former test suite to the new file
  8875. format. We're now at a total of 26 tests.
  8876. Daniel (11 June 2001)
  8877. - libcurl's version-info was wrong, as noted by both Domenico Andreoli and
  8878. David Odin.
  8879. Daniel (7 June 2001)
  8880. - Jörn fixed the curl_unescape duplicate entry in lib/libcurl.def
  8881. - I made SSL certificate failure messages to be more detailed.
  8882. Version 7.8
  8883. Daniel (7 June 2001)
  8884. - SDavila provided a resumed download fix.
  8885. Version 7.8-pre4
  8886. Daniel (1 June 2001)
  8887. - Sterling provided some new PHP examples.
  8888. - Changed the CVS hierarchy and the older checkout instruction does no longer
  8889. work. We moved the entire source code into a CVS module named 'curl'.
  8890. Daniel (31 May 2001)
  8891. - CURLOPT_MUTE does not exist anymore. It is still present in the include file
  8892. to not cause compiler errors for applications using it, but it isn't used
  8893. anywhere in the library.
  8894. Version 7.8-pre3
  8895. Daniel (31 May 2001)
  8896. - Once and for all fixed the _REENTRANT mess for Solaris compiles to present
  8897. less warnings.
  8898. - Sterling Hughes tirelessly points out and corrects my mistakes...! So,
  8899. curl_global_init() now lets the argument flags *SET* what parts to
  8900. init. CURL_GLOBAL_DEFAULT makes a nice default, CURL_GLOBAL_ALL inits all
  8901. known subsystems and CURL_GLOBAL_NONE inits nothing more than absolutely
  8902. necessary. Man page updated accordingly.
  8903. - Fixed the strtok.h include file as it wouldn't compile on all platforms!
  8904. Daniel (30 May 2001)
  8905. - Made libcurl by default act as if CURLOPT_MUTE and CURLOPT_NOPROGRESS were
  8906. set TRUE. Set them to FALSE to make libcurl more talkative. The *_MUTE
  8907. option is subject for complete removal...
  8908. Version 7.8-pre2
  8909. Daniel (30 May 2001)
  8910. - Cris Bailiff wrote a makefile for building Solaris packages.
  8911. - Sterling Hughes brought fixes for 'buildconf' (the build-from-CVS tool) and
  8912. we discussed and added a few CURL_GLOBAL_* flags in include/curl.h
  8913. - Kjetil Jacobsen privately announced his python interface to libcurl,
  8914. available at http://pycurl.sourceforge.net/
  8915. Daniel (29 May 2001)
  8916. - Sterling Hughes fixed a strtok() problem in libcurl. It is not a thread-
  8917. safe function. Now configure checks for a thread-safe version, and
  8918. lib/strtok.c offers one for the systems that don't come with one included!
  8919. - Mettgut Jamalla correctly pointed out that the -# progress bar was written
  8920. to stderr even though --stderr redirection was used. This is now corrected.
  8921. - I moved out the list of contributors from the curl.1 man page and made a
  8922. separate docs/THANKS file. It makes the list easier to find, and made it
  8923. easier for me to make a separate web page with that same information.
  8924. I really do want all you guys mentioned in there to feel you get the credit
  8925. you deserve.
  8926. - lib/easy.c didn't compile properly in the 7.8-pre1 due to a silly mistake
  8927. Version 7.8-pre1
  8928. Daniel (28 May 2001)
  8929. - curl-config now supports '--vernum' that outputs a plain hexadecimal version
  8930. of the libcurl version number (using 8 bits for each 3 numbers). Version
  8931. 7.7.4 appears as 070704
  8932. - Wrote man pages for curl_global_init and curl_global_cleanup...
  8933. - T. Bharath brought news about the usage of the OpenSSL interface that was
  8934. not previously taken into consideration and thus caused libcurl to leak
  8935. memory. The only somewhat sane approach to fix this dilemma, is adding two
  8936. two new functions curl_global_init() and curl_global_cleanup() that should
  8937. be called *ONCE* by the application using libcurl. The init should be done
  8938. only at startup, no matter how many threads the application is gonna use,
  8939. and the cleanup should be called when the application has finished using
  8940. libcurl completely.
  8941. *** UPGRADE NOTICE ***
  8942. If you write applications using libcurl, you really want to use the two
  8943. functions mentioned above !!!
  8944. I can't say I think this is a very beautiful solution, but as OpenSSL
  8945. insists on making lots of stuff on a "global" scope, we're forced to walk
  8946. the path they point us to.
  8947. - Moving more test cases into the new file format.
  8948. Version 7.7.4-pre3
  8949. Daniel (23 May 2001)
  8950. - Introduced a new file format for storing test cases, and thus I had to
  8951. modify all the perl test scripts and more (I added a new one). I have not
  8952. "ported" all the old test cases to the new format yet, but it'll come.
  8953. The main advantage of this new format is that all test data for each test
  8954. case is stored in a single file. It gives a better overview for each test
  8955. case and a lot less files.
  8956. - Andrés García brought a fix for the netscape/mozilla cookie file parsing
  8957. function, as it turns out it doesn't always store the path!
  8958. Daniel (22 May 2001)
  8959. - As was reported anonymously, when FAILONERROR was used, the httpcode was
  8960. not stored properly and thus wasn't possibly to read after a transfer with
  8961. the curl_easy_getinfo() function. This is now corrected.
  8962. - Installed and made use of the following tool versions:
  8963. autoconf 2.50
  8964. libtool 1.4
  8965. automake 1.4-p1
  8966. I wouldn't recommend any developer to try to generate things with older
  8967. versions than these. Building from CVS will probably more or less require
  8968. at least these versions.
  8969. As a result of this, the configure script grew to more than double its
  8970. previous size!
  8971. Arkadiusz Miskiewicz helped me by pointing out I had to remove my
  8972. acinclude.m4 file before I could get it working!
  8973. Daniel (21 May 2001)
  8974. - I made ftps:// work. Added test case 400 to the release archive, as the
  8975. first ftps:// test case. Requires stunnel.
  8976. - Also made the test cases that runs ssl tests not run if libcurl isn't built
  8977. with ssl support.
  8978. Daniel (19 May 2001)
  8979. - Made the configure not add any extra -L LDFLAGS or -I CPPFLAGS unless they
  8980. are actually needed. Albert Chin's and Domenico Andreoli's suggestions
  8981. helped out.
  8982. Version 7.7.4-pre2
  8983. Daniel (18 May 2001)
  8984. - Nicer configure-check for the OpenSSL headers, which then sets the proper
  8985. variable to have curl-config be good. (Albert Chin provided the fix)
  8986. - For systems that don't have theiw own 'strlcat()' libcurl provides its own.
  8987. It was now renamed to prevent collides with other libs. (After discussions
  8988. with Sterling Hughes and the implications this had on PHP builds.)
  8989. Daniel (17 May 2001)
  8990. - Colm Buckley posted a detailed bug report on (the debianized) 7.7.3, that
  8991. turned out to be a problem with the debian-built 7.7.3-package that
  8992. contained files from the 7.7.2 release!
  8993. - I added the CURLE_ALREADY_COMPLETE again, but with a fake value, just to
  8994. make programs that use it, not fail when compiling against this version of
  8995. libcurl.
  8996. Daniel (14 May 2001)
  8997. - Pawel A. Gajda fixed a problem with resumed transfers on re-used persistent
  8998. connections.
  8999. Version 7.7.4-pre1
  9000. Daniel (14 May 2001)
  9001. - Jun-ichiro itojun Hagino fixed FTP PORT for IPv6-enabled libcurl.
  9002. - Added the first HTTPS test to the test suite in the release archive.
  9003. Daniel (12 May 2001)
  9004. - Jukka Pihl suggested that if (lib)curl is told to verify the peer's
  9005. certificate and the peer can't be verified, it should fail and return a
  9006. proper error code. I added a brand new error code named
  9007. CURLE_SSL_PEER_CERTIFICATE for this purpose.
  9008. Daniel (11 May 2001)
  9009. - As was discussed with Frederic Lepied a while ago, I now made libcurl not
  9010. return error even though no data was transfered on upload/download resume
  9011. when the no transfer is needed. The CURLE_ALREADY_COMPLETE error was removed
  9012. from the header file to make any implemenator that uses that to be aware of
  9013. the fact that it can't be returned anymore!
  9014. - Improved general header-parsing to better allow white spaces and more.
  9015. - Rodney Simmons proved the fix I did yesterday was bad and I had to post
  9016. another one.
  9017. - Ingo Wilken patched away two redirect problems more!
  9018. Daniel (10 May 2001)
  9019. - Cris Bailiff correctly noted that the space-after-header problem with
  9020. Location: is present on several other places in the libcurl sources.
  9021. - Ingo Wilken patched away a problem libcurl had when following Location:
  9022. headers with an extra space after the colon.
  9023. - Rodney Simmons found out that multiple FTP transfers did not treat relative
  9024. directories correctly.
  9025. Daniel (9 May 2001)
  9026. - Getting an FTP file with CURLOPT_NOBODY set (or -I from the command line),
  9027. makes curl use the non-standard ftp command "SIZE". If it failed, libcurl
  9028. returned error. Starting now, it just don't output the file size instead.
  9029. Anonymous bug report.
  9030. - stunnel.pm was accidentally left out from the release archive, it is now
  9031. added (stunnel is needed to run the https-tests in the test suite)
  9032. Daniel (7 May 2001)
  9033. - Corrected two minor compiler warnings due to the FILE * to void * conversion
  9034. that I missed at two places. Jörn Hartroth brought me patches. Sander Gates
  9035. filed a bug report on this.
  9036. Version 7.7.3
  9037. Daniel (4 May 2001)
  9038. - All callback functions now take 'void *' instead of 'FILE *'. This is made
  9039. this way to make it more obvious to people that anything can be passed to
  9040. them (by using the apropriate option). After discussions with Sterling
  9041. Hughes.
  9042. Daniel (3 May 2001)
  9043. - Cris Bailiff fixed a chunked transfer encoding problem with persistent
  9044. connection that made libcurl fail if the persistent connection used mixed
  9045. chunked and non-chunked transfers.
  9046. - Cris Bailiff fixed a bad treatment of 304-replies, as they would not be
  9047. treated as content-length 0 replies but would cause a "hang" until the
  9048. server timed-out and closed the connection.
  9049. - Brad Burdick found a minor problem in the docs/examples/Makefile.am
  9050. Daniel (27 April 2001)
  9051. - Updated the INTERALS document again. It was lagging a bit. I think I made it
  9052. more easy to follow now as well.
  9053. - Brad Burdick found a problem with persistent connections when curl received
  9054. a "Content-Length: 0" header.
  9055. - Giuseppe D'Ambrosio was first out to report that TELNET doesn't work in curl
  9056. compiled/built on win32. It seems to work for unixes though!
  9057. - Dave Hamilton reported weird problems with CURL/PHP that I really can't
  9058. explain at the moment. I'm hoping on some help from the PHP crew.
  9059. Daniel (26 April 2001)
  9060. - I rewrote the FTP command response function. I had to do it to make ftps
  9061. work, as the OpenSSL read()-function didn't work the same way the normal
  9062. unix read() does, but it was also a huge performance boost. Previously the
  9063. function read one byte at a time, now it reads very large chunks, and it
  9064. makes a notable speed difference.
  9065. Daniel (25 April 2001)
  9066. - Connection re-use when not using a proxy didn't work properly for
  9067. non-default port numbers.
  9068. Daniel (24 April 2001)
  9069. - I've noticed that FTPS doesn't work. We attempt to use ssl even for the
  9070. data transfer, which causes the transfer to 'hang'... We need to fix this.
  9071. - Improved the test suite to use 'stunnel' to do HTTPS and FTPS testing on
  9072. the alredy written perl servers easily.
  9073. Daniel (23 April 2001)
  9074. - The OpenSSL version string recently modified didn't zero terminate one
  9075. of the generated strings properly, which could lead to a crash or simply
  9076. weird version string output!
  9077. Version 7.7.2
  9078. Daniel (22 April 2001)
  9079. - Rosimildo da Silva updated the Makefiles for Borland/Windows.
  9080. - Eric Rautman pointed out a problem with persistent connections that would
  9081. lead to broken Host: headers in the second HTTP request.
  9082. Daniel (20 April 2001)
  9083. - Added man pages for the curl_strequal() and curl_mprintf() families. Wrote
  9084. a 'libcurl overview' man page.
  9085. - Spell-fixed some documents.
  9086. - S. Moonesamy corrected mistakes in the man page.
  9087. - Cris Bailiff fixed the curl_slists options in the perl interface, present
  9088. separately in the Curl::easy 1.1.4 package.
  9089. Daniel (19 April 2001)
  9090. - Linus Nielsen Feltzing removed the decimals from the size variables in the
  9091. --write-out output. We hardly ever get fraction of bytes! :-)
  9092. Version 7.7.2-pre1
  9093. Daniel (19 April 2001)
  9094. - Albert Chin provided a configure patch for the AC_SYS_LARGEFILE macro.
  9095. Daniel (18 April 2001)
  9096. - Input from Michael Mealling made me add --feature to curl-config. It
  9097. displays a list of features that have been built-in in the current
  9098. libcurl. The currently available features that can be listed are: SSL, KRB4
  9099. and IPv6.
  9100. - I committed Cris and Georg's perl interface work. They've got callbacks
  9101. working and options that receives those slist pointers.
  9102. - Puneet Pawaia detected a problem with resumed downloads that use persistent
  9103. connections and I made a rather large writeup to correct this. It is
  9104. important that all session-data is stored in the connectdata struct and not
  9105. in the main struct as this previously did.
  9106. Daniel (17 April 2001)
  9107. - Frederic Lepied fixed a ftp resumed download problem and introduced a new
  9108. error code that lets applications be able to detect when a resumed download
  9109. actually didn't download anything since the whole file is already present.
  9110. Should this return OK instead?
  9111. - I added 'curl-config.in' to the root dir and configure script. Now, a
  9112. curl-config script is made when curl is built. The script can be used to
  9113. figure out compile time options used when libcurl was built, which in turn
  9114. should be options YOU should use to build applications that use libcurl.
  9115. This *-config style is not a new idea, but something that has been used
  9116. successfully in other (library based) projects.
  9117. - Phil Karn pointed out that libcurl wrongly did not always use GMT time zone
  9118. for the If-Modified-Since style headers.
  9119. - Georg Schwarz pointed out an extra needed #include file needed in src/main.c
  9120. for curl to build on Ultrix.
  9121. Daniel (11 April 2001)
  9122. - Cris Bailiff pointed out two problems that I corrected. First, libcurl's use
  9123. of the environment variable HTTP_PROXY in uppercase may become a security
  9124. hazard when people use libcurl in a server/cgi situation where the server
  9125. sets the HTTP_*-variables according to incoming headers in the HTTP
  9126. request. Thus, a "Proxy:"-header would set that environment variable!
  9127. Then, invoking curl_easy_perform() without having an URL set caused a crash.
  9128. - S. Moonesamy brought a patch that make curl use non-blocking connects on
  9129. windows when connection timeout is set, as it allows windows users to set
  9130. that timeout!
  9131. - Hirotaka Matsuyuki wrote a Ruby interface to libcurl!
  9132. - Cris Bailiff, Forrest Cahoon and Georg Horn work on the Perl interface.
  9133. - I've written a first shot at a Java interface to libcurl. Many thanks to
  9134. Daniel Marell for tirelessly answering to all my basic Java questions. It
  9135. works, but it is still very basic.
  9136. Daniel (10 April 2001)
  9137. - The progress display could get silly when doing multiple file transfers, as
  9138. it wasn't properly reset between transfers!
  9139. - Discussions with Cris Bailiff who writes a Perl interface to libcurl, made
  9140. me add CURLOPT_HEADERFUNCTION. It can be used to set a separate callback
  9141. function for writing headers. Previously you could only set a different FILE
  9142. * when headers are written from within libcurl.
  9143. Daniel (7 April 2001)
  9144. - Andrés García fixed a problem in curl_escape() and pointed out a flaw in
  9145. the curl_easy_setopt man page.
  9146. Daniel (6 April 2001)
  9147. - Adjusted the version code to properly display OpenSSL 0.9.6a. They sure
  9148. change their version define format often...
  9149. - curl_formfree() now accepts a NULL pointer without crashing!
  9150. Version 7.7.1
  9151. Daniel (3 April 2001)
  9152. - Puneet Pawaia pointed out two serious problems. Libcurl would attempt to
  9153. read bad memory during situations when an (ftp) connection attempt failed.
  9154. Also, the lib/Makefile.vc6 was corrected.
  9155. - More investigations in the Location: following code made me realize that
  9156. it was not clean enough to work transparantly with persistent and non-
  9157. persistent connections. I think I've fixed it now.
  9158. Daniel (29 March 2001)
  9159. - Georg Horn mailed me some corrections for the Curl::easy perl interface.
  9160. - Experimental ftps:// support added. It is basically FTP over SSL for the
  9161. control connection. It still makes all data transfers going over unencrypted
  9162. connections. Rainer Weikusat's ftpd-ssl server hack supports this and I used
  9163. that to verify the functionality.
  9164. Daniel (27 March 2001)
  9165. - Guenole Bescon discovered that if you set a CURLOPT_TIMEOUT and then tried
  9166. to get a file from a site and it fails, the SIGALRM would still be sent
  9167. after the timeout-time, quite inexpectedly!
  9168. - I added an ftp transfer example to docs/examples/ and I also wrote a tiny
  9169. example makefile that can be used as a start when building one of the
  9170. examples.
  9171. Version 7.7.1-beta1
  9172. Daniel (26 March 2001)
  9173. - Mohamed Lrhazi reported problems with 7.6.1 and persistent HTTP/1.0
  9174. connections (when the server replied a Connection: Keep-Alive) and this
  9175. problem was not properly dealt with in 7.7 either. A patch was posted to the
  9176. curl-and-php mailing list.
  9177. Daniel (24 March 2001)
  9178. - Colin Watson reported about a problem and brought a patch that corrected it,
  9179. which was about the man page and lines starting with a single quote (') in a
  9180. way that gnroff doesn't like.
  9181. Daniel (23 March 2001)
  9182. - Peter Bray reported correctly that the root makefile used make instead of
  9183. $(MAKE) for the test target.
  9184. - Corrected the Curl::easy perl interface to use curl_easy_setopt() and not
  9185. curl_setopt() which was removed in 7.7!
  9186. - S. Moonesamy provided updates on three documents (MANUAL, INSTALL and FAQ).
  9187. - When following a Location:, libcurl would sometimes write to the URL string
  9188. in a way it shouldn't. As the pointer is passed-in to libcurl from an
  9189. application, we can't be allowed to write to it. The particular bug report
  9190. from 'nk' that brought this up was because he had a read-only URL that then
  9191. caused a libcurl crash!
  9192. - No longer reads HEAD responses longer than to the last header. Previously,
  9193. curl would read the full reply if the connection was a "close" one.
  9194. - libcurl did re-use connections way too much. Doing "curl
  9195. http://www.{microsoft,ibm}.com" would make it re-use the connection which
  9196. made the second request return very odd results.
  9197. Daniel (22 March 2001)
  9198. - Edin Kadribasic made me aware that curl should not re-send POST requests
  9199. when following 302-redirects. I made 302 work like 303 which means curl uses
  9200. GET in the following request(s).
  9201. - libcurl now reset the "followed-location" counter on each invoke of
  9202. curl_easy_perform() as it otherwise would sum up all redirects on the same
  9203. connection and thus could reach the maxredirs counter wrongly.
  9204. - Jim Drash suggested curl_escape() should not re-encode what already looks
  9205. like an encoded sequence and I think that's a fair suggestion.
  9206. Version 7.7
  9207. Daniel (22 March 2001)
  9208. - The configure script now fails with an error message if gethostbyname_r() is
  9209. detected but it couldn't figure out how to invoke it (what amount of
  9210. arguments it is supposed to get). Reports from Andrés García made me aware
  9211. of this need.
  9212. - Talking with Jim Drash made me finally put the curl_escape and curl_unescape
  9213. functions in the curl.h include file and write man pages for them. The
  9214. escape function was modified to use the same interface as the unescape one
  9215. had.
  9216. - No bug reports at all on the latest betas. Release time coming up.
  9217. Version 7.7-beta5
  9218. Daniel (19 March 2001)
  9219. - Georg Ottinger reported problems with using -C together with -L in the sense
  9220. that the -C info got lost when it was redirected. I could not repeat this
  9221. problem on the 7.7 branch why I leave this for the moment. Test case 39 was
  9222. added to do exactly this, and it seems to do right.
  9223. - Christian Robottom Reis reported how his 7.7 beta didn't successfully do
  9224. form posts as elegantly as 7.6.1 did. Indeed, this was a flaw in the header
  9225. engine, as HTTP 1.1 has introduced a new 100 "transient" return code for PUT
  9226. and POST operations that I need to add support for. Section 8.2.3 in RFC2616
  9227. has all the details. Seems to work now!
  9228. Daniel (16 March 2001)
  9229. - After having experienced another machine break-down, we're back.
  9230. - Georg Horn's perl interface Curl::easy is now included in the curl release
  9231. archive. The perl/ directory is now present. Please help me with docs,
  9232. examples and updates you think fit.
  9233. - Made a new php/ directory in the release archive and moved the PHP examples
  9234. into a subdirectory in there. Not much PHP info yet, but I plan to. Please
  9235. help me here as well!
  9236. - Made libcurl return error if a transfer is aborted in the middle of a
  9237. "chunk". It actually enables libcurl to discover premature transfer aborts
  9238. even if the Content-Length: size is unknown.
  9239. Daniel (15 March 2001)
  9240. - Added --connect-timeout to curl, which sets the new CURLOPT_CONNECTTIMEOUT
  9241. option in libcurl. It limits the time curl is allowed to spend in the
  9242. connection phase. This differs from -m/--max-time that limits the entire
  9243. file transfer operation. Requested by Larry Fahnoe and others.
  9244. I also updated the curl.1 and curl_easy_setopt.3 man pages and removed the
  9245. item from the TODO.
  9246. Version 7.7-beta4
  9247. Daniel (14 March 2001)
  9248. - Made curl grok IPv6 with HTTP proxies and got everything to compile nicely
  9249. again when ENABLE_IPV6 is set.
  9250. I need to remake things in the test suite. I can't test the FTP parts with
  9251. curl built for IPv6 as it uses a different set of FTP commands then!
  9252. - I fell onto a bug report on php.net (posted by Lars Torben Wilson) that was
  9253. a report meant for our project. Anyway, it said the .netrc parsing didn't
  9254. work as supposed, and as I agreed with Lars, I made the netrc parser use
  9255. getpwuid() to figure out the home directory of the effective user and try
  9256. that netrc. It still uses the environment variable HOME for those that don't
  9257. have that function or if the user doesn't return valid pwd info.
  9258. - Edin Kadribaic posted a bug report where he got a crash when a fetch with
  9259. user+password in the URL followed a Location: to a second URL (absolute,
  9260. without name+password). This bug has been around for a long while and
  9261. crashes due to a read at address zero. Fixed now. Wrote test case 38, that
  9262. tests this.
  9263. - Modified the test suite's httpserver slightly to append all client request
  9264. data to its log file so that the test script now better can verify a range
  9265. of requests and not only the last one, as it did previously.
  9266. - Updated the curl man page with --random-file and --egd-file details.
  9267. Version 7.7-beta3
  9268. Daniel (14 March 2001)
  9269. - Björn Stenberg provided similar fixes as Jörn did and some additional patches
  9270. for non-SSL compiles.
  9271. - I increased the interface number for libcurl as I've removed the low level
  9272. functions from the interface. I also took this opportunity to rename the
  9273. Curl_strequal function to curl_strequal and Curl_strnequal to
  9274. curl_strnequal, as they're public libcurl functions (even if they're still
  9275. undocumented).
  9276. This will make older programs not capable of using the new libcurl with
  9277. just a drop-in replacement.
  9278. - Jörn Hartroth updated stuff for win32 compiles:
  9279. o config-win32.h was fixed for socklen_t
  9280. o lib/ssluse.c had a bad #endif placement
  9281. o lib/file.c was made to compile on win32 again
  9282. o lib/Makefile.m32 was updated with the new files
  9283. o lib/libcurl.def matches the current interface state
  9284. Daniel (13 March 2001)
  9285. - It only took an hour or so before Jörn Hartroth found a problem in the
  9286. chunked transfer-encoding. Given his fine example-site, I could easily spot
  9287. the problem and when I re-read the spec (the part I have pasted in the top
  9288. of the http_chunks.h file), I realized I had made my state-machine slightly
  9289. wrong and didn't expect/handle the trailing CRLF that comes after the data
  9290. in each chunk (and those extra two bytes sure feel wasted).
  9291. Had to modify test case 34 to match this as well.
  9292. Version 7.7-beta2
  9293. Daniel (13 March 2001)
  9294. - Added the policy stuff to the curl_easy_setopt man page for the two supported
  9295. policies.
  9296. - Implemented some support for the CURLOPT_CLOSEPOLICY option. The policies
  9297. CURLCLOSEPOLICY_LEAST_RECENTLY_USED and CURLCLOSEPOLICY_OLDEST are now
  9298. supported, and the "least recently used" is used as default if no policy
  9299. is chosen.
  9300. Daniel (12 March 2001)
  9301. - Added CURLOPT_RANDOM_FILE and CURLOPT_EGDSOCKET to libcurl for seeding the
  9302. SSL random engine. The random seeding support was also brought to the curl
  9303. client with the new options --random-file <file> and --egd-file <file>. I
  9304. need some people to really test this to know they work as supposed. Remember
  9305. that libcurl now informs (if verbose is on) if the random seed is considered
  9306. weak (HTTPS connections).
  9307. - Made the chunked transfer-encoding engine detected bad formatted data length
  9308. and return error if so (we can't possibly extract sensible data if this is
  9309. the case). Added a test case that detects this. Number 36. Now there are 60
  9310. test cases.
  9311. - Added 5 new libcurl options to curl/curl.h that can be used to control the
  9312. persistent connection support in libcurl. They're also documented (fairly
  9313. thoroughly) in the curl_easy_setopt.3 man page. Three of them are now
  9314. implemented, although not really tested at this point... Anyway, the new
  9315. implemented options are named CURLOPT_MAXCONNECTS, CURLOPT_FRESH_CONNECT,
  9316. CURLOPT_FORBID_REUSE. The ones still left to write code for are:
  9317. CURLOPT_CLOSEPOLICY and its related option CURLOPT_CLOSEFUNCTION.
  9318. - Made curl (the actual command line tool) use the new libcurl 7.7 persistent
  9319. connection support by re-using the same curl handle for every specified file
  9320. transfer and after some more test case tweaking we have 100% test case OK.
  9321. I made some test cases return HTTP/1.0 now to make sure that works as well.
  9322. - Had to add 'Connection: close' to the headers of a bunch of test cases so
  9323. that curl behaves "old-style" since the test http server doesn't do multiple
  9324. connections... Now I get 100% test case OK.
  9325. - The curl.haxx.se site, the main curl mailing list and my personal email are
  9326. all dead today due to power blackout in the area where the main servers are
  9327. located. Horrible.
  9328. - I've made persistance work over a squid HTTP proxy. I find it disturbing
  9329. that it uses headers that aren't present in any HTTP standard though
  9330. (Proxy-Connection:) and that makes me feel that I'm now on the edge of what
  9331. the standard actually defines. I need to get this code excercised on a lot
  9332. of different HTTP proxies before I feel safe.
  9333. Now I'm facing the problem with my test suite servers (both FTP and HTTP)
  9334. not supporting persistent connections and libcurl is doing them now. I have
  9335. to fix the test servers to get all the test cases do OK.
  9336. Daniel (8 March 2001)
  9337. - Guenole Bescon reported that libcurl did output errors to stderr even if
  9338. MUTE and NOPROGRESS was set. It turned out to be a bug and happens if
  9339. there's an error and no ERRORBUFFER is set. This is now corrected.
  9340. Version 7.7-beta1
  9341. Daniel (8 March 2001)
  9342. - "Transfer-Encoding: chunked" is no longer any trouble for libcurl. I've
  9343. added two source files and I've run some test downloads that look fine.
  9344. - HTTP HEAD works too, even on 1.1 servers.
  9345. Daniel (5 March 2001)
  9346. - The current 57 test cases now pass OK. It would suggest that libcurl works
  9347. using the old-style with one connection per handle. The test suite doesn't
  9348. handle multiple connections yet so there are no test cases for this.
  9349. - I patched the telnet.c heavily to not use any global variables anymore. It
  9350. should make it a lot nicer library-wise.
  9351. - The file:// support was modified slightly to use the internal connect-first-
  9352. then-do approach.
  9353. Daniel (4 March 2001)
  9354. - More bugs erased.
  9355. Version 7.7-alpha2
  9356. Daniel (4 March 2001)
  9357. - Now, there's even a basic check that a re-used connection is still alive
  9358. before it is assumed so. A few first tests have proven that libcurl will
  9359. then re-connect instead of re-use the dead connection!
  9360. Daniel (2 March 2001)
  9361. - Now they work intermixed as well. Major coolness!
  9362. - More fiddling around, my 'tiny' client I have for testing purposes now has
  9363. proved to download both FTP and HTTP with persistent connections. They do
  9364. not work intermixed yet though.
  9365. Daniel (1 March 2001)
  9366. - Wilfredo Sanchez pointed out a minor spelling mistake in a man page and that
  9367. curl_slist_append() should take a const char * as second argument. It does
  9368. now.
  9369. Daniel (22 February 2001)
  9370. - The persistent connections start to look good for HTTP. On a subsequent
  9371. request, it seems that libcurl now can pick an already existing connection
  9372. if a suitable one exists, or it opens a new one.
  9373. - Douglas R. Horner mailed me corrections to the curl_formparse() man page
  9374. that I applied.
  9375. Daniel (20 February 2001)
  9376. - Added the docs/examples/win32sockets.c file for our windows friends.
  9377. - Linus Nielsen Feltzing provided brand new TELNET functionality and
  9378. improvements:
  9379. * Negotiation is now passive. Curl does not negotiate until the peer does.
  9380. * Possibility to set negotiation options on the command line, currently only
  9381. XDISPLOC, TTYPE and NEW_ENVIRON (called NEW_ENV).
  9382. * Now sends the USER environment variable if the -u switch is used.
  9383. * Use -t to set telnet options (Linus even updated the man page, awesome!)
  9384. - Haven't done this big changes to curl for a while. Moved around a lot of
  9385. struct fields and stuff to make multiple connections get connection specific
  9386. data in separate structs so that they can co-exist in a nice way. See the
  9387. mailing lists for discussions around how this is gonna be implemented. Docs
  9388. and more will follow.
  9389. Studied the HTTP RFC to find out better how persistent connections should
  9390. work. Seems cool enough.
  9391. Daniel (19 February 2001)
  9392. - Bob Schader brought me two files that help set up a MS VC++ libcurl project
  9393. easier. He also provided me with an up-to-date libcurl.def file.
  9394. - I moved a bunch of prototypes from the public <curl/curl.h> file to the
  9395. library private urldata.h. This is because of the upcoming changes. The
  9396. low level interface is no longer being planned to become reality.
  9397. Daniel (15 February 2001)
  9398. - CURLOPT_POST is not required anymore. Just setting the POST string with
  9399. CURLOPT_POSTFIELDS will switch on the HTTP POST. Most other things in
  9400. libcurl already works this way, i.e they require only the parameter to
  9401. switch on a feature so I think this works well with the rest. Setting a NULL
  9402. string switches off the POST again.
  9403. - Excellent suggestions from Rich Gray, Rick Jones, Johan Nilsson and Bjorn
  9404. Reese helped me define a way how to incorporate persistent connections into
  9405. libcurl in a very smooth way. If done right, no change may have to be made
  9406. to older programs and they will just start using persistent connections when
  9407. applicable!
  9408. Daniel (13 February 2001)
  9409. - Changed the word 'timeouted' to 'timed out' in two different error messages.
  9410. Suggested by Larry Fahnoe.
  9411. Version 7.6.1
  9412. Daniel (9 February 2001)
  9413. - Frank Reid and Cain Hopwood provided information and research around a HTTPS
  9414. PUT/upload problem we seem to have. No solution found yet.
  9415. Daniel (8 February 2001)
  9416. - An interesting discussion is how to specify an empty password without having
  9417. curl ask for it interactively? The current implmentation takes an empty
  9418. password as a request for a password prompt. However, I still want to
  9419. support a blank user field. Thus, today if you enter "-u :" (without user
  9420. and password) curl will prompt for the password. Tricky. How would you
  9421. specify you want the prompt otherwise?
  9422. - Made the netrc parse result possible to use for other protocols than FTP and
  9423. HTTP (such as the upcoming TELNET fixes).
  9424. - The previously mentioned "MSVC++ problems" turned out to be a non-issue.
  9425. - Added a HTTP file upload code example in the docs/examples/ section on
  9426. request.
  9427. - Adjusted the FTP response fix slightly.
  9428. Version 7.6.1-pre3
  9429. Daniel (7 February 2001)
  9430. - S. Moonesamy found a flaw in the response reading function for FTP that
  9431. could make libcurl not get out of the loop properly when it should, if
  9432. libcurl got -1 returned when reading the socket.
  9433. - I found a similar mistake in http.c when using a proxy and reading the
  9434. results from the proxy connection.
  9435. Daniel (6 February 2001)
  9436. - S. Moonesamy pointed out that the VC makefile in src/ needed the libpath set
  9437. for the debug build to work.
  9438. - Daniel Gehriger stepped in to assist with the VC++ stuff Robert Weaver
  9439. brought up yesterday.
  9440. Daniel (5 February 2001)
  9441. - Jun-ichiro itojun Hagino brought a big patch that brings IPv6-awareness to
  9442. a bunch of different areas within libcurl.
  9443. - Robert Weaver told me about the problems the MS VC++ 6.0 compiler has with
  9444. the 'static' keyword on a number of libcurl functions. I might need to add a
  9445. patch that redefines static when libcurl is compiled with that compiler.
  9446. How do I know when VC++ compiles, anyone?
  9447. Daniel (4 February 2001)
  9448. - curl_getinfo() was extended with two new options:
  9449. CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD. They
  9450. return the full assumed content length of the transfer in the given
  9451. direction. The CURLINFO_CONTENT_LENGTH_DOWNLOAD will be the Content-Length:
  9452. size of a HTTP download. Added descriptions to the man page as well. This
  9453. was done after discussions with Bob Schader.
  9454. Daniel (3 February 2001)
  9455. - Ingo Ralf Blum provided another fix that makes curl build under the more
  9456. recent cygwin installations. It seems they've changed the preset defines to
  9457. not include WIN32 anymore.
  9458. Version 7.6.1-pre2
  9459. Daniel (31 January 2001)
  9460. - Curl_read() and curl_read() now return a ssize_t for the size, as it had to
  9461. be able to return -1. The telnet support crashed due to this and there was a
  9462. possibility to weird behavior all over. Linus Nielsen Feltzing helped me
  9463. find this.
  9464. - Added a configure.in check for a working getaddrinfo() if IPv6 is requested.
  9465. I also made the configure script feature --enable-debug which sets a couple
  9466. of compiler options when used. It assumes gcc.
  9467. Daniel (30 January 2001)
  9468. - I finally took a stab at the long-term FIXME item I've had on myself, and
  9469. now libcurl will properly work when doing a HTTP range-request that follows
  9470. a Location:. Previously that would make libcurl fail saying that the server
  9471. doesn't seem to support range requests.
  9472. Daniel (29 January 2001)
  9473. - I added a test case for the HTTP PUT resume thing (test case 33).
  9474. Version 7.6.1-pre1
  9475. Daniel (29 January 2001)
  9476. - Yet another Content-Range change. Ok now? Bob Schader checks from his end
  9477. and it works for him.
  9478. Daniel (27 January 2001)
  9479. - So the HTTP PUT resume fix wasn't good. There should appearantly be a
  9480. Content-Range header when resuming a PUT.
  9481. - I noticed I broke the download-check that verifies that a resumed HTTP
  9482. download is actually resumed. It got broke because my new 'httpreq' field
  9483. in the main curl struct. I should get slapped. I added a test case for
  9484. this now, so I won't be able to ruin this again without noticing.
  9485. - Added a test case for content-length verifying when downloading HTTP.
  9486. - Made the progress meter title say if the transfer is being transfered. It
  9487. makes the output slightly better for resumes.
  9488. - When dealing with Location: and HTTP return codes, libcurl will not attempt
  9489. to follow the spirit of RFC2616 better. It means that when POSTing to a
  9490. URL that is being following to a second place, the standard will judge on
  9491. what to do. All HTTP codes except 303 and 305 will cause curl to make a
  9492. second POST operation. 303 will make a GET and 305 is not yet supported.
  9493. I also wrote two test cases for this POST/GET/Location stuff.
  9494. Version 7.6
  9495. Daniel (26 January 2001)
  9496. - Lots of mails back and forth with Bob Schader finally made me add a small
  9497. piece of code in the HTTP engine so that HTTP upload resume works. You can
  9498. now do an operation like 'curl -T file -C <offset> <URL>' and curl will PUT
  9499. the ending part of the file starting at given offet to the specified URL.
  9500. Version 7.6-pre4
  9501. Daniel (25 January 2001)
  9502. - I took hold of Rick Jones' question why we don't use recv() and send() for
  9503. reading/writing to the sockets and I've now modified the sread() and
  9504. swrite() macros to use them instead. If nothing else, they could be tested
  9505. in the next beta-round coming right up.
  9506. - Jeff Morrow found a problem with libcurl's usage of SSL_read() and supplied
  9507. his research results in how to fix this. It turns out we have to invoke the
  9508. function several times in some cases. The same goes for the SSL_write().
  9509. I made some rather drastic changes all over libcurl to make all writes and
  9510. reads get done on one single place so that this repeated-attempts thing
  9511. would only have to be implemented at one point.
  9512. - Rick Jones spotted that the 'total time' counter really didn't measure the
  9513. total time very accurate on subsecond levels.
  9514. - Johan Nilsson pointed out the need to more clearly specify that the timeout
  9515. value you set for a download is for the *entire* download. There's currently
  9516. no option available that sets a timeout for the connection phase only.
  9517. Daniel (24 January 2001)
  9518. - Ingo Ralf Blum submitted a series of patches required to get curl to compile
  9519. properly with cygwin.
  9520. - Robert Weaver posted a fix for the win32 section of the curl_getenv() code
  9521. that corrected a potential memory leak.
  9522. - Added comments in a few files in a sudden attempt to make the sources more
  9523. easy to read and understand!
  9524. Daniel (23 January 2001)
  9525. - Added simple IPv6 detection in the configure script and made the version
  9526. string add 'ipv6' to the enable section in that case. ENABLE_IPV6 will be
  9527. set if curl is compiled with IPv6 support enabled.
  9528. - Added a parser for IPv6-style specified IP-addresses in a URL. Thus, when
  9529. IPv6 gets enabled soon, we can use URLs like '[0::1]:80'...
  9530. - Made the URL globbing in the client possible to fail silently if there's an
  9531. error in the globbing. It makes it almost intuitive, so when you don't
  9532. follow the syntax rules, globbing is simply switched off and the raw string
  9533. is used instead.
  9534. I still think we'll get problems with IPv6-style IP-addresses when we *want*
  9535. globbing on parts of the URL as the initial part of the URL will for sure
  9536. seriously confuse the globber.
  9537. Daniel (22 January 2001)
  9538. - Björn Stenberg supplied a progress meter patch that makes it look better even
  9539. during slow starts. Previously it made some silly assumptions...
  9540. - Added two FTP tests for -Q and -Q - stuff since it was being discussed on
  9541. the mailing list. Had to correct the ftpserver.pl too as it bugged slightly.
  9542. Daniel (19 January 2001)
  9543. - Made the Location: parsers deal with any-length URLs. Thus I removed the last
  9544. code that restricts the length of URLs that curl supports.
  9545. - Added a --globoff test case (#28) and it quickly identified a memory problem
  9546. in src/main.c that I took care of.
  9547. Version 7.6-pre3
  9548. Daniel (17 January 2001)
  9549. - Made the two former files lib/download.c and lib/highlevel.c become the new
  9550. lib/transfer.c which makes more sense. I also did the rename from Transfer()
  9551. to Curl_Transfer() in the other source files that use the transfer function
  9552. in the spirit of using Curl_ prefix for library-scoped global symbols.
  9553. Daniel (11 January 2001)
  9554. - Added -g/--globoff that switches OFF the URL globbing and thus enables {}[]
  9555. letters to be part of the URL. Do note that RFC2396 section 2.4.3 explicitly
  9556. mention these letters to be escaped. This was posted as a feature request by
  9557. Jorge Gutierrez and as a bug by Terry.
  9558. - Short options to curl that requires parameters can now be specified without
  9559. having the option and its parameter space separated. -ofile works as good as
  9560. -o file. -m20 is equal to -m 20. Do note that this goes for single-letter
  9561. options only, verbose --long-style options still must be separated with
  9562. space from their parameters.
  9563. Daniel (8 January 2001)
  9564. - Francis Dagenais reported that the SCO compiler still fails when compiling
  9565. curl due to that getpass_r() prototype. I've now put it around #ifndef
  9566. HAVE_GETPASS_R in an attempt to please the SCO systems.
  9567. - Made some minor corrections to get the client to cleanup properly and I made
  9568. the separator work again when getting multiple globbed URLs to stdout.
  9569. - Worked with Loic Dachary to get the make dist and make distcheck work
  9570. correctly. The 'maketgz' script is now using the automake generated 'make
  9571. dist' when creating release archives. Loic successfully made 'make rpms'
  9572. automatically build RPMs!
  9573. Loic Dachary (6 January 2001)
  9574. - Automated generation of rpm packages, no need to be root.
  9575. - make distcheck generates a proper distribution (EXTRA_DIST
  9576. in all Makefile.am modified to match FILES).
  9577. Daniel (5 January 2001)
  9578. - Huge client-side hack: now multiple URLs are supported. Any number of URLs
  9579. can be specified on the command line, and they'll all be downloaded. There
  9580. must be a corresponding -o or -O for each URL or the data will be written to
  9581. stdout. This needs more testing, time to release a 7.6-pre package.
  9582. - The krb4 support was broken in the release. Fixed now.
  9583. - Huge internal symbol rename operation. All non-static but still lib-internal
  9584. symbols should now be prefixed with 'Curl_' to prevent collisions with other
  9585. libs. All public symbols should be prefixed with 'curl_' and the rest should
  9586. be static and thus invisible to the outside world. I updated the INTERNALS
  9587. document to say this as well.
  9588. Version 7.5.2
  9589. Daniel (4 January 2001)
  9590. - As Kevin P Roth suggested, I've added text to the man page for every command
  9591. line option and what happens when you specify that option more than
  9592. once. That hasn't been exactly crystal clear before.
  9593. - Made the configure script possible to run from outside the source-tree. For
  9594. odd reasons I can't build curl properly outside though. It has to do with
  9595. curl's dependencies on libcurl...
  9596. - Cut off all older (dated 1999 and earlier) CHANGES entries from this file.
  9597. The older piece is named CHANGES.0 and is added to the CVS repository in
  9598. case anyone would need it.
  9599. - I added another file 'CVS-INFO' to the CVS. It contains information about
  9600. files in the CVS that aren't included in release archives and how to build
  9601. curl when you get the sources off CVS.
  9602. - Updated CONTRIBUTE and FAQ due to the new license.
  9603. Daniel (3 January 2001)
  9604. - Renamed README.libcurl to LIBCURL
  9605. - Changed headers in all sources files to the new dual license concept of
  9606. curl: use the MIT/X derivate license *or* MPL. The LEGAL file was updated
  9607. accordingly and the MPL 1.1 and MIT/X derivate licenses are now part of the
  9608. release archive.
  9609. Daniel (30 December 2000)
  9610. - Made all FTP commands get sent with the trailing CRLF in one single write()
  9611. as splitting them up seems to confuse at least some firewalls (FW-1 being
  9612. one major).
  9613. Daniel (19 December 2000)
  9614. - Added file desrciptor and FILE handle leak detection to the memdebug system
  9615. and thus I found and removed a file descriptor leakage in the ftp parts
  9616. that happened when you did PORTed downloads.
  9617. - Added an include <stdio.h> in <curl/curl.h> since it uses FILE *.
  9618. Daniel (12 December 2000)
  9619. - Multiple URL downloads with -O was still bugging. Not anymore I think or
  9620. hope, or at least I've tried... :-O
  9621. - Francois Petitjean fixed another -O problem
  9622. Version 7.5.1
  9623. Daniel (11 December 2000)
  9624. - Cleaned up a few of the makefiles to use unix-style newlines only. As Kevin
  9625. P Roth found out, at least one CVS client behaved wrongly when it found
  9626. different newline conventions within the same file.
  9627. - Albert Chin-A-Young corrected the LDFLAGS use in the configure script for
  9628. the SSL stuff.
  9629. Daniel (6 December 2000)
  9630. - Massimo Squillace correctly described how libcurl could use session ids when
  9631. doing SSL connections.
  9632. - James Griffiths found out that curl would crash if the file you specify with
  9633. -o is shorter than the URL! This took some hours to fully hunt down, but it
  9634. is fixed now.
  9635. Daniel (5 December 2000)
  9636. - Jaepil Kim sent us makefiles that build curl using the free windows borland
  9637. compiler. The root makefile now accepts 'make borland' to build curl with
  9638. that compiler.
  9639. - Stefan Radman pointed out that the test makefiles didn't use the PERL
  9640. variable that the configure scripts figure out. Actually, you still need
  9641. perl in the path for the test suite to run ok.
  9642. - Rich Gray found numerous portability problems:
  9643. * The SCO compiler got an error on the getpass_r() prototype in getpass.h
  9644. since the curl one differed from the SCO one
  9645. * The HPUX compiler got an error because of how curl did the sigaction
  9646. stuff and used a define HPUX doesn't have (or need).
  9647. * A few more problems remain to be researched.
  9648. - Paul Harrington experienced a core dump using https. Not much details yet.
  9649. Daniel (4 December 2000)
  9650. - Jörn Hartroth fixed a problem with multiple URLs and -o/-O.
  9651. Version 7.5
  9652. Daniel (1 December 2000)
  9653. - Craig Davison gave us his updates on the VC++ makefiles, so now curl should
  9654. build fine with the Microsoft compiler on windows too.
  9655. - Fixed the libcurl versioning so that we don't ruin old programs when
  9656. releasing new shared library interfaces.
  9657. Daniel (30 November 2000)
  9658. - Renamed docs/README.curl to docs/MANUAL to better reflect what the document
  9659. actually contains.
  9660. Daniel (29 November 2000)
  9661. - I removed a bunch of '#if 0' sections from the code. They only make things
  9662. harder to follow. After all, we do have all older versions in the CVS.
  9663. Version 7.5-pre5
  9664. Daniel (28 November 2000)
  9665. - I filled in more error codes in the man page error code list that had been
  9666. lagging.
  9667. - James Griffiths mailed me a fine patch that introduces the CURLOPT_MAXREDIRS
  9668. libcurl option. When used, it'll prevent location following more than the
  9669. set number of times. It is useful to break out of endless redirect-loops.
  9670. Daniel (27 November 2000)
  9671. - Added two test cases for file://.
  9672. Daniel (22 November 2000)
  9673. - Added the libcurl CURLOPT_FILETIME setopt, when set it tries to get the
  9674. modified time of the remote document. This is a special option since it
  9675. involves an extra set of commands on FTP servers. (Using the MDTM command
  9676. which is not in the RFC959)
  9677. curl_easy_getinfo() got a corresponding CURLINFO_FILETIME to get the time
  9678. after a transfer. It'll return a zero if CURLOPT_FILETIME wasn't used or if
  9679. the time wasn't possible to get.
  9680. --head/-I used on a FTP server will now present a 'Last-Modified:' header
  9681. if curl could get the time of the specified file.
  9682. - Added the option '--cacert [file]' to curl, which allows a specified PEM
  9683. file to be used to verify the peer's certificate when doing HTTPS
  9684. connections. This has been requested, rather recently by Hulka Bohuslav but
  9685. others have asked for it before as well.
  9686. Daniel (21 November 2000)
  9687. - Numerous fixes the test suite has brought into the daylight:
  9688. * curl_unescape() could return a too long string
  9689. * on ftp transfer failures, there could be memory leaks
  9690. * ftp CWD could use bad directory names
  9691. * memdebug now uses the mprintf() routines for better portability
  9692. * free(NULL) removed when doing resumed transfers
  9693. - Added a bunch of test cases for FTP.
  9694. - General cleanups to make less warnings with gcc -Wall -pedantic.
  9695. - I made the tests/ftpserver.pl work with the most commonly used ftp
  9696. operations. PORT, PASV, RETR, STOR, LIST, SIZE, USER, PASS all work now. Now
  9697. all I have to do is integrate the ftp server doings in the runtests.pl
  9698. script so that ftp tests can be run the same way http tests already run.
  9699. Daniel (20 November 2000)
  9700. - Made libcurl capable of dealing with any-length URLs. The former limit of
  9701. 4096 bytes was a bit annoying when people wanted to use curl to really make
  9702. life tough on a web server. Now, the command line limit is the most annoying
  9703. but that can be circumvented by using a config file.
  9704. NOTE: there is still a 4096-byte limit on URLs extracted from Location:
  9705. headers.
  9706. - Corrected the spelling of 'resolve' in two error messages.
  9707. - Alexander Kourakos posted a bug report and a patch that corrected it! It
  9708. turned out that lynx and wget support lowercase environment variable names
  9709. where curl only looked for the uppercase versions. Now curl will use the
  9710. lowercase versions if they exist, but if they don't, it'll use the uppercase
  9711. versions.
  9712. Daniel (17 November 2000)
  9713. - curl_formfree() was added. How come no one missed that one before? I ran the
  9714. test suite with the malloc debug enabled and got lots of "nice" warnings on
  9715. memory leaks. The most serious one was this. There were also leaks in the
  9716. cookie handling, and a few errors when curl failed to connect and similar
  9717. things. More tests cases were added to cover up and to verify that these
  9718. problems have been removed.
  9719. - Mucho updated config file parser (I'm dead tired of all the bug reports and
  9720. weird behaviour I get on the former one). It works slightly differently now,
  9721. although I doubt many people will notice the differences. The main
  9722. difference being that if you use options that require parameters, they must
  9723. both be specified on the same line. With this new parser, you can also
  9724. specify long options without '--' and you may separate options and
  9725. parameters with : or =. It makes a config file line could look like:
  9726. user-agent = "foobar and something"
  9727. Parameters within quotes may contain spaces. Without quotes, they're
  9728. expected to be a single non-space word.
  9729. Had to patch the command line argument parser a little to make this work.
  9730. - Added --url as an option to allow the URL to be specified this way. It makes
  9731. way nicer config files. The previous way of specifying URLs in the config
  9732. file doesn't work anymore.
  9733. Daniel (15 November 2000)
  9734. - Using certain characters in usernames or passwords for HTTP authentication
  9735. failed. This was due to the mprintf() that had a silly check for letters,
  9736. and if they weren't isprint() they weren't outputed "as-is". This caused
  9737. passwords and usernames using '§' (for example) to fail.
  9738. Version 7.4.2
  9739. Daniel (15 November 2000)
  9740. - 'tests/runtests.pl' now sorts the test cases properly when 'all' is used.
  9741. Daniel (14 November 2000)
  9742. - I fell over the draft-ietf-ftpext-mlst-12.txt Internet Draft titled
  9743. "Extensions to FTP" that contains a defined way how the ftp command SIZE
  9744. could be assumed to work.
  9745. - Laurent Papier posted a bug report about using "-C -" and FTP uploading a
  9746. file that isn't prsent on the server. The server might then return a 550 and
  9747. curl will fail. Should it instead as Laurent Papier suggests, start
  9748. uploading from the beginning as a normal upload?
  9749. Daniel (13 November 2000)
  9750. - Fixed a crash with the followlocation counter.
  9751. - While writing test cases for the test suite, I discovered an old limitation
  9752. that prevented -o and -T to be used at the same time. I removed this
  9753. immediately as this has no relevance in the current libcurl.
  9754. - Chris Faherty fixed a free-twice problem in lib/file.c
  9755. - I fixed the perl http server problem in the test suite.
  9756. Version 7.4.2 pre4
  9757. Daniel (10 November 2000)
  9758. - I've (finally) started working on the curl test suite. It is in the new
  9759. tests/ directory. It requires sh and perl. There's a TCP server in perl and
  9760. most of the other stuff running a pretty simple shell script.
  9761. I've only made four test cases so far, but it proves the system can work.
  9762. - Laurent Papier noticed that curl didn't set TYPE when doing --head checks
  9763. for sizes on FTP servers. Some servers seem to return different sizes
  9764. depending on whether ASCII or BINARY is used!
  9765. - Laurent Papier detected that if you appended a FTP upload and everything was
  9766. already uploaded, curl would hang.
  9767. - Angus Mackay's getpass_r() in lib/getpass.c is now compliant with the
  9768. getpass_r() function it seems some systems actually have.
  9769. - Venkataramana Mokkapati detected a bug in the cookie parser and corrected
  9770. it. If the cookie was set for the full host name (domain=full.host.com),
  9771. the cookie was never sent back because of a faulty length comparison between
  9772. the set domain length and the current host name.
  9773. Daniel (9 November 2000)
  9774. - Added a configure check for gethostbyname in -lsocket (OS/2 seems to need
  9775. it). Added a check for RSAglue/rsaref for the cases where libcrypto is found
  9776. but libssl isn't. I haven't verified this fix yet though, as I have no
  9777. system that requires those libs to build.
  9778. Version 7.4.2 pre3
  9779. Daniel (7 November 2000)
  9780. - Removed perror() outputs from getpass.c. Angus Mackay also agreed to a
  9781. slightly modified license of the getpass.c file as the prototype was changed.
  9782. Daniel (6 November 2000)
  9783. - Added possibility to set a password callback to use instead of the built-in.
  9784. They're controled with curl_easy_setopt() of course, the tags are
  9785. CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA.
  9786. - Used T. Bharath's thinking and fixed the timers that showed terribly wrong
  9787. times when location: headers were followed.
  9788. - Emmanuel Tychon discovered that curl didn't really like user names only in
  9789. the URL. I corrected this and I also fixed the since long living problem
  9790. with URL encoded user names and passwords in the URLs. They should work now.
  9791. Daniel (2 November 2000)
  9792. - When I added --interface, the new error code that was added with it was
  9793. inserted in the wrong place and thus all error codes from 35 and upwards got
  9794. increased one step. This is now corrected, we're back at the previous
  9795. numbers. All new exit codes should be added at the end.
  9796. Daniel (1 November 2000)
  9797. - Added a check for signal() in the configure script so that if sigaction()
  9798. isn't present, we can use signal() instead.
  9799. - I'm having a license discussion going on privately. The issue is yet again
  9800. GPL-licensed programs that have problems with MPL. I am leaning towards
  9801. making a kind of dual-license that will solve this once and for all...
  9802. Daniel (31 October 2000)
  9803. - Added the packages/ directory. I intend to let this contain some docs and
  9804. templates on how to generate custom-format packages for various platforms.
  9805. I've now removed the RPM related curl.spec files from the archive root.
  9806. Daniel (30 October 2000)
  9807. - T. Bharath brought a set of patches that bring new functionality to
  9808. curl_easy_getinfo() and curl_easy_setopt(). Now you can request peer
  9809. certificate verification with the *setopt() CURLOPT_SSL_VERIFYPEER option
  9810. and then use the CURLOPT_CAINFO to set the certificate to verify the remote
  9811. peer against. After an such an operation with a verification request, the
  9812. *_getinfo() option CURLINFO_SSL_VERIFYRESULT will return information about
  9813. whether the verification succeeded or not.
  9814. Daniel (27 October 2000)
  9815. - Georg Horn brought us a splendid patch that solves the long-standing
  9816. annoying problem with timeouts that made curl exit with silly exit codes
  9817. (which as been commented out lately). This solution is sigaction() based and
  9818. of course then only works for unixes (and only those unixes that actually
  9819. have the sigaction() function).
  9820. Daniel (26 October 2000)
  9821. - Björn Stenberg supplied a patch that fixed the flaw mentioned by Kevin Roth
  9822. that made the password get echoed when prompted for interactively. The
  9823. getpass() function (now known as my_getpass()) was also fixed to not use any
  9824. static buffers. This also means we cannot use the "standard" getpass()
  9825. function even for those systems that have it, since it isn't thread-safe.
  9826. - Kevin Roth found out that if you'd write a config file with '-v url', the
  9827. url would not be used as "default URL" as documented, although if you wrote
  9828. it 'url -v' it worked! This has been corrected now.
  9829. - Kevin Roth's idea of using multiple -d options on the same command line was
  9830. just brilliant, and I couldn't really think of any reason why we shouldn't
  9831. support it! The append function always append '&' and then the new -d
  9832. chunk. This enables constructs like the following:
  9833. curl -d name=daniel -d age=unknown foobarsite.com
  9834. Daniel (24 October 2000)
  9835. - I fixed the lib/memdebug.c source so that it compiles on Linux and other
  9836. systems. It will be useful one day when someone else but me wants to run the
  9837. memory debugging system.
  9838. Daniel (23 October 2000)
  9839. - I modified the maketgz and configure scripts, so that the configure script
  9840. will fetch the version number from the include/curl/curl.h header files, and
  9841. then the maketgz doesn't have to rebuild the configure script when I build
  9842. release-archives.
  9843. - Björn Stenberg and Linus Nielsen correctly pointed out that curl was silly
  9844. enough to not allow @-letters in passwords when they were specified with the
  9845. -u or -U flags (CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD). This also
  9846. suggests that curl probably should url-decode the password piece of an URL
  9847. so that you could pass an encoded @-letter there...
  9848. Daniel (20 October 2000)
  9849. - Yet another http server barfed on curl's request that include the port
  9850. number in the Host: header always. I now only include the port number if it
  9851. isn't the default (80 for HTTP, 443 for HTTPS). www.perl.com turned out to
  9852. run one of those nasty servers.
  9853. - The PHP4 module for curl had problems with referer that seems to have been
  9854. corrected just yesterday. (Sterling Hughes of the PHP team confirmed this)
  9855. Daniel (17 October 2000)
  9856. - Vladimir Oblomov reported that the -Y and -y options didn't work. They
  9857. didn't work for me either. This once again proves we should have that test
  9858. suite...
  9859. - I finally changed the error message libcurl returns if you try a https://
  9860. URL when the library wasn't build with SSL enabled. It will now return this
  9861. error:
  9862. "libcurl was built with SSL disabled, https: not supported!"
  9863. I really hope it will make it a bit clearer to users where the actual
  9864. problem lies.
  9865. Version 7.4.1
  9866. Daniel (16 October 2000)
  9867. - I forgot to remove some of the malloc debug defines from the makefiles in
  9868. the release archive (of course).
  9869. Version 7.4
  9870. Daniel (16 October 2000)
  9871. - The buffer overflow mentioned below was posted to bugtraq on Friday 13th.
  9872. Daniel (12 October 2000)
  9873. - Colin Robert Phipps elegantly corrected a buffer overflow. It could be used
  9874. by an evil ftp server to crash curl. I took the opportunity of replacing a
  9875. few other sprintf()s into snprintf()s as well.
  9876. Daniel (11 October 2000)
  9877. - Found some more memory leaks. This new simple memory debugger has turned out
  9878. really useful!
  9879. Version 7.4 pre6
  9880. Daniel (9 October 2000)
  9881. - Florian Koenig pointed out that the bool typedef in the curl/curl.h include
  9882. file was breaking PHP 4.0.3 compiling. The bool typedef is not used in the
  9883. public interface and was wrongly inserted in that header file.
  9884. - Jörg Hartroth corrected a minor memory leak in the src/urlglob.c stuff. It
  9885. didn't harm anyone since the memory is free()ed on exit anyway.
  9886. - Corrected the src/main.c. We use the _MPRINTF_REPLACE #define to use our
  9887. libcurl-printf() functions. This gives us snprintf() et al on all
  9888. platforms. I converted the allocated useragent string to one that uses a
  9889. local buffer.
  9890. - I've set an #if 0 section around the Content-Transfer-Encoding header
  9891. generated in lib/formdata.c. This will hopefully make curl do more
  9892. PHP-friendly multi-part posts.
  9893. Version 7.4 pre5
  9894. Daniel (9 October 2000)
  9895. - Nico Baggus found out that curl's ability to force a ASCII download when
  9896. using FTP was no longer working! I corrected this. This problem was probably
  9897. introduced when I redesigned libcurl for version 7.
  9898. - Georg Horn provided a source example that proved a memory leak in libcurl.
  9899. I added simple memory debugging facilities and now we can make libcurl log
  9900. all memory fiddling functions. An additional perl script is used to analyze
  9901. the output logfile and to match malloc()s with free()s etc. The memory leak
  9902. Georg found turned out to be the main cookie struct that cookie_cleanup()
  9903. didn't free! The perl script is named memanalyze.pl and it is available in
  9904. the CVS respository, not in the release archive.
  9905. Daniel (8 October 2000)
  9906. - Georg Horn found a GetHost() problem. It turned out it never assigned the
  9907. pointer in the third argument properly! This could make a crash, or at best
  9908. a memory leak!
  9909. Version 7.4 pre4
  9910. Daniel (6 October 2000)
  9911. - Is the -F post following the RFC 1867 spec? We had this dicussion on the
  9912. mailing list since it appears curl can't post -F form posts to a PHP
  9913. receiver... I've been in touch with the PHP developers about this.
  9914. - Domenico Andreoli found out that the long option '--proxy' wasn't working
  9915. anymore! The option parser got confused when I added the --proxytunnel for
  9916. 7.3. This was indeed a very old flaw that hasn't turned up until now...
  9917. - Jörn Hartroth provided patches, updated makefiles and two new files for DLL
  9918. stuff on win32. He also pointed out that lib source files were compiled with
  9919. -I../src which isn't only wrong but plain stupid!
  9920. - Troels Walsted Hansen fixed a problem with HTTP resume. Curl previously used
  9921. a local variable badly, that could lead to crashes.
  9922. Version 7.4 pre3
  9923. Daniel (4 October 2000)
  9924. - More docs written. The curl_easy_getinfo.3 man page is now pretty accurate,
  9925. as is the -w section in curl.1. I added two options to enable the user to
  9926. get information about the received headers' size and the size of the HTTP
  9927. request. T. Bharath requested them.
  9928. Daniel (3 October 2000)
  9929. - Corrected a sever free() before use in the new add_buffer_send()! ;-)
  9930. Version 7.4 pre2
  9931. Daniel (3 October 2000)
  9932. - Jason S. Priebe sent me patches that changed the way curl issues HTTP
  9933. requests. The entire request is now issued in one single shot. It didn't do
  9934. this previously, and it has turned out that since the common browsers do it
  9935. this way, some sites have turned out to work with browsers but not with
  9936. curl! Although this is not a client-side problem, we want to be able to
  9937. fully emulate browsers, and thus we have now adjusted the networking layer
  9938. to slightly more appear as a browser. I adjusted Jason's patch, the faults
  9939. are probably mine.
  9940. Daniel (2 October 2000)
  9941. - Anyone who ever uploaded data with curl on a slow link has noticed that the
  9942. progess meter is updated very infrequently. That is due to the large buffer
  9943. size curl is using. It reads 50Kb and sends it, updates the progress meter
  9944. and loops. 50Kb is very much on a slow link, although it is pretty neat to
  9945. use on a fast one.
  9946. I've now made an adjustment that makes curl use a 2Kb buffer for uploads to
  9947. start with. If curl's average upload speed is faster than buffer size bytes
  9948. per second, curl will increase the used buffer size up to max 50Kb. It
  9949. should make the progress meter work better.
  9950. Version 7.4 pre1
  9951. Daniel (29 September 2000)
  9952. - Ripped out the -w stuff from the library and put in the curl tool. It gets
  9953. all the relevant info from the library using the new curl_easy_getinfo()
  9954. function.
  9955. - brad at openbsd.org mailed me a patch that corrected my kerberos mistake and
  9956. removed a compiler warning from hostip.c that OpenBSD people get.
  9957. Daniel (28 September 2000)
  9958. - Of course (I should probably get punished somehow) I didn't properly correct
  9959. the #include lines for the base64 stuff in the kerberos sources in the just
  9960. released 7.3 package. They still include the *_krb.h files! Now, the error
  9961. is sooo very easy to spot and fix so I won't bother with a quick bug fix
  9962. release. I'll post a patch whenever one is needed instead. It'll be
  9963. available in the CVS in a few minutes anyway.
  9964. Version 7.3
  9965. Daniel (28 September 2000)
  9966. - Removed the base64_krb.[ch] files. They've now replaced the former
  9967. base64.[ch] files.
  9968. Daniel (26 September 2000)
  9969. - Updated some docs.
  9970. - I changed the OpenSSL fix to work with older versions as well. The posted
  9971. patch was only working with 0.9.6 and no older ones.
  9972. Version 7.3-pre8
  9973. Daniel (25 September 2000)
  9974. - Erdmut Pfeifer informed us that curl didn't build with OpenSSL 0.9.6 and
  9975. showed us what needed to get patched in order to make it build properly
  9976. again.
  9977. - Dirk Kruschewski found a bug in the cookie parser. I made an alternative
  9978. approach to the solution Dirk himself suggested. The bug made a cookie
  9979. header that didn't end with a trailing semicolon to not get parsed.
  9980. - I've marked -c and -t deprecated now. If you use any of them, curl will tell
  9981. you to use "-C -" or "-T -" instead. I don't think occupying two letters for
  9982. nearly identical functions is good use. Also, -T - kind of follows the curl
  9983. tradition of using - for stdin where a file name is expected.
  9984. Daniel (23 September 2000)
  9985. - Martin Hedenfalk provided the patch that finally made the krb4 ftp upload
  9986. work!
  9987. Daniel (21 September 2000)
  9988. - The kerberos code is not quite thread-safe yet. There are a few more globals
  9989. that need to be take care of. Let's get the upload working first!
  9990. Daniel (20 September 2000)
  9991. - Richard Prescott solved another name lookup buffer size problem. I took this
  9992. opportunity to rewrite the GetHost() function. With these large buffer
  9993. sizes, I think keeping them as local arrays quickly turn ugly. I now use
  9994. malloc() to get the buffer memory. Thanks to this, I now can realloc() to a
  9995. large buffer in case of demand (errno == ERANGE) in case a solution like
  9996. that would become necessary. I still want to avoid that kind of nastiness.
  9997. - Tried to compile and run curl on Linux for alpha and FreeBSD for alpha. Went
  9998. as smooth as it could.
  9999. - Added a docs/examples directory with two tiny example sources that show how
  10000. to use libcurl. I hope users will supply me with more useful examples
  10001. further on.
  10002. - Applied a patch by Jörn Hartroth to no longer use the word 'inteface' in the
  10003. config struct in the src/main.c file since certain compilers have that word
  10004. "reservered". I figure that is some kind of C++ decease.
  10005. - Updated the curl.1 man page with --interface and --krb4.
  10006. - Modified the base64Encode() function to work like the kerberos one, so that
  10007. I could remove the use of that. There is no need for *two* base64 encoding
  10008. functions! ;-)
  10009. Version 7.3pre5
  10010. Daniel (19 September 2000)
  10011. - The kerberos4-layer source code that is much "influenced" by the original
  10012. krb4 source code, through yafc into curl, was using quite a lot of global
  10013. variables. libcurl can't work properly with globals like that why I had to
  10014. clean up almost every function in the new security.c to make them use
  10015. connection specific variables instead of the globals. I just hope I didn't
  10016. destroy anything now... :-) configure updated, version string now reflects
  10017. krb4 built-in. It almost works now. Only uploads are still being naughty.
  10018. Version 7.3pre3
  10019. Daniel (18 September 2000)
  10020. - Martin Hedenfalk supplied a major patch that introduces krb4-ftp support to
  10021. curl. Martin is the primary author of the ftp client named yafc and he did
  10022. not hesitate to help us implement this when I asked him. Many and sincere
  10023. thanks to a splendid effort. It didn't even take many hours!
  10024. - Stephen Kick supplied a big patch that introduces the --interface flag to
  10025. the curl tool and CURLOPT_INTERFACE for libcurl. It allows you to specify an
  10026. outgoing interface to use for your request. This may not work on all
  10027. platforms. This needs testing.
  10028. - Richard Prescott noticed that curl on Tru64 unix could core dumped if the
  10029. name didn't resolve properly. This was due to the GetHost() function not
  10030. returning an error even though it failed on some platforms!
  10031. Daniel (15 September 2000)
  10032. - Updated all sorts of documents in regards to the new proxytunnel support.
  10033. Version 7.3pre2
  10034. Daniel (15 September 2000)
  10035. - Kai-Uwe Rommel pointed out a problem in the httpproxytunnel stuff for ftp.
  10036. Adjusted it. Added better info message when setting up the tunnel and the
  10037. pasv message when doing the second connect.
  10038. Version 7.3pre1
  10039. Daniel (15 September 2000)
  10040. - libcurl now allows "httpproxytunnel" to an arbitrary host and port name. The
  10041. second connection on ftp needed that.
  10042. - TheArtOfHTTPScripting was corrected all over. I both type and spell really
  10043. bad at times!
  10044. Daniel (14 September 2000)
  10045. - -p/--proxytunnel was added to 'curl'. It uses the new
  10046. CURLOPT_HTTPPROXYTUNNEL libcurl option that allows "any" protocol to tunnel
  10047. through the specified http proxy. At the moment, this should work with ftp.
  10048. Daniel (13 September 2000)
  10049. - Jochen Schaeuble found that file:// didn't work as expected. Corrected this
  10050. and mailed the patch to the mailing list.
  10051. Daniel (7 September 2000)
  10052. - I changed the #define T() in curl.h since it turned out it wasn't really
  10053. a good symbol to use (when you compiled PHP with curl as a module, that
  10054. define collided with some IMAP define or something). This was posted to the
  10055. PHP bug tracker.
  10056. - I added extern "C" stuff in two header files to better allow libcurl usage
  10057. in C++ sorces. Discussions on the libcurl list with Danny Horswell lead to
  10058. this.
  10059. Version 7.2.1
  10060. Daniel (31 August 2000)
  10061. - Albert Chin-A-Young fixed the configure script *again* and now it seems to
  10062. detect Linux name resolving properly! (heard that before?)
  10063. - Troels Walsted Hansen pointed out that downloading a file containing the
  10064. letter '+' from an ftp server didn't work. It did work from HTTP though and
  10065. the reason was my lame URL decoder.
  10066. - I happened to notice that -I didn't at all work on ftp anymore. I corrected
  10067. that.
  10068. Version 7.2
  10069. Daniel (30 August 2000)
  10070. - Understanding AIX is a hard task. I believe I'll never figure out why they
  10071. solve things so differently from the other unixes. Now, I'm left with the
  10072. AIX 4.3 run-time warnings about duplicate symbols that according to this
  10073. article (http://www.geocrawler.com/archives/3/405/1999/9/0/2593428/) is a
  10074. libtool flaw. I tried the mentioned patch, although that stops the linking
  10075. completely.
  10076. So, if I select to ignore the ld warnings there are compiler warnings that
  10077. fill the screen pretty bad when curl compiles. It turns out that if I want
  10078. to '#include <arpa/inet.h>', I can get tid of the warnings by include the
  10079. following three include files before that one:
  10080. #include <net/if_dl.h>
  10081. #include <sys/mbuf.h>
  10082. #include <netinet/if_ether.h>
  10083. Now, is it really sane to add those include files before arpa/inet.h in all
  10084. the source files that include it?
  10085. Thanks to Albert Chin-A-Young at thewrittenword.com who gave me the AIX
  10086. login to try everything on.
  10087. Daniel (24 August 2000)
  10088. - Jan Schmidt supplied us a new VC6 makefile for Windows as the previous one
  10089. was not up to date but lacked several object files.
  10090. - More work on the naming.
  10091. - Albert Chin-A-Young provided a configure-check for large file support, as
  10092. some systems seem to need that for them to work. Had to change the position
  10093. for the config.h include file in every .c file in the libcurl dir...
  10094. - As suggested on the mailing list (by Troy Engel), I did use a --data-binary
  10095. option instead of the messy way I've left described below. It seems to
  10096. work. The libcurl fix remained the same as yesterday.
  10097. Daniel (23 August 2000)
  10098. - Back on the -d stripping newlines thing. The 'plain post' thing was added
  10099. when I had no thought of that one could actually post binary data with
  10100. it. Now, I have to add this functionality in a graceful manner and I think
  10101. I've managed to come up with a way: '-d @file;binary' will thus post the
  10102. file binary, exactly as its contents are. It is implemented with a new
  10103. *setopt() option (CURLOPT_POSTFIELDSIZE) to set the postfield size, since
  10104. libcurl can't strlen() the data in these cases.
  10105. - Albert Chin-A-Young made some very serious efforts and all the name
  10106. resolving problems seem to have been sorted out now on all the platforms
  10107. that previously showed them. I'll make another release now anyday because of
  10108. this.
  10109. - The FAQ was much enhanced when it comes to the licensing issues thanks to
  10110. Bjorn Reese.
  10111. Daniel (21 August 2000)
  10112. - Rick Welykochy pointed out a problem when you use -d to post and you want to
  10113. keep the newlines, as curl strips them off as a bonus before posting...
  10114. This needs to be addressed.
  10115. Version 7.1.1
  10116. Daniel (21 August 2000)
  10117. - Got more people involved in the gethostbyname_r() mess. Caolan McNamara sent
  10118. me configure-code that turned out to be very similar to my existing tests
  10119. which only make me more sure I'm on the right path. I changed the order of
  10120. the tests slightly, as it seems that some compilers don't yell error if a
  10121. function is used with too many parameters. Thus, the first tested function
  10122. will seem ok... Let's hope more compilers think of too-few parameters as bad
  10123. manners, as we're now trying the functions in that order; fewer first. I
  10124. should also add that Lars Hecking mailed me and volunteered to run tests on
  10125. a few odd systems. Coalan is keeping his work over at
  10126. http://www.csn.ul.ie/~caolan/publink/gethostbyname_r/. Might be handy in the
  10127. future as well.
  10128. Daniel (18 August 2000)
  10129. - I noticed I hadn't increased the name lookup buffer in lib/ftp.c. I don't
  10130. think this is the reason for the continued trouble though.
  10131. Daniel (17 August 2000)
  10132. - Fred Noz corrected my stupid mistakes in the gethostbyname_r() fluff. It
  10133. should affect some AIX, Digital Unix and HPUX 10 systems.
  10134. Daniel (15 August 2000)
  10135. - Mathieu Legare compiled and build 7.1 without errors on both AIX 4.2 as well
  10136. as AIX 4.3. Now why did problems occur before?
  10137. - Fred Noz reported a -w/--write-out bug that caused it to malfunction when
  10138. used combined with multiple URL retrievales. All but the first display got
  10139. screwed up!
  10140. Daniel (11 August 2000)
  10141. - Jason Priebe and an anonymous friend found some host names the Linux version
  10142. of curl could not resolve. It turned out the buffer used to retrieve that
  10143. information was too small. Fixed. One could argue about the usefulness of
  10144. not having the slightest trace of a man page for gethostbyname_r() on my
  10145. Linux Redhat installation...
  10146. Daniel (10 August 2000)
  10147. - Balaji S Rao was first in line to note the missing possibility to replace
  10148. the Content-Type: and Content-Length: headers when doing -d posts. I added
  10149. the possibility just now. It seems some people wants to do standard posts
  10150. using custom Content-Types.
  10151. Daniel (8 August 2000)
  10152. - Mike Dowell correctly discovered that curl did not approve of URLs with no
  10153. user name but password. As in 'http://:foo@haxx.se'. I corrected this.
  10154. Version 7.1
  10155. Daniel (7 August 2000)
  10156. - My AIX 4 fix does not work. I need help from a AIX 4 hacker.
  10157. - I added my new document in the docs directory. It is aimed to become a sort
  10158. of tutorial on how to do HTTP scripting with curl.
  10159. Daniel (4 August 2000)
  10160. - Working with Rich Gray on compiling curl for lots of different platforms.
  10161. My fix for AIX 3.2 was not good enough and was slightly changed, I had to
  10162. move an include file before another, as is now described in the source.
  10163. AIX 4.2 (4.X?) has different gethostbyname_r() and gethostbyaddr_r()
  10164. functions that the configure script didn't check for and thus the compile
  10165. broke with an error. I have now changed the gethostbyname_r() check in the
  10166. configure file to support all three versions of both these functions. My
  10167. implementation that uses the AIX-style is though not yet verified and I may
  10168. get problems to fix it if it turns out to bug since I don't have access to
  10169. any system using that.
  10170. For problems like that, I made the configure script allow --disable-thread
  10171. to completely switch off the check for threadsafe versions of a few
  10172. functions and thus go with the "good old versions" that tend to work
  10173. although will break thread-safeness for libcurl. Most people won't use
  10174. libcurl for other things than curl though, and curl doesn't need a
  10175. thread-safe lib.
  10176. - Working on my big tutorial about HTTP scripting with curl.
  10177. Daniel (1 August 2000)
  10178. - Rich Gray spotted a problem in src/setup.h caused by a #define strequal()
  10179. that was just a left-over from passed times. The strequal() is now a true
  10180. function supplied by libcurl for a portable case insensitive string
  10181. comparison. I added the prototypes in include/curl.h and removed the
  10182. now obsolete #define.
  10183. - Igor Khristophorov made a fix to allow resumed download from Sun's
  10184. JavaWebServer/1.1.1. It seems that their server sends bad Content-Range
  10185. headers.
  10186. - The makefiles forced a static library build, which is bad since we now use
  10187. libtool and thus have excellent shared library support! Albert Chin-A-Young
  10188. found out.
  10189. Version 7.0.11beta
  10190. Daniel (1 August 2000)
  10191. - Albert Chin-A-Young pointed out that 'make install' did not properly create
  10192. the header include directory, why it failed to install the header files as
  10193. it should. Automake isn't really equipped to deal with subdirectories
  10194. without Makefiles in any nice way. I had to run ahead and add Makefiles in
  10195. both include and include/curl before I managed to create a top-level
  10196. makefile that succeeds in install everything properly!
  10197. - Ok, no more "features" added now. Let's just verify that there's no major
  10198. flaws added now.
  10199. Daniel (31 July 2000)
  10200. - Both Jeff Schasny and Ketil Froyn asked me how to tell curl not to send one
  10201. of those internally generated headers. They didn't settle with the blank
  10202. ones you could tell curl to use. I rewrote the header-replace stuff a
  10203. little. Now, if you replace an internal header with your own and that new
  10204. one is a blank header you will only remove the internal one and not get any
  10205. blank. I couldn't figure out any case when you want that blank header.
  10206. Daniel (29 July 2000)
  10207. - It struck me that the lib used localtime() which is not thread-safe, so now
  10208. I use localtime_r() in the systems that has it.
  10209. - I went through this entire document and removed all email addresses and left
  10210. names only. I've really made an effort to always note who brought be bug
  10211. reports or fixes, but more and more people ask me to remove the email
  10212. addresses since they become victims for spams this way. Gordon Beaton got me
  10213. working on this.
  10214. Daniel (27 July 2000)
  10215. - Jörn Hartroth found out that when you specified a HTTP proxy in an
  10216. environment variable and used -L, curl failed in the second fetch. I
  10217. corrected this problem and posted a patch to the list. No need for an extra
  10218. beta release just for this.
  10219. Version 7.0.10beta
  10220. Daniel (27 July 2000)
  10221. - So, libtool replaced two of my files with symbolic links and I forgot to add
  10222. the two new libtool files to the release archive (and they were added as
  10223. symlinks as well!) This of course lead to that the configure script failed
  10224. on 7.0.9...
  10225. Version 7.0.9beta
  10226. Daniel (25 July 2000)
  10227. - Kristian Köhntopp <kris at koehntopp.de> brought a fix that makes libcurl
  10228. libtoolified, just as we've wanted for a while now. He also made the
  10229. recently added man pages get installed properly on 'make install' and some
  10230. other nice cleanups.
  10231. - In a discussion with Eetu Ojanen it struck me that if we use curl to get a
  10232. page using a password, and that page then sends a Location: to another
  10233. server that curl follows, curl will send the user name and password to that
  10234. server as well.
  10235. Now, I'll never be able to make curl do Location: following all that perfect
  10236. and you're all sooner or later required to write a script to do several
  10237. fetches when you're doing advanced stuff, but now I've modified curl to at
  10238. least *only* send the user name and password to the original server. Which
  10239. means that if get a page from server A with a password, that forwards curl
  10240. to server B, curl won't use the password there. If server B then forwards
  10241. curl back to server A again, the password will be used again.
  10242. This is not a perfect implementation, as in a browser case it would only use
  10243. the password if the left-prefix of the first path is the same. I just think
  10244. that this fix prevents a somewhat lurky "security hole".
  10245. As a side-note in this subject: HTTP passwords are sent in cleartext and
  10246. will never be considered to be safe or secure. Use HTTPS for that.
  10247. - As discussed on the mailing list, I converted the FTP response reading
  10248. function into using select() which then allows timeouts (even under win32!)
  10249. if the command-reply session gets too slow or dies completely. I made a
  10250. default timeout on 3600 seconds unless anything else is specified, since I
  10251. don't think anyone wants to wait more than that for a single character to
  10252. get received...
  10253. - Torsten Foertsch <torsten.foertsch at gmx.net> brought a set of fixes for
  10254. the rfc1867 form posts. He introduced 'name=<file' which brings a means to
  10255. suuply very large text chunks read from the given file name. It differs from
  10256. 'name=@file' in the way that this latter thing is marked in the uploaded
  10257. contents as a file upload, while the first is just text (as in a input or
  10258. textarea field). Torsten also corrected a bug that would happen if you used
  10259. %s or similar in a -F file name.
  10260. - As discovered by Nico Baggus <Nico.Baggus at mail.ing.nl>, when transferring
  10261. files to/from FTP using type ASCII curl should not expect the transfer to be
  10262. the exact size reported by the server as the file size. Since ASCII may very
  10263. well mean that the content is translated while transfered, the final size
  10264. may very well differ. Therefor, curl now ignores the file size when doing
  10265. ASCII transfers in FTP.
  10266. Daniel (24 July 2000)
  10267. - Added CURLOPT_PROXYPORT to the curl_easy_setopt() call to allow the proxy
  10268. port number to be set separately from the proxy host name.
  10269. - Andrew <andrew at ugh.net.au> pointed out a netrc manual bug.
  10270. - The FTP transfer code now accepts a 250-code as well as the previously
  10271. accepted 226, after a successful file transfer. Mohan <mnair at
  10272. evergreen-funds.com> pointed this out.
  10273. - The check for *both* nsl and socket was never added in the v7 configure.in
  10274. when I moved the main branch. I re-added that check to configure.in. This was
  10275. discovered by Rich Gray.
  10276. - Howard, Blaise <Blaise.Howard at factiva.com> pointed out a missing free() in
  10277. curl_disconnect() which of course meant libcurl ate memory.
  10278. - Brian E. Gallew noted that the HTTP 'Host:' header curl sent did not
  10279. properly include the port number if non-default ports were used. This should
  10280. now have been fixed.
  10281. - HTTP connect errors now return errors earlier. This was most notably causing
  10282. problems when the HTTPS certificate had problems and later caused a crash.
  10283. Many thanks to Gregory Nicholls <gnicholls at level8.com> for discovering
  10284. and suggesting a fix...
  10285. Daniel (21 June 2000)
  10286. - After a "bug report" I received where the user was using both -F and -I in a
  10287. HTTP request (it severly confused the library I should add), I added some
  10288. checks to src/main.c that prevents setting more than one HTTP request
  10289. command, no matter what the user wants! ;-)
  10290. Version 7.0.8beta
  10291. Daniel (20 June 2000)
  10292. - I did a major replace in many files to use the new curl domain haxx.se
  10293. instead of the previous one.
  10294. - As Eetu Ojanen suggested, I finally took the step and now libcurl no longer
  10295. makes a POST after it has followed a location. When the initial POST has
  10296. been done, it'll turned into a GET for the further requests. This is only
  10297. interesting when using -L/--location *and* doing a POST at the same time.
  10298. While messing with this, I added another weird feature I call 'auto
  10299. referer'. If you append ';auto' to the right of a given referer string (or
  10300. only use that string as referer), libcurl will automatically set the
  10301. previoud URL as refered when it follows a Location: and gets a succeeding
  10302. document.
  10303. - My hero Rich Gray found the very obscure FTP bug that happened to him only
  10304. when passing through a particular firewall and using the PORT command. It
  10305. turned out that PORT was the only command in the lib/ftp.c source that
  10306. didn't send a proper \r\n sequence but instead used the faulty \n which as
  10307. it seemed is supported by most major ftp servers... :-O
  10308. Version 7.0.7beta
  10309. Daniel (16 June 2000)
  10310. - I had avoided this long enough now, so I moved the alternative progress bar
  10311. stuff from the lib and added it to the client code. This is now using the
  10312. recently added progress callback and it seems to work pretty much like
  10313. before. Since it is only one progress bar and you and download and upload at
  10314. the same time, this bar shows the combined progress of both directions. This
  10315. code was just ported from the old place to this, Lars is still our saviour!
  10316. ;-) This also made the documentation more accurate since I never removed
  10317. this function from any docs! Although I now removed the CURLOPT_PROGRESSMODE
  10318. from the library since the lib has only one internal progress meter and it
  10319. will never get another. It is although likely that the internal one also
  10320. will be moved to the client code in the future (when I have other means of
  10321. getting the writeout data and move that too to the client).
  10322. - I took the opportunity to verify that standard progress meter works and I
  10323. found out it didn't get inited properly. Grrr. I corrected that as well.
  10324. Daniel (15 June 2000)
  10325. - I thought I'd better verify that the -F option still works in v7 and of
  10326. course it didn't... :-/ Anyway, I had the problems I could discover
  10327. corrected. About one month of beta testing and not a single person has used
  10328. this feature with v7?
  10329. - Björn correctly pointed out that the --progress-bar still doesn't work in
  10330. v7. Hm.
  10331. Daniel (14 June 2000)
  10332. - Tim Tassonis discovered that curl 7 didn't handle normal http POST as it
  10333. should. I corrected this.
  10334. Version 7.0.6beta
  10335. Daniel (14 June 2000)
  10336. - Björn Stenberg pointed out several problems (related to win32 compiling):
  10337. lib/strequal.c had a bad #ifdef for one of the string comparisons (win32)
  10338. src/main.c had several minor problems
  10339. lib/makefile.m32 had getpass.[co] twice
  10340. src/config-win32.h lacked the HAVE_FCNTL_H define
  10341. both config-win32.h files now only set the HAVE_UNISTD_H define if the
  10342. define MINGW32 is set, and I modified src/makefile.m32 and lib/makefile.m32
  10343. to set it.
  10344. Version 7.0.5beta
  10345. Daniel (14 June 2000)
  10346. - Applied Luong Dinh Dung's comments about a few win32 compile problems.
  10347. - Applied Björn Stenberg's suggested fix that turns the win32 stdout to
  10348. binary. It won't do it if the -B / --use-ascii option is used. That option
  10349. is now an extended version of the previous -B /--ftp--ascii. The flag was
  10350. already in use be the ldap as well so the new name fits pretty good. The
  10351. libcyrl CURLOPT_TRANSFERTEXT was also introduced as an alias to the now
  10352. obsolete CURLOPT_FTPASCII. Can't verify this fix myself as I have no win32
  10353. compiler around.
  10354. Daniel (13 June 2000)
  10355. - Luong Dinh Dung <dung at sch.bme.hu> found a problem in curl_easy_cleanup()
  10356. since it free()ed the main curl struct *twice*. This is now corrected.
  10357. Daniel (9 June 2000)
  10358. - Updated the RESOURCES file, added a README.win32 file.
  10359. Daniel (8 June 2000)
  10360. - So I finally added the progress callback to the *setopt() options and it
  10361. should work now. I don't have the energy to write any test program for it
  10362. right now.
  10363. - Made the callback function typedefs public in curl/curl.h for comfort. Just
  10364. in case anyone wanna fiddle with such pointers.
  10365. - Updated the curl_easy_setopt() man page accordingly.
  10366. Version 7.0.4beta
  10367. Daniel (2 June 2000)
  10368. - I noticed that when doing Location: following, we lost custom headers in all
  10369. but the first request.
  10370. - Removed the 'HttpPost' struct and moved the header stuff to the more generic
  10371. curl_slist.
  10372. - Added some better slist-cleanups in src/main.c
  10373. Version 7.0.3beta
  10374. Daniel (31 May 2000)
  10375. - So I discovered that I released the 7.0.2beta without it being able to
  10376. compile under Linux. gethostbyname_r() and gethostbyaddr_r() turned out to
  10377. feature a different amount of arguments on different systems so I had to add
  10378. a configure check for this and adjust the code slightly.
  10379. Version 7.0.2beta
  10380. Daniel (29 May 2000)
  10381. - Corrected the bits.* assignments when using CURLOPT options that only
  10382. toggles one of those bits.
  10383. - Applied the huge patches from David LeBlanc <dleblanc at qnx.com> that add
  10384. usage of the gethostbyname_r() and similar functions in case they're around,
  10385. since that make libcurl much better threadsafe in many systems (such as
  10386. solaris). I added the checks for these functions to the configure script.
  10387. I can't explain why, but the inet_ntoa_r() function did not appear in my
  10388. Solaris include files, I had to add my own include file for this for now.
  10389. Daniel (22 May 2000)
  10390. - Jörn Hartroth brought me fixes to make the win32 version compile properly as
  10391. well as a rename of the 'interface' field in the urldata struct, as it seems
  10392. to be reserved in some gcc versions!
  10393. - Rich Gray struck back with yet some portability reports. Data General DG/UX
  10394. needed a little fix in lib/ldap.c since it doesn't have RTLD_GLOBAL defined.
  10395. More fixes are expected as a result of Richies very helpful work.
  10396. Version 7.0.1beta
  10397. Daniel (21 May 2000)
  10398. - Updated lots of #defines, enums and variable type names in the library. No
  10399. more weird URG or URLTAG prefixes. All types and names should be curl-
  10400. prefixed to avoid name space clashes. The FLAGS-parameter to the former
  10401. curl_urlget() has been converted into a bunch of flags to use in separate
  10402. setopt calls. I'm still focusing on the easy-interface, as the curl tool is
  10403. now using that.
  10404. - Bjorn Reese has provided me with an asynchronous name resolver that I plan
  10405. to use in upcoming versions of curl to be able to gracefully timeout name
  10406. lookups.
  10407. Version 7.0beta
  10408. Daniel (18 May 2000)
  10409. - Introduced LIBCURL_VERSION_NUM to the curl.h include file to better allow
  10410. source codes to be dependent on the lib version. This define is now set to
  10411. a dexadecimal number, with 8 bits each for major number, minor number and
  10412. patch number. In other words, version 1.2.3 would make it 0x010203. It also
  10413. makes a larger number a newer version.
  10414. Daniel (17 May 2000)
  10415. - Martin Kammerhofer correctly pointed out several flaws in the FTP range
  10416. option. I corrected them.
  10417. - Removed the win32 winsock init crap from the lib to the src/main.c file
  10418. in the application instead. They can't be in the lib, especially not for
  10419. multithreaded purposes.
  10420. Daniel (16 May 2000)
  10421. - Rewrote the src/main.c source to use the new easy-interface to libcurl 7.
  10422. There is still more work to do, but the first step is now taken.
  10423. <curl/easy.h> is the include file to use.
  10424. Daniel (14 May 2000)
  10425. - FTP URLs are now treated slightly different, more according to RFC 1738.
  10426. - FTP sessions are now performed differently, with CWD commands to change
  10427. directory instead of RETR/STOR/LIST with the full path. Discussions with
  10428. Rich Gray made me notice these problems.
  10429. - Janne Johansson discovered and corrected a buffer overflow in the
  10430. src/usrglob.c file.
  10431. - I had to add a lib/strequal.c file for doing case insensitive string
  10432. compares on all platforms.
  10433. Daniel (8 May 2000):
  10434. - Been working lots on the new lib.
  10435. - Together with Rich Gray, I've tried to adjust the configure script to work
  10436. better on the NCR MP-RAS Unix.
  10437. Daniel (2 May 2000):
  10438. - Albert Chin-A-Young pointed out that I had a few too many instructions in
  10439. configure.in that didn't do any good.
  10440. Daniel (24 April 2000):
  10441. - Added a new paragraph to the FAQ about what to do when configure can't
  10442. find OpenSSL even though it is installed. Supplied by Bob Allison
  10443. Daniel (12 April 2000):
  10444. - Started messing around big-time to convert the old library interface to a
  10445. better one...
  10446. Daniel (8 April 2000):
  10447. - Made the progress bar look better for file sizes between 9999 kilobytes
  10448. and 100 megabytes. They're now displayed XX.XM.
  10449. - I also noticed that ftp fetches through HTTP proxies didn't add the user
  10450. agent string. It does now.
  10451. - Habibie <habibie at MailandNews.com> supplied a pretty good way to build RPMs
  10452. on a Linux machine. It still a) requires me to be root to do it, b) leaves
  10453. the rpm packages laying at some odd place on my disk c) doesn't work to
  10454. build the ssl version of curl since I didn't install openssl from an rpm
  10455. package so now the rpm crap thinks I don't have openssl and refuses to build
  10456. a package that depends on ssl... Did I mention I don't get along with RPM?
  10457. - Once again I received a bug report about autoconf not setting -L prior to -l
  10458. on the command line when checking for libs. In this case it made the native
  10459. cc compiler on Solaris 7 to fail the OpenSSL check. This has previously been
  10460. reported to cause problems on HP-UX and is a known flaw in autoconf 2.13. It
  10461. is a pity there's no newer release around...
  10462. Daniel (4 April 2000):
  10463. - Marco G. Salvagno supplied me with two fixes that
  10464. appearantly makes the OS/2 port work better with multiple URLs.
  10465. Daniel (2 April 2000):
  10466. - Another Location: fix. This time, when curl connected to a port and then
  10467. followed a location with an absolute URL to another port, it misbehaved.
  10468. Daniel (27 March 2000):
  10469. - H. Daphne Luong pointed out that curl was wrongly
  10470. messing up the proxy string when fetching a document through a http proxy,
  10471. which screwed up multiple fetches such as in location: followings.
  10472. Daniel (23 March 2000):
  10473. - Marco G. Salvagno corrected my badly applied patch he
  10474. actually already told me about!
  10475. - H. Daphne Luong brought me a fix that now makes curl
  10476. ignore select() errors in the download if errno is EINTR, which turns out to
  10477. happen every now and then when using libcurl multi-threaded...
  10478. Daniel (22 March 2000):
  10479. - Wham Bang supplied a couple of win32 fixes. HAVE_UNAME
  10480. was accidentally #defined in config-win32.h, which it shouldn't have been.
  10481. The HAVE_UNISTD_H is not defined when compiling with the Makefile.vc6
  10482. makefile for MS VC++.
  10483. Daniel (21 March 2000):
  10484. - I removed the AC_PROG_INSTALL macro from configure.in, since it appears that
  10485. one of the AM_* macros searches for a BSD compatible install already. Janne
  10486. Johansson made me aware of this.
  10487. Version 6.5.2
  10488. Daniel (21 March 2000):
  10489. - Paul Harrington quickly pointed out to me that 6.5.1
  10490. crashes hard. I upload 6.5.2 now as quickly as possible! The problem was
  10491. the -D adjustments in src/main.c.
  10492. Version 6.5.1
  10493. Daniel (20 March 2000):
  10494. - An anonymous post on sourceforge correctly pointed out a possible buffer
  10495. overflow in the curl_unescape() function for URL conversions. The main
  10496. problem with this bug is that the ftp download uses that function and this
  10497. single- byte overflow could lead to very odd bugs (as one reported by Janne
  10498. Johansson).
  10499. Daniel (19 March 2000):
  10500. - Marco G. Salvagno supplied me with a series of patches
  10501. that now allows curl to get compiled on OS/2. It even includes a section in
  10502. the INSTALL file. Very nice job!
  10503. Daniel (17 March 2000):
  10504. - Wham Bang supplied a patch for the lib/Makefile.vc6
  10505. file. We still need some fixes for the config-win32.h since it appears that
  10506. VC++ and mingw32 have different opinions about (at least) unistd.h's
  10507. existence.
  10508. Daniel (15 March 2000):
  10509. - I modified the -D/--dump-header workings so that it doesn't write anything
  10510. to the file until it needs to. This way, you can actually use -b and -D
  10511. on the same file if you want repeated invokes to store and read the cookies
  10512. in that one single file.
  10513. - Poked around in lots of texts. Added the BUGS file for bug reporting stuff.
  10514. Added the classic HTTP POST question to the FAQ, removed some #ifdef WIN32
  10515. stuff from the sources (they're covered by the config-win32.h now).
  10516. - Pascal Gaudette fixed a missing ldap.c problem in the
  10517. Makefile.vc6 file. He also addressed a problem in src/config-win32.h.
  10518. Daniel (14 March 2000):
  10519. - Paul Harrington pointed out that the 'http_code' variable in the -w output
  10520. was never written. I fixed it now.
  10521. - Janne Johansson reported the complaints that OpenBSD does
  10522. when getdate.c #includes malloc.h. It claims stdlib.h should be included
  10523. instead. I added #ifdef HAVE_MALLOC_H code in getdate.y and two checks in
  10524. the configure.in for malloc.h and stdlib.h.
  10525. Version 6.5
  10526. Daniel (13 March 2000):
  10527. - <curl at spam.wolvesbane.net> pointed out that the way curl sent cookies in a
  10528. single line wasn't enjoyed by IIS4.0 servers. In my view, that is not what
  10529. the standards say, but I added a white space between the name/value pairs to
  10530. perhaps make them work better.
  10531. - Added the perl check back in the configure.in again since the mkhelp.pl
  10532. script needs it!
  10533. - Made some beautifications in the curl man page.
  10534. Daniel (3 March 2000):
  10535. - Jörn helped me update the config-win32.h files with HAVE_SETVBUF and
  10536. HAVE_STRDUP.
  10537. Daniel (3 March 2000):
  10538. - Uploaded the 6.5pre2 package.
  10539. Daniel (2 March 2000):
  10540. - Removed the perl-programs from the distribution, they never made many people
  10541. happy and I'll still keep them available on the web.
  10542. - Added the -w and -N stuff to the man page. Documented the new progress meter
  10543. display in README.curl.
  10544. - Jörn Hartroth, Chris <cbayliss at csc.come> and Ulf
  10545. Möller from the openssl development team helped bringing me the details for
  10546. fixing an OpenSSL usage flaw. It became apparent when they released openssl
  10547. 0.9.5 since that barfed on curl's bad behavior (not seeding a random number
  10548. thing).
  10549. - Yet another option: -N/--no-buffer disables buffering in the output stream.
  10550. Probably most useful for very slow transfers when you really want to get
  10551. every byte curl receives within some preferred time. Andrew <tmr at gci.net>
  10552. suggested this.
  10553. - Damien Adant mailed me his fixes for making curl compile on Ultrix.
  10554. Daniel (24 February 2000):
  10555. - Applied Jörn Hartroth's fixes for config-win32.h and lib/Makefile.w32.
  10556. I should also make a note here, if nothing else to myself, that when using
  10557. the %-syntax for variables in DOS command prompts, you must use two %-
  10558. letters for each one since that is an escape letter there! Maybe I should
  10559. use another letter instead!
  10560. - Added more variables to -w:
  10561. 'http_code'
  10562. 'time_namelookup'
  10563. 'time_connect'
  10564. 'time_pretransfer'
  10565. 'url_effective'
  10566. - Made -w@filename read the syntax from a file and -w@- reads the syntax from
  10567. stdin in the good old "standard" curl way.
  10568. Daniel (22 February 2000):
  10569. - Released a 6.5pre1 version to get some test and user feedback.
  10570. Daniel (21 February 2000):
  10571. - I added the -w/--write-out flag and some variables to go with it. -w is a
  10572. single string, whatever you enter there will be written out when curl has
  10573. completed a successful request. There are some variable substitutions and
  10574. they are specified as '%{variable}' (without the quotes). Variables that
  10575. exist as of this moment are:
  10576. total_time - total transfer time in seconds (with 2 decimals)
  10577. size_download - total downloaded amount of bytes
  10578. size_upload - total uploaded amount of bytes
  10579. speed_download - the average speed of the entire download
  10580. speed_upload - the average speed of the entire upload
  10581. I will of course add more variables, but I need input on these and others.
  10582. - It struck me that the -# progress bar will be hard to just apply on the new
  10583. progress bar concept. I need some feedback on this before that'll get re-
  10584. introduced! :-/
  10585. Daniel (16 February 2000):
  10586. - Jörn Hartroth brought me some fixes for the progress meter and I continued
  10587. working on it. It seems to work for http download, http post, ftp download
  10588. and ftp upload. It should be a pretty good test it works generally good.
  10589. - Still need to add the -# progress bar into the new style progress interface.
  10590. - Gonna have a go at my new output option parameter next.
  10591. Daniel (15 February 2000):
  10592. - The progress meter stuff is slowly taking place. There's more left before it
  10593. is working ok and everything is tested, but we're reaching there. Slowly!
  10594. Daniel (11 February 2000):
  10595. - Paul Marquis fixed the config file parsing of curl to
  10596. deal with any-length lines, removing the previous limit of 4K.
  10597. - Eetu Ojanen's suggestion of supporting the @-style for -b
  10598. is implemented. Now -b@<filename> works as well as the old style. -b@- also
  10599. similarly reads the cookies from stdin.
  10600. - Reminder: -D should not write to the file until it needs to, in the same way
  10601. -o does. That would enable curl to use -b and -D on the same file...
  10602. - Ellis Pritchard made getdate.y work for MacOS X.
  10603. - Paul Harrington helped me out finding the crash in the
  10604. cookie parser. He also pointed out curl's habit of sending empty cookies to
  10605. the server.
  10606. Daniel (8 February 2000):
  10607. - Ron Zapp corrected a problem in src/urlglob.c that
  10608. prevented curl from getting compiled on sunos 4. The problem had to do
  10609. with the difference in sprintf() return code types.
  10610. - Transfer() should now be able to download and upload simultaneously. Let's
  10611. do some progress meter fixes later this week.
  10612. Daniel (31 January 2000):
  10613. - Paul Harrington found another core dump in the cookie
  10614. parser. Curl doesn't properly recognize the 'version' keyword and I think
  10615. that is what caused this. I need to refresh some specs on cookies and see
  10616. what else curl lacks to improve this a bit more once and for all.
  10617. RFC 2109 clearly specifies how cookies should be dealt with when they are
  10618. compliant with that spec. I don't think many servers are though...
  10619. - Mark W. Eichin found that while curl is uploading a form
  10620. to a web site, it doesn't read incoming data why it'll hang after a while
  10621. since the socket "pipe" becomes full.
  10622. It took me two hours to rewrite Download() and Upload() into the new
  10623. single function Transfer(). It even seems to work! More testing is required
  10624. of course... I should get the header-sending together in a kind of queue
  10625. and let them get "uploaded" in Transfer() as well.
  10626. - Zhibiao Wu pointed out a curl bug in the location: area,
  10627. although I did not get a reproducible way to do this why I have to wait
  10628. with fixing anything.
  10629. - Bob Schader suggested I should implement resume
  10630. support for the HTTP PUT operation, and as I think it is a valid suggestion
  10631. I'll work on it.
  10632. Daniel (25 January 2000):
  10633. - M Travis Obenhaus pointed out a manual mixup with -y and -Y that was
  10634. corrected.
  10635. - Jens Schleusener pointed out a problem to compile
  10636. curl on AIX 4.1.4 and gave me a solution. This problem was already fixed
  10637. by Jörn's recent #include modifications!
  10638. Daniel (19 January 2000):
  10639. - Oskar Liljeblad pointed out and corrected a problem
  10640. in the Location: following system that made curl following a location: to a
  10641. different protocol to fail.
  10642. At January 31st I re-considered this fix and the surrounding source code. I
  10643. could not really see that the patch did any difference, why I removed it
  10644. again for further research and debugging. (It disabled location: following
  10645. on server not running on default ports.)
  10646. - Jörn Hartroth brought a fix that once again
  10647. made it possible to select progress bar.
  10648. - Jörn also fixed a few include problems.
  10649. Version 6.4
  10650. Daniel (17 January 2000):
  10651. - Based on suggestions from Björn Stenberg, I made the
  10652. progress deal better with larger files and added a "Time" field which shows
  10653. the time spent on the download so far.
  10654. - I'm now using the CVS repository on sourceforge.net, which also allows web
  10655. browsing. See http://curl.haxx.nu.
  10656. Daniel (10 January 2000):
  10657. - Renumbered some enums in curl/curl.h since tag number 35 was used twice!
  10658. - Added "postquote" support to the ftp section that enables post-ftp-transfer
  10659. quote commands.
  10660. - Now made the -Q/--quote parameter recognize '-' as a prefix, which means
  10661. that command will be issued AFTER a successful ftp transfer. This can of
  10662. course be used to delete or rename a file after it has been uploaded or
  10663. downloaded. Use your imagination! ;-)
  10664. - Since I do the main development on solaris 2.6 now, I had to download and
  10665. install GNU groff to generate the hugehelp.c file. The solaris nroff cores
  10666. on the man page! So, in order to make the solaris configure script find a
  10667. better result I made gnroff get checked prior to the regular nroff.
  10668. - Added all the curl exit codes to the man page.
  10669. - Jim Gallagher properly tracked down a bug in autoconf
  10670. 2.13. The AC_CHECK_LIB() macro wrongfully uses the -l flag before the -L
  10671. flag to 'ld' which causes the HP-UX 10.20 flavour to fail on all libchecks
  10672. and therefore you can't make the configure script find the openssl libs!
  10673. Daniel (28 December 1999):
  10674. - Tim Verhoeven correctly identified that curl
  10675. doesn't support URL formatted file names when getting ftp. Now, there's a
  10676. problem with getting very weird file names off FTP servers. RFC 959 defines
  10677. that the file name syntax to use should be the same as in the native OS of
  10678. the server. Since we don't know the peer server system we currently just
  10679. translate the URL syntax into plain letters. It is still better and with
  10680. the solaris 2.6-supplied ftp server it works with spaces in the file names.
  10681. Daniel (27 December 1999):
  10682. - When curl parsed cookies straight off a remote site, it corrupted the input
  10683. data, which, if the downloaded headers were stored made very odd characters
  10684. in the saved data. Correctly identified and reported by Paul Harrington.
  10685. Daniel (13 December 1999):
  10686. - General cleanups in the library interface. There had been some bad kludges
  10687. added during times of stress and I did my best to clean them off. It was
  10688. both regarding the lib API as well as include file confusions.
  10689. Daniel (3 December 1999):
  10690. - A small --stderr bug was reported by Eetu Ojanen...
  10691. - who also brought the suggestion of extending the -X flag to ftp list as
  10692. well. So, now it is and the long option is now --request instead. It is
  10693. only for ftp list for now (and the former http stuff too of course).
  10694. Lars J. Aas (24 November 1999):
  10695. - Patched curl to compile and build under BeOS. Doesn't work yet though!
  10696. - Corrected the Makefile.am files to allow putting object files in
  10697. different directories than the sources.
  10698. Version 6.3.1
  10699. Daniel (23 November 1999):
  10700. - I've had this major disk crash. My good old trust-worthy source disk died
  10701. along with the machine that hosted it. Thank goodness most of all the
  10702. things I've done are either backed up elsewhere or stored in this CVS
  10703. server!
  10704. - Michael S. Steuer pointed out a bug in the -F handling
  10705. that made curl hang if you posted an empty variable such as '-F name='. It
  10706. was one of those old bugs that never have worked properly...
  10707. - Jason Baietto pointed out a general flaw in the HTTP
  10708. download. Curl didn't complain if it was prematurely aborted before the
  10709. entire download was completed. It does now.
  10710. Daniel (19 November 1999):
  10711. - Chris Maltby very accurately criticized the lack of
  10712. return code checks on the fwrite() calls. I did a thorough check for all
  10713. occurrences and corrected this.
  10714. Daniel (17 November 1999):
  10715. - Paul Harrington pointed out that the -m/--max-time option
  10716. doesn't work for the slow system calls like gethostbyname()... I don't have
  10717. any good fix yet, just a slightly less bad one that makes curl exit hard
  10718. when the timeout is reached.
  10719. - Bjorn Reese helped me point out a possible problem that might be the reason
  10720. why Thomas Hurst experience problems in his Amiga version.
  10721. Daniel (12 November 1999):
  10722. - I found a crash in the new cookie file parser. It crashed when you gave
  10723. a plain http header file as input...
  10724. Version 6.3
  10725. Daniel (10 November 1999):
  10726. - I kind of found out that the HTTP time-conditional GETs (-z) aren't always
  10727. respected by the web server and the document is therefore sent in whole
  10728. again, even though it doesn't match the requested condition. After reading
  10729. section 13.3.4 of RFC 2616, I think I'm doing the right thing now when I do
  10730. my own check as well. If curl thinks the condition isn't met, the transfer
  10731. is aborted prematurely (after all the headers have been received).
  10732. - After comments from Robert Linden I also rewrote some parts of the man page
  10733. to better describe how the -F works.
  10734. - Michael Anti put up a new curl download mirror in
  10735. China: http://www.pshowing.com/curl/
  10736. - I added the list of download mirrors to the README file
  10737. - I did add more explanations to the man page
  10738. Daniel (8 November 1999):
  10739. - I made the -b/--cookie option capable of reading netscape formatted cookie
  10740. files as well as normal http-header files. It should be able to
  10741. transparently figure out what kind of file it got as input.
  10742. Daniel (29 October 1999):
  10743. - Another one of Sebastiaan van Erk's ideas (that has been requested before
  10744. but I seem to have forgotten who it was), is to add support for ranges in
  10745. FTP downloads. As usual, one request is just a request, when they're two
  10746. it is a demand. I've added simple support for X-Y style fetches. X has to
  10747. be the lower number, though you may omit one of the numbers. Use the -r/
  10748. --range switch (previously HTTP-only).
  10749. - Sebastiaan van Erk suggested that curl should be
  10750. able to show the file size of a specified file. I think this is a splendid
  10751. idea and the -I flag is now working for FTP. It displays the file size in
  10752. this manner:
  10753. Content-Length: XXXX
  10754. As it resembles normal headers, and leaves us the opportunity to add more
  10755. info in that display if we can come up with more in the future! It also
  10756. makes sense since if you access ftp through a HTTP proxy, you'd get the
  10757. file size the same way.
  10758. I changed the order of the QUOTE command executions. They're now executed
  10759. just after the login and before any other command. I made this to enable
  10760. quote commands to run before the -I stuff is done too.
  10761. - I found out that -D/--dump-header and -V/--version weren't documented in
  10762. the man page.
  10763. - Many HTTP/1.1 servers do not support ranges. Don't ask me why. I did add
  10764. some text about this in the man page for the range option. The thread in
  10765. the mailing list that started this was initiated by Michael Anti.
  10766. - I get reports about nroff crashes on solaris 2.6+ when displaying the curl
  10767. man page. Switch to gnroff instead, it is reported to work(!). Adam Barclay
  10768. reported and brought the suggestion.
  10769. - In a dialogue with Johannes G. Kristinsson we came
  10770. up with the idea to let -H/--header specified headers replace the
  10771. internally generated headers, if you happened to select to add a header
  10772. that curl normally uses by itself. The advantage with this is not entirely
  10773. obvious, but in Johannes' case it means that he can use another Host: than
  10774. the one curl would set.
  10775. Daniel (27 October 1999):
  10776. - Jongki Suwandi brought a nice patch for (yet another) crash when following
  10777. a location:. This time you had to follow a https:// server's redirect to
  10778. get the core.
  10779. Version 6.2
  10780. Daniel (21 October 1999):
  10781. - I think I managed to remove the suspicious (nil) that has been seen just
  10782. before the "Host:" in HTTP requests when -v was used.
  10783. - I found out that if you followed a location: when using a proxy, without
  10784. having specified http:// in the URL, the protocol part was added once again
  10785. when moving to the next URL! (The protocol part has to be added to the
  10786. URL when going through a proxy since it has no protocol-guessing system
  10787. such as curl has.)
  10788. - Benjamin Ritcey reported a core dump under solaris 2.6
  10789. with OpenSSL 0.9.4. It turned out this was due to a bad free() in main.c
  10790. that occurred after the download was done and completed.
  10791. - Benjamin found ftp downloads to show the first line of the download meter
  10792. to get written twice, and I removed that problem. It was introduced with
  10793. the multiple URL support.
  10794. - Dan Zitter correctly pointed out that curl 6.1 and earlier versions didn't
  10795. honor RFC 2616 chapter 4 section 2, "Message Headers": "...Field names are
  10796. case-insensitive..." HTTP header parsing assumed a certain casing. Dan
  10797. also provided me with a patch that corrected this, which I took the liberty
  10798. of editing slightly.
  10799. - Dan Zitter also provided a nice patch for config.guess to better recognize
  10800. the Mac OS X
  10801. - Dan also corrected a minor problem in the lib/Makefile that caused linking
  10802. to fail on OS X.
  10803. Daniel (19 October 1999):
  10804. - Len Marinaccio came up with some problems with curl. Since Windows has a
  10805. crippled shell, it can't redirect stderr and that causes trouble. I added
  10806. --stderr today which allows the user to redirect the stderr stream to a
  10807. file or stdout.
  10808. Daniel (18 October 1999):
  10809. - The configure script now understands the '--without-ssl' flag, which now
  10810. totally disable SSL/https support. Previously it wasn't possible to force
  10811. the configure script to leave SSL alone. The previous functionality has
  10812. been retained. Troy Engel helped test this new one.
  10813. Version 6.1 (October 17 1999)
  10814. Daniel (17 October 1999):
  10815. - I ifdef'ed or commented all the zlib stuff in the sources and configure
  10816. script. It turned out we needed to mock more with zlib than I initially
  10817. thought, to make it capable of downloading compressed HTTP documents and
  10818. uncompress them on the fly. I didn't mean the zlib parts of curl to become
  10819. more than minor so this means I halt the zlib expedition for now and wait
  10820. until someone either writes the code or zlib gets updated and better
  10821. adjusted for this kind of usage. I won't get into details here, but a
  10822. short a summary is suitable:
  10823. - zlib can't automatically detect whether to use zlib or gzip
  10824. decompression methods.
  10825. - zlib is very neat for reading gzipped files from a file descriptor,
  10826. although not as nice for reading buffer-based data such as we would
  10827. want it.
  10828. - there are still some problems with the win32 version when reading from
  10829. a file descriptor if that is a socket
  10830. Daniel (14 October 1999):
  10831. - Moved the (external) include files for libcurl into a subdirectory named
  10832. curl and adjusted all #include lines to use <curl/XXXX> to maintain a
  10833. better name space and control of the headers. This has been requested.
  10834. Daniel (12 October 1999):
  10835. - I modified the 'maketgz' script to perform a 'make' too before a release
  10836. archive is put together in an attempt to make the time stamps better and
  10837. hopefully avoid the double configure-running that use to occur.
  10838. Daniel (11 October 1999):
  10839. - Applied Jörn's patches that fixes zlib for mingw32 compiles as well as
  10840. some other missing zlib #ifdef and more text on the multiple URL docs in
  10841. the man page.
  10842. Version 6.1beta
  10843. Daniel (6 October 1999):
  10844. - Douglas E. Wegscheid sent me a patch that made the exact same thing as I
  10845. just made: the -d switch is now capable of reading post data from a named
  10846. file or stdin. Use it similarly to the -F. To read the post data from a
  10847. given file:
  10848. curl -d @path/to/filename www.postsite.com
  10849. or let curl read it out from stdin:
  10850. curl -d @- www.postit.com
  10851. Jörn Hartroth (3 October 1999):
  10852. - Brought some more patches for multiple URL functionality. The MIME
  10853. separation ideas are almost scrapped now, and a custom separator is being
  10854. used instead. This is still compile-time "flagged".
  10855. Daniel
  10856. - Updated curl.1 with multiple URL info.
  10857. Daniel (30 September 1999):
  10858. - Felix von Leitner brought openssl-check fixes for configure.in to work
  10859. out-of-the-box when the openssl files are installed in the system default
  10860. dirs.
  10861. Daniel (28 September 1999)
  10862. - Added libz functionality. This should enable decompressing gzip, compress
  10863. or deflate encoding HTTP documents. It also makes curl send an accept that
  10864. it accepts that kind of encoding. Compressed contents usually shortens
  10865. download time. I *need* someone to tell me a site that uses compressed HTTP
  10866. documents so that I can test this out properly.
  10867. - As a result of the adding of zlib awareness, I changed the version string
  10868. a little. I plan to add openldap version reporting in there too.
  10869. Daniel (17 September 1999)
  10870. - Made the -F option allow stdin when specifying files. By using '-' instead
  10871. of file name, the data will be read from stdin.
  10872. Version 6.0 (September 14 1999)
  10873. Daniel (13 September 1999)
  10874. - Added -X/--http-request <request> to enable any HTTP command to be sent.
  10875. Do not that your server has to support the exact string you enter. This
  10876. should possibly a string like DELETE or TRACE.
  10877. - Applied Douglas' mingw32-fixes for the makefiles.
  10878. Daniel (10 September 1999)
  10879. - Douglas E. Wegscheid pointed out a problem. Curl didn't check the FTP
  10880. servers return code properly after the --quote commands were issued. It
  10881. took anything non 200 as an error, when all 2XX codes should be accepted as
  10882. OK.
  10883. - Sending cookies to the same site in multiple lines like curl used to do
  10884. turned out to be bad and breaking the cookie specs. Curl now sends all
  10885. cookies on a single Cookie: line. Curl is not yet RFC 2109 compliant, but I
  10886. doubt that many servers do use that syntax (yet).
  10887. Daniel (8 September 1999)
  10888. - Jörn helped me make sure it still compiles nicely with mingw32 under win32.
  10889. Daniel (7 September 1999)
  10890. - FTP upload through proxy is now turned into a HTTP PUT. Requested by
  10891. Stefan Kanthak.
  10892. - Added the ldap files to the .m32 makefile.
  10893. Daniel (3 September 1999)
  10894. - Made cookie matching work while using HTTP proxy.
  10895. Bjorn Reese (31 August 1999)
  10896. - Passed his ldap:// patch. Note that this requires the openldap shared
  10897. library to be installed and that LD_LIBRARY_PATH points to the
  10898. directory where the lib will be found when curl is run with a
  10899. ldap:// URL.
  10900. Jörn Hartroth (31 August 1999)
  10901. - Made the Mingw32 makefiles into single files.
  10902. - Made file:// work for Win32. The same code is now used for unix as well for
  10903. performance reasons.
  10904. Douglas E. Wegscheid (30 August 1999)
  10905. - Patched the Mingw32 makefiles for SSL builds.
  10906. Matthew Clarke (30 August 1999)
  10907. - Made a cool patch for configure.in to allow --with-ssl to specify the
  10908. root dir of the openssl installation, as in
  10909. ./configure --with-ssl=/usr/ssl_here
  10910. - Corrected the 'reconf' script to work better with some shells.
  10911. Jörn Hartroth (26 August 1999)
  10912. - Fixed the Mingw32 makefiles in lib/ and corrected the file.c for win32
  10913. compiles.
  10914. Version 5.11
  10915. Daniel (25 August 1999)
  10916. - John Weismiller pointed out a bug in the header-line
  10917. realloc() system in download.c.
  10918. - I added lib/file.[ch] to offer a first, simple, file:// support. It
  10919. probably won't do much good on win32 system at this point, but I see it
  10920. as a start.
  10921. - Made the release archives get a Makefile in the root dir, which can be
  10922. used to start the compiling/building process easier. I haven't really
  10923. changed any INSTALL text yet, I wanted to get some feed-back on this
  10924. first.
  10925. Daniel (17 August 1999)
  10926. - Another Location: bug. Curl didn't do proper relative locations if the
  10927. original URL had cgi-parameters that contained a slash. Nusu's page
  10928. again.
  10929. - Corrected the NO_PROXY usage. It is a list of substrings that if one of
  10930. them matches the tail of the host name it should connect to, curl should
  10931. not use a proxy to connect there. Pointed out to me by Douglas
  10932. E. Wegscheid. I also changed the README text a little regarding this.
  10933. Daniel (16 August 1999)
  10934. - Fixed a memory bug with http-servers that sent Location: to a Location:
  10935. page. Nusu's page showed this too.
  10936. - Made cookies work a lot better. Setting the same cookie name several times
  10937. used to add more cookies instead of replacing the former one which it
  10938. should've. Nusu <nus at intergorj.ro> brought me an URL that made this
  10939. painfully visible...
  10940. Troy (15 August 1999)
  10941. - Brought new .spec files as well as a patch for configure.in that lets the
  10942. configure script find the openssl files better, even when the include
  10943. files are in /usr/include/openssl
  10944. Version 5.10
  10945. Daniel (13 August 1999)
  10946. - SSL_CTX_set_default_passwd_cb() has been modified in the 0.9.4 version of
  10947. OpenSSL. Now why couldn't they simply add a *new* function instead of
  10948. modifying the parameters of an already existing function? This way, we get
  10949. a compiler warning if compiling with 0.9.4 but not with earlier. So, I had
  10950. to come up with a #if construction that deals with this...
  10951. - Made curl output the SSL version number get displayed properly with 0.9.4.
  10952. Troy (12 August 1999)
  10953. - Added MingW32 (GCC-2.95) support under Win32. The INSTALL file was also
  10954. a bit rearranged.
  10955. Daniel (12 August 1999)
  10956. - I had to copy a good <arpa/telnet.h> include file into the curl source
  10957. tree to enable the silly win32 systems to compile. The distribution rights
  10958. allows us to do that as long as the file remains unmodified.
  10959. - I corrected a few minor things that made the compiler complain when
  10960. -Wall -pedantic was used.
  10961. - I'm moving the official curl web page to http://curl.haxx.nu. I think it
  10962. will make it easier to remember as it is a lot shorter and less cryptic.
  10963. The old one still works and shows the same info.
  10964. Daniel (11 August 1999)
  10965. - Albert Chin-A-Young mailed me another correction for NROFF in the
  10966. configure.in that is supposed to be better for IRIX users.
  10967. Daniel (10 August 1999)
  10968. - Albert Chin-A-Young helped me with some stupid Makefile things, as well as
  10969. some fiddling with the getdate.c stuff that he had problems with under
  10970. HP-UX v10. getdate.y will now be compiled into getdate.c if the appropriate
  10971. yacc or bison is found by the configure script. Since this is slightly new,
  10972. we need to test the output getdate.c with win32 systems to make sure it
  10973. still compiles there.
  10974. Daniel (5 August 1999)
  10975. - I've just setup a new mailing list with the intention to keep discussions
  10976. around libcurl development in it. I mainly expect it to be for thoughts and
  10977. brainstorming around a "next generation" library, rather than nitpicking
  10978. about the current implementation or details in the current libcurl.
  10979. To join our happy bunch of future-looking geeks, enter 'subscribe
  10980. <address>' in the body of a mail and send it to
  10981. libcurl-request@listserv.fts.frontec.se. Curl bug reports, the usual curl
  10982. talk and everything else should still be kept in this mailing list. I've
  10983. started to archive this mailing list and have put the libcurl web page at
  10984. www.fts.frontec.se/~dast/libcurl/.
  10985. - Stefan Kanthak contacted me regarding a few problems in the configure
  10986. script which he discovered when trying to make curl compile and build under
  10987. Siemens SINIX-Z V5.42B2004!
  10988. - Marcus Klein very accurately informed me that src/version.h was not present
  10989. in the CVS repository. Oh, how silly...
  10990. - Linus Nielsen rewrote the telnet:// part and now curl offers limited telnet
  10991. support. If you run curl like 'curl telnet://host' you'll get all output on
  10992. the screen and curl will read input from stdin. You'll be able to login and
  10993. run commands etc, but since the output is buffered, expect to get a little
  10994. weird output.
  10995. This is still in its infancy and it might get changed. We need your
  10996. feed-back and input in how this is best done.
  10997. WIN32 NOTE: I bet we'll get problems when trying to compile the current
  10998. lib/telnet.c on win32, but I think we can sort them out in time.
  10999. - David Sanderson reported that FORCE_ALLOCA_H or HAVE_ALLOCA_H must be
  11000. defined for getdate.c to compile properly on HP-UX 11.0. I updated the
  11001. configure script to check for alloca.h which should make it.
  11002. Daniel (4 August 1999)
  11003. - I finally got to understand Marcus Klein's ftp download resume problem,
  11004. which turns out to be due to different outputs from different ftp
  11005. servers. It makes ftp download resuming a little trickier, but I've made
  11006. some modifications I really believe will work for most ftp servers and I do
  11007. hope you report if you have problems with this!
  11008. - Added text about file transfer resuming to README.curl.
  11009. Daniel (2 August 1999)
  11010. - Applied a progress-bar patch from Lars J. Aas. It offers
  11011. a new styled progress bar enabled with -#/--progress-bar.
  11012. T. Yamada <tai at imasy.or.jp> (30 July 1999)
  11013. - It breaks with segfault when 1) curl is using .netrc to obtain
  11014. username/password (option '-n'), and 2) is automatically redirected to
  11015. another location (option '-L').
  11016. There is a small bug in lib/url.c (block starting from line 641), which
  11017. tries to take out username/password from user- supplied command-line
  11018. argument ('-u' option). This block is never executed on first attempt since
  11019. CONF_USERPWD bit isn't set at first, but curl later turns it on when it
  11020. checks for CONF_NETRC bit. So when curl tries to redo everything due to
  11021. redirection, it segfaults trying to access *data->userpwd.
  11022. Version 5.9.1
  11023. Daniel (30 July 1999)
  11024. - Steve Walch pointed out that there is a memory leak in the formdata
  11025. functions. I added a FormFree() function that is now used and supposed to
  11026. correct this flaw.
  11027. - Mark Wotton reported:
  11028. 'curl -L https://www.cwa.com.au/' core dumps. I managed to cure this by
  11029. correcting the cleanup procedure. The bug seems to be gone with my OpenSSL
  11030. 0.9.2b, although still occurs when I run the ~100 years old SSLeay 0.8.0. I
  11031. don't know whether it is curl or SSLeay that is to blame for that.
  11032. - Marcus Klein:
  11033. Reported an FTP upload resume bug that I really can't repeat nor understand.
  11034. I leave it here so that it won't be forgotten.
  11035. Daniel (29 July 1999)
  11036. - Costya Shulyupin suggested support for longer URLs when following Location:
  11037. and I could only agree and fix it!
  11038. - Leigh Purdie found a problem in the upload/POST department. It turned out
  11039. that http.c accidentaly cleared the pointer instead of the byte counter
  11040. when supposed to.
  11041. - Costya Shulyupin pointed out a problem with port numbers and Location:. If
  11042. you had a server at a non-standard port that redirected to an URL using a
  11043. standard port number, curl still used that first port number.
  11044. - Ralph Beckmann pointed out a problem when using both CONF_FOLLOWLOCATION
  11045. and CONF_FAILONERROR simultaneously. Since the CONF_FAILONERROR exits on
  11046. the 302-code that the follow location header outputs it will never show any
  11047. html on location: pages. I have now made it look for >=400 codes if
  11048. CONF_FOLLOWLOCATION is set.
  11049. - 'struct slist' is now renamed to 'struct curl_slist' (as suggested by Ralph
  11050. Beckmann).
  11051. - Joshua Swink and Rick Welykochy were the first to point out to me that the
  11052. latest OpenSSL package now have moved the standard include path. It is now
  11053. in /usr/local/ssl/include/openssl and I have now modified the --enable-ssl
  11054. option for the configure script to use that as the primary path, and I
  11055. leave the former path too to work with older packages of OpenSSL too.
  11056. Daniel (9 June 1999)
  11057. - I finally understood the IRIX problem and now it seem to compile on it!
  11058. I am gonna remove those #define strcasecmp() things once and for all now.
  11059. Daniel (4 June 1999)
  11060. - I adjusted the FTP reply 227 parser to make the PASV command work better
  11061. with more ftp servers. Appearantly the Roxen Challanger server replied
  11062. something curl 5.9 could deal with! :-( Reported by Ashley Reid-Montanaro
  11063. and Mark Butler brought a solution for it.
  11064. Daniel (26 May 1999)
  11065. - Rearranged. README is new, the old one is now README.curl and I added a
  11066. README.libcurl with text I got from Ralph Beckmann.
  11067. - I also updated the INSTALL text.
  11068. Daniel (25 May 1999)
  11069. - David Jonathan Lowsky correctly pointed out that curl didn't properly deal
  11070. with form posting where the variable shouldn't have any content, as in curl
  11071. -F "form=" www.site.com. It was now fixed.
  11072. Version 5.9 (May 22 1999)
  11073. Daniel (22 May 1999)
  11074. - I've got a bug report from Aaron Scarisbrick in which he states he has some
  11075. problems with -L under FreeBSD 3.0. I have previously got another bug
  11076. report from Stefan Grether which points at an error with similar sympthoms
  11077. when using win32. I made the allocation of the new url string a bit faster
  11078. and different, don't know if it actually improves anything though...
  11079. Daniel (20 May 1999)
  11080. - Made the cookie parser deal with CRLF newlines too.
  11081. Daniel (19 May 1999)
  11082. - Download() didn't properly deal with failing return codes from the sread()
  11083. function. Adam Coyne found the problem in the win32 version, and Troy Engel
  11084. helped me out isolating it.
  11085. Daniel (16 May 1999)
  11086. - Richard Adams pointed out a bug I introduced in 5.8. --dump-header doesn't
  11087. work anymore! :-/ I fixed it now.
  11088. - After a suggestion by Joshua Swink I added -S / --show-error to force curl
  11089. to display the error message in case of an error, even if -s/--silent was
  11090. used.
  11091. Daniel (10 May 1999)
  11092. - I moved the stuff concerning HTTP, DICT and TELNET it their own source
  11093. files now. It is a beginning on my clean-up of the sources to make them
  11094. layer all those protocols better to enable more to be added easier in the
  11095. future!
  11096. - Leon Breedt sent me some files I've not put into the main curl
  11097. archive. They're for creating the Debian package thingie. He also sent me a
  11098. debian package that I've made available for download at the web page
  11099. Daniel (9 May 1999)
  11100. - Made it compile on cygwin too.
  11101. Troy Engel (7 May 1999)
  11102. - Brought a series of patches to allow curl to compile smoothly on MSVC++ 6
  11103. again!
  11104. Daniel (6 May 1999)
  11105. - I changed the #ifdef HAVE_STRFTIME placement for the -z code so that it
  11106. will be easier to discover systems that don't have that function and thus
  11107. can't use -z successfully. Made the strftime() get used if WIN32 is defined
  11108. too.
  11109. Version 5.8
  11110. Daniel (5 May 1999)
  11111. - I've had it with this autoconf/automake mess. It seems to work allright
  11112. for most people who don't have automake installed, but for those who have
  11113. there are problems all over.
  11114. I've got like five different bug reports on this only the last
  11115. week... Claudio Neves and Federico Bianchi and root <duggerj001 at
  11116. hawaii.rr.com> are some of them reporting this.
  11117. Currently, I have no really good fix since I want to use automake myself to
  11118. generate the Makefile.in files. I've found out that the @SHELL@-problems
  11119. can often be fixed by manually invoking 'automake' in the archive root
  11120. before you run ./configure... I've hacked my maketgz script now to fiddle
  11121. a bit with this and my tests seem to work better than before at least!
  11122. Daniel (4 May 1999)
  11123. - mkhelp.pl has been doing badly lately. I corrected a case problem in
  11124. the regexes.
  11125. - I've now remade the -o option to not touch the file unless it needs to.
  11126. I had to do this to make -z option really fine, since now you can make a
  11127. curl fetch and use a local copy's time when downloading to that file, as
  11128. in:
  11129. curl -z dump -o dump remote.site.com/file.html
  11130. This will only get the file if the remote one is newer than the local.
  11131. I'm aware that this alters previous behaviour a little. Some scripts out
  11132. there may depend on that the file is always touched...
  11133. - Corrected a bug in the SSLv2/v3 selection.
  11134. - Felix von Leitner requested that curl should be able to send
  11135. "If-Modified-Since" headers, which indeed is a fair idea. I implemented it
  11136. right away! Try -z <expression> where expression is a full GNU date
  11137. expression or a file name to get the date from!
  11138. Stephan Lagerholm (30 Apr 1999)
  11139. - Pointed out a problem with the src/Makefile for FreeBSD. The RM variable
  11140. isn't set and causes the make to fail.
  11141. Daniel (26 April 1999)
  11142. - Am I silly or what? Irving Wolfe pointed out to me that the curl version
  11143. number was not set properly. Hasn't been since 5.6. This was due to a bug
  11144. in my maketgz script!
  11145. David Eriksson (25 Apr 1999)
  11146. - Found a bug in cookies.c that made it crash at times.
  11147. Version 5.7.1
  11148. Doug Kaufman (23 Apr 1999)
  11149. - Brought two sunos 4 fixes. One of them being the hostip.c fix mentioned
  11150. below and the other one a correction in include/stdcheaders.h
  11151. - Added a paragraph about compiling with the US-version of openssl to the
  11152. INSTALL file.
  11153. Daniel
  11154. - New mailing list address. Info updated on the web page as well as in the
  11155. README file
  11156. Greg Onufer (20 Apr 1999)
  11157. - hostip.c didn't compile properly on SunOS 5.5.1.
  11158. It needs an #include <sys/types.h>
  11159. Version 5.7
  11160. Daniel (Apr 20 1999)
  11161. - Decided to upload a non-beta version right now!
  11162. - Made curl support any-length HTTP headers. The destination buffer is now
  11163. simply enlarged every time it turns out to be too small!
  11164. - Added the FAQ file to the archive. Still a bit smallish, but it is a
  11165. start.
  11166. Eric Thelin (15 Apr 1999)
  11167. - Made -D accept '-' instead of filename to write to stdout.
  11168. Version 5.6.3beta
  11169. Daniel (Apr 12 1999)
  11170. - Changed two #ifdef WIN32 to better #ifdef <errorcode> when connect()ing
  11171. in url.c and ftp.c. Makes cygwin32 deal with them better too. We should
  11172. try to get some decent win32-replacement there. Anyone?
  11173. - The old -3/--crlf option is now ONLY --crlf!
  11174. - I changed the "SSL fix" to a more lame one, but that doesn't remove as
  11175. much functionality. Now I've enabled the lib to select what SSL version it
  11176. should try first. Appearantly some older SSL-servers don't like when you
  11177. talk v3 with them so you need to be able to force curl to talk v2 from the
  11178. start. The fix dated April 6 and posted on the mailing list forced curl to
  11179. use v2 at all times using a modern OpenSSL version, but we don't really
  11180. want such a crippled solution.
  11181. - Marc Boucher sent me a patch that corrected a math error for the
  11182. "Curr.Speed" progress meter.
  11183. - Eric Thelin sent me a patch that enables '-K -' to read a config file from
  11184. stdin.
  11185. - I found out we didn't close the file properly before so I added it!
  11186. Daniel (Apr 9 1999)
  11187. - Yu Xin pointed out a problem with ftp download resume. It didn't work at
  11188. all! ;-O
  11189. Daniel (Apr 6 1999)
  11190. - Corrected the version string part generated for the SSL version.
  11191. - I found a way to make some other SSL page work with openssl 0.9.1+ that
  11192. previously didn't (ssleay 0.8.0 works with it though!). Trying to get
  11193. some real info from the OpenSSL guys to see how I should do to behave the
  11194. best way. SSLeay 0.8.0 shouldn't be that much in use anyway these days!
  11195. Version 5.6.2beta
  11196. Daniel (Apr 4 1999)
  11197. - Finally have curl more cookie "aware". Now read carefully. This is how
  11198. it works.
  11199. To make curl read cookies from an already existing file, in plain header-
  11200. format (like from the headers of a previous fetch) invoke curl with the
  11201. -b flag like:
  11202. curl -b file http://site/foo.html
  11203. Curl will then use all cookies it finds matching. The old style that sets
  11204. a single cookie with -b is still supported and is used if the string
  11205. following -b includes a '=' letter, as in "-b name=daniel".
  11206. To make curl read the cookies sent in combination with a location: (which
  11207. sites often do) point curl to read a non-existing file at first (i.e
  11208. to start with no existing cookies), like:
  11209. curl -b nowhere http://site/setcookieandrelocate.html
  11210. - Added a paragraph in the TODO file about the SSL problems recently
  11211. reported. Evidently, some kind of SSL-problem curl may need to address.
  11212. - Better "Location:" following.
  11213. Douglas E. Wegscheid (Tue, 30 Mar 1999)
  11214. - A subsecond display patch.
  11215. Daniel (Mar 14 1999)
  11216. - I've separated the version number of libcurl and curl now. To make
  11217. things a little easier, I decided to start the curl numbering from
  11218. 5.6 and the former version number known as "curl" is now the one
  11219. set for libcurl.
  11220. - Removed the 'enable-no-pass' from configure, I doubt anyone wanted
  11221. that.
  11222. - Made lots of tiny adjustments to compile smoothly with cygwin under
  11223. win32. It's a killer for porting this to win32, bye bye VC++! ;-)
  11224. Compiles and builds out-of-the-box now. See the new wordings in
  11225. INSTALL for details.
  11226. - Beginning experiments with downloading multiple document from a http
  11227. server while remaining connected.
  11228. Version 5.6beta
  11229. Daniel (Mar 13 1999)
  11230. - Since I've changed so much, I thought I'd just go ahead and implement the
  11231. suggestion from Douglas E. Wegscheid. -D or --dump-header is now storing
  11232. HTTP headers separately in the specified file.
  11233. - Added new text to INSTALL on what to do to build this on win32 now.
  11234. - Aaargh. I had to take a step back and prefix the shared #include files
  11235. in the sources with "../include/" to please VC++...
  11236. Daniel (Mar 12 1999)
  11237. - Split the url.c source into many tiny sources for better readability
  11238. and smaller size.
  11239. Daniel (Mar 11 1999)
  11240. - Started to change stuff for a move to make libcurl and a more separate
  11241. curl application that uses the libcurl. Made the libcurl sources into
  11242. the new lib directory while the curl application will remain in src as
  11243. before. New makefiles, adjusted configure script and so.
  11244. libcurl.a built quickly and easily. I better make a better interface to
  11245. the lib functions though.
  11246. The new root dir include/ is supposed to contain the public information
  11247. about the new libcurl. It is a little ugly so far :-)
  11248. Daniel (Mar 1 1999)
  11249. - Todd Kaufmann sent me a good link to Netscape's cookie spec as well as the
  11250. info that RFC 2109 specifies how to use them. The link is now in the
  11251. README and the RFC in the RESOURCES.
  11252. Daniel (Feb 23 1999)
  11253. - Finally made configure accept --with-ssl to look for SSL libs and includes
  11254. in the "standard" place /usr/local/ssl...
  11255. Daniel (Feb 22 1999)
  11256. - Verified that curl linked fine with OpenSSL 0.9.1c which seems to be
  11257. the most recent.
  11258. Henri Gomez (Fri Feb 5 1999)
  11259. - Sent in an updated curl-ssl.spec. I still miss the script that builds an
  11260. RPM automatically...
  11261. Version 5.5.1
  11262. Mark Butler (27 Jan 1999)
  11263. - Corrected problems in Download().
  11264. Danitel Stenberg (25 Jan 1999)
  11265. - Jeremie Petit pointed out a few flaws in the source that prevented it from
  11266. compile warning free with the native compiler under Digital Unix v4.0d.
  11267. Version 5.5
  11268. Daniel Stenberg (15 Jan 1999)
  11269. - Added Bjorns small text to the README about the DICT protocol.
  11270. Daniel Stenberg (11 Jan 1999)
  11271. - <jswink at softcom.net> reported about the win32-versioin: "Doesn't use
  11272. ALL_PROXY environment variable". Turned out to be because of the static-
  11273. buffer nature of the win32 environment variable calls!
  11274. Bjorn Reese (10 Jan 1999)
  11275. - I have attached a simple addition for the DICT protocol (RFC 2229).
  11276. It performs dictionary lookups. The output still needs to be better
  11277. formatted.
  11278. To test it try (the exact format, and more examples are described in
  11279. the RFC)
  11280. dict://dict.org/m:hello
  11281. dict://dict.org/m:hello::soundex
  11282. Vicente Garcia (10 Jan 1999)
  11283. - Corrected the progress meter for files larger than 20MB.
  11284. Daniel Stenberg (7 Jan 1999)
  11285. - Corrected the -t and -T help texts. They claimed to be FTP only.
  11286. Version 5.4
  11287. Daniel Stenberg
  11288. (7 Jan 1999)
  11289. - Irving Wolfe reported that curl -s didn't always supress the progress
  11290. reporting. It was the form post that autoamtically always switched it on
  11291. again. This is now corrected!
  11292. (4 Jan 1999)
  11293. - Andreas Kostyrka suggested I'd add PUT and he helped me out to test it. If
  11294. you use -t or -T now on a http or https server, PUT will be used for file
  11295. upload.
  11296. I removed the former use of -T with HTTP. I doubt anyone ever really used
  11297. that.
  11298. (4 Jan 1999)
  11299. - Erik Jacobsen found a width bug in the mprintf() function. I corrected it
  11300. now.
  11301. (4 Jan 1999)
  11302. - As John V. Chow pointed out to me, curl accepted very limited URL sizes. It
  11303. should now accept path parts that are up to at least 4096 bytes.
  11304. - Somehow I screwed up when applying the AIX fix from Gilbert Ramirez, so
  11305. I redid that now.
  11306. Version 5.3a (win32 only)
  11307. Troy Engel
  11308. - Corrected a win32 bug in the environment variable part.
  11309. Version 5.3
  11310. Gilbert Ramirez Jr. (21 Dec 1998)
  11311. - I have implemented the "quote" function of FTP clients. It allows you to
  11312. send arbitrary commands to the remote FTP server. I chose the -Q/--quote
  11313. command-line arguments.
  11314. You can have more than one quoted string, and curl will apply them in
  11315. order. This is what I use for my MVS upload:
  11316. curl -B --crlf -Q "site lrecl=80" -Q "site blk=8000" -T file ftp://os390/test
  11317. Curl will send the two quoted "site" commands in the proper order.
  11318. - Made it compile smoothly on AIX.
  11319. Gilbert Ramirez Jr. (18 Dec 1998)
  11320. - Brought an MVS patch: -3/--mvs, for ftp upload to the MVS ftp server.
  11321. Troy Engel (17 Dec 1998)
  11322. - Brought a correction that fixes the win32 curl bug.
  11323. Daniel Stenberg
  11324. - A bug, pointed out to me by Dr H. T. Leung, caused curl to crash on the -A
  11325. flag on certain systems. Actually, all systems should've!
  11326. - Added a few defines to make directories/file names get build nicer (with _
  11327. instead of . and \ instead of / in win32).
  11328. - steve <fisk at polar.bowdoin.edu> reported a weird bug that occured if the
  11329. ftp server response line had a parenthesis on the line before the (size)
  11330. info. I hope it works better now!
  11331. Version 5.2.1
  11332. Steven G. Johnson (Dec 14, 1998)
  11333. - Brought a fix that corrected a crash in 5.2 due to bad treatment of the
  11334. environment variables.
  11335. Version 5.2
  11336. Daniel Stenberg (Dec 14, 1998)
  11337. - Rewrote the mkhelp script and now, the mkhelp.pl script generates the
  11338. hugehelp.c file from the README *and* the man page file curl.1. By using
  11339. both files, I no longer need to have double information in both the man
  11340. page and the README as well. So, win32-users will only have the hugehelp.c
  11341. file for all info, but then, they download the plain binary most times
  11342. anyway.
  11343. - gcc2.8.1 with the -Wall flag complaints a lot on subscript has type `char'
  11344. if I don't explicitly typecast the argument to isdigit() or isspace() to
  11345. int. So I did to compile warning free with that too.
  11346. - Added checks for 'long double' and 'long long' in the configure script. I
  11347. need those for the mprintf.c source to compile well on non long long
  11348. comforming systems!
  11349. Version 5.1 (not publicly released)
  11350. Daniel Stenberg (Dec 10, 1998)
  11351. - I got a request for a pre-compiled NT Alpha version. Anyone?
  11352. - Added Lynx/CERN www lib proxy environment variable support. That means curl
  11353. now reads and understands the following environment variables:
  11354. HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
  11355. They should be set for protocol-specific proxies. General proxy should be
  11356. set with
  11357. ALL_PROXY
  11358. And a comma-separated list of host names that shouldn't go through any
  11359. proxy is set in (only an asterisk, '*' matches all hosts).
  11360. NO_PROXY
  11361. The usage of the -x/--proxy flag overrides the environment variables.
  11362. - Proxy can now be specified with a procotol:// prefix.
  11363. - Wrote the curl.1 man page.
  11364. - Introduced a whole new dynamic buffer system for all sprintf()s. It is
  11365. based on the *printf() package by yours truly and Bjorn Reese. Hopefully,
  11366. there aren't that many buffer overflow risks left now.
  11367. - Ah, I should mention I've compiled and built curl successfully under
  11368. solaris 2.6 with gcc now, gcc 2.7.2 won't work but 2.8.1 did ok.
  11369. Oren Tirosh (Dec 3, 1998)
  11370. - Brought two .spec files, to use when creating (Linux) Redhat style RPM
  11371. packages. They're named curl.spec and curl-ssl.spec.
  11372. Troy Engel
  11373. - Supplied the src/Makefile.vc6 for easy compiling with VC++ under Win32.
  11374. Version 5.0
  11375. Daniel Stenberg (Dec 1, 1998)
  11376. - Not a single bug report in ages.
  11377. - Corrected getpass.c and main.c to compile warning and error free with the
  11378. Win32 VC++ crap.
  11379. Version 5.0 beta 24
  11380. Daniel Stenberg (Nov 20, 1998)
  11381. HOW TO BUILD A RELEASE ARCHIVE:
  11382. * Pre-requisite software:
  11383. What To build what Reads data from
  11384. ==== ============= ===============
  11385. GNU automake Makefile.in, aclocal.m4 configure.in
  11386. GNU make(1) - " -
  11387. GNU gcc(1) - " -
  11388. GNU autoconf configure configure.in
  11389. GNU autoheader(2) config.h.in configure.in, acconfig.h
  11390. * Make sure all files that should be part of the archive are put in FILES.
  11391. * Run './maketgz' and enter version number of the new to become archive.
  11392. maketgz does:
  11393. - Enters the newly created version number in url.h.
  11394. - (If you don't have automake, this script will warn about that, but unless
  11395. you have changed the Makefile.am files, that is nothing to care about.)
  11396. If you have it, it'll run it.
  11397. - If you have autoconf, the configure.in will be edited to get the newly
  11398. created version number and autoconf will be run.
  11399. - Creates a new directory named curl-<version>. (Actually, it uses the base
  11400. name of the current directory up to the first '-'.)
  11401. - Copies all files mentioned in FILES to the new directory. Saving
  11402. permissions and directory structure.
  11403. - Uses tar to create an archive of it all, named curl-<version>.tar.gz
  11404. - gzips the archive
  11405. - Removes the new directory and all its contents.
  11406. * When done, you have an archive stored in your directory named
  11407. curl-<version>.tar.gz.
  11408. Done!
  11409. (1) They're required to make automake run properly.
  11410. (2) It is distributed as a part of the GNU autoconf archive.
  11411. Daniel Stenberg (Nov 18, 1998)
  11412. - I changed the TAG-system. If you ever used urlget() from this package in
  11413. another product, you need to recompile with the new headers. I did this
  11414. new stuff to better deal with different compilers and system with different
  11415. variable sizes. I think it makes it a little more portable. This proves
  11416. to compile warning free with the problematic IRIX compiler!
  11417. - Win32 compiled with a silly error. Corrected now.
  11418. - Brian Chaplin reported yet another problem in
  11419. multiline FTP responses. I've tried to correct it. I mailed him a new
  11420. version and I hope he gets back soon with positive feedback!
  11421. - Improved the 'maketgz' to create a temporary directory tree which it makes
  11422. an archive from instead of the previous renaming of the current one.
  11423. - Mailing list opened (see README).
  11424. - Made -v more verbose on the PASV section of ftp transfers. Now it tells
  11425. host name and IP of the new host (and port number). I also added a section
  11426. about PORT vs PASV in the README.
  11427. Version 5.0 beta 21
  11428. Angus Mackay (Nov 15, 1998)
  11429. - Introduced automake stuff.
  11430. Daniel Stenberg (Nov 13, 1998)
  11431. - Just made a successful GET of a document from an SSL-server using my own
  11432. private certificate for authentication! The certificate has to be in PEM
  11433. format. You do that the easiest way (although not *that* easy) by
  11434. downloading the SSLyeay PKCS#12-patch by Dr Stephen N. Henson from his site
  11435. at: http://www.drh-consultancy.demon.co.uk/. Using his tool, you can
  11436. convert any modern Netscape or (even) MSIE certificate to PEM-format. Use
  11437. it with 'curl -E <certificate:password> https://site.com'. If this isn't a
  11438. cool feature, then I don't know what cool features look like! ;-)
  11439. - Working slowly on telnet connections. #define TRY_TELNET to try it out.
  11440. (curl -u user:passwd "telnet://host.com/cat .login" is one example) I do
  11441. have problem to define how it should work. The prime purpose for this must
  11442. be to get (8bit clean) files via telnet, and it really isn't that easy to
  11443. get files this way. Still having problems with \n being converted to \r\n.
  11444. Angus Mackay (Nov 12, 1998)
  11445. - Corrected another bug in the long parameter name parser.
  11446. - Modified getpass.c (NOTE: see the special licensing in the top of that
  11447. source file).
  11448. Daniel Stenberg (Nov 12, 1998)
  11449. - We may have removed the silly warnings from url.c when compiled under IRIX.
  11450. Thanks again to Bjorn Reese and Martin Staael.
  11451. - Wrote formfind.pl which is a new perl script intended to help you find out
  11452. how a FORM submission should be done. This needs a little more work to get
  11453. really good.
  11454. Daniel Stenberg (Nov 11, 1998)
  11455. - Made the HTTP header-checker accept white spaces before the HTTP/1.? line.
  11456. Appearantly some proxies/sites add such at times (my test proxy did when I
  11457. downloaded a gopher page with it)!
  11458. - Moved the former -h to -M and made -h show the short help text instead. I
  11459. had to enable a forced help text option. Now an even shorter help text will
  11460. be presented when an unknown option and similar, is used.
  11461. - stdcheaders.h didn't work with IRIX 6.4 native cc compiler. I hope my
  11462. changes don't make other versions go nuts instead.
  11463. Daniel Stenberg (Nov 10, 1998)
  11464. - Added a weird check in the configure script to check for the silly AIX
  11465. warnings about my #define strcasecmp() stuff. I do that define to prevent
  11466. me and other contributors to accidentaly use that function name instead
  11467. of strequal()...
  11468. - I bugfixed Angus's getpass.c very little.
  11469. - Fixed the verbose flag names to getopt-style, i.e 'curl --loc' will be
  11470. sufficient instead of --location as "loc" is a unique prefix. Also, anything
  11471. after a '--' is treated as an URL. So if you do have a host with a weeeird
  11472. name you can do 'curl -- -host.com'.
  11473. - Another getopt-adjust; curl now accepts flags after the URL on the command
  11474. line. 'curl www.foo.com -O' is perfectly valid.
  11475. - Corrected the .curlrc parser so that strtok() is no longer used and I
  11476. believe it works better. Even URLs can be specified in it now.
  11477. Angus Mackay (Nov 9, 1998)
  11478. - Replaced getpass.c with a newly written one, not under GPL license
  11479. - Changed OS to a #define in config.h instead of compiler flag
  11480. - Makefile now uses -DHAVE_CONFIG_H
  11481. Daniel Stenberg (Nov 9, 1998)
  11482. - Ok, I expanded the tgz-target to update the version string on each occation
  11483. I build a release archive!
  11484. - I reacted on Angus Mackay's initiative and remade the parameter parser to
  11485. be more getopt compliant. Curl now supports "merged" flags as in
  11486. curl -lsv ftp.site.com
  11487. Do note that I had to move three short-names of the options. Parameters
  11488. that needs an additional string such as -x must be stand-alone or the
  11489. last in a merged sequence:
  11490. curl -lsx my-proxy ftp.site.com
  11491. is ok, but using the flags in a different order like '-lxs' would cause
  11492. unexpected results (as the 's' option would be skipped).
  11493. - I've changed the headers in all files that are subject to the MozPL
  11494. license, as they are supposed to look like when conforming.
  11495. - Made the configure script make the config.h. The former config.h is now
  11496. setup.h.
  11497. - The RESOURCES and TODO files have been added to the archive.
  11498. Angus Mackay (Nov 5, 1998)
  11499. - Fixed getpass.c and various configure stuff
  11500. Daniel Stenberg (Nov 3, 1998)
  11501. - Use -H/--header for custom HTTP-headers. Lets you pass on your own
  11502. specified headers to the remote server. I wouldn't recommend trying to use
  11503. a header with a defined usage according to standards. Use this flag once
  11504. for every custom header you want to add.
  11505. - Use -B/--ftp-ascii to force ftp to use ASCII mode when transfering files.
  11506. - Corrected the 'getlinks.pl' script, I accidentally left my silly proxy
  11507. usage in there! Since the introduction of the .curlrc file, it is easier to
  11508. write scripts that use curl since proxies and stuff should be in the
  11509. .curlrc file anyway.
  11510. - Introducing the new -F flag for HTTP POST. It supports multipart/form-data
  11511. which means it is gonna be possible to upload files etc through HTTP POST.
  11512. Shiraz Kanga asked for the feature and my brother,
  11513. Björn Stenberg helped me design the user
  11514. interface for this beast. This feature requires quite some docs,
  11515. since it has turned out not only quite capable, but also complicated! :-)
  11516. - A note here, since I've received mail about it. SSLeay versions prior to
  11517. 0.8 will *not* work with curl!
  11518. - Wil Langford reported a bug that occurred since curl
  11519. did not properly use CRLF when issuing ftp commands. I fixed it.
  11520. - Rearranged the order config files are read. .curlrc is now *always* read
  11521. first and before the command line flags. -K config files then act as
  11522. additional config items.
  11523. - Use -q AS THE FIRST OPTION specified to prevent .curlrc from being read.
  11524. - You can now disable a proxy by using -x "". Useful if the .curlrc file
  11525. specifies a proxy and you wanna fetch something without going through
  11526. that.
  11527. - I'm thinking of dropping the -p support. Its really not useful since ports
  11528. could (and should?) be specified as :<port> appended on the host name
  11529. instead, both in URLs and to proxy host names.
  11530. - Martin Staael reports curl -L bugs under Windows NT
  11531. (test with URL http://come.to/scsde). This bug is not present in this
  11532. version anymore.
  11533. - Added support for the weird FTP URL type= thing. You can download a file
  11534. using ASCII transfer by appending ";type=A" to the right of it. Other
  11535. available types are type=D for dir-list (NLST) and type=I for binary
  11536. transfer. I can't say I've ever seen anyone use this kind of URL though!
  11537. :-)
  11538. - Troy Engel pointed out a bug in my getenv("HOME")
  11539. usage for win32 systems. I introduce getenv.c to better cope with
  11540. this. Mr Engel helps me with the details around that...
  11541. - A little note to myself and others, I should make the win32-binary built
  11542. with SSL support...
  11543. - Ryan Nelson sent me comments about building curl
  11544. with SSL under FreeBSD. See the Makefile for details. Using the configure
  11545. script, it should work better and automatically now...
  11546. - Cleaned up in the port number mess in the source. No longer stores and uses
  11547. proxy port number separate from normal port number.
  11548. - 'configure' script working. Confirmed compiles on:
  11549. Host SSL Compiler
  11550. SunOS 5.5 no gcc
  11551. SunOS 5.5.1 yes gcc
  11552. SunOS 5.6 no cc (with gcc, it has the "gcc include files" problem)
  11553. SunOS 4.1.3 no gcc (without ANSI C headers)
  11554. SunOS 4.1.2 no gcc (native compiler failed)
  11555. Linux 2.0.18 no gcc
  11556. Linux 2.0.32 yes gcc
  11557. Linux 2.0.35 no gcc (with glibc)
  11558. IRIX 6.2 no gcc (cc compiles generate a few warnings)
  11559. IRIX 6.4 no cc (generated warnings though)
  11560. Win32 no Borland
  11561. OSF4.0 no ?
  11562. - Ooops. The 5beta (and 4.10) under win32 failed if the HOME variable wasn't
  11563. set.
  11564. - When using a proxy, curl now guesses and uses the protocol part in cases
  11565. like:
  11566. curl -x proxy:80 www.site.com
  11567. Proxies normally go nuts unless http:// is prepended to the host name, so
  11568. if curl is used like this, it guesses protocol and appends the protocol
  11569. string before passing it to the proxy. It already did this when used
  11570. without proxy.
  11571. - Better port usage with SSL through proxy now. If you specified a different
  11572. https-port when accessing through a proxy, it didn't use that number
  11573. correctly. I also rewrote the code that parses the stuff read from the
  11574. proxy when you wanna connect through it with SSL.
  11575. - Bjorn Reese helped me work around one of the compiler
  11576. warnings on IRIX native cc compiles.
  11577. Version 4.10 (Oct 26, 1998)
  11578. Daniel Stenberg
  11579. - John A. Bristor suggested a config file switch,
  11580. and since I've been having that idea kind of in the background for a long
  11581. time I rewrote the parameter parsing function a little and now I introduce
  11582. the -K/--config flag. I also made curl *always* (unless -K is used) try to
  11583. load the .curlrc file for command line parameters. The syntax for the
  11584. config file is the standard command line argument style. Details in 'curl
  11585. -h' or the README.
  11586. - I removed the -k option. Keep-alive isn't really anything anyone would
  11587. want to enable with curl anyway.
  11588. - Martin Staael helped me add the 'irix' target. Now
  11589. "make irix" should build curl successfully on non-gcc SGI machines.
  11590. - Single switches now toggle behaviours. I.e if you use -v -v the second
  11591. will switch off the verbose mode the first one enabled. This is so that
  11592. you can disable a default setting a .curlrc file enables etc.
  11593. Version 4.9 (Oct 7, 1998)
  11594. Daniel Stenberg
  11595. - Martin Staael suggested curl would support cookies.
  11596. I added -b/--cookie to enable free-text cookie data to be passed. There's
  11597. also a little blurb about general cookie stuff in the README/help text.
  11598. - dmh <dmh at jet.es> suggested HTTP resume capabilities. Although you could
  11599. manually get curl to resume HTTP documents, I made the -c resume flag work
  11600. for HTTP too (unless -r is used too, which would be very odd anyway).
  11601. - Added checklinks.pl to the archive. It is a still experimental perl script
  11602. that checks all links of a web page by using curl.
  11603. - Rearranged the archive hierarchy a little. Build the executable in the
  11604. src/ dir from now on!
  11605. - Version 4.9 and hereafter, is no longer released under the GPL license.
  11606. I have now updated the LEGAL file etc and now this is released using the
  11607. Mozilla Public License to avoid the plague known as "the GPL virus". You
  11608. must make the source available if you decide to change and/or redistribute
  11609. curl, but if you decide to use curl within something else you do not need
  11610. to offer the world the source to that too.
  11611. - Curl did not like HTTP servers that sent no headers at all on a GET
  11612. request. It is a violation of RFC2068 but appearantly some servers do
  11613. that anyway. Thanks to Gordon Beaton for the report!
  11614. - -L/--location was added after a suggestion from Martin Staael. This makes
  11615. curl ATTEMPT to follow the Location: redirect if one is present in the HTTP
  11616. headers. If -i or -I is used with this flag, you will see headers from all
  11617. sites the Location: points to. Do note that the first server can point to a
  11618. second that points to a third etc. It seems the Location: parameter (said
  11619. to be an AbsoluteURI in RFC2068) isn't always absolute.. :-/ Anyway, I've
  11620. made curl ATTEMPT to do the best it can to deal with the reality.
  11621. - Added getlinks.pl to the archive. getlinks.pl selectively downloads
  11622. files that a web page links to.
  11623. Version 4.8.4
  11624. Daniel Stenberg
  11625. - As Julian Romero Nieto reported, curl reported wrong version number.
  11626. - As Teemu Yli-Elsila pointed out, the win32 version of 4.8 (and probably all
  11627. other versions for win32) didn't work with binary files since I'm too used
  11628. to the UNIX style fopen() where binary and text don't differ...
  11629. - Ralph Beckmann brought me some changes that lets curl compile error and
  11630. warning free with -Wall -pedantic with g++. I also took the opportunity to
  11631. clean off some unused variables and similar.
  11632. - Ralph Beckmann made me aware of a really odd bug now corrected. When curl
  11633. read a set of headers from a HTTP server, divided into more than one read
  11634. and the first read showed a full line *exactly* (i.e ending with a
  11635. newline), curl did not behave well.
  11636. Version 4.8.3
  11637. Daniel Stenberg
  11638. - I was too quick to release 4.8.2 with too little testing. One of the
  11639. changes is now reverted slightly to the 4.8.1 way since 4.8.2 couldn't
  11640. upload files. I still think both problems corrected in 4.8.2 remain
  11641. corrected. Reported by Julian Romero Nieto.
  11642. Version 4.8.2
  11643. Daniel Stenberg
  11644. - Bernhard Iselborn reported two FTP protocol errors curl did. They're now
  11645. corrected. Both appeared when getting files from a MS FTP server! :-)
  11646. Version 4.8.1
  11647. Daniel Stenberg
  11648. - Added a last update of the progress meter when the transfer is done. The
  11649. final output on the screen didn't have to be the final size transfered
  11650. which made it sometimes look odd.
  11651. - Thanks to David Long I got rid of a silly bug that happened if a HTTP-page
  11652. had nothing but header. Appearantly Solaris deals with negative sizes in
  11653. fwrite() calls a lot better than Linux does... =B-]
  11654. Version 4.8 (Aug 31, 1998)
  11655. Daniel Stenberg
  11656. - Continue FTP file transfer. -c is the switch. Note that you need to
  11657. specify a file name if you wanna resume a download (you can't resume a
  11658. download sent to stdout). Resuming upload may be limited by the server
  11659. since curl is then using the non-RFC959 command SIZE to get the size of
  11660. the target file before upload begins (to figure out which offset to
  11661. use). Use -C to specify the offset yourself! -C is handy if you're doing
  11662. the output to something else but a plain file or when you just want to get
  11663. the end of a file.
  11664. - recursiveftpget.pl now features a maximum recursive level argument.
  11665. Version 4.7
  11666. Daniel Stenberg
  11667. - Added support to abort a download if the speed is below a certain amount
  11668. (speed-limit) bytes per second for a certain (speed-time) time.
  11669. - Wrote a perl script 'recursiveftpget.pl' to recursively use curl to get a
  11670. whole ftp directory tree. It is meant as an example of how curl can be
  11671. used. I agree it isn't the wisest thing to do to make a separate new
  11672. connection for each file and directory for this.
  11673. Version 4.6
  11674. Daniel Stenberg
  11675. - Added a first attempt to optionally parse the .netrc file for login user
  11676. and password. If used with http, it enables user authentication. -n is
  11677. the new switch.
  11678. - Removed the extra newlines on the default user-agent string.
  11679. - Corrected the missing ftp upload error messages when it failed without the
  11680. verbose flag set. Gary W. Swearingen found it.
  11681. - Now using alarm() to enable second-precision timeout even on the name
  11682. resolving/connecting phase. The timeout is although reset after that first
  11683. sequence. (This should be corrected.) Gary W. Swearingen reported.
  11684. - Now spells "Unknown" properly, as in "Unknown option 'z'"... :-)
  11685. - Added bug report email address in the README.
  11686. - Added a "current speed" field to the progress meter. It shows the average
  11687. speed the last 5 seconds. The other speed field shows the average speed of
  11688. the entire transfer so far.
  11689. Version 4.5.1
  11690. Linas Vepstas
  11691. - SSL through proxy fix
  11692. - Added -A to allow User-Agent: changes
  11693. Daniel Stenberg
  11694. - Made the -A work when SSL-through-proxy.
  11695. Version 4.5
  11696. Linas Vepstas
  11697. - More SSL corrections
  11698. - I've added a port to AIX.
  11699. - running SSL through a proxy causes a chunk of code to be executred twice.
  11700. one of those blocks needs to be deleted.
  11701. Daniel Stenberg
  11702. - Made -i and -I work again
  11703. Version 4.4
  11704. Linas Vepstas
  11705. - -x can now also specify proxyport when used as in 'proxyhost:proxyport'
  11706. - SSL fixes
  11707. Version 4.3
  11708. Daniel Stenberg
  11709. - Adjusted to compile under win32 (VisualC++ 5). The -P switch does not
  11710. support network interface names in win32. I couldn't figure out how!
  11711. Version 4.2
  11712. Linas Vepstas / Sampo Kellomaki
  11713. - Added SSL / SSLeay support (https://)
  11714. - Added the -T usage for HTTP POST.
  11715. Daniel Stenberg
  11716. - Bugfixed the SSL implementation.
  11717. - Made -P a lot better to use other IP addresses. It now accepts a following
  11718. parameter that can be either
  11719. interface - i.e "eth0" to specify which interface's IP address you
  11720. want to use
  11721. IP address - i.e "192.168.10.1" to specify exact IP number
  11722. host name - i.e "my.host.domain" to specify machine
  11723. "-" - (any single-letter string) to make it pick the machine's
  11724. default
  11725. - The Makefile is now ready to compile for solaris, sunos4 and linux right
  11726. out of the box.
  11727. - Better generated version string seen with 'curl -V'
  11728. Version 4.1
  11729. Daniel Stenberg
  11730. - The IP number returned by the ftp server as a reply to PASV does no longer
  11731. have to DNS resolve. In fact, no IP-number-only addresses have to anymore.
  11732. - Binds better to available port when -P is used.
  11733. - Now LISTs ./ instead of / when used as in ftp://ftp.funet.fi/. The reason
  11734. for this is that exactly that site, ftp.funet.fi, does not allow LIST /
  11735. while LIST ./ is fine. Any objections?
  11736. Version 4 (1998-03-20)
  11737. Daniel Stenberg
  11738. - I took another huge step and changed both version number and project name!
  11739. The reason for the new name is that there are just one too many programs
  11740. named urlget already and this program already can a lot more than merely
  11741. getting URLs, and the reason for the version number is that I did add the
  11742. pretty big change in -P and since I changed name I wanted to start with
  11743. something fresh!
  11744. - The --style flags are working better now.
  11745. - Listing directories with FTP often reported that the file transfer was
  11746. incomplete. Wrong assumptions were too common for directories, why no
  11747. size will be attempted to get compared on them from now on.
  11748. - Implemented the -P flag that let's the ftp control issue a PORT command
  11749. instead of the standard PASV.
  11750. - -a for appending FTP uploads works.
  11751. ***************************************************************************
  11752. Version 3.12 (14 March 1998)
  11753. Daniel Stenberg
  11754. - End-of-header tracking still lacked support for \r\n or just \n at the
  11755. end of the last header line.
  11756. Sergio Barresi
  11757. - Added PROXY authentication.
  11758. Rafael Sagula
  11759. - Fixed some little bugs.
  11760. Version 3.11
  11761. Daniel Stenberg
  11762. - The header parsing was still not correct since the 3.2 modification...
  11763. Version 3.10
  11764. Daniel Stenberg
  11765. - 3.7 and 3.9 were simultaneously developed and merged into this version.
  11766. - FTP upload did not work correctly since 3.2.
  11767. Version 3.9
  11768. Rafael Sagula
  11769. - Added the "-e <url> / --referer <url>" option where we can specify
  11770. the referer page. Obviously, this is necessary only to fool the
  11771. server, but...
  11772. Version 3.7
  11773. Daniel Stenberg
  11774. - Now checks the last error code sent from the ftp server after a file has
  11775. been received or uploaded. Wasn't done previously.
  11776. - When 'urlget <host>' is used without a 'protocol://' first in the host part,
  11777. it now checks for host names starting with ftp or gopher and if it does,
  11778. it uses that protocol by default instead of http.
  11779. Version 3.6
  11780. Daniel Stenberg
  11781. - Silly mistake made the POST bug. This has now also been tested to work with
  11782. proxy.
  11783. Version 3.5
  11784. Daniel Stenberg
  11785. - Highly inspired by Rafael Sagula's changes to the 3.1 that added an almost
  11786. functional POST, I applied his changes into this version and made them work.
  11787. (It seems POST requires the Content-Type and Content-Length headers.) It is
  11788. now usable with the -d switch.
  11789. Version 3.3 - 3.4
  11790. Passed to avoid confusions
  11791. Version 3.2
  11792. Daniel Stenberg
  11793. - Major rewrite of two crucial parts of this code: upload and download.
  11794. They are both now using a select() switch, that allows much better
  11795. progress meter and time control.
  11796. - alarm() usage removed completely
  11797. - FTP get can now list directory contents if the path ends with a slash '/'.
  11798. Urlget on a ftp-path that doesn't end with a slash means urlget will
  11799. attempt getting it as a file name.
  11800. - FTP directory view supports -l for "list-only" which lists the file names
  11801. only.
  11802. - All operations support -m for max time usage in seconds allowed.
  11803. - FTP upload now allows the size of the uploaded file to be provided, and
  11804. thus it can better check it actually uploaded the whole file. It also
  11805. makes the progress meter for uploads much better!
  11806. - Made the parameter parsing fail in cases like 'urlget -r 900' which
  11807. previously tried to connect to the host named '900'.
  11808. Version 3.1
  11809. Kjell Ericson
  11810. - Pointed out how to correct the 3 warnings in win32-compiles.
  11811. Daniel Stenberg
  11812. - Removed all calls to exit().
  11813. - Made the short help text get written to stdout instead of stderr.
  11814. - Made this file instead of keeping these comments in the source.
  11815. - Made two callback hooks, that enable external programs to use urlget()
  11816. easier and to grab the output/offer the input easier.
  11817. - It is evident that Win32-compiles are painful. I watched the output from
  11818. the Borland C++ v5 and it was awful. Just ignore all those warnings.
  11819. Version 3.0
  11820. Daniel Stenberg
  11821. - Added FTP upload capabilities. The name urlget gets a bit silly now
  11822. when we can put too... =)
  11823. - Restructured the source quite a lot.
  11824. Changed the urlget() interface. This way, we will survive changes much
  11825. better. New features can come and old can be removed without us needing
  11826. to change the interface. I've written a small explanation in urlget.h
  11827. that explains it.
  11828. - New flags include -t, -T, -O and -h. The -h text is generated by the new
  11829. mkhelp script.
  11830. Version 2.9
  11831. Remco van Hooff
  11832. - Added a fix to make it compile smoothly on Amiga using the SAS/C
  11833. compiler.
  11834. Daniel Stenberg
  11835. - Believe it or not, but the STUPID Novell web server seems to require
  11836. that the Host: keyword is used, so well I use it and I (re-introduce) the
  11837. urlget User-Agent:. I still have to check that this Host: usage works with
  11838. proxies... 'Host:' is required for HTTP/1.1 GET according to RFC2068.
  11839. Version 2.8
  11840. Rafael Sagula
  11841. - some little modifications
  11842. Version 2.7
  11843. Daniel Stenberg
  11844. - Removed the -l option and introduced the -f option instead. Now I'll
  11845. rewrite the former -l kludge in an external script that'll use urlget to
  11846. fetch multipart files like that.
  11847. - '-f' is introduced, it means Fail without output in case of HTTP server
  11848. errors (return code >=300).
  11849. - Added support for -r, ranges. Specify which part of a document you
  11850. want, and only that part is returned. Only with HTTP/1.1-servers.
  11851. - Split up the source in 3 parts. Now all pure URL functions are in
  11852. urlget.c and stuff that deals with the stand-alone program is in main.c.
  11853. - I took a few minutes and wrote an embryo of a README file to explain
  11854. a few things.
  11855. Version 2.6
  11856. Daniel Stenberg
  11857. - Made the -l (loop) thing use the new CONF_FAILONERROR which makes
  11858. urlget() return error code if non-successful. It also won't output anything
  11859. then. Now finally removed the HTTP 1.0 and error 404 dependencies.
  11860. - Added -I which uses the HEAD request to get the header only from a
  11861. http-server.
  11862. Version 2.5
  11863. Rafael Sagula
  11864. - Made the progress meter use HHH:MM:SS instead of only seconds.
  11865. Version 2.4
  11866. Daniel Stenberg
  11867. - Added progress meter. It appears when downloading > BUFFER SIZE and
  11868. mute is not selected. I found out that when downloading large files from
  11869. really really slow sites, it is desirable to know the status of the
  11870. download. Do note that some downloads are done unawaring of the size, which
  11871. makes the progress meter less thrilling ;) If the output is sent to a tty,
  11872. the progress meter is shut off.
  11873. - Increased buffer size used for reading.
  11874. - Added length checks in the user+passwd parsing.
  11875. - Made it grok user+passwd for HTTP fetches. The trick is to base64
  11876. encode the user+passwd and send an extra header line. Read chapter 11.1 in
  11877. RFC2068 for details. I added it to be used just like the ftp one. To get a
  11878. http document from a place that requires user and password, use an URL
  11879. like:
  11880. http://user:passwd@www.site.to.leach/doc.html
  11881. I also added the -u flag, since WHEN USING A PROXY YOU CAN'T SPECIFY THE
  11882. USER AND PASSWORD WITH HTTP LIKE THAT. The -u flag works for ftp too, but
  11883. not if used with proxy. To do the same as the above one, you can invoke:
  11884. urlget -u user:passwd http://www.site.to.leach/doc.html
  11885. Version 2.3
  11886. Rafael Sagula
  11887. - Added "-o" option (output file)
  11888. - Added URG_HTTP_NOT_FOUND return code.
  11889. (Daniel's note:)
  11890. Perhaps we should detect all kinds of errors and instead of writing that
  11891. custom string for the particular 404-error, use the error text we actually
  11892. get from the server. See further details in RFC2068 (HTTP 1.1
  11893. definition). The current way also relies on a HTTP/1.0 reply, which newer
  11894. servers might not do.
  11895. - Looping mode ("-l" option). It's easier to get various split files.
  11896. (Daniel's note:)
  11897. Use it like 'urlget -l 1 http://from.this.site/file%d.html', which will
  11898. make urlget to attempt to fetch all files named file1.html, file2.html etc
  11899. until no more files are found. This is only a modification of the
  11900. STAND_ALONE part, nothing in the urlget() function was modfified for this.
  11901. Daniel Stenberg
  11902. - Changed the -h to be -i instead. -h should be preserved to help use.
  11903. - Bjorn Reese indicated that Borland _might_ use '_WIN32' instead of the
  11904. VC++ WIN32 define and therefore I added a little fix for that.
  11905. Version 2.2
  11906. Johan Andersson
  11907. - The urlget function didn't set the path to url when using proxy.
  11908. - Fixed bug with IMC proxy. Now using (almost) complete GET command.
  11909. Daniel Stenberg
  11910. - Made it compile on Solaris. Had to reorganize the includes a bit.
  11911. (so Win32, Linux, SunOS 4 and Solaris 2 compile fine.)
  11912. - Made Johan's keepalive keyword optional with the -k flag (since it
  11913. makes a lot of urlgets take a lot longer time).
  11914. - Made a '-h' switch in case you want the HTTP-header in the output.
  11915. Version 2.1
  11916. Daniel Stenberg and Kjell Ericson
  11917. - Win32-compilable
  11918. - No more global variables
  11919. - Mute option (no output at all to stderr)
  11920. - Full range of return codes from urlget(), which is now written to be a
  11921. function for easy-to-use in [other] programs.
  11922. - Define STAND_ALONE to compile the stand alone urlget program
  11923. - Now compiles with gcc options -ansi -Wall -pedantic ;)
  11924. Version 2.0
  11925. - Introducing ftp GET support. The FTP URL type is recognized and used.
  11926. - Renamed the project to 'urlget'.
  11927. - Supports the user+passwd in the FTP URL (otherwise it tries anonymous
  11928. login with a weird email address as password).
  11929. Version 1.5
  11930. Daniel Stenberg
  11931. - The skip_header() crap messed it up big-time. By simply removing that
  11932. one we can all of a sudden download anything ;)
  11933. - No longer requires a trailing slash on the URLs.
  11934. - If the given URL isn't prefixed with 'http://', HTTP is assumed and
  11935. given a try!
  11936. - 'void main()' is history.
  11937. Version 1.4
  11938. Daniel Stenberg
  11939. - The gopher source used the ppath variable instead of path which could
  11940. lead to disaster.
  11941. Version 1.3
  11942. Daniel Stenberg
  11943. - Well, I added a lame text about the time it took to get the data. I also
  11944. fought against Johan to prevent his -f option (to specify a file name
  11945. that should be written instead of stdout)! =)
  11946. - Made it write 'connection refused' for that particular connect()
  11947. problem.
  11948. - Renumbered the version. Let's not make silly 1.0.X versions, this is
  11949. a plain 1.3 instead.
  11950. Version 1.2
  11951. Johan Andersson
  11952. - Discovered and fixed the problem with getting binary files. puts() is
  11953. now replaced with fwrite(). (Daniel's note: this also fixed the buffer
  11954. overwrite problem I found in the previous version.)
  11955. Rafael Sagula
  11956. - Let "-p" before "-x".
  11957. Daniel Stenberg
  11958. - Bugfixed the proxy usage. It should *NOT* use nor strip the port number
  11959. from the URL but simply pass that information to the proxy. This also
  11960. made the user/password fields possible to use in proxy [ftp-] URLs.
  11961. (like in ftp://user:password@ftp.my.site:8021/README)
  11962. Johan Andersson
  11963. - Implemented HTTP proxy support.
  11964. - Receive byte counter added.
  11965. Bjorn Reese
  11966. - Implemented URLs (and skipped the old syntax).
  11967. - Output is written to stdout, so to achieve the above example, do:
  11968. httpget http://143.54.10.6/info_logo.gif > test.gif
  11969. Version 1.1
  11970. Daniel Stenberg
  11971. - Adjusted it slightly to accept named hosts on the command line. We
  11972. wouldn't wanna use IP numbers for the rest of our lifes, would we?
  11973. Version 1.0
  11974. Rafael Sagula
  11975. - Wrote the initial httpget, which started all this!