CHANGES.0 587 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916
  1. _ _ ____ _
  2. ___| | | | _ \| |
  3. / __| | | | |_) | |
  4. | (__| |_| | _ <| |___
  5. \___|\___/|_| \_\_____|
  6. Old Changelog
  7. Changes done to curl and libcurl from 1997 to 2006. The most recent changes are
  8. always kept in the CHANGES file.
  9. Daniel S (27 Dec 2007)
  10. - Dmitry Kurochkin mentioned a flaw
  11. (http://curl.haxx.se/mail/lib-2007-12/0252.html) in detect_proxy() which
  12. failed to set the bits.proxy variable properly when an environment variable
  13. told libcurl to use a http proxy.
  14. Daniel S (26 Dec 2007)
  15. - In an attempt to repeat the problem in bug report #1850730
  16. (http://curl.haxx.se/bug/view.cgi?id=1850730) I wrote up test case 552. The
  17. test is doing a 70K POST with a read callback and an ioctl callback over a
  18. proxy requiring Digest auth. The test case code is more or less identical to
  19. the test recipe code provided by Spacen Jasset (who submitted the bug
  20. report).
  21. Daniel S (25 Dec 2007)
  22. - Gary Maxwell filed bug report #1856628
  23. (http://curl.haxx.se/bug/view.cgi?id=1856628) and provided a fix for the
  24. (small) memory leak in the SSL session ID caching code. It happened when a
  25. previous entry in the cache was re-used.
  26. Daniel Fandrich (19 Dec 2007)
  27. - Ensure that nroff doesn't put anything but ASCII characters into the
  28. --manual text.
  29. Yang Tse (18 Dec 2007)
  30. - MSVC 9.0 (VS2008) does not support Windows build targets prior to WinXP,
  31. and makes wrong asumptions of build target when it isn't specified. So,
  32. if no build target has been defined we will target WinXP when building
  33. curl/libcurl with MSVC 9.0 (VS2008).
  34. - (http://curl.haxx.se/mail/archive-2007-12/0039.html) reported and fixed
  35. a file truncation problem on Windows build targets triggered when retrying
  36. a download with curl.
  37. Daniel S (17 Dec 2007)
  38. - Mateusz Loskot pointed out that MSVC 9.0 (VS2008) has the pollfd struct and
  39. defines in winsock2.h somehow differently than previous versions and that
  40. curl 7.17.1 would fail to compile out of the box.
  41. Daniel S (13 Dec 2007)
  42. - David Wright filed bug report #1849764
  43. (http://curl.haxx.se/bug/view.cgi?id=1849764) with an included fix. He
  44. identified a problem for re-used connections that previously had sent
  45. Expect: 100-continue and in some situations the subsequent POST (that didn't
  46. use Expect:) still had the internal flag set for its use. David's fix (that
  47. makes the setting of the flag in every single request unconditionally) is
  48. fine and is now used!
  49. Daniel S (12 Dec 2007)
  50. - Gilles Blanc made the curl tool enable SO_KEEPALIVE for the connections and
  51. added the --no-keep-alive option that can disable that on demand.
  52. Daniel S (9 Dec 2007)
  53. - Andrew Moise filed bug report #1847501
  54. (http://curl.haxx.se/bug/view.cgi?id=1847501) and pointed out a memcpy()
  55. that should be memmove() in the convert_lineends() function.
  56. Daniel S (8 Dec 2007)
  57. - Renamed all internal static functions that had Curl_ prefixes to no longer
  58. have them. The Curl_ prefix is exclusively used for library internal global
  59. symbols. Static functions can be named anything, except for using Curl_ or
  60. curl_ prefixes. This is for consistency and for easier maintainance and
  61. overview.
  62. - Cleaned up and reformatted the TODO document to look like the FAQ and
  63. CONTRIBUTE, which makes nicer web pages
  64. - Added test cases 549 and 550 that test CURLOPT_PROXY_TRANSFER_MODE.
  65. - Added keywords on a bunch of test cases
  66. - Fixed an OOM problem in the curl code that would lead to fclose on a bad
  67. handle and crash
  68. Daniel S (5 Dec 2007)
  69. - Spacen Jasset reported a problem with doing POST (with data read with a
  70. callback) over a proxy when NTLM is used as auth with the proxy. The bug
  71. also concerned Digest and was limited to using callback only. Spacen worked
  72. with us to provide a useful patch. I added the test case 547 and 548 to
  73. verify two variations of POST over proxy with NTLM.
  74. Daniel S (3 Dec 2007)
  75. - Ray Pekowski filed bug report #1842029
  76. (http://curl.haxx.se/bug/view.cgi?id=1842029) in which he identified a
  77. problem with SSL session caching that prevent it from working, and provided
  78. the associated fix!
  79. - Now libcurl (built with OpenSSL) doesn't return error anymore if the remote
  80. SSL-based server doesn't present a certificate when the request is told to
  81. ignore certificate verification anyway.
  82. - Michal Marek introduced CURLOPT_PROXY_TRANSFER_MODE which is used to control
  83. the appending of the "type=" thing on FTP URLs when they are passed to a
  84. HTTP proxy. Some proxies just don't like that appending (which is done
  85. unconditionally in 7.17.1), and some proxies treat binary/ascii transfers
  86. better with the appending done!
  87. Daniel S (29 Nov 2007)
  88. - A bug report on the curl-library list showed a HTTP Digest session going on
  89. with a 700+ letter nonce. Previously libcurl only support 127 letter ones
  90. and now I bumped it to 1023.
  91. - Fixed the resumed FTP upload loop to not require that the read callback
  92. returns a full buffer on each invoke.
  93. Daniel S (25 Nov 2007)
  94. - Added test case 1015 that tests --data-urlencode in multiple ways
  95. - Fixed --data-urlencode for when no @ or = are used
  96. - Extended the user-agent buffer curl uses, since we can hit the 128 byte
  97. border with plenty development libraries used. Like my current set: "curl
  98. 7.17.2-CVS (i686-pc-linux-gnu) libcurl/7.17.2-CVS OpenSSL/0.9.8g
  99. zlib/1.2.3.3 c-ares/1.5.2-CVS libidn/1.1 libssh2/0.19.0-CVS"
  100. Daniel S (24 Nov 2007)
  101. - Internal rearrangements, so that the previous struct HandleData is no more.
  102. It is now known as SingleRequest and the Curl_transfer_keeper struct within
  103. that was remove entirely. This has the upside that there are less duplicate
  104. struct members that made it hard to see and remember what struct that was
  105. used to store what data. The transfer_keeper thing was once stored on a
  106. per-connection basis and then it made sense to have the duplicate info but
  107. since it was moved to the SessionHandle (in 7.16.0) it just added weirdness.
  108. The SingleRequest struct is used by data that only is valid for this single
  109. request.
  110. Yang Tse (22 Nov 2007)
  111. - Provide a socklen_t definition in curl.h for Win32 API build targets
  112. which don't have one.
  113. Daniel S (22 Nov 2007)
  114. - Alessandro Vesely helped me improve the --data-urlencode's syntax, parser
  115. and documentation.
  116. Daniel S (21 Nov 2007)
  117. - While inspecting the Negotiate code, I noticed how the proxy auth was using
  118. the same state struct as the host auth, so both could never be used at the
  119. same time! I fixed it (without being able to check) to use two separate
  120. structs to allow authentication using Negotiate on host and proxy
  121. simultaneously.
  122. Daniel S (20 Nov 2007)
  123. - Emil Romanus pointed out a bug that made an easy handle get the cookie
  124. engine activated when set to use a share (even if the share doesn't share
  125. cookies). I fixed it.
  126. - Fixed a very long-lasting mprintf() bug that occurred when we did "%.*s%s",
  127. since the second %s would then wrongly used the numerical precision argument
  128. instead and crash.
  129. - Introduced --data-urlencode to the curl tool for easier url encoding of the
  130. data sent in a post.
  131. Daniel S (18 Nov 2007)
  132. - Rob Crittenden fixed SSL connections with NSS done with the multi-interface
  133. Daniel S (17 Nov 2007)
  134. - Michal Marek made the test suite remember what test servers that fail to
  135. start so that subsequent tries are simply skipped.
  136. - Andres Garcia made the examples build fine on Windows (mingw + msys) when
  137. the lib was built staticly.
  138. Daniel S (16 Nov 2007)
  139. - Ates Goral identified a problem in http.c:add_buffer_send() when a debug
  140. callback was used, as it could wrongly pass on a bad size for the outgoing
  141. HTTP header. The bad size would be a very large value as it was a wrapped
  142. size_t content. This happened when the whole HTTP request failed to get sent
  143. in one single send. http://curl.haxx.se/mail/lib-2007-11/0165.html
  144. Daniel S (15 Nov 2007)
  145. - Fixed yet another remaining problem with doing SFTP directory listings on a
  146. re-used persistent connection. Mentioned by Immanuel Gregoire on the mailing
  147. list.
  148. - Michal Marek fixed the test suite to better deal with the case when the HTTP
  149. ipv6 server can't run.
  150. Yang Tse (14 Nov 2007)
  151. - Fix a variable potential wrapping in add_buffer() when using absolutely
  152. huge send buffer sizes.
  153. Daniel S (13 Nov 2007)
  154. - Fixed a remaining problem with doing SFTP directory listings on a re-used
  155. persistent connection. Mentioned by Immanuel Gregoire on the mailing list.
  156. Daniel S (12 Nov 2007)
  157. - Bug report #1830637 (http://curl.haxx.se/bug/view.cgi?id=1830637), which was
  158. forwarded from the Gentoo bug tracker by Daniel Black and was originally
  159. submitted by Robin Johnson, pointed out that libcurl would do bad memory
  160. references when it failed and bailed out before the handler thing was
  161. setup. My fix is not done like the provided patch does it, but instead I
  162. make sure that there's never any chance for a NULL pointer in that struct
  163. member.
  164. Yang Tse (10 Nov 2007)
  165. - Vikram Saxena (http://curl.haxx.se/mail/lib-2007-11/0096.html) pointed out
  166. that the pollfd struct was being multi defined when using VS2008. This is
  167. now fixed in /curl/lib/select.h
  168. Daniel S (8 Nov 2007)
  169. - Bug report #1823487 (http://curl.haxx.se/bug/view.cgi?id=1823487) pointed
  170. out that SFTP requests didn't use persistent connections. Neither did SCP
  171. ones. I gave the SSH code a good beating and now both SCP and SFTP should
  172. use persistent connections fine. I also did a bunch of indent changes as
  173. well as a bug fix for the "keyboard interactive" auth.
  174. Dan F (6 Nov 2007)
  175. - Improved telnet support by drastically reducing the number of write
  176. callbacks needed to pass a buffer to the user. Instead one per byte it
  177. is now as little as one per segment.
  178. Yang Tse (6 Nov 2007)
  179. - Bug report #1824894 (http://curl.haxx.se/bug/view.cgi?id=1824894) pointed
  180. out a problem in curl.h when building C++ apps with MSVC. To fix it, the
  181. inclusion of header files in curl.h is moved outside of the C++ extern "C"
  182. linkage block.
  183. Daniel S (1 Nov 2007)
  184. - Toby Peterson patched a memory problem in the command line tool that
  185. happened when a user had a home dir as an empty string. curl would then do
  186. free() on a wrong area.
  187. Dan F (1 Nov 2007)
  188. - Fixed curl-config --features to not display libz when it wasn't used
  189. due to a missing header file.
  190. Dan F (31 October 2007)
  191. - Fixed the output of curl-config --protocols which showed SCP and SFTP
  192. always, except when --without-libssh2 was given
  193. - Added test cases 1013 and 1014 to check that curl-config --protocols and
  194. curl-config --features matches the output of curl --version
  195. Dan F (30 October 2007)
  196. - Fixed an OOM problem with file: URLs
  197. - Moved Curl_file_connect into the protocol handler struct
  198. Dan F (29 October 2007)
  199. - Added test case 546 to check that subsequent FTP transfers work after a
  200. failed one using the multi interface
  201. Daniel S (29 October 2007)
  202. - Based on one of those bug reports that are intercepted by a distro's bug
  203. tracker (https://bugzilla.redhat.com/show_bug.cgi?id=316191), I now made
  204. curl-config --features and --protocols show the correct output when built
  205. with NSS.
  206. Version 7.17.1 (29 October 2007)
  207. Dan F (25 October 2007)
  208. - Added the --static-libs option to curl-config
  209. Daniel S (25 October 2007)
  210. - Made libcurl built with NSS possible to ignore the peer verification.
  211. Previously it would fail if the ca bundle wasn't present, even if the code
  212. ignored the verification results.
  213. Patrick M (25 October 2007)
  214. - Fixed test server to allow null bytes in binary posts.
  215. _ Added tests 35, 544 & 545 to check binary data posts, both static (in place)
  216. and dynamic (copied).
  217. Daniel S (25 October 2007)
  218. - Michal Marek fixed the test script to be able to use valgrind even when the
  219. lib is built shared with libtool.
  220. - Fixed a few memory leaks when the same easy handle is re-used to request
  221. URLs with different protocols. FTP and TFTP related leaks. Caught thanks to
  222. Dan F's new test cases.
  223. Dan F (24 October 2007)
  224. - Fixed the test FTP and TFTP servers to support the >10000 test number
  225. notation
  226. - Added test cases 2000 through 2003 which test multiple protocols using the
  227. same easy handle
  228. - Fixed the filecheck: make target to work outside the source tree
  229. Daniel S (24 October 2007)
  230. - Vladimir Lazarenko pointed out that we should do some 'mt' magic when
  231. building with VC8 to get the "manifest" embedded to make fine stand-alone
  232. binaries. The maketgz and the src/Makefile.vc6 files were adjusted
  233. accordingly.
  234. Daniel S (23 October 2007)
  235. - Bug report #1812190 (http://curl.haxx.se/bug/view.cgi?id=1812190) points out
  236. that libcurl tried to re-use connections a bit too much when using non-SSL
  237. protocols tunneled over a HTTP proxy.
  238. Daniel S (22 October 2007)
  239. - Michal Marek forwarded the bug report
  240. https://bugzilla.novell.com/show_bug.cgi?id=332917 about a HTTP redirect to
  241. FTP that caused memory havoc. His work together with my efforts created two
  242. fixes:
  243. #1 - FTP::file was moved to struct ftp_conn, because is has to be dealt with
  244. at connection cleanup, at which time the struct HandleData could be
  245. used by another connection.
  246. Also, the unused char *urlpath member is removed from struct FTP.
  247. #2 - provide a Curl_reset_reqproto() function that frees
  248. data->reqdata.proto.* on connection setup if needed (that is if the
  249. SessionHandle was used by a different connection).
  250. A long-term goal is of course to somehow get rid of how the reqdata struct
  251. is used, as it is too error-prone.
  252. - Bug report #1815530 (http://curl.haxx.se/bug/view.cgi?id=1815530) points out
  253. that specifying a proxy with a trailing slash didn't work (unless it also
  254. contained a port number).
  255. Patrick M (15 October 2007)
  256. - Fixed the dynamic CURLOPT_POSTFIELDS problem: this option is now static again
  257. and option CURLOPT_COPYPOSTFIELDS has been added to support dynamic mode.
  258. Patrick M (12 October 2007)
  259. - Added per-protocol callback static tables, replacing callback ptr storage
  260. in the connectdata structure by a single handler table ptr.
  261. Dan F (11 October 2007)
  262. - Fixed the -l option of runtests.pl
  263. - Added support for skipping tests based on key words.
  264. Daniel S (9 October 2007)
  265. - Michal Marek removed the no longer existing return codes from the curl.1
  266. man page.
  267. Daniel S (7 October 2007)
  268. - Known bug #47, which confused libcurl if doing NTLM auth over a proxy with
  269. a response that was larger than 16KB is now improved slightly so that now
  270. the restriction at 16KB is for the headers only and it should be a rare
  271. situation where the response-headers exceed 16KB. Thus, I consider #47 fixed
  272. and the header limitation is now known as known bug #48.
  273. Daniel S (5 October 2007)
  274. - Michael Wallner made the CULROPT_COOKIELIST option support a new magic
  275. string: "FLUSH". Using that will cause libcurl to flush its cookies to the
  276. CURLOPT_COOKIEJAR file.
  277. - The new file docs/libcurl/ABI describes how we view ABI breakages, soname
  278. bumps and what the version number's significance to all that is.
  279. Daniel S (4 October 2007)
  280. - I enabled test 1009 and made the --local-port use a wide range to reduce the
  281. risk of failures.
  282. - Kim Rinnewitz reported that --local-port didn't work with TFTP transfers.
  283. This happened because the tftp code always uncondionally did a bind()
  284. without caring if one already had been done and then it failed. I wrote a
  285. test case (1009) to verify this, but it is a bit error-prone since it will
  286. have to pick a fixed local port number and since the tests are run on so
  287. many different hosts in different situations I'll add it in disabled state.
  288. Yang Tse (3 October 2007)
  289. - Fixed issue related with the use of ares_timeout() result.
  290. Daniel S (3 October 2007)
  291. - Alexey Pesternikov introduced CURLOPT_OPENSOCKETFUNCTION and
  292. CURLOPT_OPENSOCKETDATA to set a callback that allows an application to
  293. replace the socket() call used by libcurl. It basically allows the app to
  294. change address, protocol or whatever of the socket.
  295. - I renamed the CURLE_SSL_PEER_CERTIFICATE error code to
  296. CURLE_PEER_FAILED_VERIFICATION (standard CURL_NO_OLDIES style), and made
  297. this return code get used by the previous SSH MD5 fingerprint check in case
  298. it fails.
  299. - Based on a patch brought by Johnny Luong, libcurl now offers
  300. CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 and the curl tool --hostpubmd5. They both
  301. make the SCP or SFTP connection verify the remote host's md5 checksum of the
  302. public key before doing a connect, to reduce the risk of a man-in-the-middle
  303. attack.
  304. Daniel S (2 October 2007)
  305. - libcurl now handles chunked-encoded CONNECT responses
  306. Daniel S (1 October 2007)
  307. - Alex Fishman reported a curl_easy_escape() problem that was made the
  308. function do wrong on all input bytes that are >= 0x80 (decimal 128) due to a
  309. signed / unsigned mistake in the code. I fixed it and added test case 543 to
  310. verify.
  311. Daniel S (29 September 2007)
  312. - Immanuel Gregoire fixed a problem with persistent transfers over SFTP.
  313. Daniel S (28 September 2007)
  314. - Adapted the c-ares code to the API change c-ares 1.5.0 brings in the
  315. notifier callback(s).
  316. Dan F (26 September 2007)
  317. - Enabled a few more gcc warnings with --enable-debug. Renamed a few
  318. variables to avoid shadowing global declarations.
  319. Daniel S (26 September 2007)
  320. - Philip Langdale provided the new CURLOPT_POST301 option for
  321. curl_easy_setopt() that alters how libcurl functions when following
  322. redirects. It makes libcurl obey the RFC2616 when a 301 response is received
  323. after a non-GET request is made. Default libcurl behaviour is to change
  324. method to GET in the subsequent request (like it does for response code 302
  325. - because that's what many/most browsers do), but with this CURLOPT_POST301
  326. option enabled it will do what the spec says and do the next request using
  327. the same method again. I.e keep POST after 301.
  328. The curl tool got this option as --post301
  329. Test case 1011 and 1012 were added to verify.
  330. - Max Katsev reported that when doing a libcurl FTP request with
  331. CURLOPT_NOBODY enabled but not CURLOPT_HEADER, libcurl wouldn't do TYPE
  332. before it does SIZE which makes it less useful. I walked over the code and
  333. made it do this properly, and added test case 542 to verify it.
  334. Daniel S (24 September 2007)
  335. - Immanuel Gregoire fixed KNOWN_BUGS #44: --ftp-method nocwd did not handle
  336. URLs ending with a slash properly (it should list the contents of that
  337. directory). Test case 351 brought back and also test 1010 was added.
  338. Daniel S (21 September 2007)
  339. - Mark Davies fixed Negotiate authentication over proxy, and also introduced
  340. the --proxy-negotiate command line option to allow a user to explicitly
  341. select it.
  342. Daniel S (19 September 2007)
  343. - Rob Crittenden provided an NSS update with the following highlights:
  344. o It looks for the NSS database first in the environment variable SSL_DIR,
  345. then in /etc/pki/nssdb, then it initializes with no database if neither of
  346. those exist.
  347. o If the NSS PKCS#11 libnspsem.so driver is available then PEM files may be
  348. loaded, including the ca-bundle. If it is not available then only
  349. certificates already in the NSS database are used.
  350. o Tries to detect whether a file or nickname is being passed in so the right
  351. thing is done
  352. o Added a bit of code to make the output more like the OpenSSL module,
  353. including displaying the certificate information when connecting in
  354. verbose mode
  355. o Improved handling of certificate errors (expired, untrusted, etc)
  356. The libnsspem.so PKCS#11 module is currently only available in Fedora
  357. 8/rawhide. Work will be done soon to upstream it. The NSS module will work
  358. with or without it, all that changes is the source of the certificates and
  359. keys.
  360. Daniel S (18 September 2007)
  361. - Immanuel Gregoire pointed out that public key SSH auth failed if no
  362. public/private key was specified and there was no HOME environment variable,
  363. and then it didn't continue to try the other auth methods. Now it will
  364. instead try to get the files id_dsa.pub and id_dsa from the current
  365. directory if none of the two conditions were met.
  366. Dan F (17 September 2007)
  367. - Added hooks to the test suite to make it possible to test a curl running
  368. on a remote host.
  369. - Changed some FTP tests to validate the format of the PORT and EPRT commands
  370. sent by curl, if not the addresses themselves.
  371. Daniel S (15 September 2007)
  372. - Michal Marek made libcurl automatically append ";type=<a|i>" when using HTTP
  373. proxies for FTP urls.
  374. - Günter Knauf fixed LDAP builds in the Windows makefiles and fixed LDAPv3
  375. support on Windows.
  376. Dan F (13 September 2007)
  377. - Added LDAPS, SCP and SFTP to curl-config --protocols. Removed and
  378. fixed some AC_SUBST configure entries.
  379. Version 7.17.0 (13 September 2007)
  380. Daniel S (12 September 2007)
  381. - Bug report #1792649 (http://curl.haxx.se/bug/view.cgi?id=1792649) pointed
  382. out a problem with doing an empty upload over FTP on a re-used connection.
  383. I added test case 541 to reproduce it and to verify the fix.
  384. - I noticed while writing test 541 that the FTP code wrongly did a CWD on the
  385. second transfer as it didn't store and remember the "" path from the
  386. previous transfer so it would instead CWD to the entry path as stored. This
  387. worked, but did a superfluous command. Thus, test case 541 now also verifies
  388. this fix.
  389. Dan F (5 September 2007)
  390. - Added test case 1007 to test permission problem when uploading with TFTP
  391. (to validate bug #1790403).
  392. - TFTP now reports the "not defined" TFTP error code 0 as an error,
  393. not success.
  394. Daniel S (5 September 2007)
  395. - Continued the work on a fix for #1779054
  396. (http://curl.haxx.se/bug/view.cgi?id=1779054). My previous fix from August
  397. 24 was not complete (either) but could accidentally "forget" parts of a
  398. server response which led to faulty server response time-out errors.
  399. Dan F (5 September 2007)
  400. - Minix doesn't support getsockopt on UDP sockets or send/recv on TCP
  401. sockets.
  402. Dan F (31 August 2007)
  403. - Made some of the error strings returned by the *strerror functions more
  404. generic, and more consistent with each other.
  405. - Renamed the curl_ftpssl enum to curl_usessl and its enumerated constants,
  406. creating macros for backward compatibility:
  407. CURLFTPSSL_NONE => CURLUSESSL_NONE
  408. CURLFTPSSL_TRY => CURLUSESSL_TRY
  409. CURLFTPSSL_CONTROL => CURLUSESSL_CONTROL
  410. CURLFTPSSL_ALL => CURLUSESSL_ALL
  411. CURLFTPSSL_LAST => CURLUSESSL_LAST
  412. Dan F (30 August 2007)
  413. - Renamed several libcurl error codes and options to make them more general
  414. and allow reuse by multiple protocols. Several unused error codes were
  415. removed. In all cases, macros were added to preserve source (and binary)
  416. compatibility with the old names. These macros are subject to removal at
  417. a future date, but probably not before 2009. An application can be
  418. tested to see if it is using any obsolete code by compiling it with the
  419. CURL_NO_OLDIES macro defined.
  420. The following unused error codes were removed:
  421. CURLE_BAD_CALLING_ORDER
  422. CURLE_BAD_PASSWORD_ENTERED
  423. CURLE_FTP_CANT_RECONNECT
  424. CURLE_FTP_COULDNT_GET_SIZE
  425. CURLE_FTP_COULDNT_SET_ASCII
  426. CURLE_FTP_USER_PASSWORD_INCORRECT
  427. CURLE_FTP_WEIRD_USER_REPLY
  428. CURLE_FTP_WRITE_ERROR
  429. CURLE_LIBRARY_NOT_FOUND
  430. CURLE_MALFORMAT_USER
  431. CURLE_OBSOLETE
  432. CURLE_SHARE_IN_USE
  433. CURLE_URL_MALFORMAT_USER
  434. The following error codes were renamed:
  435. CURLE_FTP_ACCESS_DENIED => CURLE_REMOTE_ACCESS_DENIED
  436. CURLE_FTP_COULDNT_SET_BINARY => CURLE_FTP_COULDNT_SET_TYPE
  437. CURLE_FTP_SSL_FAILED => CURLE_USE_SSL_FAILED
  438. CURLE_FTP_QUOTE_ERROR => CURLE_QUOTE_ERROR
  439. CURLE_TFTP_DISKFULL => CURLE_REMOTE_DISK_FULL
  440. CURLE_TFTP_EXISTS => CURLE_REMOTE_FILE_EXISTS
  441. CURLE_HTTP_RANGE_ERROR => CURLE_RANGE_ERROR
  442. The following options were renamed:
  443. CURLOPT_SSLKEYPASSWD => CURLOPT_KEYPASSWD
  444. CURLOPT_FTPAPPEND => CURLOPT_APPEND
  445. CURLOPT_FTPLISTONLY => CURLOPT_DIRLISTONLY
  446. CURLOPT_FTP_SSL => CURLOPT_USE_SSL
  447. A few more changes will take place with the next SONAME bump of the
  448. library. These are documented in docs/TODO
  449. - Documented some newer error codes in libcurl-error(3)
  450. - Added more accurate error code returns from SFTP operations. Added test
  451. case 615 to test an SFTP upload failure.
  452. Dan F (28 August 2007)
  453. - Some minor internal type and const changes based on a splint scan.
  454. Daniel S (24 August 2007)
  455. - Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
  456. out that libcurl didn't deal with large responses from server commands, when
  457. the single response was consisting of multiple lines but of a total size of
  458. 16KB or more. Dan Fandrich improved the ftp test script and provided test
  459. case 1006 to repeat the problem, and I fixed the code to make sure this new
  460. test case runs fine.
  461. Patrick M (23 August 2007)
  462. - OS/400 port: new files lib/config-os400.h lib/setup-os400.h packages/OS400/*.
  463. See packages/OS400/README.OS400.
  464. Daniel S (23 August 2007)
  465. - Bug report #1779751 (http://curl.haxx.se/bug/view.cgi?id=1779751) pointed
  466. out that doing first a file:// upload and then an FTP upload crashed libcurl
  467. or at best caused furious valgrind complaints. Fixed now!
  468. Daniel S (22 August 2007)
  469. - Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
  470. out that libcurl didn't deal with very long (>16K) FTP server response lines
  471. properly. Starting now, libcurl will chop them off (thus the client app will
  472. not get the full line) but survive and deal with them fine otherwise. Test
  473. case 1003 was added to verify this.
  474. Daniel S (20 August 2007)
  475. - Based on a patch by Christian Vogt, the FTP code now sets the upcoming
  476. download transfer size much earlier to be possible to get read with
  477. CURLINFO_CONTENT_LENGTH_DOWNLOAD as soon as possible. This is very much in a
  478. similar spirit to the HTTP size change from August 11 2007.
  479. Daniel S (18 August 2007)
  480. - Robson Braga Araujo filed bug report #1776232
  481. (http://curl.haxx.se/bug/view.cgi?id=1776232) about libcurl calling
  482. Curl_client_write(), passing on a const string that the caller may not
  483. modify and yet it does (on some platforms).
  484. - Robson Braga Araujo filed bug report #1776235
  485. (http://curl.haxx.se/bug/view.cgi?id=1776235) about ftp requests with NOBODY
  486. on a directory would do a "SIZE (null)" request. This is now fixed and test
  487. case 1000 was added to verify.
  488. Daniel S (17 August 2007)
  489. - Song Ma provided a patch that cures a problem libcurl has when doing resume
  490. HTTP PUT using Digest authentication. Test case 5320 and 5322 were also
  491. added to verify the functionality.
  492. Daniel S (14 August 2007)
  493. - Andrew Wansink provided an NTLM bugfix: in the case the server sets the flag
  494. NTLMFLAG_NEGOTIATE_UNICODE, we need to filter it off because libcurl doesn't
  495. UNICODE encode the strings it packs into the NTLM authenticate packet.
  496. Daniel S (11 August 2007)
  497. - Allen Pulsifer provided a patch that makes libcurl set the expected download
  498. size earlier when doing HTTP downloads, so that applications and the
  499. progress meter etc know get the info earlier in the flow than before.
  500. - Patrick Monnerat modified the LDAP code and approach in curl. Starting now,
  501. the configure script checks for openldap and friends and we link with those
  502. libs just like we link all other third party libraries, and we no longer
  503. dlopen() those libraries. Our private header file lib/ldap.h was renamed to
  504. lib/curl_ldap.h due to this. I set a tag in CVS (curl-7_17_0-preldapfix)
  505. just before this commit, just in case.
  506. Dan F (8 August 2007)
  507. - Song Ma noted a zlib memory leak in the illegal compressed header
  508. countermeasures code path.
  509. Daniel S (4 August 2007)
  510. - Patrick Monnerat fixed curl_easy_escape() and curlx_strtoll() to work on
  511. non-ASCII systems.
  512. Daniel S (3 August 2007)
  513. - I cut out support for libssh2 versions older than 0.16 to make our code a
  514. lot simpler, and to avoid getting trouble with the LIBSSH2_APINO define
  515. that 1) didn't work properly since it was >32 bits and 2) is removed in
  516. libssh2 0.16...
  517. Daniel S (2 August 2007)
  518. - Scott Cantor filed bug report #1766320
  519. (http://curl.haxx.se/bug/view.cgi?id=1766320) pointing out that the libcurl
  520. code accessed two curl_easy_setopt() options (CURLOPT_DNS_CACHE_TIMEOUT and
  521. CURLOPT_DNS_USE_GLOBAL_CACHE) as ints even though they're documented to be
  522. passed in as longs, and that makes a difference on 64 bit architectures.
  523. - Dmitriy Sergeyev reported a regression: resumed file:// transfers broke
  524. after 7.16.2. This is much due to the different treatment file:// gets
  525. internally, but now I added test 231 to make it less likely to happen again
  526. without us noticing!
  527. Daniel S (1 August 2007)
  528. - Patrick Monnerat and I modified libcurl so that now it *copies* all strings
  529. passed to it with curl_easy_setopt()! Previously it has always just refered
  530. to the data, forcing the user to keep the data around until libcurl is done
  531. with it. That is now history and libcurl will instead clone the given
  532. strings and keep private copies. This is also part of Patrick Monnerat's
  533. OS/400 port.
  534. Due to this being a somewhat interesting change API wise, I've decided to
  535. bump the version of the upcoming release to 7.17.0. Older applications will
  536. of course not notice this change nor do they have to care, but new
  537. applications can be written to take advantage of this.
  538. - Greg Morse reported a problem with POSTing using ANYAUTH to a server
  539. requiring NTLM, and he provided test code and a test server and we worked
  540. out a bug fix. We failed to count sent body data at times, which then caused
  541. internal confusions when libcurl tried to send the rest of the data in order
  542. to maintain the same connection alive.
  543. Daniel S (31 July 2007)
  544. - Peter O'Gorman pointed out (and fixed) that the non-blocking check in
  545. configure made libcurl use blocking sockets on AIX 4 and 5, while that
  546. wasn't the intention.
  547. Daniel S (29 July 2007)
  548. - Jayesh A Shah filed bug report #1759542
  549. (http://curl.haxx.se/bug/view.cgi?id=1759542) identifying a rather serious
  550. problem with FTPS: libcurl closed the data connection socket and then later
  551. in the flow it would call the SSL layer to do SSL shutdown which then would
  552. use a socket that had already been closed - so if the application had opened
  553. a new one in the mean time, libcurl could send gibberish that way! I worked
  554. with Greg Zavertnik to properly diagnose and fix this. The fix affects code
  555. for all SSL libraries we support, but it has only been truly verified to
  556. work fine for the OpenSSL version. The others have only been code reviewed.
  557. Daniel S (23 July 2007)
  558. - Implemented the parts of Patrick Monnerat's OS/400 patch that introduces
  559. support for the OS/400 Secure Sockets Layer library.
  560. Dan F (23 July 2007)
  561. - Implemented only the parts of Patrick Monnerat's OS/400 patch that renamed
  562. some few internal identifiers to avoid conflicts, which could be useful on
  563. other platforms.
  564. Daniel S (22 July 2007)
  565. - HTTP Digest bug fix by Chris Flerackers:
  566. Scenario
  567. - Perfoming a POST request with body
  568. - With authentication (only Digest)
  569. - Re-using a connection
  570. libcurl would send a HTTP POST with an Authorization header but without
  571. body. Our server would return 400 Bad Request in that case (because
  572. authentication passed, but the body was empty).
  573. Cause
  574. 1) http_digest.c -> Curl_output_digest
  575. - Updates allocptr.userpwd/allocptr.proxyuserpwd *only* if d->nonce is
  576. filled in (and no errors)
  577. - authp->done = TRUE if d->nonce is filled in
  578. 2) http.c -> Curl_http
  579. - *Always* uses allocptr.userpwd/allocptr.proxyuserpwd if not NULL
  580. 3) http.c -> Curl_http, Curl_http_output_auth
  581. So what happens is that Curl_output_digest cannot yet update the
  582. Authorization header (allocptr.userpwd) which results in authhost->done=0 ->
  583. authhost->multi=1 -> conn->bits.authneg = TRUE. The body is not
  584. added. *However*, allocptr.userpwd is still used when building the request
  585. - Added test case 354 that makes a simple FTP retrieval without password, which
  586. verifies the bug fix in #1757328.
  587. Daniel S (21 July 2007)
  588. - To allow more flexibility in FTP test cases, I've removed the enforced states
  589. from the test server code as they served no real purpose. The test server
  590. is here to serve for the test cases, not to attempt to function as a real
  591. server! While at it, I modified test case 141 to better test and verify
  592. curl -I on a single FTP file.
  593. Daniel S (20 July 2007)
  594. - James Housley fixed the SFTP PWD command to work.
  595. - Ralf S. Engelschall filed bug report #1757328
  596. (http://curl.haxx.se/bug/view.cgi?id=1757328) and submitted a patch. It
  597. turns out we broke login to FTP servers that don't require (nor understand)
  598. PASS after the USER command. The breakage was done as part of the krb5
  599. commit so a krb-using person needs to verify that the current version now
  600. works or if we need to fix it (in a different way of course).
  601. Dan F (17 July 2007)
  602. - Fixed test cases 613 and 614 by improving the log postprocessor to handle
  603. a new directory listing format that newer libssh2's can provide. This
  604. is probably NOT sufficient to handle all directory listing formats that
  605. server's can provide, and should be revisited.
  606. Daniel S (17 July 2007)
  607. - Daniel Johnson fixed a bug in how libssh2_session_last_error() was used, in
  608. two places.
  609. - Jofell Gallardo posted a libcurl log using FTP that exposed a bug which made
  610. a control connection that was deemed "dead" to yet be re-used in a following
  611. request.
  612. Daniel S (13 July 2007)
  613. - Colin Hogben filed bug report #1750274
  614. (http://curl.haxx.se/bug/view.cgi?id=1750274) and submitted a patch for the
  615. case where libcurl did a connect attempt to a non-listening port and didn't
  616. provide a human readable error string back.
  617. - Daniel Cater fixes:
  618. 1 - made 'make vc8' work on windows.
  619. 2 - made libcurl itself built with CURL_NO_OLDIES defined (which doesn't
  620. define the symbols for backwards source compatibility)
  621. 3 - updated libcurl-errors.3
  622. 4 - added CURL_DISABLE_TFTP to docs/INSTALL
  623. Daniel S (12 July 2007)
  624. - Made the krb5 code build with Heimdal's GSSAPI lib.
  625. Dan F (12 July 2007)
  626. - Compile most of the example apps in docs/examples when doing a 'make check'.
  627. Fixed some compile warnings and errors in those examples.
  628. - Removed the example program ftp3rdparty.c since libcurl doesn't support
  629. 3rd party FTP transfers any longer.
  630. Daniel S (12 July 2007)
  631. - Shmulik Regev found an (albeit rare) case where the proxy CONNECT operation
  632. could in fact get stuck in an endless loop.
  633. - Made CURLOPT_SSL_VERIFYHOST set to 1 acts as described in the documentation:
  634. fail to connect if there is no Common Name field found in the remote cert.
  635. We should deprecate the support for this set to 1 anyway soon, since the
  636. feature is pointless and most likely never really used by anyone.
  637. Daniel S (11 July 2007)
  638. - Shmulik Regev fixed a bug with transfer-encoding skipping during the 407
  639. error pages for proxy authentication.
  640. - Giancarlo Formicuccia reported and fixed a problem with a closed connection
  641. to a proxy during CONNECT auth negotiation.
  642. Dan F (10 July 2007)
  643. - Fixed a curl memory leak reported by Song Ma with a modified version
  644. of the patch he suggested. Added his test case as test289 to verify.
  645. - Force the time zone to GMT in the cookie tests in case the user is
  646. using one of the so-called 'right' time zones that take into account
  647. leap seconds, which causes the tests to fail (as reported by
  648. Daniel Black in bug report #1745964).
  649. Version 7.16.4 (10 July 2007)
  650. Daniel S (10 July 2007)
  651. - Kees Cook notified us about a security flaw
  652. (http://curl.haxx.se/docs/adv_20070710.html) in which libcurl failed to
  653. properly reject some outdated or not yet valid server certificates when
  654. built with GnuTLS. Kees also provided the patch.
  655. James H (5 July 2007)
  656. - Gavrie Philipson provided a patch that will use a more specific error
  657. message for an scp:// upload failure. If libssh2 has his matching
  658. patch, then the error message return by the server will be used instead
  659. of a more generic error.
  660. Daniel S (1 July 2007)
  661. - Thomas J. Moore provided a patch that introduces Kerberos5 support in
  662. libcurl. This also makes the options change name to --krb (from --krb4) and
  663. CURLOPT_KRBLEVEL (from CURLOPT_KRB4LEVEL) but the old names are still
  664. - Song Ma helped me verify and extend a fix for doing FTP over a SOCKS4/5
  665. proxy.
  666. Daniel S (27 June 2007)
  667. - James Housley: Add two new options for the SFTP/SCP/FILE protocols:
  668. CURLOPT_NEW_FILE_PERMS and CURLOPT_NEW_DIRECTORY_PERMS. These control the
  669. premissions for files and directories created on the remote
  670. server. CURLOPT_NEW_FILE_PERMS defaults to 0644 and
  671. CURLOPT_NEW_DIRECTORY_PERMS defaults to 0755
  672. - I corrected the 10-at-a-time.c example and applied a patch for it by James
  673. Bursa.
  674. Daniel S (26 June 2007)
  675. - Robert Iakobashvili re-arranged the internal hash code to work with a custom
  676. hash function for different hashes, and also expanded the default size for
  677. the socket hash table used in multi handles to greatly enhance speed when
  678. very many connections are added and the socket API is used.
  679. - James Housley made the CURLOPT_FTPLISTONLY mode work for SFTP directory
  680. listings as well
  681. Daniel S (25 June 2007)
  682. - Adjusted how libcurl treats HTTP 1.1 responses without content-lenth or
  683. chunked encoding (that also lacks "Connection: close"). It now simply
  684. assumes that the connection WILL be closed to signal the end, as that is how
  685. RFC2616 section 4.4 point #5 says we should behave.
  686. Version 7.16.3 (25 June 2007)
  687. Daniel S (23 June 2007)
  688. - As reported by "Tro" in http://curl.haxx.se/mail/lib-2007-06/0161.html and
  689. http://curl.haxx.se/mail/lib-2007-06/0238.html, libcurl didn't properly do
  690. no-body requests on FTP files on re-used connections properly, or at least
  691. it didn't provide the info back in the header callback properly in the
  692. subsequent requests.
  693. Daniel S (21 June 2007)
  694. - Gerrit Bruchhäuser pointed out a warning that the Intel(R) Thread Checker
  695. tool reports and it was indeed a legitimate one and it is one fixed. It was
  696. a use of a share without doing the proper locking first.
  697. Daniel S (20 June 2007)
  698. - Adam Piggott filed bug report #1740263
  699. (http://curl.haxx.se/bug/view.cgi?id=1740263). Adam discovered that when
  700. getting a large amount of URLs with curl, they were fetched slower and
  701. slower... which turned out to be because the --libcurl data collecting which
  702. wrongly always was enabled, but no longer is...
  703. Daniel S (18 June 2007)
  704. - Robson Braga Araujo filed bug report #1739100
  705. (http://curl.haxx.se/bug/view.cgi?id=1739100) that mentioned that libcurl
  706. could not actually list the contents of the root directory of a given FTP
  707. server if the login directory isn't root. I fixed the problem and added
  708. three test cases (one is disabled for now since I identified KNOWN_BUGS #44,
  709. we cannot use --ftp-method nocwd and list ftp directories).
  710. Daniel S (14 June 2007)
  711. - Shmulik Regev:
  712. I've encountered (and hopefully fixed) a problem involving proxy CONNECT
  713. requests and easy handles state management. The problem isn't simple to
  714. reproduce since it depends on socket state. It only manifests itself when
  715. working with non-blocking sockets.
  716. Here is the scenario:
  717. 1. in multi_runsingle the easy handle is in the CURLM_STATE_WAITCONNECT and
  718. calls Curl_protocol_connect
  719. 2. in Curl_proxyCONNECT, line 1247, if the socket isn't ready the function
  720. returns and conn->bits.tunnel_connecting is TRUE
  721. 3. when the call to Curl_protocol_connect returns the protocol_connect flag
  722. is false and the easy state is changed to CURLM_STATE_PROTOCONNECT which
  723. isn't correct if a proxy is used. Rather CURLM_STATE_WAITPROXYCONNECT
  724. should be used.
  725. I discovered this while performing an HTTPS request through a proxy (squid)
  726. on my local network. The problem caused openssl to fail as it read the proxy
  727. response to the CONNECT call ('HTTP/1.0 Established') rather than the SSL
  728. handshake (the exact openssl error was 'wrong ssl version' but this isn't
  729. very important)
  730. - Dave Vasilevsky filed bug report #1736875
  731. (http://curl.haxx.se/bug/view.cgi?id=1736875) almost simultanouesly as Dan
  732. Fandrich mentioned a related build problem on the libcurl mailing list:
  733. http://curl.haxx.se/mail/lib-2007-06/0131.html. Both problems had the same
  734. reason: the definitions of the POLL* defines and the pollfd struct in the
  735. libcurl code was depending on HAVE_POLL instead of HAVE_SYS_POLL_H.
  736. Daniel S (13 June 2007)
  737. - Tom Regner provided a patch and worked together with James Housley, so now
  738. CURLOPT_FTP_CREATE_MISSING_DIRS works for SFTP connections as well as FTP
  739. ones.
  740. - Rich Rauenzahn filed bug report #1733119
  741. (http://curl.haxx.se/bug/view.cgi?id=1733119) and we collaborated on the
  742. fix. The problem is that for 64bit HPUX builds, several socket-related
  743. functions would still assume int (32 bit) arguments and not socklen_t (64
  744. bit) ones.
  745. Daniel S (12 June 2007)
  746. - James Housley brought his revamped SSH code that is state-machine driven to
  747. really take advantage of the now totally non-blocking libssh2 (in CVS).
  748. Dan F (8 June 2007)
  749. - Incorporated Daniel Black's test706 and test707 SOCKS test cases.
  750. - Fixed a few problems when starting the SOCKS server.
  751. - Reverted some recent changes to runtests.pl that weren't compatible with
  752. perl 5.0.
  753. - Fixed the test harness so that it actually kills the ssh being used as
  754. the SOCKS server.
  755. Daniel S (6 June 2007)
  756. - -s/--silent can now be used to toggle off the silence again if used a second
  757. time.
  758. Daniel S (5 June 2007)
  759. - Added Daniel Black's work that adds the first few SOCKS test cases. I also
  760. fixed two minor SOCKS problems to make the test cases run fine.
  761. Daniel S (31 May 2007)
  762. - Feng Tu made (lib)curl support "upload" resuming work for file:// URLs.
  763. Daniel S (30 May 2007)
  764. - I modified the 10-at-a-time.c example to transfer 500 downloads in parallel
  765. with a c-ares enabled build only to find that it crashed miserably, and this
  766. was due to some select()isms left in the code. This was due to API
  767. restrictions in c-ares 1.3.x, but with the upcoming c-ares 1.4.0 this is no
  768. longer the case so now libcurl runs much better with c-ares and the multi
  769. interface with > 1024 file descriptors in use.
  770. Extra note: starting now we require c-ares 1.4.0 for asynchronous name
  771. resolves.
  772. - Added CURLMOPT_MAXCONNECTS which is a curl_multi_setopt() option for setting
  773. the maximum size of the connection cache maximum size of the multi handle.
  774. Daniel S (27 May 2007)
  775. - When working with a problem Stefan Becker had, I found an off-by-one buffer
  776. overwrite in Curl_select(). While fixing it, I also improved its performance
  777. somewhat by changing calloc to malloc and breaking out of a loop earlier
  778. (when possible).
  779. Daniel S (25 May 2007)
  780. - Rob Crittenden fixed bug #1705802
  781. (http://curl.haxx.se/bug/view.cgi?id=1705802), which was filed by Daniel
  782. Black identifying several FTP-SSL test cases fail when we build libcurl with
  783. NSS for TLS/SSL. Listed as #42 in KNOWN_BUGS.
  784. Daniel S (24 May 2007)
  785. - Song Ma filed bug report #1724016
  786. (http://curl.haxx.se/bug/view.cgi?id=1724016) noticing that downloading
  787. glob-ranges for TFTP was broken in CVS. Fixed now.
  788. - 'mytx' in bug report #1723194 (http://curl.haxx.se/bug/view.cgi?id=1723194)
  789. pointed out that the warnf() function in the curl tool didn't properly deal
  790. with the cases when excessively long words were used in the string to chop
  791. up.
  792. Daniel S (22 May 2007)
  793. - Andre Guibert de Bruet fixed a memory leak in the function that verifies the
  794. peer's name in the SSL certificate when built for OpenSSL. The leak happens
  795. for libcurls with CURL_DOES_CONVERSIONS enabled that fail to convert the CN
  796. name from UTF8. He also fixed a leak when PKCS #12 parsing failed.
  797. Daniel S (18 May 2007)
  798. - Feng Tu reported that curl -w did wrong on TFTP transfers in bug report
  799. #1715394 (http://curl.haxx.se/bug/view.cgi?id=1715394), and the
  800. transfer-related info "variables" were indeed overwritten with zeroes
  801. wrongly and have now been adjusted. The upload size still isn't accurate.
  802. Daniel S (17 May 2007)
  803. - Feng Tu pointed out a division by zero error in the TFTP connect timeout
  804. code for timeouts less than five seconds, and also provided a fix for it.
  805. Bug report #1715392 (http://curl.haxx.se/bug/view.cgi?id=1715392)
  806. Dan F (16 May 2007)
  807. - Added support for compiling under Minix 3.1.3 using ACK.
  808. Dan F (14 May 2007)
  809. - Added SFTP directory listing test case 613.
  810. - Added support for quote commands before a transfer using SFTP and test
  811. case 614.
  812. - Changed the post-quote commands to occur after the transferred file is
  813. closed.
  814. - Allow SFTP quote commands chmod, chown, chgrp to set a value of 0.
  815. Dan F (9 May 2007)
  816. - Kristian Gunstone fixed a problem where overwriting an uploaded file with
  817. sftp didn't truncate it first, which would corrupt the file if the new
  818. file was shorter than the old.
  819. Dan F (8 May 2007)
  820. - Added FTPS test cases 406 and 407
  821. Daniel S (8 May 2007)
  822. - CURLE_FTP_COULDNT_STOR_FILE is now known as CURLE_UPLOAD_FAILED. This is
  823. because I just made SCP uploads return this value if the file size of
  824. the upload file isn't given with CURLOPT_INFILESIZE*. Docs updated to
  825. reflect this news, and a define for the old name was added to the public
  826. header file.
  827. Daniel S (7 May 2007)
  828. - James Bursa fixed a bug in the multi handle code that made the connection
  829. cache grow a bit too much, beyond the normal 4 * easy_handles.
  830. Daniel S (2 May 2007)
  831. - Anders Gustafsson remarked that requiring CURLOPT_HTTP_VERSION set to 1.0
  832. when CURLOPT_HTTP200ALIASES is used to avoid the problem mentioned below is
  833. not very nice if the client wants to be able to use _either_ a HTTP 1.1
  834. server or one within the aliases list... so starting now, libcurl will
  835. simply consider 200-alias matches the to be HTTP 1.0 compliant.
  836. - Tobias Rundström reported a problem they experienced with xmms2 and recent
  837. libcurls, which turned out to be the 25-nov-2006 change which treats HTTP
  838. responses without Content-Length or chunked encoding as without bodies. We
  839. now added the conditional that the above mentioned response is only without
  840. body if the response is HTTP 1.1.
  841. - Jeff Pohlmeyer improved the hiperfifo.c example to use the
  842. CURLMOPT_TIMERFUNCTION callback option.
  843. - Set the timeout for easy handles to expire really soon after addition or
  844. when CURLM_CALL_MULTI_PERFORM is returned from curl_multi_socket*/perform,
  845. to make applications using only curl_multi_socket() to properly function
  846. when adding easy handles "on the fly". Bug report and test app provided by
  847. Michael Wallner.
  848. Dan F (30 April 2007)
  849. - Improved the test harness to allow running test servers on other than
  850. the default port numbers, allowing more than one test suite to run
  851. simultaneously on the same host.
  852. Daniel S (28 April 2007)
  853. - Peter O'Gorman fixed libcurl to not init GnuTLS as early as we did before,
  854. since it then inits libgcrypt and libgcrypt is being evil and EXITS the
  855. application if it fails to get a fine random seed. That's really not a nice
  856. thing to do by a library.
  857. - Frank Hempel fixed a curl_easy_duphandle() crash on a handle that had
  858. been removed from a multi handle, and then fixed another flaw that prevented
  859. curl_easy_duphandle() to work even after the first fix - the handle was
  860. still marked as using the multi interface.
  861. Daniel S (26 April 2007)
  862. - Peter O'Gorman found a problem with SCP downloads when the downloaded file
  863. was 16385 bytes (16K+1) and it turned out we didn't properly always "suck
  864. out" all data from libssh2. The effect being that libcurl would hang on the
  865. socket waiting for data when libssh2 had in fact already read it all...
  866. Dan F (25 April 2007)
  867. - Added support in runtests.pl for "!n" test numbers to disable individual
  868. tests. Changed -t to only keep log files around when -k is specified,
  869. to have the same behaviour as without -t.
  870. Daniel S (25 April 2007)
  871. - Sonia Subramanian brought our attention to a problem that happens if you set
  872. the CURLOPT_RESUME_FROM or CURLOPT_RANGE options and an existing connection
  873. in the connection cache is closed to make room for the new one when you call
  874. curl_easy_perform(). It would then wrongly free range-related data in the
  875. connection close funtion.
  876. Yang Tse (25 April 2007)
  877. - Steve Little fixed compilation on VMS 64-bit mode
  878. Daniel S (24 April 2007)
  879. - Robert Iakobashvili made the 'master_buffer' get allocated first once it is
  880. can/will be used as it then makes the common cases save 16KB of data for each
  881. easy handle that isn't used for pipelining.
  882. Dan F (23 April 2007)
  883. - Added <postcheck> support to the test harness.
  884. - Added tests 610-612 to test more SFTP post-quote commands.
  885. Daniel S (22 April 2007)
  886. - Song Ma's warning if -r/--range is given with a "bad" range, also noted in
  887. the man page now.
  888. - Daniel Black filed bug #1705177
  889. (http://curl.haxx.se/bug/view.cgi?id=1705177) where --without-ssl
  890. --with-gnutl outputs a warning about SSL not being enabled even though GnuTLS
  891. was found and used.
  892. Daniel S (21 April 2007)
  893. - Daniel Black filed bug #1704675
  894. (http://curl.haxx.se/bug/view.cgi?id=1704675) identifying a double-free
  895. problem in the SSL-dealing layer, telling GnuTLS to free NULL credentials on
  896. closedown after a failure and a bad #ifdef for NSS when closing down SSL.
  897. Yang Tse (20 April 2007)
  898. - Save one call to curlx_tvnow(), which calls gettimeofday(), in each of
  899. Curl_socket_ready(), Curl_poll() and Curl_select() when these are called
  900. with a zero timeout or a timeout value indicating a blocking call should
  901. be performed.
  902. Daniel S (18 April 2007)
  903. - James Housley made SFTP uploads use libssh2's non-blocking API
  904. - Prevent the internal progress meter from updating more frequently than once
  905. per second.
  906. Dan F (17 April 2007)
  907. - Added test cases 296, 297 and 298 to test --ftp-method handling
  908. Daniel S (16 April 2007)
  909. - Robert Iakobashvil added curl_multi_socket_action() to libcurl, which is a
  910. function that deprecates the curl_multi_socket() function. Using the new
  911. function the application tell libcurl what action that was found in the
  912. socket that it passes in. This gives a significant performance boost as it
  913. allows libcurl to avoid a call to poll()/select() for every call to
  914. curl_multi_socket*().
  915. I added a define in the public curl/multi.h header file that will make your
  916. existing application automatically use curl_multi_socket_action() instead of
  917. curl_multi_socket() when you recompile. But of course you'll get better
  918. performance if you adjust your code manually and actually pass in the
  919. correct action bitmask to this function.
  920. Daniel S (14 April 2007)
  921. - Jay Austin added "DH PARAMETERS" to the stunnel.pem certificate for the test
  922. suite to make stunnel run better in some (most?) environments.
  923. Dan F (13 April 2007)
  924. - Added test cases 294 and 295 to test --ftp-account handling
  925. - Improved handling of out of memory in ftp.
  926. Yang Tse (13 April 2007)
  927. - Fix test case 534 which started to fail 2007-04-13 due to the existance
  928. of a new host on the net with the same silly domain the test was using
  929. for a host which was supposed not to exist.
  930. Daniel S (12 April 2007)
  931. - Song Ma found a memory leak in the if2ip code if you pass in an interface
  932. name longer than the name field of the ifreq struct (typically 6 bytes), as
  933. then it wouldn't close the used dummy socket. Bug #1698974
  934. (http://curl.haxx.se/bug/view.cgi?id=1698974)
  935. Version 7.16.2 (11 April 2007)
  936. Yang Tse (10 April 2007)
  937. - Ravi Pratap provided some fixes for HTTP pipelining
  938. - configure script will ignore --enable-sspi option for non-native Windows.
  939. Daniel S (9 April 2007)
  940. - Nick Zitzmann did ssh.c cleanups
  941. Daniel S (3 April 2007)
  942. - Rob Jones fixed better #ifdef'ing for a bunch of #include lines.
  943. Daniel S (2 April 2007)
  944. - Nick Zitzmann made the CURLOPT_POSTQUOTE option work for SFTP as well. The
  945. accepted commands are as follows:
  946. chgrp (gid) (path)
  947. Changes the group ID of the file or directory at (path) to (gid). (gid)
  948. must be a number.
  949. chmod (perms) (path)
  950. Changes the permissions of the file or directory at (path) to
  951. (perms). (perms) must be a number in the format used by the chmod Unix
  952. command.
  953. chown (uid) (path)
  954. Changes the user ID of the file or directory at (path) to (uid). (uid)
  955. must be a number.
  956. ln (source) (dest)
  957. Creates a symbolic link at (dest) that points to the file located at
  958. (source).
  959. mkdir (path)
  960. Creates a new directory at (path).
  961. rename (source) (dest)
  962. Moves the file or directory at (source) to (dest).
  963. rm (path)
  964. Deletes the file located at (path).
  965. rmdir (path)
  966. Deletes the directory located at (path). This command will raise an error
  967. if the directory is not empty.
  968. symlink (source) (dest)
  969. Same as ln.
  970. Daniel S (1 April 2007)
  971. - Robert Iakobashvili made curl_multi_remove_handle() a lot faster when many
  972. easy handles are added to a multi handle, by avoiding the looping over all
  973. the handles to find which one to remove.
  974. - Matt Kraai provided a patch that makes curl build on QNX 6 fine again.
  975. Daniel S (31 March 2007)
  976. - Fixed several minor issues detected by the coverity.com scanner.
  977. - "Pixel" fixed a problem that appeared when you used -f with user+password
  978. embedded in the URL.
  979. Dan F (29 March 2007)
  980. - Don't tear down the ftp connection if the maximum filesize was exceeded
  981. and added tests 290 and 291 to check.
  982. - Added ftps upload and SSL required tests 401 and 402.
  983. - Send an EOF message before closing an SCP channel, as recommended by
  984. RFC4254. Enable libssh2 tracing when ssh debugging is turned on.
  985. Yang Tse (27 March 2007)
  986. - Internal function Curl_select() renamed to Curl_socket_ready()
  987. New Internal wrapper function Curl_select() around select (2), it
  988. uses poll() when a fine poll() is available, so now libcurl can be
  989. built without select() support at all if a fine poll() is available.
  990. Daniel S (25 March 2007)
  991. - Daniel Johnson fixed multi code to traverse the easy handle list properly.
  992. A left-over bug from the February 21 fix.
  993. Dan F (23 March 2007)
  994. - Added --pubkey option to curl and made --key also work for SCP/SFTP,
  995. plus made --pass work on an SSH private key as well.
  996. - Changed the test harness to attempt to gracefully shut down servers
  997. before resorting to the kill -9 hammer.
  998. - Added test harness infrastructure to support scp/sftp tests, using
  999. OpenSSH as the server.
  1000. - Fixed a memory leak when specifying a proxy with a file: URL.
  1001. Yang Tse (20 March 2007)
  1002. - Fixed: When a signal was caught awaiting for an event using Curl_select()
  1003. or Curl_poll() with a non-zero timeout both functions would restart the
  1004. specified timeout. This could even lead to the extreme case that if a
  1005. signal arrived with a frecuency lower to the specified timeout neither
  1006. function would ever exit.
  1007. Added experimental symbol definition check CURL_ACKNOWLEDGE_EINTR in
  1008. Curl_select() and Curl_poll(). When compiled with CURL_ACKNOWLEDGE_EINTR
  1009. defined both functions will return as soon as a signal is caught. Use it
  1010. at your own risk, all calls to these functions in the library should be
  1011. revisited and checked before fully supporting this feature.
  1012. Yang Tse (19 March 2007)
  1013. - Bryan Henderson fixed the progress function so that it can get called more
  1014. frequently allowing same calling frecuency for the client progress callback.
  1015. Dan F (15 March 2007)
  1016. - Various memory leaks plugged and NULL pointer fixes made in the ssh code.
  1017. Daniel (15 March 2007)
  1018. - Nick made the curl tool accept globbing ranges that only is one number, i.e
  1019. you can now use [1-1] without curl complaining.
  1020. Daniel (10 March 2007)
  1021. - Eygene Ryabinkin:
  1022. The problem is the following: when we're calling Curl_done and it decides to
  1023. keep the connection opened ('left intact'), then the caller is not notified
  1024. that the connection was done via the NULLifying of the pointer, so some easy
  1025. handle is keeping the pointer to this connection.
  1026. Later ConnectionExists can select such connection for reuse even if we're
  1027. not pipelining: pipeLen is zero, so the (pipeLen > 0 && !canPipeline) is
  1028. false and we can reuse this connection for another easy handle. But thus the
  1029. connection will be shared between two easy handles if the handle that wants
  1030. to take the ownership is not the same as was not notified of the connection
  1031. was done in Curl_done. And when some of these easy handles will get their
  1032. connection really freed the another one will still keep the pointer.
  1033. My fix was rather trivial: I just added the NULLification to the 'else'
  1034. branch in the Curl_done. My tests with Git and ElectricFence showed no
  1035. problems both for HTTP pulling and cloning. Repository size is about 250 Mb,
  1036. so it was a considerable amount of Curl's work.
  1037. Dan F (9 March 2007)
  1038. - Updated the test harness to add a new "crypto" feature check and updated the
  1039. appropriate test case to use it. For now, this is treated the same as the
  1040. "SSL" feature because curl doesn't list it separately.
  1041. Daniel (9 March 2007)
  1042. - Robert Iakobashvili fixed CURLOPT_INTERFACE for IPv6.
  1043. - Robert A. Monat improved the maketgz and VC6/8 generating to set the correct
  1044. machine type too.
  1045. - Justin Fletcher fixed a file descriptor leak in the curl tool when trying to
  1046. upload a file it couldn't open. Bug #1676581
  1047. (http://curl.haxx.se/bug/view.cgi?id=1676581)
  1048. Dan F (9 March 2007)
  1049. - Updated the test harness to check for protocol support before running each
  1050. test, fixing KNOWN_BUGS #11.
  1051. Dan F (7 March 2007)
  1052. - Reintroduced (after a 3 year hiatus) an FTPS test case (400) into the test
  1053. harness. It is very limited as it supports only ftps:// URLs with
  1054. --ftp-ssl-control specified, which implicitly encrypts the control
  1055. channel but not the data channels. That allows stunnel to be used with
  1056. an unmodified ftp server in exactly the same way that the test https
  1057. server is set up.
  1058. Dan F (7 March 2007)
  1059. - Honour --ftp-ssl-control on ftps:// URLs to allow encrypted control and
  1060. unencrypted data connections.
  1061. Dan F (6 March 2007)
  1062. - Fixed a couple of improper pointer uses detected by valgrind in test
  1063. cases 181 & 216.
  1064. Daniel (2 March 2007)
  1065. - Robert A. Monat and Shmulik Regev helped out to fix the new */Makefile.vc8
  1066. makefiles that are included in the source release archives, generated from
  1067. the Makefile.vc6 files by the maketgz script. I also modified the root
  1068. Makefile to have a VC variable that defaults to vc6 but can be overridden to
  1069. allow it to be used for vc8 as well. Like this:
  1070. nmake VC=vc8 vc
  1071. Daniel (27 February 2007)
  1072. - Hang Kin Lau found and fixed: When I use libcurl to connect to an https
  1073. server through a proxy and have the remote https server port set using the
  1074. CURLOPT_PORT option, protocol gets reset to http from https after the first
  1075. request.
  1076. User defined URL was modified internally by libcurl and subsequent reuse of
  1077. the easy handle may lead to connection using a different protocol (if not
  1078. originally http).
  1079. I found that libcurl hardcoded the protocol to "http" when it tries to
  1080. regenerate the URL if CURLOPT_PORT is set. I tried to fix the problem as
  1081. follows and it's working fine so far
  1082. Daniel (25 February 2007)
  1083. - Adam D. Moss made the HTTP CONNECT procedure less blocking when used from
  1084. the multi interface. Note that it still does a part of the connection in a
  1085. blocking manner.
  1086. Daniel (23 February 2007)
  1087. - Added warning outputs if the command line uses more than one of the options
  1088. -v, --trace and --trace-ascii, since it could really confuse the user.
  1089. Clarified this fact in the man page.
  1090. Daniel (21 February 2007)
  1091. - Ravi Pratap provided work on libcurl making pipelining more robust and
  1092. fixing some bugs:
  1093. o Don't mix GET and POST requests in a pipeline
  1094. o Fix the order in which requests are dispatched from the pipeline
  1095. o Fixed several curl bugs with pipelining when the server is returning
  1096. chunked encoding:
  1097. * Added states to chunked parsing for final CRLF
  1098. * Rewind buffer after parsing chunk with data remaining
  1099. * Moved chunked header initializing to a spot just before receiving
  1100. headers
  1101. Daniel (20 February 2007)
  1102. - Linus Nielsen Feltzing changed the CURLOPT_FTP_SSL_CCC option to handle
  1103. active and passive CCC shutdown and added the --ftp-ssl-ccc-mode command
  1104. line option.
  1105. Daniel (19 February 2007)
  1106. - Ian Turner fixed the libcurl.m4 macro's support for --with-libcurl.
  1107. - Shmulik Regev found a memory leak in re-used HTTPS connections, at least
  1108. when the multi interface was used.
  1109. - Robson Braga Araujo made passive FTP transfers work with SOCKS (both 4 and
  1110. 5).
  1111. Daniel (18 February 2007)
  1112. - Jeff Pohlmeyer identified two problems: first a rather obscure problem with
  1113. the multi interface and connection re-use that could make a
  1114. curl_multi_remove_handle() ruin a pointer in another handle.
  1115. The second problem was less of an actual problem but more of minor quirk:
  1116. the re-using of connections wasn't properly checking if the connection was
  1117. marked for closure.
  1118. Daniel (16 February 2007)
  1119. - Duncan Mac-Vicar Prett and Michal Marek reported problems with resetting
  1120. CURLOPT_RANGE back to no range on an easy handle when using FTP.
  1121. Dan F (14 February 2007)
  1122. - Fixed curl-config --libs so it doesn't list unnecessary libraries (and
  1123. therefore introduce unnecessary dependencies) when it's not needed.
  1124. Also, don't bother adding a library path of /usr/lib
  1125. Daniel (13 February 2007)
  1126. - The default password for anonymous FTP connections is now changed to be
  1127. "ftp@example.com".
  1128. - Robert A. Monat made libcurl build fine with VC2005 - it doesn't have
  1129. gmtime_r() like the older VC versions. He also made use of some machine-
  1130. specific defines to differentiate the "OS" define.
  1131. Daniel (12 February 2007)
  1132. - Rob Crittenden added support for NSS (Network Security Service) for the
  1133. SSL/TLS layer. http://www.mozilla.org/projects/security/pki/nss/
  1134. This is the fourth supported library for TLS/SSL that libcurl supports!
  1135. - Shmulik Regev fixed so that the final CRLF of HTTP response headers are sent
  1136. to the debug callback.
  1137. - Shmulik Regev added CURLOPT_HTTP_CONTENT_DECODING and
  1138. CURLOPT_HTTP_TRANSFER_DECODING that if set to zero will disable libcurl's
  1139. internal decoding of content or transfer encoded content. This may be
  1140. preferable in cases where you use libcurl for proxy purposes or similar. The
  1141. command line tool got a --raw option to disable both at once.
  1142. - release tarballs made with maketgz will from now on have a LIBCURL_TIMESTAMP
  1143. define set to hold the exact date and time of when the tarball was built, as
  1144. a human readable string using the UTC time zone.
  1145. - Jeff Pohlmeyer fixed a flaw in curl_multi_add_handle() when adding a handle
  1146. that has an easy handle present in the "closure" list pending closure.
  1147. Daniel (6 February 2007)
  1148. - Regular file downloads wiht SFTP and SCP are now done using the non-blocking
  1149. API of libssh2, if the libssh2 headers seem to support them. This will make
  1150. SCP and SFTP much more responsive and better libcurl citizens when used with
  1151. the multi interface etc.
  1152. Daniel (5 February 2007)
  1153. - Michael Wallner added support for CURLOPT_TIMEOUT_MS and
  1154. CURLOPT_CONNECTTIMEOUT_MS that, as their names suggest, do the timeouts with
  1155. millisecond resolution. The only restriction to that is the alarm()
  1156. (sometimes) used to abort name resolves as that uses full seconds. I fixed
  1157. the FTP response timeout part of the patch.
  1158. Internally we now count and keep the timeouts in milliseconds but it also
  1159. means we multiply set timeouts with 1000. The effect of this is that no
  1160. timeout can be set to more than 2^31 milliseconds (on 32 bit systems), which
  1161. equals 24.86 days. We probably couldn't before either since the code did
  1162. *1000 on the timeout values on several places already.
  1163. Daniel (3 February 2007)
  1164. - Yang Tse fixed the cookie expiry date in several test cases that started to
  1165. fail since they used "1 feb 2007"...
  1166. - Manfred Schwarb reported that socks5 support was broken and help us pinpoint
  1167. the problem. The code now tries harder to use httproxy and proxy where
  1168. apppropriate, as not all proxies are HTTP...
  1169. Version 7.16.1 (29 January 2007)
  1170. Daniel (29 January 2007)
  1171. - Michael Wallner reported that when doing a CONNECT with a custom User-Agent
  1172. header, you got _two_ User-Agent headers in the CONNECT request...! Added
  1173. test case 287 to verify the fix.
  1174. Daniel (28 January 2007)
  1175. - curl_easy_reset() now resets the CA bundle path correctly.
  1176. - David McCreedy fixed the Curl command line tool for HTTP on non-ASCII
  1177. platforms.
  1178. Daniel (25 January 2007)
  1179. - Added the --libcurl [file] option to curl. Append this option to any
  1180. ordinary curl command line, and you will get a libcurl-using source code
  1181. written to the file that does the equivalent operation of what your command
  1182. line operation does!
  1183. Dan F (24 January 2007)
  1184. - Fixed a dangling pointer problem that prevented the http_proxy environment
  1185. variable from being properly used in many cases (and caused test case 63
  1186. to fail).
  1187. Daniel (23 January 2007)
  1188. - David McCreedy did NTLM changes mainly for non-ASCII platforms:
  1189. #1
  1190. There's a compilation error in http_ntlm.c if USE_NTLM2SESSION is NOT
  1191. defined. I noticed this while testing various configurations. Line 867 of
  1192. the current http_ntlm.c is a closing bracket for an if/else pair that only
  1193. gets compiled in if USE_NTLM2SESSION is defined. But this closing bracket
  1194. wasn't in an #ifdef so the code fails to compile unless USE_NTLM2SESSION was
  1195. defined. Lines 198 and 140 of my patch wraps that closing bracket in an
  1196. #ifdef USE_NTLM2SESSION.
  1197. #2
  1198. I noticed several picky compiler warnings when DEBUG_ME is defined. I've
  1199. fixed them with casting. By the way, DEBUG_ME was a huge help in
  1200. understanding this code.
  1201. #3
  1202. Hopefully the last non-ASCII conversion patch for libcurl in a while. I
  1203. changed the "NTLMSSP" literal to hex since this signature must always be in
  1204. ASCII.
  1205. Conversion code was strategically added where necessary. And the
  1206. Curl_base64_encode calls were changed so the binary "blobs" http_ntlm.c
  1207. creates are NOT translated on non-ASCII platforms.
  1208. Dan F (22 January 2007)
  1209. - Converted (most of) the test data files into genuine XML. A handful still
  1210. are not, due mainly to the lack of support for XML character entities
  1211. (e.g. & => &amp; ). This will make it easier to validate test files using
  1212. tools like xmllint, as well as to edit and view them using XML tools.
  1213. Daniel (16 January 2007)
  1214. - Armel Asselin improved libcurl to behave a lot better when an easy handle
  1215. doing an FTP transfer is removed from a multi handle before completion. The
  1216. fix also fixed the "alive counter" to be correct on "premature removal" for
  1217. all protocols.
  1218. Dan F (16 January 2007)
  1219. - Fixed a small memory leak in tftp uploads discovered by curl's memory leak
  1220. detector. Also changed tftp downloads to URL-unescape the downloaded
  1221. file name.
  1222. Daniel (14 January 2007)
  1223. - David McCreedy provided libcurl changes for doing HTTP communication on
  1224. non-ASCII platforms. It does add some complexity, most notably with more
  1225. #ifdefs, but I want to see this supported added and I can't see how we can
  1226. add it without the extra stuff added.
  1227. - Setting CURLOPT_COOKIELIST to "ALL" when no cookies at all was present,
  1228. libcurl would crash when trying to read a NULL pointer.
  1229. Daniel (12 January 2007)
  1230. - Toby Peterson found a nasty bug that prevented (lib)curl from properly
  1231. downloading (most) things that were larger than 4GB on 32 bit systems. Matt
  1232. Witherspoon helped as narrow down the problem.
  1233. Daniel (5 January 2007)
  1234. - Linus Nielsen Feltzing introduced the --ftp-ssl-ccc command line option to
  1235. curl that uses the new CURLOPT_FTP_SSL_CCC option in libcurl. If enabled, it
  1236. will make libcurl shutdown SSL/TLS after the authentication is done on a
  1237. FTP-SSL operation.
  1238. Daniel (4 January 2007)
  1239. - David McCreedy made changes to allow base64 encoding/decoding to work on
  1240. non-ASCII platforms.
  1241. Daniel (3 January 2007)
  1242. - Matt Witherspoon fixed the flaw which made libcurl 7.16.0 always store
  1243. downloaded data in two buffers, just to be able to deal with a special HTTP
  1244. pipelining case. That is now only activated for pipelined transfers. In
  1245. Matt's case, it showed as a considerable performance difference,
  1246. Daniel (2 January 2007)
  1247. - Victor Snezhko helped us fix bug report #1603712
  1248. (http://curl.haxx.se/bug/view.cgi?id=1603712) (known bug #36) --limit-rate
  1249. (CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_RECV_SPEED_LARGE) are broken
  1250. on Windows (since 7.16.0, but that's when they were introduced as previous
  1251. to that the limiting logic was made in the application only and not in the
  1252. library). It was actually also broken on select()-based systems (as apposed
  1253. to poll()) but we haven't had any such reports. We now use select(), Sleep()
  1254. or delay() properly to sleep a while without waiting for anything input or
  1255. output when the rate limiting is activated with the easy interface.
  1256. - Modified libcurl.pc.in to use Libs.private for the libs libcurl itself needs
  1257. to get built static. It has been mentioned before and was again brought to
  1258. our attention by Nathanael Nerode who filed debian bug report #405226
  1259. (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=405226).
  1260. Daniel (29 December 2006)
  1261. - Make curl_easy_duphandle() set the magic number in the new handle.
  1262. Daniel (22 December 2006)
  1263. - Robert Foreman provided a prime example snippet showing how libcurl would
  1264. get confused and not acknowledge the 'no_proxy' variable properly once it
  1265. had used the proxy and you re-used the same easy handle. I made sure the
  1266. proxy name is properly stored in the connect struct rather than the
  1267. sessionhandle/easy struct.
  1268. - David McCreedy fixed a bad call to getsockname() that wrongly used a size_t
  1269. variable to point to when it should be a socklen_t.
  1270. - When setting a proxy with environment variables and (for example) running
  1271. 'curl [URL]' with a URL without a protocol prefix, curl would not send a
  1272. correct request as it failed to add the protocol prefix.
  1273. Daniel (21 December 2006)
  1274. - Robson Braga Araujo reported bug #1618359
  1275. (http://curl.haxx.se/bug/view.cgi?id=1618359) and subsequently provided a
  1276. patch for it: when downloading 2 zero byte files in a row, curl 7.16.0
  1277. enters an infinite loop, while curl 7.16.1-20061218 does one additional
  1278. unnecessary request.
  1279. Fix: During the "Major overhaul introducing http pipelining support and
  1280. shared connection cache within the multi handle." change, headerbytecount
  1281. was moved to live in the Curl_transfer_keeper structure. But that structure
  1282. is reset in the Transfer method, losing the information that we had about
  1283. the header size. This patch moves it back to the connectdata struct.
  1284. Daniel (16 December 2006)
  1285. - Brendan Jurd provided a fix that now prevents libcurl from getting a SIGPIPE
  1286. during certain conditions when GnuTLS is used.
  1287. Daniel (11 December 2006)
  1288. - Alexey Simak found out that when doing FTP with the multi interface and
  1289. something went wrong like it got a bad response code back from the server,
  1290. libcurl would leak memory. Added test case 538 to verify the fix.
  1291. I also noted that the connection would get cached in that case, which
  1292. doesn't make sense since it cannot be re-use when the authentication has
  1293. failed. I fixed that issue too at the same time, and also that the path
  1294. would be "remembered" in vain for cases where the connection was about to
  1295. get closed.
  1296. Daniel (6 December 2006)
  1297. - Sebastien Willemijns reported bug #1603712
  1298. (http://curl.haxx.se/bug/view.cgi?id=1603712) which is about connections
  1299. getting cut off prematurely when --limit-rate is used. While I found no such
  1300. problems in my tests nor in my reading of the code, I found that the
  1301. --limit-rate code was severly flawed (since it was moved into the lib, since
  1302. 7.15.5) when used with the easy interface and it didn't work as documented
  1303. so I reworked it somewhat and now it works for my tests.
  1304. Daniel (5 December 2006)
  1305. - Stefan Krause pointed out a compiler warning with a picky MSCV compiler when
  1306. passing a curl_off_t argument to the Curl_read_rewind() function which takes
  1307. an size_t argument. Curl_read_rewind() also had debug code left in it and it
  1308. was put in a different source file with no good reason when only used from
  1309. one single spot.
  1310. - Sh Diao reported that CURLOPT_CLOSEPOLICY doesn't work, and indeed, there is
  1311. no code present in the library that receives the option. Since it was not
  1312. possible to use, we know that no current users exist and thus we simply
  1313. removed it from the docs and made the code always use the default path of
  1314. the code.
  1315. - Jared Lundell filed bug report #1604956
  1316. (http://curl.haxx.se/bug/view.cgi?id=1604956) which identified setting
  1317. CURLOPT_MAXCONNECTS to zero caused libcurl to SIGSEGV. Starting now, libcurl
  1318. will always internally use no less than 1 entry in the connection cache.
  1319. - Sh Diao reported that CURLOPT_FORBID_REUSE no works, and indeed it broke in
  1320. the 7.16.0 release.
  1321. - Martin Skinner brought back bug report #1230118 to haunt us once again.
  1322. (http://curl.haxx.se/bug/view.cgi?id=1230118) curl_getdate() did not work
  1323. properly for all input dates on Windows. It was mostly seen on some TZ time
  1324. zones using DST. Luckily, Martin also provided a fix.
  1325. - Alexey Simak filed bug report #1600447
  1326. (http://curl.haxx.se/bug/view.cgi?id=1600447) in which he noted that active
  1327. FTP connections don't work with the multi interface. The problem is here
  1328. that the multi interface state machine has a state during which it can wait
  1329. for the data connection to connect, but the active connection is not done in
  1330. the same step in the sequence as the passive one is so it doesn't quite work
  1331. for active. The active FTP code still use a blocking function to allow the
  1332. remote server to connect.
  1333. The fix (work-around is a better word) for this problem is to set the
  1334. boolean prematurely that the data connection is completed, so that the "wait
  1335. for connect" phase ends at once.
  1336. The proper fix, left for the future, is of course to make the active FTP
  1337. case to act in a non-blocking way too.
  1338. - Matt Witherspoon fixed a problem case when the CPU load went to 100% when a
  1339. HTTP upload was disconnected:
  1340. "What appears to be happening is that my system (Linux 2.6.17 and 2.6.13) is
  1341. setting *only* POLLHUP on poll() when the conditions in my previous mail
  1342. occur. As you can see, select.c:Curl_select() does not check for POLLHUP. So
  1343. basically what was happening, is poll() was returning immediately (with
  1344. POLLHUP set), but when Curl_select() looked at the bits, neither POLLERR or
  1345. POLLOUT was set. This still caused Curl_readwrite() to be called, which
  1346. quickly returned. Then the transfer() loop kept continuing at full speed
  1347. forever."
  1348. Daniel (1 December 2006)
  1349. - Toon Verwaest reported that there are servers that send the Content-Range:
  1350. header in a third, not suppported by libcurl, format and we agreed that we
  1351. could make the parser more forgiving to accept all the three found
  1352. variations.
  1353. Daniel (25 November 2006)
  1354. - Venkat Akella found out that libcurl did not like HTTP responses that simply
  1355. responded with a single status line and no headers nor body. Starting now, a
  1356. HTTP response on a persistent connection (i.e not set to be closed after the
  1357. response has been taken care of) must have Content-Length or chunked
  1358. encoding set, or libcurl will simply assume that there is no body.
  1359. To my horror I learned that we had no less than 57(!) test cases that did bad
  1360. HTTP responses like this, and even the test http server (sws) responded badly
  1361. when queried by the test system if it is the test system. So although the
  1362. actual fix for the problem was tiny, going through all the newly failing test
  1363. cases got really painful and boring.
  1364. Daniel (24 November 2006)
  1365. - James Housley did lots of work and introduced SFTP downloads.
  1366. Daniel (13 November 2006)
  1367. - Ron in bug #1595348 (http://curl.haxx.se/bug/view.cgi?id=1595348) pointed
  1368. out a stack overwrite (and the corresponding fix) on 64bit Windows when
  1369. dealing with HTTP chunked encoding.
  1370. Daniel (9 November 2006)
  1371. - Nir Soffer updated libcurl.framework.make:
  1372. o fix symlinks, should link to Versions, not to ./Versions
  1373. o indentation improvments
  1374. - Dmitriy Sergeyev found a SIGSEGV with his test04.c example posted on 7 Nov
  1375. 2006. It turned out we wrongly assumed that the connection cache was present
  1376. when tearing down a connection.
  1377. - Ciprian Badescu found a SIGSEGV when doing multiple TFTP transfers using the
  1378. multi interface, but I could also repeat it doing multiple sequential ones
  1379. with the easy interface. Using Ciprian's test case, I could fix it.
  1380. Daniel (8 November 2006)
  1381. - Bradford Bruce reported that when setting CURLOPT_DEBUGFUNCTION without
  1382. CURLOPT_VERBOSE set to non-zero, you still got a few debug messages from the
  1383. SSL handshake. This is now stopped.
  1384. Daniel (7 November 2006)
  1385. - Olaf fixed a leftover problem with the CONNECT fix of his that would leave a
  1386. wrong error message in the error message buffer.
  1387. Daniel (3 November 2006)
  1388. - Olaf Stueben provided a patch that I edited slightly. It fixes the notorious
  1389. KNOWN_BUGS #25, which happens when a proxy closes the connection when
  1390. libcurl has sent CONNECT, as part of an authentication negotiation. Starting
  1391. now, libcurl will re-connect accordingly and continue the authentication as
  1392. it should.
  1393. Daniel (2 November 2006)
  1394. - James Housley brought support for SCP transfers, based on the libssh2 library
  1395. for the actual network protocol stuff.
  1396. Added these new curl_easy_setopt() options:
  1397. CURLOPT_SSH_AUTH_TYPES
  1398. CURLOPT_SSH_PUBLIC_KEYFILE
  1399. CURLOPT_SSH_PRIVATE_KEYFILE
  1400. Version 7.16.0 (30 October 2006)
  1401. Daniel (25 October 2006)
  1402. - Fixed CURLOPT_FAILONERROR to return CURLE_HTTP_RETURNED_ERROR even for the
  1403. case when 401 or 407 are returned, *IF* no auth credentials have been given.
  1404. The CURLOPT_FAILONERROR option is not possible to make fool-proof for 401
  1405. and 407 cases when auth credentials is given, but we've now covered this
  1406. somewhat more.
  1407. You might get some amounts of headers transferred before this situation is
  1408. detected, like for when a "100-continue" is received as a response to a
  1409. POST/PUT and a 401 or 407 is received immediately afterwards.
  1410. Added test 281 to verify this change.
  1411. Daniel (23 October 2006)
  1412. - Ravi Pratap provided a major update with pipelining fixes. We also no longer
  1413. re-use connections (for pipelining) before the name resolving is done.
  1414. Daniel (21 October 2006)
  1415. - Nir Soffer made the tests/libtest/Makefile.am use a proper variable for all
  1416. the single test applications' link and dependences, so that you easier can
  1417. override those from the command line when using make.
  1418. - Armel Asselin separated CA cert verification problems from problems with
  1419. reading the (local) CA cert file to let users easier pinpoint the actual
  1420. problem. CURLE_SSL_CACERT_BADFILE (77) is the new libcurl error code.
  1421. Daniel (18 October 2006)
  1422. - Removed the "protocol-guessing" for URLs with host names starting with FTPS
  1423. or TELNET since they are practically non-existant. This leaves us with only
  1424. three different prefixes that would assume the protocol is anything but
  1425. HTTP, and they are host names starting with "ftp.", "dict." or "ldap.".
  1426. Daniel (17 October 2006)
  1427. - Bug report #1579171 pointed out code flaws detected with "prefast", and they
  1428. were 1 - a too small memory clear with memset() in the threaded resolver and
  1429. 2 - a range of potentially bad uses of the ctype family of is*() functions
  1430. such as isdigit(), isalnum(), isprint() and more. The latter made me switch
  1431. to using our own set of these functions/macros using uppercase letters, and
  1432. with some extra set of crazy typecasts to avoid mistakingly passing in
  1433. negative numbers to the underlying is*() functions.
  1434. - With Jeff Pohlmeyer's help, I fixed the expire timer when using
  1435. curl_multi_socket() during name resolves with c-ares and the LOW_SPEED
  1436. options now work fine with curl_multi_socket() as well.
  1437. Daniel (16 October 2006)
  1438. - Added a check in configure that simply tries to run a program (not when
  1439. cross-compiling) in order to detect problems with run-time libraries that
  1440. otherwise would occur when the sizeof tests for curl_off_t would run and
  1441. thus be much more confusing to users. The check of course should run after
  1442. all lib-checks are done and before any other test is used that would run an
  1443. executable built for testing-purposes.
  1444. Dan F (13 October 2006)
  1445. - The tagging of application/x-www-form-urlencoded POST body data sent
  1446. to the CURLOPT_DEBUGFUNCTION callback has been fixed (it was erroneously
  1447. included as part of the header). A message was also added to the
  1448. command line tool to show when data is being sent, enabled when
  1449. --verbose is used.
  1450. Daniel (12 October 2006)
  1451. - Starting now, adding an easy handle to a multi stack that was already added
  1452. to a multi stack will cause CURLM_BAD_EASY_HANDLE to get returned.
  1453. - Jeff Pohlmeyer has been working with the hiperfifo.c example source code,
  1454. and while doing so it became apparent that the current timeout system for
  1455. the socket API really was a bit awkward since it become quite some work to
  1456. be sure we have the correct timeout set.
  1457. Jeff then provided the new CURLMOPT_TIMERFUNCTION that is yet another
  1458. callback the app can set to get to know when the general timeout time
  1459. changes and thus for an application like hiperfifo.c it makes everything a
  1460. lot easier and nicer. There's a CURLMOPT_TIMERDATA option too of course in
  1461. good old libcurl tradition.
  1462. Jeff has also updated the hiperfifo.c example code to use this news.
  1463. Daniel (9 October 2006)
  1464. - Bogdan Nicula's second test case (posted Sun, 08 Oct 2006) converted to test
  1465. case 535 and it now runs fine. Again a problem with the pipelining code not
  1466. taking all possible (error) conditions into account.
  1467. Daniel (6 October 2006)
  1468. - Bogdan Nicula's hanging test case (posted Wed, 04 Oct 2006) was converted to
  1469. test case 533 and the test now runs fine.
  1470. Daniel (4 October 2006)
  1471. - Dmitriy Sergeyev provided an example source code that crashed CVS libcurl
  1472. but that worked nicely in 7.15.5. I converted it into test case 532 and
  1473. fixed the problem.
  1474. Daniel (29 September 2006)
  1475. - Removed a few other no-longer present options from the header file.
  1476. - Support for FTP third party transfers was removed. Here's why:
  1477. o The recent multi interface changes broke it and the design of the 3rd party
  1478. transfers made it very hard to fix the problems
  1479. o It was still blocking and thus nasty for the multi interface
  1480. o It was a lot of extra code for a very rarely used feature
  1481. o It didn't use the same code as for "plain" FTP transfers, so it didn't work
  1482. fine for IPv6 and it didn't properly re-use connections and more
  1483. o There's nobody around who's willing to work on and improve the existing
  1484. code
  1485. This does not mean that third party transfers are banned forever, only that
  1486. they need to be done better if they are to be re-added in the future.
  1487. The CURLOPT_SOURCE_* options are removed from the lib and so are the --3p*
  1488. options from the command line tool. For this reason, I also bumped the
  1489. version info for the lib.
  1490. Daniel (28 September 2006)
  1491. - Reported in #1561470 (http://curl.haxx.se/bug/view.cgi?id=1561470), libcurl
  1492. would crash if a bad function sequence was used when shutting down after
  1493. using the multi interface (i.e using easy_cleanup after multi_cleanup) so
  1494. precautions have been added to make sure it doesn't any more - test case 529
  1495. was added to verify.
  1496. Daniel (27 September 2006)
  1497. - The URL in the cookie jar file is now changed since it was giving a 404.
  1498. Reported by Timothy Stone. The new URL will take the visitor to a curl web
  1499. site mirror with the document.
  1500. Daniel (24 September 2006)
  1501. - Bernard Leak fixed configure --with-gssapi-libs.
  1502. - Cory Nelson made libcurl use the WSAPoll() function if built for Windows
  1503. Vista (_WIN32_WINNT >= 0x0600)
  1504. Daniel (23 September 2006)
  1505. - Mike Protts added --ftp-ssl-control to make curl use FTP-SSL, but only
  1506. encrypt the control connection and use the data connection "plain".
  1507. - Dmitriy Sergeyev provided a patch that made the SOCKS[45] code work better
  1508. as it now will read the full data sent from servers. The SOCKS-related code
  1509. was also moved to the new lib/socks.c source file.
  1510. Daniel (21 September 2006)
  1511. - Added test case 531 in an attempt to repeat bug report #1561470
  1512. (http://curl.haxx.se/bug/view.cgi?id=1561470) that is said to crash when an
  1513. FTP upload fails with the multi interface. It did not, but I made a failed
  1514. upload still assume the control connection to be fine.
  1515. Daniel (20 September 2006)
  1516. - Armel Asselin fixed problems when you gave a proxy URL with user name and
  1517. empty password or no password at all. Test case 278 and 279 were added to
  1518. verify.
  1519. Daniel (12 September 2006)
  1520. - Added docs/examples/10-at-a-time.c by Michael Wallner
  1521. - Added docs/examples/hiperfifo.c by Jeff Pohlmeyer
  1522. Daniel (11 September 2006)
  1523. - Fixed my breakage from earlier today so that doing curl_easy_cleanup() on a
  1524. handle that is part of a multi handle first removes the handle from the
  1525. stack.
  1526. - Added CURLOPT_SSL_SESSIONID_CACHE and --no-sessionid to disable SSL
  1527. session-ID re-use on demand since there obviously are broken servers out
  1528. there that misbehave with session-IDs used.
  1529. - Jeff Pohlmeyer presented a *multi_socket()-using program that exposed a
  1530. problem with it (SIGSEGV-style). It clearly showed that the existing
  1531. socket-state and state-difference function wasn't good enough so I rewrote
  1532. it and could then re-run Jeff's program without any crash. The previous
  1533. version clearly could miss to tell the application when a handle changed
  1534. from using one socket to using another.
  1535. While I was at it (as I could use this as a means to track this problem
  1536. down), I've now added a 'magic' number to the easy handle struct that is
  1537. inited at curl_easy_init() time and cleared at curl_easy_cleanup() time that
  1538. we can use internally to detect that an easy handle seems to be fine, or at
  1539. least not closed or freed (freeing in debug builds fill the area with 0x13
  1540. bytes but in normal builds we can of course not assume any particular data
  1541. in the freed areas).
  1542. Daniel (9 September 2006)
  1543. - Michele Bini fixed how the hostname is put in NTLM packages. As servers
  1544. don't expect fully qualified names we need to cut them off at the first dot.
  1545. - Peter Sylvester cleaned up and fixed the getsockname() uses in ftp.c. Some
  1546. of them can be completetly removed though...
  1547. Daniel (6 September 2006)
  1548. - Ravi Pratap and I have implemented HTTP Pipelining support. Enable it for a
  1549. multi handle using CURLMOPT_PIPELINING and all HTTP connections done on that
  1550. handle will be attempted to get pipelined instead of done in parallell as
  1551. they are performed otherwise.
  1552. As a side-effect from this work, connections are now shared between all easy
  1553. handles within a multi handle, so if you use N easy handles for transfers,
  1554. each of them can pick up and re-use a connection that was previously used by
  1555. any of the handles, be it the same or one of the others.
  1556. This separation of the tight relationship between connections and easy
  1557. handles is most noticable when you close easy handles that have been used in
  1558. a multi handle and check amount of used memory or watch the debug output, as
  1559. there are times when libcurl will keep the easy handle around for a while
  1560. longer to be able to close it properly. Like for sending QUIT to close down
  1561. an FTP connection.
  1562. This is a major change.
  1563. Daniel (4 September 2006)
  1564. - Dmitry Rechkin (http://curl.haxx.se/bug/view.cgi?id=1551412) provided a
  1565. patch that while not fixing things very nicely, it does make the SOCKS5
  1566. proxy connection slightly better as it now acknowledges the timeout for
  1567. connection and it no longer segfaults in the case when SOCKS requires
  1568. authentication and you did not specify username:password.
  1569. Daniel (31 August 2006)
  1570. - Dmitriy Sergeyev found and fixed a multi interface flaw when using asynch
  1571. name resolves. It could get stuck in the wrong state.
  1572. Gisle (29 August 2006)
  1573. - Added support for other MS-DOS compilers (desides djgpp). All MS-DOS
  1574. compiler now uses the same config.dos file (renamed to config.h by
  1575. make). libcurl now builds fine using Watcom and Metaware's High-C
  1576. using the Watt-32 tcp/ip-stack.
  1577. Daniel (29 August 2006)
  1578. - David McCreedy added CURLOPT_SOCKOPTFUNCTION and CURLOPT_SOCKOPTDATA to
  1579. allow applications to set their own socket options.
  1580. Daniel (25 August 2006)
  1581. - Armel Asselin reported that the 'running_handles' counter wasn't updated
  1582. properly if you removed a "live" handle from a multi handle with
  1583. curl_multi_remove_handle().
  1584. Daniel (22 August 2006)
  1585. - David McCreedy fixed a remaining mistake from the August 19 TYPE change.
  1586. - Peter Sylvester pointed out a flaw in the AllowServerConnect() in the FTP
  1587. code when doing pure ipv6 EPRT connections.
  1588. Daniel (19 August 2006)
  1589. - Based on a patch by Armel Asselin, the FTP code no longer re-issues the TYPE
  1590. command on subsequent requests on a re-used connection unless it has to.
  1591. - Armel Asselin fixed a crash in the FTP code when using SINGLECWD mode and
  1592. files in the root directory.
  1593. - Andrew Biggs pointed out a "Expect: 100-continue" flaw where libcurl didn't
  1594. send the whole request at once, even though the Expect: header was disabled
  1595. by the application. An effect of this change is also that small (< 1024
  1596. bytes) POSTs are now always sent without Expect: header since we deem it
  1597. more costly to bother about that than the risk that we send the data in
  1598. vain.
  1599. Daniel (9 August 2006)
  1600. - Armel Asselin made the CURLOPT_PREQUOTE option work fine even when
  1601. CURLOPT_NOBODY is set true. PREQUOTE is then run roughly at the same place
  1602. in the command sequence as it would have run if there would've been a
  1603. transfer.
  1604. Daniel (8 August 2006)
  1605. - Fixed a flaw in the "Expect: 100-continue" treatment. If you did two POSTs
  1606. on a persistent connection and allowed the first to use that header, you
  1607. could not disable it for the second request.
  1608. Daniel (7 August 2006)
  1609. - Domenico Andreolfound a quick build error which happened because
  1610. src/config.h.in was not a proper duplcate of lib/config.h.in which it
  1611. should've been and this was due to the maketgz script not doing the cp
  1612. properly.
  1613. Version 7.15.5 (7 August 2006)
  1614. Daniel (2 August 2006)
  1615. - Mark Lentczner fixed how libcurl was not properly doing chunked encoding
  1616. if the header "Transfer-Encoding: chunked" was set by the application.
  1617. http://curl.haxx.se/bug/view.cgi?id=1531838
  1618. Daniel (1 August 2006)
  1619. - Maciej Karpiuk fixed a crash that would occur if we passed Curl_strerror()
  1620. an unknown error number on glibc systems.
  1621. http://curl.haxx.se/bug/view.cgi?id=1532289
  1622. Daniel (31 July 2006)
  1623. - *ALERT* curl_multi_socket() and curl_multi_socket_all() got modified
  1624. prototypes: they both now provide the number of running handles back to the
  1625. calling function. It makes the functions resemble the good old
  1626. curl_multi_perform() more and provides a nice way to know when the multi
  1627. handle goes empty.
  1628. ALERT2: don't use the curl_multi_socket*() functionality in anything
  1629. production-like until I say it's somewhat settled, as I suspect there might
  1630. be some further API changes before I'm done...
  1631. Daniel (28 July 2006)
  1632. - Yves Lejeune fixed so that replacing Content-Type: when doing multipart
  1633. formposts work exactly the way you want it (and the way you'd assume it
  1634. works).
  1635. Daniel (27 July 2006)
  1636. - David McCreedy added --ftp-ssl-reqd which makes curl *require* SSL for both
  1637. control and data connection, as the existing --ftp-ssl option only requests
  1638. it.
  1639. - [Hiper-related work] Added a function called curl_multi_assign() that will
  1640. set a private pointer added to the internal libcurl hash table for the
  1641. particular socket passed in to this function:
  1642. CURLMcode curl_multi_assign(CURLM *multi_handle,
  1643. curl_socket_t sockfd,
  1644. void *sockp);
  1645. 'sockp' being a custom pointer set by the application to be associated with
  1646. this socket. The socket has to be already existing and in-use by libcurl,
  1647. like having already called the callback telling about its existance.
  1648. The set hashp pointer will then be passed on to the callback in upcoming
  1649. calls when this same socket is used (in the brand new 'socketp' argument).
  1650. Daniel (26 July 2006)
  1651. - Dan Nelson added the CURLOPT_FTP_ALTERNATIVE_TO_USER libcurl option and curl
  1652. tool option named --ftp-alternative-to-user. It provides a mean to send a
  1653. particular command if the normal USER/PASS approach fails.
  1654. - Michael Jerris added magic that builds lib/curllib.vcproj automatically for
  1655. newer MSVC.
  1656. Daniel (25 July 2006)
  1657. - Georg Horn made the transfer timeout error message include more details.
  1658. Daniel (20 July 2006)
  1659. - David McCreedy fixed a build error when building libcurl with HTTP disabled,
  1660. problem added with the curl_formget() patch.
  1661. Daniel (17 July 2006)
  1662. - Jari Sundell did some excellent research and bug tracking, figured out that
  1663. we did wrong and patched it: When nodes were removed from the splay tree,
  1664. and we didn't properly remove it from the splay tree when an easy handle was
  1665. removed from a multi stack and thus we could wrongly leave a node in the
  1666. splay tree pointing to (bad) memory.
  1667. Daniel (14 July 2006)
  1668. - David McCreedy fixed a flaw where the CRLF counter wasn't properly cleared
  1669. for FTP ASCII transfers.
  1670. Daniel (8 July 2006)
  1671. - Ates Goral pointed out that libcurl's cookie parser did case insensitive
  1672. string comparisons on the path which is incorrect and provided a patch that
  1673. fixes this. I edited test case 8 to include details that test for this.
  1674. - Ingmar Runge provided a source snippet that caused a crash. The reason for
  1675. the crash was that libcurl internally was a bit confused about who owned the
  1676. DNS cache at all times so if you created an easy handle that uses a shared
  1677. DNS cache and added that to a multi handle it would crash. Now we keep more
  1678. careful internal track of exactly what kind of DNS cache each easy handle
  1679. uses: None, Private (allocated for and used only by this single handle),
  1680. Shared (points to a cache held by a shared object), Global (points to the
  1681. global cache) or Multi (points to the cache within the multi handle that is
  1682. automatically shared between all easy handles that are added with private
  1683. caches).
  1684. Daniel (4 July 2006)
  1685. - Toshiyuki Maezawa fixed a problem where you couldn't override the
  1686. Proxy-Connection: header when using a proxy and not doing CONNECT.
  1687. Daniel (24 June 2006)
  1688. - Michael Wallner added curl_formget(), which allows an application to extract
  1689. (serialise) a previously built formpost (as with curl_formadd()).
  1690. Daniel (23 June 2006)
  1691. - Arve Knudsen found a flaw in curl_multi_fdset() for systems where
  1692. curl_socket_t is unsigned (like Windows) that could cause it to wrongly
  1693. return a max fd of -1.
  1694. Daniel (20 June 2006)
  1695. - Peter Silva introduced CURLOPT_MAX_SEND_SPEED_LARGE and
  1696. CURLOPT_MAX_RECV_SPEED_LARGE that limit tha maximum rate libcurl is allowed
  1697. to send or receive data. This kind of adds the the command line tool's
  1698. option --limit-rate to the library.
  1699. The rate limiting logic in the curl app is now removed and is instead
  1700. provided by libcurl itself. Transfer rate limiting will now also work for -d
  1701. and -F, which it didn't before.
  1702. Daniel (19 June 2006)
  1703. - Made -K on a file that couldn't be read cause a warning to be displayed.
  1704. Daniel (13 June 2006)
  1705. - Dan Fandrich implemented --enable-hidden-symbols configure option to enable
  1706. -fvisibility=hidden on gcc >= 4.0. This reduces the size of the libcurl
  1707. binary and speeds up dynamic linking by hiding all the internal symbols from
  1708. the symbol table.
  1709. Version 7.15.4 (12 June 2006)
  1710. Daniel (8 June 2006)
  1711. - Brian Dessent fixed the code for cygwin in three distinct ways:
  1712. The first modifies {lib,src}/setup.h to not include the winsock headers
  1713. under Cygwin. This fixes the reported build problem. Cygwin attempts as
  1714. much as possible to emulate a posix environment under Windows. This means
  1715. that WIN32 is *not* #defined and (to the extent possible) everything is done
  1716. as it would be on a *ix type system. Thus <sys/socket.h> is the proper
  1717. include, and even though winsock2.h is present, including it just introduces
  1718. a whole bunch of incompatible socket API stuff.
  1719. The second is a patch I've included in the Cygwin binary packages for a
  1720. while. It skips two unnecessary library checks (-lwinmm and -lgdi32). The
  1721. checks are innocuous and they do succeed, but they pollute LIBS with
  1722. unnecessary stuff which gets recorded as such in the libcurl.la file, which
  1723. brings them into the build of any libcurl-downstream. As far as I know
  1724. these libs are really only necessary for mingw, so alternatively they could
  1725. be designed to only run if $host matches *-*-mingw* but I took the safer
  1726. route of skipping them for *-*-cygwin*.
  1727. The third patch replaces all uses of the ancient and obsolete __CYGWIN32__
  1728. with __CYGWIN__. Ref: <http://cygwin.com/ml/cygwin/2003-09/msg01520.html>.
  1729. Daniel (7 June 2006)
  1730. - Mikael Sennerholm provided a patch that added NTLM2 session response support
  1731. to libcurl. The 21 NTLM test cases were again modified to comply...
  1732. Daniel (27 May 2006)
  1733. - Óscar Morales Vivó updated the libcurl.framework.make file.
  1734. Daniel (26 May 2006)
  1735. - Olaf Stüben fixed a bug that caused Digest authentication with md5-sess to
  1736. fail. When using the md5-sess, the result was not Md5 encoded and Base64
  1737. transformed.
  1738. Daniel (25 May 2006)
  1739. - Michael Wallner provided a patch that allows "SESS" to be set with
  1740. CURLOPT_COOKIELIST, which then makes all session cookies get cleared.
  1741. Daniel (24 May 2006)
  1742. - Tor Arntsen made test 271 run fine again since the TFTP path fix.
  1743. Daniel (23 May 2006)
  1744. - Martin Michlmayr filed debian bug report #367954, but the same error also
  1745. showed up in the autobuilds. It seems a rather long-since introduced shell
  1746. script flaw in the configure script suddenly was detected by the bash
  1747. version in Debian Unstable. It had previously passed undetected by all
  1748. shells used so far...
  1749. - David McCreedy updated lib/config-tpf.h
  1750. Daniel (11 May 2006)
  1751. - Fixed the configure's check for old-style SSLeay headers since I fell over a
  1752. case with a duplicate file name (a krb4 implementation with an err.h
  1753. file). I converted the check to manually make sure three of the headers are
  1754. present before considering them fine.
  1755. - David McCreedy provided a fix for CURLINFO_LASTSOCKET that does extended
  1756. checks on the to-be-returned socket to make sure it truly seems to be alive
  1757. and well. For SSL connection it (only) uses OpenSSL functions.
  1758. Daniel (10 May 2006)
  1759. - Fixed DICT in two aspects:
  1760. 1 - allow properly URL-escaped words, like using %20 for spaces
  1761. 2 - properly escape certain letters within a word to comply to the RFC2229
  1762. Daniel (9 May 2006)
  1763. - Andreas Ntaflos reported a bug in libcurl.m4: When configuring my GNU
  1764. autotools project, which optionally (default=yes) uses libcurl on a system
  1765. without a (usable) libcurl installation, but not specifying
  1766. `--without-libcurl', configure determines correctly that no libcurl is
  1767. available, however, the LIBCURL variable gets expanded to `LIBCURL = -lcurl'
  1768. in the resulting Makefiles.
  1769. David Shaw fixed the flaw.
  1770. - Robson Braga Araujo fixed two problems in the recently added non-blocking SSL
  1771. connects. The state machine was not reset properly so that subsequent
  1772. connects using the same handle would fail, and there were two memory leaks.
  1773. - Robson Braga Araujo fixed a memory leak when you added an easy handle to a
  1774. multi stack and that easy handle had already been used to do one or more
  1775. easy interface transfers, as then the code threw away the previously used
  1776. DNS cache without properly freeing it.
  1777. Daniel (8 May 2006)
  1778. - Dan Fandrich went over the TFTP code and he pointed out and fixed numerous
  1779. problems:
  1780. * The received file is corrupted when a packet is lost and retransmitted
  1781. (this is a serious problem!)
  1782. * Transmitting a file aborts if a block is lost and retransmitted
  1783. * Data is stored in the wrong location in the buffer for uploads, so uploads
  1784. always fail (I don't see how it could have ever worked, but it did on x86
  1785. at least)
  1786. * A number of calls are made to strerror instead of Curl_strerror, making
  1787. the code not thread safe
  1788. * There are references to errno instead of Curl_sockerrno(), causing
  1789. incorrect error messages on Windows
  1790. * The file name includes a leading / which violates RFC3617. Doing something
  1791. similar to ftp, where two slashes after the host name means an absolute
  1792. reference seems a reasonable extension to fix this.
  1793. * Failures in EBCDIC conversion are not propagated up to the caller but are
  1794. silently ignored
  1795. - Fixed known bug #28. The TFTP code no longer assumes a packed struct and
  1796. thus works reliably on more platforms.
  1797. Daniel (5 May 2006)
  1798. - Roland Blom filed bug report #1481217
  1799. (http://curl.haxx.se/bug/view.cgi?id=1481217), with follow-ups by Michele
  1800. Bini and David Byron. libcurl previously wrongly used GetLastError() on
  1801. windows to get error details after socket-related function calls, when it
  1802. really should use WSAGetLastError() instead.
  1803. When changing to this, the former function Curl_ourerrno() is now instead
  1804. called Curl_sockerrno() as it is necessary to only use it to get errno from
  1805. socket-related functions as otherwise it won't work as intended on Windows.
  1806. Daniel (4 May 2006)
  1807. - Mark Eichin submitted bug report #1480821
  1808. (http://curl.haxx.se/bug/view.cgi?id=1480821) He found and identified a
  1809. problem with how libcurl dealt with GnuTLS and a case where gnutls returned
  1810. GNUTLS_E_AGAIN indicating it would block. It would then return an unexpected
  1811. return code, making Curl_ssl_send() confuse the upper layer - causing random
  1812. 28 bytes trash data to get inserted in the transfered stream.
  1813. The proper fix was to make the Curl_gtls_send() function return the proper
  1814. return codes that the callers would expect. The Curl_ossl_send() function
  1815. already did this.
  1816. Daniel (2 May 2006)
  1817. - Added a --checkfor option to curl-config to allow users to easier
  1818. write for example shell scripts that test for the presence of a
  1819. new-enough libcurl version. If --checkfor is given a version string
  1820. newer than what is currently installed, curl-config will return a
  1821. non-zero exit code and output a string about the unfulfilled
  1822. requirement.
  1823. Daniel (26 April 2006)
  1824. - David McCreedy brought initial line end conversions when doing FTP ASCII
  1825. transfers. They are done on non-windows systems and translate CRLF to LF.
  1826. I modified the 15 LIST-using test cases accordingly. The downside is that now
  1827. we'll have even more trouble to get the tests to run on Windows since they
  1828. should get CRLF newlines left intact which the *nix versions don't. I figure
  1829. the only sane thing to do is to add some kind of [newline] macro for the test
  1830. case files and have them expanded to the proper native line ending when the
  1831. test cases are run. This is however left to implement.
  1832. Daniel (25 April 2006)
  1833. - Paul Querna fixed libcurl to better deal with deflate content encoding
  1834. when the stream (wrongly) lacks a proper zlib header. This seems to be the
  1835. case on too many actual server implementations.
  1836. Daniel (21 April 2006)
  1837. - Ale Vesely fixed CURLOPT_INTERFACE when using a hostname.
  1838. Daniel (19 April 2006)
  1839. - Based on previous info from Tor Arntsen, I made configure detect the Intel
  1840. ICC compiler to add a compiler option for it, in order for configure to
  1841. properly be able to detect function prototypes.
  1842. - Robson Braga Araujo provided a patch that makes libcurl less eager to close
  1843. the control connection when using FTP, for example when you remove an easy
  1844. handle from a multi stack.
  1845. - Applied a patch by Ates Goral and Katie Wang that corrected my bad fix
  1846. attempt from April 10.
  1847. Daniel (11 April 2006)
  1848. - #1468330 (http://curl.haxx.se/bug/view.cgi?id=1468330) pointed out a bad
  1849. typecast in the curl tool leading to a crash with (64bit?) VS2005 (at least)
  1850. since the struct timeval field tv_sec is an int while time_t is 64bit.
  1851. Daniel (10 April 2006)
  1852. - Ates Goral found out that if you specified both CURLOPT_CONNECTTIMEOUT and
  1853. CURLOPT_TIMEOUT, the _longer_ time would wrongly be used for the SSL
  1854. connection time-out!
  1855. - I merged my hiper patch (http://curl.haxx.se/libcurl/hiper/) into the main
  1856. sources. See the lib/README.multi_socket for implementation story with
  1857. details. Don't expect it to work fully yet. I don't intend to blow any
  1858. whistles or ring any bells about it until I'm more convinced it works at
  1859. least somewhat reliably.
  1860. Daniel (7 April 2006)
  1861. - David McCreedy's EBCDIC and TPF changes. Three new curl_easy_setopt()
  1862. options (callbacks) were added:
  1863. CONV_FROM_NETWORK_FUNCTION
  1864. CONV_TO_NETWORK_FUNCTION
  1865. CONV_FROM_UTF8_FUNCTION
  1866. Daniel (5 April 2006)
  1867. - Michele Bini modified the NTLM code to work for his "weird IIS case"
  1868. (http://curl.haxx.se/mail/lib-2006-02/0154.html) by adding the NTLM hash
  1869. function in addition to the LM one and making some other adjustments in the
  1870. order the different parts of the data block are sent in the Type-2 reply.
  1871. Inspiration for this work was taken from the Firefox NTLM implementation.
  1872. I edited the existing 21(!) NTLM test cases to run fine with these news. Due
  1873. to the fact that we now properly include the host name in the Type-2 message
  1874. the test cases now only compare parts of that chunk.
  1875. Daniel (28 March 2006)
  1876. - #1451929 (http://curl.haxx.se/bug/view.cgi?id=1451929) detailed a bug that
  1877. occurred when asking libcurl to follow HTTP redirects and the original URL
  1878. had more than one question mark (?). Added test case 276 to verify.
  1879. Daniel (27 March 2006)
  1880. - David Byron found a problem multiple -d options when libcurl was built with
  1881. --enable-debug, as then curl used free() on memory allocated both with
  1882. normal malloc() and with libcurl-provided functions, when the latter MUST be
  1883. freed with curl_free() in debug builds.
  1884. Daniel (26 March 2006)
  1885. - Tor Arntsen figured out that TFTP was broken on a lot of systems since we
  1886. called bind() with a too big argument in the 3rd parameter and at least
  1887. Tru64, AIX and IRIX seem to be very picky about it.
  1888. Daniel (21 March 2006)
  1889. - David McCreedy added CURLINFO_FTP_ENTRY_PATH.
  1890. - Xavier Bouchoux made the SSL connection non-blocking for the multi interface
  1891. (when using OpenSSL).
  1892. - Tor Arntsen fixed the AIX Toolbox RPM spec
  1893. Daniel (20 March 2006)
  1894. - David McCreedy fixed libcurl to no longer ignore AUTH failures and now it
  1895. reacts properly according to the CURLOPT_FTP_SSL setting.
  1896. - Dan Fandrich fixed two TFTP problems: Fixed a bug whereby a received file
  1897. whose length was a multiple of 512 bytes could have random garbage
  1898. appended. Also, stop processing TFTP packets which are too short to be
  1899. legal.
  1900. - Ilja van Sprundel reported a possible crash in the curl tool when using
  1901. "curl hostwithoutslash -d data -G"
  1902. Version 7.15.3 (20 March 2006)
  1903. Daniel (20 March 2006)
  1904. - VULNERABILITY reported to us by Ulf Harnhammar.
  1905. libcurl uses the given file part of a TFTP URL in a manner that allows a
  1906. malicious user to overflow a heap-based memory buffer due to the lack of
  1907. boundary check.
  1908. This overflow happens if you pass in a URL with a TFTP protocol prefix
  1909. ("tftp://"), using a valid host and a path part that is longer than 512
  1910. bytes.
  1911. The affected flaw can be triggered by a redirect, if curl/libcurl is told to
  1912. follow redirects and an HTTP server points the client to a tftp URL with the
  1913. characteristics described above.
  1914. The Common Vulnerabilities and Exposures (CVE) project has assigned the name
  1915. CVE-2006-1061 to this issue.
  1916. Daniel (16 March 2006)
  1917. - Tor Arntsen provided a RPM spec file for AIX Toolbox, that now is included
  1918. in the release archive.
  1919. Daniel (14 March 2006)
  1920. - David McCreedy fixed:
  1921. a bad SSL error message when OpenSSL certificates are verified fine.
  1922. a missing return code assignment in the FTP code
  1923. Daniel (7 March 2006)
  1924. - Markus Koetter filed debian bug report #355715 which identified a problem
  1925. with the multi interface and multi-part formposts. The fix from February
  1926. 22nd could make the Curl_done() function get called twice on the same
  1927. connection and it was not designed for that and thus tried to call free() on
  1928. an already freed memory area!
  1929. - Peter Heuchert made sure the CURLFTPSSL_CONTROL setting for CURLOPT_FTP_SSL
  1930. is used properly.
  1931. Daniel (6 March 2006)
  1932. - Lots of users on Windows have reported getting the "SSL: couldn't set
  1933. callback" error message so I've now made the setting of that callback not be
  1934. as critical as before. The function is only used for additional loggging/
  1935. trace anyway so a failure just means slightly less data. It should still be
  1936. able to proceed and connect fine to the server.
  1937. Daniel (4 March 2006)
  1938. - Thomas Klausner provided a patch written by Todd Vierling in bug report
  1939. #1442471 that fixes a build problem on Interix.
  1940. Daniel (2 March 2006)
  1941. - FTP upload without a file name part in the URL now causes
  1942. curl_easy_perform() to return CURLE_URL_MALFORMAT. Previously it allowed the
  1943. upload but named the file "(nil)" (without the quotes). Test case 524
  1944. verifies.
  1945. - Added a check for getprotobyname in configure so that it'll be used, thanks
  1946. to Gisle Vanem's change the other day.
  1947. Daniel (28 February 2006)
  1948. - Dan Fandrich prevented curl from getting stuck in an endless loop in case we
  1949. are out of file handles very early in curl's code where it makes sure that
  1950. 0, 1 and 2 aren't gonna be used by the lib for transfers.
  1951. Daniel (27 February 2006)
  1952. - Marty Kuhrt pointed out that there were two VMS-specific files missing in
  1953. the release archive.
  1954. Version 7.15.2 (27 February 2006)
  1955. Daniel (22 February 2006)
  1956. - Lots of work and analysis by "xbx___" in bug #1431750
  1957. (http://curl.haxx.se/bug/view.cgi?id=1431750) helped me identify and fix two
  1958. different but related bugs:
  1959. 1) Removing an easy handle from a multi handle before the transfer is done
  1960. could leave a connection in the connection cache for that handle that is
  1961. in a state that isn't suitable for re-use. A subsequent re-use could then
  1962. read from a NULL pointer and segfault.
  1963. 2) When an easy handle was removed from the multi handle, there could be an
  1964. outstanding c-ares DNS name resolve request. When the response arrived,
  1965. it caused havoc since the connection struct it "belonged" to could've
  1966. been freed already.
  1967. Now Curl_done() is called when an easy handle is removed from a multi handle
  1968. pre-maturely (that is, before the transfer was complteted). Curl_done() also
  1969. makes sure to cancel all (if any) outstanding c-ares requests.
  1970. Daniel (21 February 2006)
  1971. - Peter Su added support for SOCKS4 proxies. Enable this by setting the proxy
  1972. type to the already provided type CURLPROXY_SOCKS4.
  1973. I added a --socks4 option that works like the current --socks5 option but
  1974. instead use the socks4 protocol.
  1975. Daniel (20 February 2006)
  1976. - Shmulik Regev fixed an issue with multi-pass authentication and compressed
  1977. content when libcurl didn't honor the internal ignorebody flag.
  1978. Daniel (18 February 2006)
  1979. - Ulf Härnhammar fixed a format string (printf style) problem in the Negotiate
  1980. code. It should however not be the cause of any troubles. He also fixed a
  1981. few similar problems in the HTTP test server code.
  1982. Daniel (17 February 2006)
  1983. - Shmulik Regev provided a fix for the DNS cache when using short life times,
  1984. as previously it could be holding on to old cached entries longer than
  1985. requested.
  1986. Daniel (11 February 2006)
  1987. - Karl Moerder added the CURLOPT_CONNECT_ONLY and CURLINFO_LASTSOCKET options
  1988. that an app can use to let libcurl only connect to a remote host and then
  1989. extract the socket from libcurl. libcurl will then not attempt to do any
  1990. transfer at all after the connect is done.
  1991. - Kent Boortz improved the configure check for GnuTLS to properly set LIBS
  1992. instead of LDFLAGS.
  1993. Daniel (8 February 2006)
  1994. - Philippe Vaucher provided a brilliant piece of test code that show a problem
  1995. with re-used FTP connections. If the second request on the same connection
  1996. was set not to fetch a "body", libcurl could get confused and consider it an
  1997. attempt to use a dead connection and would go acting mighty strange.
  1998. Daniel (2 February 2006)
  1999. - Make --limit-rate [num] mean bytes. It used to be that but it broke in my
  2000. change done in November 2005.
  2001. Daniel (30 January 2006)
  2002. - Added CURLOPT_LOCALPORT and CURLOPT_LOCALPORTRANGE to libcurl. Set with the
  2003. curl tool with --local-port. Plain and simply set the range of ports to bind
  2004. the local end of connections to. Implemented on to popular demand.
  2005. - Based on an error report by Philippe Vaucher, we no longer count a retried
  2006. connection setup as a follow-redirect. It turns out 1) this fails when a FTP
  2007. connection is re-setup and 2) it does make the max-redirs counter behave
  2008. wrong.
  2009. Daniel (24 January 2006)
  2010. - Michal Marek provided a patch for FTP that makes libcurl continue to try
  2011. PASV even after EPSV returned a positive response code, if libcurl failed to
  2012. connect to the port number the EPSV response said. Obviously some people are
  2013. going through protocol-sensitive firewalls (or similar) that don't
  2014. understand EPSV and then they don't allow the second connection unless PASV
  2015. was used. This also called for a minor fix of test case 238.
  2016. Daniel (20 January 2006)
  2017. - Duane Cathey was one of our friends who reported that curl -P [IP]
  2018. (CURLOPT_FTPPORT) didn't work for ipv6-enabed curls if the IP wasn't a
  2019. "native" IP while it works fine for ipv6-disabled builds!
  2020. In the process of fixing this, I removed the support for LPRT since I can't
  2021. think of many reasons to keep doing it and asking on the mailing list didn't
  2022. reveal anyone else that could either. The code that sends EPRT and PORT is
  2023. now also a lot simpler than before (IMHO).
  2024. Daniel (19 January 2006)
  2025. - Jon Turner pointed out that doing -P [hostname] (CURLOPT_FTPPORT) with curl
  2026. (built ipv4-only) didn't work.
  2027. Daniel (18 January 2006)
  2028. - As reported in bug #1408742 (http://curl.haxx.se/bug/view.cgi?id=1408742),
  2029. the configure script complained about a missing "missing" script if you ran
  2030. configure within a path whose name included one or more spaces. This is due
  2031. to a flaw in automake (1.9.6 and earlier). I've now worked around it by
  2032. including an "overloaded" version of the AM_MISSING_HAS_RUN script that'll
  2033. be used instead of the one automake ships with. This kludge needs to be
  2034. removed once we get an automake version with this problem corrected.
  2035. Possibly we'll then need to convert this into a kludge depending on what
  2036. automake version that is used and that is gonna be painful and I don't even
  2037. want to think about that now...!
  2038. Daniel (17 January 2006)
  2039. - David Shaw: Here is the latest libcurl.m4 autoconf tests. It is updated with
  2040. the latest features and protocols that libcurl supports and has a minor fix
  2041. to better deal with the obscure case where someone has more than one libcurl
  2042. installed at the same time.
  2043. Daniel (16 January 2006)
  2044. - David Shaw finally removed all traces of Gopher and we are now officially
  2045. not supporting it. It hasn't been functioning for years anyway, so this is
  2046. just finally stating what already was true. And a cleanup at the same time.
  2047. - Bryan Henderson turned the 'initialized' variable for curl_global_init()
  2048. into a counter, and thus you can now do multiple curl_global_init() and you
  2049. are then supposed to do the same amount of calls to curl_global_cleanup().
  2050. Bryan has also updated the docs accordingly.
  2051. Daniel (13 January 2006)
  2052. - Andrew Benham fixed a race condition in the test suite that could cause the
  2053. test script to kill all processes in the current process group!
  2054. Daniel (12 January 2006)
  2055. - Michael Jahn:
  2056. Fixed FTP_SKIP_PASV_IP and FTP_USE_EPSV to "do right" when used on FTP thru
  2057. HTTP proxy.
  2058. Fixed PROXYTUNNEL to work fine when you do ftp through a proxy. It would
  2059. previously overwrite internal memory and cause unpredicted behaviour!
  2060. Daniel (11 January 2006)
  2061. - I decided to document the "secret option" here now, as I've received *NO*
  2062. feedback at all on my mailing list requests from November 2005:
  2063. I'm looking for feedback and comments. I added some experimental code the
  2064. other day, that allows a libcurl user to select what method libcurl should
  2065. use to reach a file on a FTP(S) server.
  2066. This functionality is available in CVS code and in recent daily snapshots.
  2067. Let me explain...
  2068. The current name for the option is CURLOPT_FTP_FILEMETHOD (--ftp-method for
  2069. the command line tool) and you set it to a long (there are currenly no
  2070. defines for the argument values, just plain numericals). You can set three
  2071. different "methods" that do this:
  2072. 1 multicwd - like today, curl will do a single CWD operation for each path
  2073. part in the given URL. For deep hierarchies this means very many
  2074. commands. This is how RFC1738 says it should be done. This is the
  2075. default.
  2076. 2 nocwd - no CWD at all is done, curl will do SIZE, RETR, STOR etc and give
  2077. a full path to the server.
  2078. 3 singlecwd - make one CWD with the full target directory and then operate
  2079. on the file "normally".
  2080. (With the command line tool you do --ftp-method [METHOD], where [METHOD] is
  2081. one of "multicwd", "nocwd" or "singlecwd".)
  2082. What feedback I'm interested in:
  2083. 1 - Do they work at all? Do you find servers where one of these don't work?
  2084. 2 - What would proper names for the option and its arguments be, if we
  2085. consider this feature good enough to get included and documented in
  2086. upcoming releases?
  2087. 3 - Should we make libcurl able to "walk through" these options in case of
  2088. (path related) failures, or should it fail and let the user redo any
  2089. possible retries?
  2090. (This option is not documented in any man page just yet since I'm not sure
  2091. these names will be used or if the functionality will end up exactly like
  2092. this. And for the same reasons we have no test cases for these yet.)
  2093. Daniel (10 January 2006)
  2094. - When using a bad path over FTP, as in when libcurl couldn't CWD into all
  2095. given subdirs, libcurl would still "remember" the full path as if it is the
  2096. current directory libcurl is in so that the next curl_easy_perform() would
  2097. get really confused if it tried the same path again - as it would not issue
  2098. any CWD commands at all, assuming it is already in the "proper" dir.
  2099. Starting now, a failed CWD command sets a flag that prevents the path to be
  2100. "remembered" after returning.
  2101. Daniel (7 January 2006)
  2102. - Michael Jahn fixed so that the second CONNECT when doing FTP over a HTTP
  2103. proxy actually used a new connection and not sent the second request on the
  2104. first socket!
  2105. Daniel (6 January 2006)
  2106. - Alexander Lazic made the buildconf run the buildconf in the ares dir if that
  2107. is present instead of trying to mimic that script in curl's buildconf
  2108. script.
  2109. Daniel (3 January 2006)
  2110. - Andres Garcia made the TFTP test server build with mingw.
  2111. Daniel (16 December 2005)
  2112. - Jean Jacques Drouin pointed out that you could only have a user name or
  2113. password of 127 bytes or less embedded in a URL, where actually the code
  2114. uses a 255 byte buffer for it! Modified now to use the full buffer size.
  2115. Daniel (12 December 2005)
  2116. - Dov Murik corrected the HTTP_ONLY define to disable the TFTP support properly
  2117. Version 7.15.1 (7 December 2005)
  2118. Daniel (6 December 2005)
  2119. - Full text here: http://curl.haxx.se/docs/adv_20051207.html Pointed out by
  2120. Stefan Esser.
  2121. VULNERABILITY
  2122. libcurl's URL parser function can overflow a malloced buffer in two ways, if
  2123. given a too long URL.
  2124. These overflows happen if you
  2125. 1 - pass in a URL with no protocol (like "http://") prefix, using no slash
  2126. and the string is 256 bytes or longer. This leads to a single zero byte
  2127. overflow of the malloced buffer.
  2128. 2 - pass in a URL with only a question mark as separator (no slash) between
  2129. the host and the query part of the URL. This leads to a single zero byte
  2130. overflow of the malloced buffer.
  2131. Both overflows can be made with the same input string, leading to two single
  2132. zero byte overwrites.
  2133. The affected flaw cannot be triggered by a redirect, but the long URL must
  2134. be passed in "directly" to libcurl. It makes this a "local" problem. Of
  2135. course, lots of programs may still pass in user-provided URLs to libcurl
  2136. without doing much syntax checking of their own, allowing a user to exploit
  2137. this vulnerability.
  2138. There is no known exploit at the time of this writing.
  2139. Daniel (2 December 2005)
  2140. - Jamie Newton pointed out that libcurl's file:// code would close() a zero
  2141. file descriptor if given a non-existing file.
  2142. Daniel (24 November 2005)
  2143. - Doug Kaufman provided a set of patches to make curl build fine on DJGPP
  2144. again using configure.
  2145. - Yang Tse provided a whole series of patches to clear up compiler warnings on
  2146. MSVC 6.
  2147. Daniel (17 November 2005)
  2148. - I extended a patch from David Shaw to make libcurl _always_ provide an error
  2149. string in the given error buffer to address the flaw mention on 21 sep 2005.
  2150. Daniel (16 November 2005)
  2151. - Applied Albert Chin's patch that makes the libcurl.pc pkgconfig file get
  2152. installed on 'make install' time.
  2153. Daniel (14 November 2005)
  2154. - Quagmire reported that he needed to raise a NTLM buffer for SSPI to work
  2155. properly for a case, and so we did. We raised it even for non-SSPI builds
  2156. but it should not do any harm. http://curl.haxx.se/bug/view.cgi?id=1356715
  2157. - Jan Kunder's debian bug report
  2158. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338680 identified a weird
  2159. error message for when you try to upload a file and the requested directory
  2160. doesn't exist on the target server.
  2161. - Yang Tse fixed compiler warnings in lib/ssluse.c with OpenSSL 0.9.8 and in
  2162. lib/memdebug.h that showed up in his msvc builds.
  2163. Daniel (13 November 2005)
  2164. - Debian bug report 338681 by Jan Kunder: make curl better detect and report
  2165. bad limit-rate units:
  2166. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now curl will return
  2167. error if a bad unit is used.
  2168. - Thanks to this nice summary of poll() implementations:
  2169. http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene
  2170. Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote
  2171. connectin closure so we check for that case (too) and re-enable poll for
  2172. cygwin builds.
  2173. Daniel (12 November 2005)
  2174. - Eugene Kotlyarov found out that cygwin's poll() function isn't doing things
  2175. right: http://curl.haxx.se/mail/archive-2005-11/0045.html so we now disable
  2176. poll() and use select() on cygwin too (we already do the same choice on Mac
  2177. OS X)
  2178. - Dima Barsky patched problem #1348930: the GnuTLS code completely ignored
  2179. client certificates! (http://curl.haxx.se/bug/view.cgi?id=1348930).
  2180. Daniel (10 November 2005)
  2181. - David Lang fixed IPv6 support for TFTP!
  2182. - Introducing range stepping to the curl globbing support. Now you can specify
  2183. step counter by adding :[num] within the brackets when specifying a range:
  2184. [1-100:10]
  2185. [a-z:2]
  2186. If no step counter is set, it defaults to 1 as before:
  2187. [1-100]
  2188. [d-h]
  2189. Daniel (8 November 2005)
  2190. - Removed the use of AI_CANONNAME in the IPv6-enabled resolver functions since
  2191. we really have no use for reverse lookups of the address.
  2192. I truly hope these are the last reverse lookups we had lingering in the
  2193. code!
  2194. - Dmitry Bartsevich discovered some issues in compatibilty of SSPI-enabled
  2195. version of libcurl with different Windows versions. Current version of
  2196. libcurl imports SSPI functions from secur32.dll. However, under Windows NT
  2197. 4.0 these functions are located in security.dll, under Windows 9x - in
  2198. secur32.dll and Windows 2000 and XP contains both these DLLs (security.dll
  2199. just forwards calls to secur32.dll).
  2200. Dmitry's patch loads proper library dynamically depending on Windows
  2201. version. Function InitSecurityInterface() is used to obtain pointers to all
  2202. of SSPI function in one structure.
  2203. Daniel (31 October 2005)
  2204. - Vilmos Nebehaj improved libcurl's LDAP abilities:
  2205. The LDAP code in libcurl can't handle LDAP servers of LDAPv3 nor binary
  2206. attributes in LDAP objects. So, I made a quick patch to address these
  2207. problems.
  2208. The solution is simple: if we connect to an LDAP server, first try LDAPv3
  2209. (which is the preferred protocol as of now) and then fall back to LDAPv2.
  2210. In case of binary attributes, we first convert them to base64, just like the
  2211. openldap client does. It uses ldap_get_values_len() instead of
  2212. ldap_get_values() to be able to retrieve binary attributes correctly. I
  2213. defined the necessary LDAP macros in lib/ldap.c to be able to compile
  2214. libcurl without the presence of libldap
  2215. Daniel (27 October 2005)
  2216. - Nis Jorgensen filed bug report #1338648
  2217. (http://curl.haxx.se/bug/view.cgi?id=1338648) which really is more of a
  2218. feature request, but anyway. It pointed out that --max-redirs did not allow
  2219. it to be set to 0, which then would return an error code on the first
  2220. Location: found. Based on Nis' patch, now libcurl supports CURLOPT_MAXREDIRS
  2221. set to 0, or -1 for infinity. Added test case 274 to verify.
  2222. - tommink[at]post.pl reported in bug report #1337723
  2223. (http://curl.haxx.se/bug/view.cgi?id=1337723) that curl could not upload
  2224. binary data from stdin on Windows if the data contained control-Z (hex 1a)
  2225. since that is treated as end-of-file when read in text mode. Gisle Vanem
  2226. pointed out the fix, and I made both -T and --data-binary take advantage of
  2227. it.
  2228. - Jaz Fresh pointed out that if you used "-r [number]" as was wrongly described
  2229. in the man page, curl would send an invalid HTTP Range: header. The correct
  2230. way would be to use "-r [number]-" or even "-r -[number]". Starting now,
  2231. curl will warn if this is discovered, and automatically append a dash to the
  2232. range before passing it to libcurl.
  2233. Daniel (25 October 2005)
  2234. - Amol Pattekar reported a bug with great detail and a fine example in bug
  2235. #1326306 (http://curl.haxx.se/bug/view.cgi?id=1326306). When using the multi
  2236. interface and connecting to a host with multiple IP addresses, and one of
  2237. the addresses fails to connect (the server must exist and respond, just not
  2238. accept connections) libcurl leaks a socket descriptor. Thanks to the fine
  2239. report, I could find and fix this.
  2240. Daniel (22 October 2005)
  2241. - Dima Barsky reported a problem with GnuTLS-enabled libcurl in bug report
  2242. #1334338 (http://curl.haxx.se/bug/view.cgi?id=1334338). When reading an SSL
  2243. stream from a server and the server requests a "rehandshake", the current
  2244. code simply returns this as an error. I have no good way to test this, but
  2245. I've added a crude attempt of dealing with this situation slightly better -
  2246. it makes a blocking handshake if this happens. Done like this because fixing
  2247. this the "proper" way (that would handshake asynchronously) will require
  2248. quite some work and I really need a good way to test this to do such a
  2249. change.
  2250. Daniel (21 October 2005)
  2251. - "Ofer" reported a problem when libcurl re-used a connection and failed to do
  2252. it, it could then accidentally actually crash. Presumably, this concerns FTP
  2253. connections. http://curl.haxx.se/bug/view.cgi?id=1330310
  2254. - Temprimus improved the MSVC makefile so that the static debug SSL libs are
  2255. linked to the executable and not to the libcurld.lib
  2256. http://curl.haxx.se/bug/view.cgi?id=1326676
  2257. - Bradford Bruce made the windows resolver code properly return
  2258. CURLE_COULDNT_RESOLVE_PROXY and CURLE_COULDNT_RESOLVE_HOST on resolving
  2259. errors (as documented).
  2260. Daniel (20 October 2005)
  2261. - Dave Dribin made libcurl understand and handle cases when the server
  2262. (wrongly) sends *two* WWW-Authenticate headers for Digest. While this should
  2263. never happen in a sane world, libcurl previously got into an infinite loop
  2264. when this occurred. Dave added test 273 to verify this.
  2265. - Temprimus improved the MSVC makefile: "makes a build option available so if
  2266. you set rtlibcfg=static for the make, then it would build with /MT. The
  2267. default behaviour is /MD (the original)."
  2268. http://curl.haxx.se/bug/view.cgi?id=1326665
  2269. Daniel (14 October 2005)
  2270. - Reverted the LIBCURL_VERSION_NUM change from October 6. As Dave Dribin
  2271. reported, the define is used by the configure script and is assumed to use
  2272. the 0xYYXXZZ format. This made "curl-config --vernum" fail in the 7.15.0
  2273. release version.
  2274. Version 7.15.0 (13 October 2005)
  2275. Daniel (12 October 2005)
  2276. - Michael Sutton of iDEFENSE reported and I fixed a securitfy flaw in the NTLM
  2277. code that would overflow a buffer if given a too long user name or domain
  2278. name. This would happen if you enable NTLM authentication and either
  2279. A - pass in a user name and domain name to libcurl that together are longer
  2280. than 192 bytes
  2281. B - allow (lib)curl to follow HTTP "redirects" (Location: and the
  2282. appropriate HTTP 30x response code) and the new URL contains a URL with
  2283. a user name and domain name that together are longer than 192 bytes
  2284. See http://curl.haxx.se/docs/security.html for further details and updates
  2285. Daniel (5 October 2005)
  2286. - Darryl House reported a problem with using -z to download files from FTP.
  2287. It turned out that if the given time stamp was exact the same as the remote
  2288. time stamp, the file would still wrongly be downloaded. Added test case 272
  2289. to verify.
  2290. Daniel (4 October 2005)
  2291. - Domenico Andreoli fixed a man page malformat and removed odd (0xa0) bytes
  2292. from the configure script.
  2293. - Michael Wallner reported that the date parser had wrong offset stored for
  2294. the MEST and CEST time zones.
  2295. Daniel (27 September 2005)
  2296. - David Yan filed bug #1299181 (http://curl.haxx.se/bug/view.cgi?id=1299181)
  2297. that identified a silly problem with Content-Range: headers with the 'bytes'
  2298. keyword written in a different case than all lowercase! It would cause a
  2299. segfault!
  2300. - TJ Saunders of the proftpd project identified and pointed out problems with
  2301. the modified FTPS negotiation change of August 19 2005. Thus, we revert the
  2302. change back to pre-7.14.1 status.
  2303. Daniel (21 September 2005)
  2304. - Fixed "cut off" sentence in the libcurl-tutorial man page:
  2305. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329305
  2306. - Clarified in the curl_easy_setopt man page what the default
  2307. CURLOPT_WRITEFUNCTION and CURLOPT_WRITEDATA mean:
  2308. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329311
  2309. - Clarified in the curl_easy_setopt man page that CURLOPT_ERRORBUFFER
  2310. sometimes doesn't fill in the buffer even though it is supposed to:
  2311. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329313
  2312. - When CURLE_URL_MALFORMAT is returned due to a missing URL, it now has an
  2313. error string set.
  2314. Daniel (19 September 2005)
  2315. - Dmitry Bartsevich made the SSPI support work on Windows 9x as well.
  2316. Daniel (15 September 2005)
  2317. - Added a TFTP server to the test suite and made the test suite capable of
  2318. using it.
  2319. Daniel (7 September 2005)
  2320. - Ben Madsen's detailed reports that funnily enough only occurred with certain
  2321. glibc versions turned out to be curl using an already closed file handle
  2322. during certain conditions (like when saving FTP server "headers").
  2323. - Scott Davis helped me track down a problem in the test HTTP server that made
  2324. test case 56 wrongly fail at times. It turned out it was due to the server
  2325. finding the end of a chunked-encoded POST too early.
  2326. Daniel (6 September 2005)
  2327. - Now curl warns if an unknown variable is used in the -w/--writeout argument.
  2328. Daniel (4 September 2005)
  2329. - I applied Nicolas François' man page patch he posted to the Debian bug
  2330. tracker. It corrected two lines that started with apostrophes, which isn't
  2331. legal nroff format. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=326511
  2332. - Added --ftp-skip-pasv-ip to the command line tool, that sets the new
  2333. CURLOPT_FTP_SKIP_PASV_IP option. It makes libcurl re-use the control
  2334. connection's IP address when setting up the data connection instead of
  2335. extractting the IP address from the PASV response. It has turned out this
  2336. feature is frequently needed by people to circumvent silly servers and silly
  2337. firewalls, especially when FTPS is used and the PASV command-response is
  2338. sent encrtyped.
  2339. Sponsored by CU*Answers
  2340. Daniel (1 September 2005)
  2341. - John Kelly added TFTP support to libcurl. A bunch of new error codes was
  2342. added. TODO: add them to docs. add TFTP server to test suite. add TFTP to
  2343. list of protocols whereever those are mentioned.
  2344. Version 7.14.1 (1 September 2005)
  2345. Daniel (29 August 2005)
  2346. - Kevin Lussier pointed out a problem with curllib.dsp and how to fix it.
  2347. - Igor Polyakov fixed a rather nasty problem with the threaded name resolver
  2348. for Windows, that could lead to an Access Violation when the multi interface
  2349. was used due to an issue with how the resolver thread was and was not
  2350. terminated.
  2351. - Simon Josefsson brought a patch that allows curl to get built to use GNU GSS
  2352. instead of MIT/Heimdal for GSS capabilities.
  2353. Daniel (24 August 2005)
  2354. - Toby Peterson added CURLOPT_IGNORE_CONTENT_LENGTH to the library, accessible
  2355. from the command line tool with --ignore-content-length. This will make it
  2356. easier to download files from Apache 1.x (and similar) servers that are
  2357. still having problems serving files larger than 2 or 4 GB. When this option
  2358. is enabled, curl will simply have to wait for the server to close the
  2359. connection to signal end of transfer. I wrote test case 269 that runs a
  2360. simple test to verify that this works.
  2361. - (Trying hard to exclude emotions now.) valgrind version 3 suddenly renamed
  2362. the --logfile command line option to --log-file, and thus the test script
  2363. valgrind autodetection now has yet another version check to do and then it
  2364. alters the valgrind command line accordingly.
  2365. - Fixed CA cert verification using GnuTLS with the default bundle, which
  2366. previously failed due to GnuTLS not allowing x509 v1 CA certs by default.
  2367. Ralph Mitchell reported.
  2368. Daniel (19 August 2005)
  2369. - Norbert Novotny had problems with FTPS and he helped me work out a patch
  2370. that made curl run fine in his end. The key was to make sure we do the
  2371. SSL/TLS negotiation immediately after the TCP connect is done and not after
  2372. a few other commands have been sent like we did previously. I don't consider
  2373. this change necessary to obey the standards, I think this server is pickier
  2374. than what the specs allow it to be, but I can't see how this modified
  2375. libcurl code can add any problems to those who are interpreting the
  2376. standards more liberally.
  2377. Daniel (17 August 2005)
  2378. - Jeff Pohlmeyer found out that if you ask libcurl to load a cookiefile (with
  2379. CURLOPT_COOKIEFILE), add a cookie (with CURLOPT_COOKIELIST), tell it to
  2380. write the result to a given cookie jar and then never actually call
  2381. curl_easy_perform() - the given file(s) to read was never read but the
  2382. output file was written and thus it caused a "funny" result.
  2383. - While doing some tests for the bug above, I noticed that Firefox generates
  2384. large numbers (for the expire time) in the cookies.txt file and libcurl
  2385. didn't treat them properly. Now it does.
  2386. Daniel (15 August 2005)
  2387. - Added more verbose "warning" messages to the curl client for cases where it
  2388. fails to open/read files etc to help users diagnose why it doesn't do what
  2389. you'd expect it to. Converted lots of old messages to use the new generic
  2390. function I wrote for this purpose.
  2391. Daniel (13 August 2005)
  2392. - James Bursa identified a libcurl HTTP bug and a good way to repeat it. If a
  2393. site responds with bad HTTP response that doesn't contain any header at all,
  2394. only a response body, and the write callback returns 0 to abort the
  2395. transfer, it didn't have any real effect but the write callback would be
  2396. called once more anyway.
  2397. Daniel (12 August 2005)
  2398. - Based on Richard Clayton's reports, I found out that using curl -d @filename
  2399. when 'filename' was not possible to access made curl use a GET request
  2400. instead.
  2401. - The time condition illegal syntax warning is now inhibited if -s is used.
  2402. Daniel (10 August 2005)
  2403. - Mario Schroeder found out that one of the debug callbacks calls that regards
  2404. SSL data with the CURLINFO_TEXT type claimed that the data was one byte
  2405. larger than it actually is, thus falsely telling the application that the
  2406. terminating zero was part of the data.
  2407. Daniel (9 August 2005)
  2408. - Christopher R. Palmer fixed the offsets used for date parsings when the time
  2409. zone name of a daylight savings time was used. For example, PDT vs PDS. This
  2410. flaw was introduced with the new date parser (11 sep 2004 - 7.12.2).
  2411. Fortunately, no web server or cookie string etc should be using such time
  2412. zone names thus limiting the effect of this bug.
  2413. Daniel (8 August 2005)
  2414. - Jon Grubbs filed bug report #1249962
  2415. (http://curl.haxx.se/bug/view.cgi?id=1249962) which identified a problem
  2416. with NTLM on a HTTP proxy if an FTP URL was given. libcurl now properly
  2417. switches to pure HTTP internally when an HTTP proxy is used, even for FTP
  2418. URLs. The problem would also occur with other multi-pass auth methods.
  2419. Daniel (7 August 2005)
  2420. - When curl is built with GnuTLS, curl-config didn't include "SSL" when
  2421. --features was used.
  2422. Daniel (28 July 2005)
  2423. - If any of the options CURLOPT_HTTPGET, CURLOPT_POST and CURLOPT_HTTPPOST is
  2424. set to 1, CURLOPT_NOBODY will now automatically be set to 0.
  2425. Daniel (27 July 2005)
  2426. - Dan Fandrich changes over the last week: fixed numerous minor configure
  2427. option parsing flaws: --without-gnutls, --without-spnego --without-gssapi
  2428. and --without-krb4. Spellfixed several error messages.
  2429. - Peteris Krumins added CURLOPT_COOKIELIST and CURLINFO_COOKIELIST, which is a
  2430. simple interface to extracting and setting cookies in libcurl's internal
  2431. "cookie jar". See the new cookie_interface.c example code.
  2432. Daniel (13 July 2005)
  2433. - Diego Casorran provided patches to make curl build fine on Amiga again.
  2434. Daniel (12 July 2005)
  2435. - Adrian Schuur added trailer support in the chunked encoding stream. The
  2436. trailer is then sent to the normal header callback/stream. I wrote up test
  2437. case 266 to verify the basic functionality. Do note that test case 34
  2438. contains a flawed chunked encoding stream that still works the same.
  2439. Daniel (5 July 2005)
  2440. - Gisle Vanem came up with a nice little work-around for bug #1230118
  2441. (http://curl.haxx.se/bug/view.cgi?id=1230118). It seems the Windows (MSVC)
  2442. libc time functions may return data one hour off if TZ is not set and
  2443. automatic DST adjustment is enabled. This made curl_getdate() return wrong
  2444. value, and it also concerned internal cookie expirations etc.
  2445. Daniel (4 July 2005)
  2446. - Andrew Bushnell provided enough info for me to tell that we badly needed to
  2447. fix the CONNECT authentication code with multi-pass auth methods (such as
  2448. NTLM) as it didn't previously properly ignore response-bodies - in fact it
  2449. stopped reading after all response headers had been received. This could
  2450. lead to libcurl sending the next request and reading the body from the first
  2451. request as response to the second request. (I also renamed the function,
  2452. which wasn't strictly necessary but...)
  2453. The best fix would to once and for all make the CONNECT code use the
  2454. ordinary request sending/receiving code, treating it as any ordinary request
  2455. instead of the special-purpose function we have now. It should make it
  2456. better for multi-interface too. And possibly lead to less code...
  2457. Added test case 265 for this. It doesn't work as a _really_ good test case
  2458. since the test proxy is too stupid, but the test case helps when running the
  2459. debugger to verify.
  2460. Daniel (30 June 2005)
  2461. - Dan Fandrich improved the configure script's ability to figure out what kind
  2462. of strerror_r() API that is used when cross-compiling. If __GLIB__ is
  2463. defined, it assumes the glibc API. If not, it issues a notice as before that
  2464. the user needs to manually edit lib/config.h for this.
  2465. Daniel (23 June 2005)
  2466. - David Shaw's fix that unifies proxy string treatment so that a proxy given
  2467. with CURLOPT_PROXY can use a http:// prefix and user + password. The user
  2468. and password fields are now also URL decoded properly. Test case 264 added
  2469. to verify.
  2470. Daniel (22 June 2005)
  2471. - David Shaw updated libcurl.m4
  2472. Daniel (14 June 2005)
  2473. - Gisle Vanem fixed a potential thread handle leak. Bug report #1216500
  2474. (http://curl.haxx.se/bug/view.cgi?id=1216500). Comment in
  2475. http://curl.haxx.se/mail/lib-2005-06/0059.html
  2476. Daniel (13 June 2005)
  2477. - Made buildconf run libtoolize in the ares dir too (inspired by Tupone's
  2478. reverted patch).
  2479. Daniel (9 June 2005)
  2480. - Incorporated Tupone's findtool fix in buildconf (slightly edited)
  2481. - Incorporated Tupone's head -n fix in buildconf.
  2482. Daniel (8 June 2005)
  2483. - Reverted Tupone's patch again, it broke numerous autobuilds. Let's apply it
  2484. in pieces, one by one and see what we need to adjust to work all over.
  2485. Daniel (6 June 2005)
  2486. - Tupone Alfredo fixed three problems in buildconf:
  2487. 1) findtool does look per tool in PATH and think ./perl is the perl
  2488. executable, while is just a local directory (I have . in the PATH)
  2489. 2) I got several warning for head -1 deprecated in favour of head -n 1
  2490. 3) ares directory is missing some file (missing is missing :-) ) because
  2491. automake and friends is not run.
  2492. Daniel (3 June 2005)
  2493. - Added docs/libcurl/getinfo-times, based on feedback from 'Edi':
  2494. http://curl.haxx.se/feedback/display.cgi?id=11178325798299&support=yes
  2495. - Andres Garcia provided yet another text mode patch for several test cases so
  2496. that they do text comparisions better on Windows (newline-wise).
  2497. Daniel (1 June 2005)
  2498. - The configure check for c-ares now adds the cares lib before the other libs,
  2499. to make it build fine with mingw. Inspired by Tupone Alfredo's bug report
  2500. and patch: http://curl.haxx.se/bug/view.cgi?id=1212940
  2501. Daniel (31 May 2005)
  2502. - Todd Kulesza reported a flaw in the proxy option, since a numerical IPv6
  2503. address was not possible to use. It is now, but requires it written
  2504. RFC2732-style, within brackets - which incidently is how you enter numerical
  2505. IPv6 addresses in URLs. Test case 263 added to verify.
  2506. Daniel (30 May 2005)
  2507. - Eric Cooper reported about a problem with HTTP servers that responds with
  2508. binary zeroes within the headers. They confused libcurl to do wrong so the
  2509. downloaded headers become incomplete. The fix is now verified with test case
  2510. 262. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=310948
  2511. Daniel (25 May 2005)
  2512. - Fixed problems with the test suite, and in particular the FTP test cases
  2513. since it previously was failing every now and then in a nonsense manner.
  2514. - --trace-time now outputs the full microsecond, all 6 digits.
  2515. Daniel (24 May 2005)
  2516. - Andres Garcia provided a text mode patch for several test cases so that they
  2517. do text comparisions better on Windows (newline-wise).
  2518. - Any 2xx response (and not just 200) is now considered a fine response to
  2519. TYPE, as some servers obviously sends a 226 there. Added test case 261 to
  2520. verify. Based on a question/report by Georg Wicherski.
  2521. Daniel (20 May 2005)
  2522. - Improved runtests.pl to allow stdout tests to be mode=text as well, just
  2523. as file comparisons already supports. Added this info to the FILEFORMAT
  2524. docs.
  2525. Daniel (18 May 2005)
  2526. - John McGowan identified a problem in bug report #1204435
  2527. (http://curl.haxx.se/bug/view.cgi?id=1204435) with malformed URLs like
  2528. "http://somehost?data" as it added a slash too much in the request ("GET
  2529. /?data/"...). Added test case 260 to verify.
  2530. - The configure check for strerror_r() failed to detect the proper API at
  2531. times, like on HP-UX 10.20. Then lib/strerror.c badly assumed the glibc
  2532. version if the posix define wasn't set (since it _had_ found a strerror_r).
  2533. Daniel (16 May 2005)
  2534. - The gmtime_r() function in HP-UX 10.20 is broken. About 13 test cases fail
  2535. due to this. There's now a configure check that attempts to detect the bad
  2536. function and not use it on such systems.
  2537. Version 7.14.0 (16 May 2005)
  2538. Daniel (13 May 2005)
  2539. - Grigory Entin reported that curl's configure detects a fine poll() for Mac
  2540. OS X 10.4 (while 10.3 or later detected a "bad" one), but the executable
  2541. doesn't work as good as if built without poll(). I've adjusted the configure
  2542. to always skip the fine-poll() test on Mac OS X (darwin).
  2543. Daniel (12 May 2005)
  2544. - When doing a second request (after a disconnect) using the same easy handle,
  2545. over a proxy that uses NTLM authentication, libcurl failed to use NTLM again
  2546. properly (the auth method was accidentally reset to the same as had been set
  2547. for host auth, which defaults to Basic). Bug report #1200661
  2548. (http://curl.haxx.se/bug/view.cgi?id=1200661) identified the the problem and
  2549. the fix.
  2550. - If -z/--time-cond is used with an invalid date syntax, this is no longer
  2551. silently discarded. Instead a proper warning message is diplayed that
  2552. informs about it. But it still continues without the condition.
  2553. Version 7.14.0-pre2 (11 May 2005)
  2554. Daniel (11 May 2005)
  2555. - Starting now, libcurl sends a little different set of headers in its default
  2556. HTTP requests:
  2557. A) Normal non-proxy HTTP:
  2558. - no more "Pragma: no-cache" (this only makes sense to proxies)
  2559. B) Non-CONNECT HTTP request over proxy:
  2560. - "Pragma: no-cache" is used (like before)
  2561. - "Proxy-Connection: Keep-alive" (for older style 1.0-proxies)
  2562. C) CONNECT HTTP request over proxy:
  2563. - "Host: [name]:[port]"
  2564. - "Proxy-Connection: Keep-alive"
  2565. The A) case is mostly to reduce the default header size and remove a
  2566. pointless header.
  2567. The B) is to address (rare) problems with HTTP 1.0 proxies
  2568. The C) headers are both to address (rare) problems with some proxies. The
  2569. code in libcurl that deals with CONNECT requests need a rewrite, but it
  2570. feels like a too big a job for me to do now. Details are added in the code
  2571. comments for now.
  2572. Updated a large amount of test cases to reflect the news.
  2573. Daniel (10 May 2005)
  2574. - Half-baked attempt to bail out if select() returns _only_ errorfds when the
  2575. transfer is in progress. An attempt to fix Allan's problem. See
  2576. http://curl.haxx.se/mail/lib-2005-05/0073.html and the rest of that thread
  2577. for details.
  2578. I'm still not sure this is the right fix, but...
  2579. Version 7.14.0-pre1 (9 May 2005)
  2580. Daniel (2 May 2005)
  2581. - Sort of "fixed" KNOWN_BUGS #4: curl now builds IPv6 enabled on AIX 4.3. At
  2582. least it should no longer cause a compiler error. However, it does not have
  2583. AI_NUMERICHOST so we cannot getaddrinfo() any numerical addresses with it
  2584. (we use that for FTP PORT/EPRT)! So, I modified the configure check that
  2585. checks if the getaddrinfo() is working, to use AI_NUMERICHOST since then
  2586. it'll fail on AIX 4.3 and it will automatically build with IPv6 support
  2587. disabled.
  2588. - Added --trace-time that when used adds a time stamp to each trace line that
  2589. --trace, --trace-ascii and --verbose output. I also made the '>' display
  2590. separate each line on the linefeed so that HTTP requests etc look nicer in
  2591. the -v output.
  2592. - Made curl recognize the environment variables Lynx (and others?) support for
  2593. pointing out the CA cert path/file: SSL_CERT_DIR and SSL_CERT_FILE. If
  2594. CURL_CA_BUNDLE is not set, they are checked afterwards.
  2595. Like before: on windows if none of these are set, it checks for the ca cert
  2596. file like this:
  2597. 1. application's directory
  2598. 2. current working directory
  2599. 3. Windows System directory (e.g. C:\windows\system32)
  2600. 4. Windows Directory (e.g. C:\windows)
  2601. 5. all directories along %PATH%
  2602. Daniel (1 May 2005)
  2603. - The runtests.pl script now starts test servers by doing fork() and exec()
  2604. instead of the previous approach. This is less complicated and should
  2605. hopefully lead to less "leaked" servers (servers that aren't stopped
  2606. properly when the tests are stopped).
  2607. - Alexander Zhuravlev found a case when you did "curl -I [URL]" and it
  2608. complained on the chunked encoding, even though a HEAD should never return a
  2609. body and thus it cannot be a chunked-encoding problem!
  2610. Daniel (30 April 2005)
  2611. - Alexander Zhuravlev found out that (lib)curl SIGSEGVed when using
  2612. --interface on an address that can't be bound.
  2613. Daniel (28 April 2005)
  2614. - Working on fixing up test cases to mark sections as 'mode=text' for things
  2615. that curl writes as text files, since then they can get different line
  2616. endings depending on OS. Andrés García helps me work this out.
  2617. Did lots of other minor tweaks on the test scripts to work better and more
  2618. reliably find test servers and also kill test servers.
  2619. - Dan Fandrich pointed out how the runtests.pl script killed the HTTP server
  2620. instead of the HTTPS server when closing it down.
  2621. Daniel (27 April 2005)
  2622. - Paul Moore made curl check for the .curlrc file (_curlrc on windows) on two
  2623. more places. First, CURL_HOME is a new environment variable that is used
  2624. instead of HOME if it is set, to point out where the default config file
  2625. lives. If there's no config file in the dir pointed out by one of the
  2626. environment variables, the Windows version will instead check the same
  2627. directory the executable curl is located in.
  2628. Daniel (26 April 2005)
  2629. - Cory Nelson's work on nuking compiler warnings when building on x64 with
  2630. VS2005.
  2631. Daniel (25 April 2005)
  2632. - Fred New reported a bug where we used Basic auth and user name and password
  2633. in .netrc, and when following a Location: the subsequent requests didn't
  2634. properly use the auth as found in the netrc file. Added test case 257 to
  2635. verify my fix.
  2636. - Based on feedback from Cory Nelson, I added some preprocessor magic in
  2637. */setup.h and */config-win32.h to build fine with VS2005 on x64.
  2638. Daniel (23 April 2005)
  2639. - Alex Suykov made the curl tool now assume that uploads using HTTP:// or
  2640. HTTPS:// are the only ones that show output and thus motivates a switched
  2641. off progress meter if the output is sent to the terminal. This makes FTP
  2642. uploads without '>', -o or -O show the progress meter.
  2643. Daniel (22 April 2005)
  2644. - Dave Dribin's MSVC makefile fix: set CURL_STATICLIB when it builds static
  2645. library variants.
  2646. - Andres Garcia fixed configure to set the proper define when building static
  2647. libcurl on windows.
  2648. - --retry-delay didn't work.
  2649. Daniel (18 April 2005)
  2650. - Olivier reported that even though he used CURLOPT_PORT, libcurl clearly
  2651. still used the default port. He was right. I fixed the problem and added the
  2652. test cases 521, 522 and 523 to verify the fix.
  2653. - Toshiyuki Maezawa reported that when doing a POST with a read callback,
  2654. libcurl didn't properly send an Expect: 100-continue header. It does now.
  2655. - I committed by mig change in the test suite's FTP server that moves out all
  2656. socket/TCP code to a separate C program named sockfilt. And added 4 new
  2657. test cases for FTP over IPv6.
  2658. Daniel (8 April 2005)
  2659. - Cory Nelson reported a problem with a HTTP server that responded with a 304
  2660. response containing an "illegal" Content-Length: header, which was not
  2661. properly ignored by libcurl. Now it is. Test case 249 verifies.
  2662. Daniel (7 April 2005)
  2663. - Added ability to build and run with GnuTLS as an alternative to OpenSSL for
  2664. the secure layer. configure --with-gnutls enables with. Note that the
  2665. previous OpenSSL check still has preference and if it first detects OpenSSL,
  2666. it will not check for GnuTLS. You may need to explictly diable OpenSSL with
  2667. --without-ssl.
  2668. This work has been sponsored by The Written Word.
  2669. Daniel (5 April 2005)
  2670. - Christophe Legry fixed the post-upload check for FTP to not complain if the
  2671. upload was skipped due to a time-condition as set with
  2672. CURLOPT_TIMECONDITION. I added test case 247 and 248 to verify.
  2673. Version 7.13.2 (5 April 2005)
  2674. Daniel (4 April 2005)
  2675. - Marcelo Juchem fixed the MSVC makefile for libcurl
  2676. - Gisle Vanem fixed a crash in libcurl, that could happen if the easy handle
  2677. was killed before the threading resolver (windows only) still hadn't
  2678. completed.
  2679. - Hardeep Singh reported a problem doing HTTP POST with Digest. (It was
  2680. actually also affecting NTLM and Negotiate.) It turned out that if the
  2681. server responded with 100 Continue before the initial 401 response, libcurl
  2682. didn't take care of the response properly. Test case 245 and 246 added to
  2683. verify this.
  2684. Daniel (30 March 2005)
  2685. - Andres Garcia modified the configure script to check for libgdi32 before
  2686. libcrypto, to make the SSL check work fine on msys/mingw.
  2687. Daniel (29 March 2005)
  2688. - Tom Moers identified a flaw when you sent a POST with Digest authentication,
  2689. as in the first request when curl sends a POST with Content-Length: 0, it
  2690. still forcibly closed the connection before doing the next step in the auth
  2691. negotiation.
  2692. - Jesper Jensen found out that FTP-SSL didn't work since my FTP
  2693. rewrite. Fixing that was easy, but it also revealed a much worse problem:
  2694. the FTP server response reader function didn't properly deal with reading
  2695. responses in multiple tiny chunks properly! I modified the FTP server to
  2696. allow it to produce such split-up responses to make sure curl deals with
  2697. them as it should.
  2698. - Based on Augustus Saunders' comments and findings, the HTTP output auth
  2699. function was fixed to use the proper proxy authentication when multiple ones
  2700. are accepted. test 239 and test 243 were added to repeat the problems and
  2701. verify the fixes.
  2702. --proxy-anyauth was added to the curl tool
  2703. Daniel (16 March 2005)
  2704. - Tru64 and some IRIX boxes seem to not like test 237 as it is. Their
  2705. inet_addr() functions seems to use &255 on all numericals in a ipv4 dotted
  2706. address which makes a different failure... Now I've modified the ipv4
  2707. resolve code to use inet_pton() instead in an attempt to make these systems
  2708. better detect this as a bad IP address rather than creating a toally bogus
  2709. address that is then passed on and used.
  2710. Daniel (15 March 2005)
  2711. - Dan Fandrich made the code properly use the uClibc's version of
  2712. inet_ntoa_r() when built with it.
  2713. - Added test 237 and 238: test EPSV and PASV response handling when they get
  2714. well- formated data back but using illegal values. In 237 PASV gets an IP
  2715. address that is way bad. In 238 EPSV gets a port that is way out of range.
  2716. Daniel (14 March 2005)
  2717. - Added a few missing features to the curl-config --features list
  2718. - Modified testcurl.pl to now offer
  2719. 1 - command line options for all info it previously only read from
  2720. file: --name, --email, --desc and --configure
  2721. 2 - --nocvsup makes it not attempt to do cvs update
  2722. 3 - --crosscompile informs it and makes it not attempt things it can't do
  2723. - Fixed numerous win32 compiler warnings.
  2724. - Removed the lib/security.h file since it shadowed the mingw/win32 header
  2725. with the same name which is needed for SSPI builds. The contents of the
  2726. former security.h is now i krb4.h
  2727. - configure --enable-sspi now enables SSPI in the build. It only works for
  2728. windows builds (including cross-compiles for windows).
  2729. Daniel (12 March 2005)
  2730. - David Houlder added --form-string that adds that string to a multipart
  2731. formpost part, without special characters having special meanings etc like
  2732. --form features.
  2733. Daniel (11 March 2005)
  2734. - curl_version_info() returns the feature bit CURL_VERSION_SSPI if it was
  2735. built with SSPI support.
  2736. - Christopher R. Palmer made it possible to build libcurl with the
  2737. USE_WINDOWS_SSPI on Windows, and then libcurl will be built to use the
  2738. native way to do NTLM. SSPI also allows libcurl to pass on the current user
  2739. and its password in the request.
  2740. Daniel (9 March 2005)
  2741. - Dan F improved the SSL lib setup in configure.
  2742. - Nodak Sodak reported a crash when using a SOCKS4 proxy.
  2743. - Jean-Marc Ranger pointed out an embarassing debug printf() leftover in the
  2744. multi interface code.
  2745. - Adjusted the man page for the curl_getdate() return value for dates after
  2746. year 2038. For 32 bit time_t it returns 0x7fffffff but for 64bit time_t it
  2747. returns either the correct value or even -1 on some systems that still seem
  2748. to not deal with this properly. Tor Arntsen found a 64bit AIX system for us
  2749. that did the latter. Gwenole Beauchesne's Mandrake patch put the lights on
  2750. this problem in the first place.
  2751. Daniel (8 March 2005)
  2752. - Dominick Meglio reported that using CURLOPT_FILETIME when transferring a FTP
  2753. file got a Last-Modified: header written to the data stream, corrupting the
  2754. actual data. This was because some conditions from the previous FTP code was
  2755. not properly brought into the new FTP code. I fixed and I added test case
  2756. 520 to verify. (This bug was introduced in 7.13.1)
  2757. - Dan Fandrich fixed the configure --with-zlib option to always consider the
  2758. given path before any standard paths.
  2759. Daniel (6 March 2005)
  2760. - Randy McMurchy was the first to report that valgrind.pm was missing from the
  2761. release archive and thus 'make test' fails.
  2762. Daniel (5 March 2005)
  2763. - Dan Fandrich added HAVE_FTRUNCATE to several config-*.h files.
  2764. - Added test case 235 that makes a resumed upload of a file that isn't present
  2765. on the remote side. This then converts the operation to an ordinary STOR
  2766. upload. This was requested/pointed out by Ignacio Vazquez-Abrams.
  2767. It also proved (and I fixed) a bug in the newly rewritten ftp code (and
  2768. present in the 7.13.1 release) when trying to resume an upload and the
  2769. servers returns an error to the SIZE command. libcurl then loops and sends
  2770. SIZE commands infinitely.
  2771. - Dan Fandrich fixed a SSL problem introduced on February 9th that made
  2772. libcurl attempt to load the whole random file to seed the PRNG. This is
  2773. really bad since this turns out to be using /dev/urandom at times...
  2774. Version 7.13.1 (4 March 2005)
  2775. Daniel (4 March 2005)
  2776. - Dave Dribin made it possible to set CURLOPT_COOKIEFILE to "" to activate
  2777. the cookie "engine" without having to provide an empty or non-existing file.
  2778. - Rene Rebe fixed a -# crash when more data than expected was retrieved.
  2779. Daniel (22 February 2005)
  2780. - NTLM and ftp-krb4 buffer overflow fixed, as reported here:
  2781. http://www.securityfocus.com/archive/1/391042 and the CAN report here:
  2782. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0490
  2783. If these security guys were serious, we'd been notified in advance and we
  2784. could've saved a few of you a little surprise, but now we weren't.
  2785. Daniel (19 February 2005)
  2786. - Ralph Mitchell reported a flaw when you used a proxy with auth, and you
  2787. requested data from a host and then followed a redirect to another
  2788. host. libcurl then didn't use the proxy-auth properly in the second request,
  2789. due to the host-only check for original host name wrongly being extended to
  2790. the proxy auth as well. Added test case 233 to verify the flaw and that the
  2791. fix removed the problem.
  2792. Daniel (18 February 2005)
  2793. - Mike Dobbs reported a mingw build failure due to the lack of
  2794. BUILDING_LIBCURL being defined when libcurl is built. Now this is defined by
  2795. configure when mingw is used.
  2796. Daniel (17 February 2005)
  2797. - David in bug report #1124588 found and fixed a socket leak when libcurl
  2798. didn't close the socket properly when returning error due to failing
  2799. localbind
  2800. Daniel (16 February 2005)
  2801. - Christopher R. Palmer reported a problem with HTTP-POSTing using "anyauth"
  2802. that picks NTLM. Thanks to David Byron letting me test NTLM against his
  2803. servers, I could quickly repeat and fix the problem. It turned out to be:
  2804. When libcurl POSTs without knowing/using an authentication and it gets back
  2805. a list of types from which it picks NTLM, it needs to either continue
  2806. sending its data if it keeps the connection alive, or not send the data but
  2807. close the connection. Then do the first step in the NTLM auth. libcurl
  2808. didn't send the data nor close the connection but simply read the
  2809. response-body and then sent the first negotiation step. Which then failed
  2810. miserably of course. The fixed version forces a connection if there is more
  2811. than 2000 bytes left to send.
  2812. Daniel (14 February 2005)
  2813. - The configure script didn't check for ENGINE_load_builtin_engines() so it
  2814. was never used.
  2815. Daniel (11 February 2005)
  2816. - Removed all uses of strftime() since it uses the localised version of the
  2817. week day names and month names and servers don't like that.
  2818. Daniel (10 February 2005)
  2819. - Now the test script disables valgrind-testing when the test suite runs if
  2820. libcurl is built shared. Otherwise valgrind only tests the shell that runs
  2821. the wrapper-script named 'curl' that is a front-end to curl in this case.
  2822. This should also fix the huge amount of reports of false positives when
  2823. valgrind has identified leaks in (ba)sh and not in curl and people report
  2824. that as curl bugs. Bug report #1116672 is one example.
  2825. Also, the valgrind report parser has been adapted to check that at least one
  2826. of the sources in a stack strace is one of (lib)curl's source files or
  2827. otherwise it will not consider the problem to concern (lib)curl.
  2828. - Marty Kuhrt streamlined the VMS build.
  2829. Daniel (9 February 2005)
  2830. - David Byron fixed his SSL problems, initially mentioned here:
  2831. http://curl.haxx.se/mail/lib-2005-01/0240.html. It turned out we didn't use
  2832. SSL_pending() as we should.
  2833. - Converted lots of FTP code to a statemachine, so that the multi interface
  2834. doesn't block while communicating commands-responses with an FTP server.
  2835. I've added a comment like BLOCKING in the code on all spots I could find
  2836. where we still have blocking operations. When we change curl_easy_perform()
  2837. to use the multi interface, we'll also be able to simplify the code since
  2838. there will only be one "internal interface".
  2839. While doing this, I've now made CURLE_FTP_ACCESS_DENIED separate from the
  2840. new CURLE_LOGIN_DENIED. The first one is now access denied to a function,
  2841. like changing directory or retrieving a file, while the second means that we
  2842. were denied login.
  2843. The CVS tag 'before_ftp_statemachine' was set just before this went in, in
  2844. case of future need.
  2845. - Gisle made the DICT code send CRLF and not just LF as the spec says so.
  2846. Daniel (8 February 2005)
  2847. - Gisle fixed problems when libcurl runs out of memory, and worked on making
  2848. sure the proper error code is returned for those occations.
  2849. Daniel (7 February 2005)
  2850. - Maruko pointed out a problem with inflate decompressing exactly 64K
  2851. contents.
  2852. Daniel (5 February 2005)
  2853. - Eric Vergnaud found a use of an uninitialised variable in the ftp when doing
  2854. PORT on ipv6-enabled hosts.
  2855. - David Byron pointed out we could use BUFSIZE to read data (in
  2856. lib/transfer.c) instead of using BUFSIZE -1.
  2857. Version 7.13.0 (1 February 2005)
  2858. Daniel (31 January 2005)
  2859. - Added Lars Nilsson's htmltitle.cc example
  2860. Daniel (30 January 2005)
  2861. - Fixed a memory leak when using the multi interface and the DO operation
  2862. failed (as in test case 205).
  2863. - Fixed a valgrind warning for file:// operations.
  2864. - Fixed a valgrind report in the url globbing code for the curl command line
  2865. tool.
  2866. - Bugfixed the parser that scans the valgrind report outputs (in runtests.pl).
  2867. I noticed that it previously didn't detect and report the "Conditional jump
  2868. or move depends on uninitialised value(s)" error. When I fixed this, I
  2869. caught a few curl bugs with it. And then I had to spend time to make the
  2870. test suite IGNORE these errors when OpenSSL is used since it produce massive
  2871. amounts of valgrind warnings (but only of the "Conditional..." kind it
  2872. seems). So, if a test that requires SSL is run, it ignores the
  2873. "Conditional..." errors, and you'll get a "valgrind PARTIAL" output instead
  2874. of "valgrind OK".
  2875. Daniel (29 January 2005)
  2876. - Using the multi interface, and doing a requsted a re-used connection that
  2877. gets closed just after the request has been sent failed and did not re-issue
  2878. a request on a fresh reconnect like the easy interface did. Now it does!
  2879. - Define CURL_MULTIEASY when building libcurl (lib/easy.c to be exact), to use
  2880. my new curl_easy_perform() that uses the multi interface to run the
  2881. request. It is a great testbed for the multi interface and I believe we
  2882. shall do it this way for real in the future when we have a successor to
  2883. curl_multi_fdset(). I've used this approach to detect and fix several of the
  2884. recent multi-interfaces issues.
  2885. - Adjusted the KNOWN_BUGS #17 fix a bit more since the FTP code also did some
  2886. bad assumptions.
  2887. - multi interface: when a request is denied due to "Maximum redirects
  2888. followed" libcurl leaked the last Location: URL.
  2889. - Connect failures with the multi interface was often returned as "connect()
  2890. timed out" even though the reason was different.
  2891. Daniel (28 January 2005)
  2892. - KNOWN_BUGS #17 fixed. A DNS cache entry may not remain locked between two
  2893. curl_easy_perform() invokes. It was previously unlocked at disconnect, which
  2894. could mean that it remained locked between multiple transfers. The DNS cache
  2895. may not live as long as the connection cache does, as they are separate.
  2896. To deal with the lack of DNS (host address) data availability in re-used
  2897. connections, libcurl now keeps a copy of the IP adress as a string, to be
  2898. able to show it even on subsequent requests on the same connection.
  2899. The problem could be made to appear with this stunt:
  2900. 1. create a multi handle
  2901. 2. add an easy handle
  2902. 3. fetch a URL that is persistent (leaves the connection alive)
  2903. 4. remove the easy handle from the multi
  2904. 5. kill the multi handle
  2905. 6. create a multi handle
  2906. 7. add the same easy handle to the new multi handle
  2907. 8. fetch a URL from the same server as before (re-using the connection)
  2908. - Stephen More pointed out that CURLOPT_FTPPORT and the -P option didn't work
  2909. when built ipv6-enabled. I've now made a fix for it. Writing test cases for
  2910. custom port hosts turned too tricky so unfortunately there's none.
  2911. Daniel (25 January 2005)
  2912. - Ian Ford asked about support for the FTP command ACCT, and I discovered it
  2913. is present in RFC959... so now (lib)curl supports it as well. --ftp-account
  2914. and CURLOPT_FTP_ACCOUNT set the account string. (The server may ask for an
  2915. account string after PASS have been sent away. The client responds
  2916. with "ACCT [account string]".) Added test case 228 and 229 to verify the
  2917. functionality. Updated the test FTP server to support ACCT somewhat.
  2918. - David Shaw contributed a fairly complete and detailed autoconf test you can
  2919. use to detect libcurl and setup variables for the protocols the installed
  2920. libcurl supports: docs/libcurl/libcurl.m4
  2921. Daniel (21 January 2005)
  2922. - Major FTP third party transfer overhaul.
  2923. These four options are now obsolete: CURLOPT_SOURCE_HOST,
  2924. CURLOPT_SOURCE_PATH, CURLOPT_SOURCE_PORT (this option didn't work before)
  2925. and CURLOPT_PASV_HOST.
  2926. These two options are added: CURLOPT_SOURCE_URL and CURLOPT_SOURCE_QUOTE.
  2927. The target-side didn't use the proper path with RETR, and thus this only
  2928. worked correctly in the login path (i.e without doing any CWD). The source-
  2929. side still uses a wrong path, but the fix for this will need to wait. Verify
  2930. the flaw by using a source URL with included %XX-codes.
  2931. Made CURLOPT_FTPPORT control weather the target operation should use PORT
  2932. (or not). The other side thus uses passive (PASV) mode.
  2933. Updated the ftp3rdparty.c example source to use the updated options.
  2934. Added support for a second FTP server in the test suite. Named... ftp2.
  2935. Added test cases 230, 231 and 232 as a few first basic tests of very simple
  2936. 3rd party transfers.
  2937. Changed the debug output to include 'target' and 'source' when a 3rd party
  2938. is being made, to make it clearer what commands/responses came on what
  2939. connection.
  2940. Added three new command line options: --3p-url, --3p-user and --3p-quote.
  2941. Documented the command line options and the curl_easy_setopt options related
  2942. to third party transfers.
  2943. (Temporarily) disabled the ability to re-use an existing connection for the
  2944. source connection. This is because it needs to force a new in case the
  2945. source and target is the same host, and the host name check is trickier now
  2946. when the source is identified with a full URL instead of a plain host name
  2947. like before.
  2948. TODO (short-term) for 3rd party transfers: quote support. The options are
  2949. there, we need to add test cases to verify their functionality.
  2950. TODO (long-term) for 3rd party transfers: IPv6 support (EPRT and EPSV etc)
  2951. and SSL/TSL support.
  2952. Daniel (20 January 2005)
  2953. - Philippe Hameau found out that -Q "+[command]" didn't work, although some
  2954. code was written for it. I fixed and added test case 227 to verify it.
  2955. The curl.1 man page didn't mention the '+' so I added it.
  2956. Daniel (19 January 2005)
  2957. - Stephan Bergmann made libcurl return CURLE_URL_MALFORMAT if an FTP URL
  2958. contains %0a or %0d in the user, password or CWD parts. (A future fix would
  2959. include doing it for %00 as well - see KNOWN_BUGS for details.) Test case
  2960. 225 and 226 were added to verify this
  2961. - Stephan Bergmann pointed out two flaws in libcurl built with HTTP disabled:
  2962. 1) the proxy environment variables are still read and used to set HTTP proxy
  2963. 2) you couldn't disable http proxy with CURLOPT_PROXY (since the option was
  2964. disabled). This is important since apps may want to disable HTTP proxy
  2965. without actually knowing if libcurl was built to disable HTTP or not.
  2966. Based on Stephan's patch, both these issues should now be fixed.
  2967. Daniel (18 January 2005)
  2968. - Cody Jones' enhanced version of Samuel Díaz García's MSVC makefile patch was
  2969. applied.
  2970. Daniel (16 January 2005)
  2971. - Alex aka WindEagle pointed out that when doing "curl -v dictionary.com", curl
  2972. assumed this used the DICT protocol. While guessing protocols will remain
  2973. fuzzy, I've now made sure that the host names must start with "[protocol]."
  2974. for them to be a valid guessable name. I also removed "https" as a prefix
  2975. that indicates HTTPS, since we hardly ever see any host names using that.
  2976. Daniel (13 January 2005)
  2977. - Inspired by Martijn Koster's patch and example source at
  2978. http://www.greenhills.co.uk/mak/gentoo/curl-eintr-bug.c, I now made the
  2979. select() and poll() calls properly loop if they return -1 and errno is
  2980. EINTR. glibc docs for this is found here:
  2981. http://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html
  2982. This last link says BSD doesn't have this "effect". Will there be a problem
  2983. if we do this unconditionally?
  2984. Daniel (11 January 2005)
  2985. - Dan Torop cleaned up a few no longer used variables from David Phillips'
  2986. select() overhaul fix.
  2987. - Cyrill Osterwalder posted a detailed analysis about a bug that occurs when
  2988. using a custom Host: header and curl fails to send a request on a re-used
  2989. persistent connection and thus creates a new connection and resends it. It
  2990. then sent two Host: headers. Cyrill's analysis was posted here:
  2991. http://curl.haxx.se/mail/archive-2005-01/0022.html
  2992. - Bruce Mitchener identified (bug report #1099640) the never-ending SOCKS5
  2993. problem with the version byte and the check for bad versions. Bruce has lots
  2994. of clues on this, and based on his suggestion I've now removed the check of
  2995. that byte since it seems to be able to contain 1 or 5.
  2996. Daniel (10 January 2005)
  2997. - Pavel Orehov reported memory problems with the multi interface in bug report
  2998. #1098843. In short, a shared DNS cache was setup for a multi handle and when
  2999. the shared cache was deleted before the individual easy handles, the latter
  3000. cleanups caused read/writes to already freed memory.
  3001. - Hzhijun reported a memory leak in the SSL certificate code, that leaked the
  3002. remote certificate name when it didn't match the used host name.
  3003. Gisle (8 January 2005)
  3004. - Added Makefile.Watcom files (src/lib). Updated Makefile.dist.
  3005. Daniel (7 January 2005)
  3006. - Improved the test script's valgrind log parser to actually work! Also added
  3007. the ability to disable the log scanner for specific test cases. Test case
  3008. 509 results in numerous problems and leaks in OpenSSL and has to get it
  3009. disabled.
  3010. Daniel (6 January 2005)
  3011. - Fixed a single-byte read out of bounds in test case 39 in the curl tool code
  3012. (i.e not in the library).
  3013. - Bug report #1097019 identified a problem when doing -d "data" with -G and
  3014. sending it to two URLs with {}. Added test 199 to verify the fix.
  3015. Daniel (4 January 2005)
  3016. - Marty Kuhrt adjusted a VMS build script slightly
  3017. - Kai Sommerfeld and Gisle Vanem fixed libcurl to build with IPv6 support on
  3018. Win2000.
  3019. Daniel (2 January 2005)
  3020. - Alex Neblett updated the MSVC makefiles slightly.
  3021. Daniel (25 December 2004)
  3022. - Removed src/config.h.in from CVS, it is now copied from the (generated)
  3023. lib/config.h.in instead, as they can very well be the same. This removes a
  3024. "manual hassle". You may want to re-run buildconf now.
  3025. - Werner Koch filed Debian bug report #286794, mentioning that curl contained
  3026. non-free (by Debian's view) source code. This was Angus Mackay's
  3027. src/getpass.c source code. I tried to contact him about it to quickly solve
  3028. this issue, but his email addresses bounce and I got some time "over" and
  3029. reimplemented the functionality once brought by Angus. We no longer use any
  3030. of Angus' original code and the new function is much simpler (IMO). Issue
  3031. solved.
  3032. Daniel (24 December 2004)
  3033. - David Shaw added --protocols to curl-config, so that it now lists all
  3034. protocols libcurl was built to support. --feature no longer lists disabled
  3035. protocols.
  3036. Daniel (23 December 2004)
  3037. - David Shaw fixed the configure --disable-[protocol] variables so that
  3038. curl-config --feature now works correctly!
  3039. Daniel (22 December 2004)
  3040. - Rune Kleveland fixed a minor memory leak for received cookies with the
  3041. (rare) version attribute set.
  3042. - Marcin Konicki provided two configure fixes and a source fix to make curl
  3043. build out-of-the-box on BeOS.
  3044. Daniel (21 December 2004)
  3045. - Added test case 217 that verified CURLINFO_HTTP_CONNECTCODE, and I made the
  3046. -w option support 'http_connect' to make it easier to verify!
  3047. - Fixed lib/select.c include order to build fine on FreeBSD
  3048. - Fixed failf()'s reuse of the va_list variable that crashed on FreeBSD.
  3049. Pointed out by Peter Pentchev.
  3050. Version 7.12.3 (20 December 2004)
  3051. Daniel (19 December 2004)
  3052. - I investigated our PKCS12 build problem on Solaris 2.7 with OpenSSL 0.9.7e,
  3053. and it turned out to be the fault of the zlib 1.1.4 headers doing a typedef
  3054. named 'free_func' and the OpenSSL headers have a prototype that uses
  3055. 'free_func' in one of its arguments. This is why the compile errors out.
  3056. In other words, we need to include the openssl/pkcs12.h header before the
  3057. zlib.h header and it builds fine. The configure script now checks for this
  3058. file and it then gets included early in lib/urldata.h.
  3059. Daniel (18 December 2004)
  3060. - Samuel Listopad added support for PKCS12 formatted certificates.
  3061. - Samuel Listopad fixed -E to support "C:/path" (with forward slash) as well.
  3062. Daniel (16 December 2004)
  3063. - Gisle found and fixed a problem in the directory re-use for FTP.
  3064. I added test case 215 and 216 to better verify the functionality.
  3065. - Dinar in bug report #1086121, found a file handle leak when a multipart
  3066. formpost (including a file upload part) was aborted before the whole file
  3067. was sent.
  3068. Daniel (15 December 2004)
  3069. - Tom Lee found out that globbing of strings with backslashes didn't work as
  3070. you'd expect. Backslashes are such a central part of windows file names that
  3071. forcing backslashes to have to be escaped with backslashes is a bit too
  3072. awkward to users. Starting now, you only need to escape globbing characters
  3073. such as the five letters: "[]{},". Added test case 214 to verify this.
  3074. Daniel (14 December 2004)
  3075. - Harshal Pradhan patched a HTTP persistent connection flaw: if the user name
  3076. and/or password were modified between two requests on a persistent
  3077. connection, the second request were still made with the first setup!
  3078. I added test case 519 to verify the fix.
  3079. Daniel (13 December 2004)
  3080. - Gisle added CURLINFO_SSL_ENGINES to curl_easy_getinfo() to allow an app
  3081. to list all available crypto ENGINES.
  3082. - Gisle fixed bug report #1083542, which pointed out a problem with resuming
  3083. large file (>4GB) file:// transfers on windows.
  3084. Daniel (11 December 2004)
  3085. - Made the test suite HTTP server (sws) capable of using IPv6, and then
  3086. extended the test environment to support that and also added three test
  3087. cases (240, 241, 242) that run tests using IPv6. Test 242 uses a URL that
  3088. didn't work before the 10 dec fix by Kai Sommerfeld.
  3089. - Made a failed file:// resume output an error message
  3090. - Corrected the CURLE_BAD_DOWNLOAD_RESUME error message in lib/strerror.c
  3091. - Dan Fandrich:
  3092. simplified and consolidated the SSL checks in configure and the usage of the
  3093. defines in lib/setup.h
  3094. provided a first libcurl.pc.in file for pkg-config (but the result is not
  3095. installed anywhere at this point)
  3096. extended the cross compile section in the docs/INSTALL file
  3097. Daniel (10 December 2004)
  3098. - When providing user name in the URL and a IPv6-style IP-address (like in
  3099. "ftp://user@[::1]/tmp"), the URL parser didn't get the host extracted
  3100. properly. Reported and fixed by Kai Sommerfeld.
  3101. Daniel (9 December 2004)
  3102. - Ton Voon provided a configure fix that should fix the notorious (mostly
  3103. reported on Solaris) problem where the size_t check fails due to the SSL
  3104. libs being found in a dir not searched through by the run-time linker.
  3105. patch-tracker entry #1081707.
  3106. - Bryan Henderson pointed out in bug report #1081788 that the curl-config
  3107. --vernum output wasn't zero prefixed properly (as claimed in documentation).
  3108. This is fixed in maketgz now.
  3109. Daniel (8 December 2004)
  3110. - Matt Veenstra updated the mach-O framework files for Mac OS X.
  3111. - Rene Bernhardt found and fixed a buffer overrun in the NTLM code, where
  3112. libcurl always and unconditionally overwrote a stack-based array with 3 zero
  3113. bytes. This is not an exploitable buffer overflow. No need to get alarmed.
  3114. Daniel (7 December 2004)
  3115. - Fixed so that the final error message is sent to the verbose info "stream"
  3116. even if no errorbuffer is set.
  3117. Daniel (6 December 2004)
  3118. - Dan Fandrich added the --disable-cookies option to configure to build
  3119. libcurl without cookie support. This is mainly useful if you want to build a
  3120. minimalistic libcurl with no cookies support at all. Like for embedded
  3121. systems or similar.
  3122. - Richard Atterer fixed libcurl's way of dealing with the EPSV
  3123. response. Previously, libcurl would re-resolve the host name with the new
  3124. port number and attempt to connect to that, while it should use the IP from
  3125. the control channel. This bug made it hard to EPSV from an FTP server with
  3126. multiple IP addresses!
  3127. Daniel (3 December 2004)
  3128. - Bug report #1078066: when a chunked transfer was pre-maturely closed exactly
  3129. at a chunk boundary it was not considered an error and thus went unnoticed.
  3130. Fixed by Maurice Barnum.
  3131. Added test case 207 to verify.
  3132. Daniel (2 December 2004)
  3133. - Fixed the CONNECT loop to default timeout to 3600 seconds.
  3134. Added test case 206 that makes CONNECT with Digest.
  3135. Fixed a flaw that prepended "(nil)" to the initial CONNECT rqeuest's user-
  3136. agent field.
  3137. Daniel (30 November 2004)
  3138. - Dan Fandrich's fix for libz 1.1 and "extra field" usage in a gzip stream
  3139. - Dan also helped me with input data to create three more test cases for the
  3140. --compressed option.
  3141. Daniel (29 November 2004)
  3142. - I improved the test suite to enable binary contents in the tests (by proving
  3143. it base64 encoded), like for testing decompress etc. Added test 220 and 221
  3144. for this purpose. Tests can now also depend on libz to run.
  3145. - As reported by Reinout van Schouwen in Mandrake's bug tracker bug 12285
  3146. (http://qa.mandrakesoft.com/show_bug.cgi?id=12285), when connecting to an
  3147. IPv6 host with FTP, --disable-epsv (or --disable-eprt) effectively disables
  3148. the ability to transfer a file. Now, when connected to an FTP server with
  3149. IPv6, these FTP commands can't be disabled even if asked to with the
  3150. available libcurl options.
  3151. Daniel (26 November 2004)
  3152. - As reported in Mandrake's bug tracker bug 12289
  3153. (http://qa.mandrakesoft.com/show_bug.cgi?id=12289), curl would print a
  3154. newline to "finish" the progress meter after each redirect and not only
  3155. after a completed transfer.
  3156. Daniel (25 November 2004)
  3157. - FTP improvements:
  3158. If EPSV, EPRT or LPRT is tried and doesn't work, it will not be retried on
  3159. the same server again even if a following request is made using a persistent
  3160. connection.
  3161. If a second request is made to a server, requesting a file from the same
  3162. directory as the previous request operated on, libcurl will no longer make
  3163. that long series of CWD commands just to end up on the same spot. Note that
  3164. this is only for *exactly* the same dir. There is still room for improvements
  3165. to optimize the CWD-sending when the dirs are only slightly different.
  3166. Added test 210, 211 and 212 to verify these changes. Had to improve the
  3167. test script too and added a new primitive to the test file format.
  3168. Daniel (24 November 2004)
  3169. - Andrés García fixed the configure script to detect select properly when run
  3170. with Msys/Mingw on Windows.
  3171. Daniel (22 November 2004)
  3172. - Made HTTP PUT and POST requests no longer use HEAD when doing multi-pass
  3173. auth negotiation (NTLM, Digest and Negotiate), but instead use the request
  3174. keyword "properly". Details in lib/README.httpauth. This also introduces
  3175. CURLOPT_IOCTLFUNCTION and CURLOPT_IOCTLDATA, to be used by apps that use the
  3176. "any" auth alternative as then libcurl may need to send the PUT/POST data
  3177. more than once and thus may need to ask the app to "rewind" the read data
  3178. stream to start.
  3179. See also the new example using this: docs/examples/anyauthput.c
  3180. - David Phillips enhanced test 518. I made it depend on a "feature" so that
  3181. systems without getrlimit() won't attempt to test 518. configure now checks
  3182. for getrlimit() and setrlimit() for this test case.
  3183. Daniel (18 November 2004)
  3184. - David Phillips fixed libcurl to not crash anymore when more than FD_SETSIZE
  3185. file descriptors are in use. Test case 518 added to verify.
  3186. Daniel (15 November 2004)
  3187. - To test my fix for the CURLINFO_REDIRECT_TIME bug, I added time_redirect and
  3188. num_redirects support to the -w writeout option for the command line tool.
  3189. - Wojciech Zwiefka found out that CURLINFO_REDIRECT_TIME didn't work as
  3190. documented.
  3191. Daniel (12 November 2004)
  3192. - Gisle Vanem modigied the MSVC and Netware makefiles to build without
  3193. libcurl.def
  3194. - Dan Fandrich added the --disable-crypto-auth option to configure to allow
  3195. libcurl to build without Digest support. (I figure it should also explicitly
  3196. disable Negotiate and NTLM.)
  3197. - *** Modified Behaviour Alert ***
  3198. Setting CURLOPT_POSTFIELDS to NULL will no longer do a GET.
  3199. Setting CURLOPT_POSTFIELDS to "" will send a zero byte POST and setting
  3200. CURLOPT_POSTFIELDS to NULL and CURLOPT_POSTFIELDSIZE to zero will also make
  3201. a zero byte POST. Added test case 515 to verify this.
  3202. Setting CURLOPT_HTTPPOST to NULL makes a zero byte post. Added test case 516
  3203. to verify this.
  3204. CURLOPT_POSTFIELDSIZE must now be set to -1 to signal "we don't know".
  3205. Setting it to zero simply says this is a zero byte POST.
  3206. When providing POST data with a read callback, setting the size up front
  3207. is now made with CURLOPT_POSTFIELDSIZE and not with CURLOPT_INFILESIZE.
  3208. Daniel (11 November 2004)
  3209. - Dan Fandrich added --disable-verbose to the configure script to allow builds
  3210. without verbose strings in the code, to save some 12KB space. Makes sense
  3211. only for systems with very little memory resources.
  3212. - Jeff Phillips found out that a date string with a year beyond 2038 could
  3213. crash the new date parser on systems with 32bit time_t. We now check for
  3214. this case and deal with it.
  3215. Daniel (10 November 2004)
  3216. - I installed Heimdal on my Debian box (using the debian package) and noticed
  3217. that configure --with-gssapi failed to create a nice build. Fixed now.
  3218. Daniel (9 November 2004)
  3219. - Gisle Vanem marked all external function calls with CURL_EXTERN so that now
  3220. the Windows, Netware and other builds no longer need libcurl.def or similar
  3221. files.
  3222. Daniel (8 November 2004)
  3223. - Made the configure script check for tld.h if libidn was detected, since
  3224. libidn 0.3.X didn't have such a header and we don't work with anything
  3225. before libidn 0.4.1 anyway! Suse 9.1 apparently ships with a 0.3.X version
  3226. of libidn which makes the curl 7.12.2 build fail. Jean-Philippe
  3227. Barrette-LaPierre helped pointing this out.
  3228. - Ian Gulliver reported in debian bug report #278691: if curl is invoked in an
  3229. environment where stderr is closed the -v output will still be sent to file
  3230. descriptor 2 which then might be the network socket handle! Now we have a
  3231. weird hack instead that attempts to make sure that file descriptor 2 is
  3232. opened (with a call to pipe()) before libcurl is called to do the transfer.
  3233. configure now checks for pipe() and systems without pipe don't get the weird
  3234. hack done.
  3235. Daniel (5 November 2004)
  3236. - Tim Sneddon made libcurl send no more than 64K in a single first chunk when
  3237. doing a huge POST on VMS, as this is a system limitation. Default on general
  3238. systems is 100K.
  3239. Daniel (4 November 2004)
  3240. - Andres Garcia made it build on mingw againa, my --retry code broke the build.
  3241. Daniel (2 November 2004)
  3242. - Added --retry-max-time that allows a maximum time that may not have been
  3243. reached for a retry to be made. If not set there is no maximum time, only
  3244. the amount of retries set with --retry.
  3245. - Paul Nolan provided a patch to make libcurl build nicely on Windows CE.
  3246. Daniel (1 November 2004)
  3247. - When cross-compiling, the configure script no longer attempts to use
  3248. pkg-config on the build host in order to detect OpenSSL compiler options.
  3249. Daniel (27 October 2004)
  3250. - Dan Fandrich:
  3251. An improvement to the gzip handling of libcurl. There were two problems with
  3252. the old version: it was possible for a malicious gzip file to cause libcurl
  3253. to leak memory, as a buffer was malloced to hold the header and never freed
  3254. if the header ended with no file contents. The second problem is that the
  3255. 64 KiB decompression buffer was allocated on the stack, which caused
  3256. unexpectedly high stack usage and overflowed the stack on some systems
  3257. (someone complained about that in the mailing list about a year ago).
  3258. Both problems are fixed by this patch. The first one is fixed when a recent
  3259. (1.2) version of zlib is used, as it takes care of gzip header parsing
  3260. itself. A check for the version number is done at run-time and libcurl uses
  3261. that feature if it's present. I've created a define OLD_ZLIB_SUPPORT that
  3262. can be commented out to save some code space if libcurl is guaranteed to be
  3263. using a 1.2 version of zlib.
  3264. The second problem is solved by dynamically allocating the memory buffer
  3265. instead of storing it on the stack. The allocation/free is done for every
  3266. incoming packet, which is suboptimal, but should be dwarfed by the actual
  3267. decompression computation.
  3268. I've also factored out some common code between deflate and gzip to reduce
  3269. the code footprint somewhat. I've tested the gzip code on a few test files
  3270. and I tried deflate using the freshmeat.net server, and it all looks OK. I
  3271. didn't try running it with valgrind, however.
  3272. - Added a --retry option to curl that takes a numerical option for the number
  3273. of times the operation should be retried. It is retried if a transient error
  3274. is detected or if a timeout occurred. By default, it will first wait one
  3275. second between the retries and then double the delay time between each retry
  3276. until the delay time is ten minutes which then will be the delay time
  3277. between all forthcoming retries. You can set a static delay time with
  3278. "--retry-delay [num]" where [num] is the number of seconds to wait between
  3279. each retry.
  3280. Daniel (25 October 2004)
  3281. - Tomas Pospisek filed bug report #1053287 that proved -C - and --fail on a
  3282. file that was already completely downloaded caused an error, while it
  3283. doesn't if you don't use --fail! I added test case 194 to verify the fix.
  3284. Grrr. CURLOPT_FAILONERROR is now added to the list stuff to remove in
  3285. libcurl v8 due to all the kludges needed to support it.
  3286. - Mohun Biswas found out that formposting a zero-byte file didn't work very
  3287. good. I fixed.
  3288. Daniel (19 October 2004)
  3289. - Alexander Krasnostavsky made it possible to make FTP 3rd party transfers
  3290. with both source and destination being the same host. It can be useful if
  3291. you want to move a file on a server or similar.
  3292. - Guillaume Arluison added CURLINFO_NUM_CONNECTS to allow an app to figure
  3293. out how many new connects a previous transfer required.
  3294. I added %{num_connects} to the curl tool and added test case 192 and 193
  3295. to verify the new code.
  3296. Daniel (18 October 2004)
  3297. - Peter Wullinger pointed out that curl should call setlocale() properly to
  3298. initiate the specific language operations, to make the IDN stuff work
  3299. better.
  3300. Version 7.12.2 (18 October 2004)
  3301. Daniel (16 October 2004)
  3302. - Alexander Krasnostavsky made the CURLOPT_FTP_CREATE_MISSING_DIRS option work
  3303. fine even for third party transfers.
  3304. - runekl at opoint.com found out (and provided a fix) that libcurl leaked
  3305. memory for cookies with the "max-age" field set.
  3306. Gisle (16 October 2004)
  3307. - Issue 50 in TODO-RELEASE; Added Traian Nicolescu's patches for threaded
  3308. resolver on Windows. Plugged some potential handle and memory leaks.
  3309. Daniel (14 October 2004)
  3310. - Eric Vergnaud pointed out that libcurl didn't treat ?-letters in the user
  3311. name and password fields properly in URLs, like
  3312. ftp://us?er:pass?word@site.com/. Added test 191 to verify the fix.
  3313. Daniel (11 October 2004)
  3314. - libcurl now uses SO_NOSIGPIPE for systems that support it (Mac OS X 10.2 or
  3315. later is one) to inhibit the SIGPIPE signal when writing to a socket while
  3316. the peer dies. The same effect is provide by the MSG_NOSIGNAL parameter to
  3317. send() on other systems. Alan Pinstein verified the fix.
  3318. Daniel (10 October 2004)
  3319. - Systems with 64bit longs no longer use strtoll() or our strtoll- replacement
  3320. to parse 64 bit numbers. strtol() works fine. Added a configure check to
  3321. detect if [constant]LL works and if so, use that in the strtoll replacement
  3322. code to work around compiler warnings reported by Andy Cedilnik.
  3323. Gisle (6 October 2004)
  3324. - For USE_LIBIDN builds: Added Top-Level-Domain (TLD) check of host-name
  3325. used in fix_hostname(). Checks if characters in 'host->name' (indirectly
  3326. via 'ace_hostname') are legal according to the TLD tables in libidn.
  3327. Daniel (6 October 2004)
  3328. - Chih-Chung Chang reported that if you use CURLOPT_RESUME_FROM and enabled
  3329. CURLOPT_FOLLOWLOCATION, libcurl reported error if a redirect happened even
  3330. if the new URL would provide the resumed file. Test case 188 added to verify
  3331. the fix (together with existing test 99).
  3332. - Dan Fandrich fixed a configure flaw for systems that need both nsl and socket
  3333. libs to use gethostbyname().
  3334. - Removed tabs and trailing whitespace from lots of source files.
  3335. Daniel (5 October 2004)
  3336. - Made configure --with-libidn=PATH try the given PATH before the default
  3337. paths to make it possible to override.
  3338. - If idna_strerror() is present in libidn, we can use that instead of our
  3339. internal replacement. This function was added by Simon in libidn 0.5.6 and
  3340. is detected by configure.
  3341. - It seems basename() on IRIX is in the libgen library and since we don't use
  3342. that, configure finds libgen.h but not basename and then we get a compiler
  3343. error because our basename() replacement doesn't match the proto in
  3344. libgen.h. Starting now, we don't include the file if basename wasn't found
  3345. as well.
  3346. Daniel (4 October 2004)
  3347. - Chris found a race condition resulting in CURLE_COULDNT_RESOLVE_HOST and
  3348. potential crash, in the windows threaded name resolver code.
  3349. Daniel (3 October 2004)
  3350. - Replaced the use of isspace() in cookie.c with our own version instead since
  3351. we have most data as 'char *' and that makes us pass in negative values if
  3352. there is 8bit data in the string. Changing to unsigned causes too much
  3353. warnings or too many required typecasts to the normal string functions.
  3354. Harshal Pradhan identified this problem.
  3355. Daniel (2 October 2004)
  3356. - Bertrand Demiddelaer found a case where libcurl could read already freed
  3357. data when CURLOPT_VERBOSE is used and a (very) persistent connection. It
  3358. happened when the dns cache entry for the connection was pruned while the
  3359. connection was still alive and then again re-used. We worked together on
  3360. this fix.
  3361. - Gisle Vanem provided code that displays an error message when the (libidn
  3362. based) IDN conversion fails. This is really due to a missing suitable
  3363. function in the libidn API that I hope we can remove once libidn gets a
  3364. function like this.
  3365. Daniel (1 October 2004)
  3366. - Aleksandar Milivojevic reported a problem in the Redhat bugzilla (see
  3367. https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=134133) and not to
  3368. anyone involved in the curl project! This happens when you try to curl a
  3369. file from a proftpd site using SSL. It seems proftpd sends a somewhat
  3370. unorthodox response code (232 instead of 230). I relaxed the response code
  3371. check to deal with this and similar cases.
  3372. - Based on Fedor Karpelevitch's formpost path basename patch, file parts in
  3373. formposts no longer include the path part. If you _really_ want them, you
  3374. must provide your preferred full file name with CURLFORM_FILENAME.
  3375. Added detection for libgen.h and basename() to configure. My custom
  3376. basename() replacement function for systems without it, might be a bit too
  3377. naive...
  3378. Updated 6 test cases to make them work with the stripped paths.
  3379. Daniel (30 September 2004)
  3380. - Larry Campbell added CURLINFO_OS_ERRNO to curl_easy_getinfo() that allows an
  3381. app to retrieve the errno variable after a (connect) failure. It will make
  3382. sense to provide this for more failures in a more generic way, but let's
  3383. start like this.
  3384. - Günter Knauf and Casey O'Donnell worked out an extra #if condition for the
  3385. curl/multi.h header to work better in winsock-using apps.
  3386. - Jean-Philippe Barrette-LaPierre made buildconf run better on Mac OS X by
  3387. properly using glibtoolize instead of plain libtoolize. (This is made if
  3388. glibtool was found and used instead of plain libtool.)
  3389. Daniel (29 September 2004)
  3390. - Bertrand Demiddelaer fixed curl_easy_reset() so that it doesn't mistakingly
  3391. enable the progress meter.
  3392. Daniel (28 September 2004)
  3393. - "Mekonikum" found out that if you built curl without SSL support, although
  3394. your current SSL installation supports Engine, the compile fails.
  3395. Daniel (27 September 2004)
  3396. - When --with-ssl=PATH is used to the configure script, it no longer uses
  3397. pkg-config to figure out extra details. That is now only done if no PATH is
  3398. included or if SSL is checked for by default without the --with-ssl option.
  3399. Daniel (25 September 2004)
  3400. - Peter Sylvester pointed out that CURLOPT_SSLENGINE couldn't even be set to
  3401. NULL when no engine was supported. It can now.
  3402. Daniel (22 September 2004)
  3403. - Dan Fandrich fixed three test cases to no longer use "localhost" but instead
  3404. use "127.0.0.1" to avoid requiring that localhost resolves nicely.
  3405. - Jean-Claude Chauve fixed an LDAP crash when more than one record was
  3406. retrieved.
  3407. Daniel (19 September 2004)
  3408. - Andreas Rieke pointed out that when attempting to connect to a host without
  3409. a service on the specified port, curl_easy_perform() didn't properly provide
  3410. an error message in the CURLOPT_ERRORBUFFER buffer.
  3411. Daniel (16 September 2004)
  3412. - Daniel at touchtunes uses the FTP+SSL server "BSDFTPD-SSL from
  3413. http://bsdftpd-ssl.sc.ru/" which accordingly doesn't properly work with curl
  3414. when "AUTH SSL" is issued (although the server responds fine and everything)
  3415. but requires that curl issues "AUTH TLS" instead. See
  3416. http://curl.haxx.se/feedback/display.cgi?id=10951944937603&support=yes
  3417. Introducing CURLOPT_FTPSSLAUTH that allows the application to select which
  3418. of the AUTH strings to attempt first.
  3419. - Anonymous filed bug report #1029478 which identified a bug when you 1) used
  3420. a URL without properly seperating the host name and the parameters with a
  3421. slash. 2) the URL had parameters to the right of a ? that contains a slash
  3422. 3) curl was told to follow Location:s 4) the request got a response that
  3423. contained a Location: to redirect to "/dir". curl then appended the new path
  3424. on the wrong position of the original URL.
  3425. Test case 187 was added to verify that this was fixed properly.
  3426. Daniel (11 September 2004)
  3427. - Added parsedate.c that contains a rewrite of the date parser currently
  3428. provided by getdate.y. The new one is MUCH smaller and will allow us to run
  3429. away from the yacc/bison jungle. It is also slightly lacking in features
  3430. compared to the old one, but it supports parsing of all date formats HTTP
  3431. involves (and a fair bunch of others).
  3432. Daniel (10 September 2004)
  3433. - As found out by Jonas Forsman, curl didn't allow -F to set Content-Type on
  3434. text-parts. Starting now, we can do -F "name=daniel;type=text/extra". Added
  3435. test case 186 to verify.
  3436. - Bug report #1025986. When following a Location: with a custom Host: header
  3437. replacement, curl only replaced the Host: header on the initial request
  3438. and didn't replace it on the following ones. This resulted in requests with
  3439. two Host: headers.
  3440. Now, curl checks if the location is on the same host as the initial request
  3441. and then continues to replace the Host: header. And when it moves to another
  3442. host, it doesn't replace the Host: header but it also doesn't make the
  3443. second Host: header get used in the request.
  3444. This change is verified by the two new test cases 184 and 185.
  3445. Daniel (8 September 2004)
  3446. - Modified the test suite to be able to use and run with customized port
  3447. numbers. This was always intended but never before possible. Now a simple
  3448. change in the runtests.pl script can make all tests use different ports.
  3449. The default ports in use from now on are 8990 to 8993.
  3450. Daniel (2 September 2004)
  3451. - Minor modification of an SSL-related error message.
  3452. Daniel (31 August 2004)
  3453. - David Tarendash found out that curl_multi_add_handle() returned
  3454. CURLM_CALL_MULTI_PERFORM instead of CURLM_OK.
  3455. Daniel (30 August 2004)
  3456. - Make "Proxy-Connection: close" close the current proxy connection, as Roman
  3457. Koifman found out.
  3458. Daniel (24 August 2004)
  3459. - Fixed a getdate problem by post-replacing the getdate.c file after the
  3460. bison/yacc process to add the fix Harshal Pradhan suggested. The problem
  3461. caused a crash on Windows when parsing some dates.
  3462. Daniel (23 August 2004)
  3463. - Roman Koifman pointed out that libcurl send Expect: 100-continue on POSTs
  3464. even when told to use HTTP 1.0, which is not correct. Test case 180 and
  3465. 181 verify this.
  3466. - Added test case 182 to verify that zero byte transfers call the callback
  3467. properly.
  3468. Daniel (20 August 2004)
  3469. - Alexander Krasnostavsky made the write callback get called even when a zero
  3470. byte file is downloaded.
  3471. Daniel (18 August 2004)
  3472. - Ling Thio pointed out that when libcurl is built ipv6-enabled, it still did
  3473. reverse DNS lookups when fed with a numerical IP-address (like
  3474. http://127.0.0.1/), although it doesn't when built ipv6-disabled. libcurl
  3475. should never do reverse lookups.
  3476. Daniel (17 August 2004)
  3477. - Kjetil Jacobsen noticed that when transferring a file:// URL pointing to an
  3478. empty file, libcurl would return with the file still open.
  3479. - Alexander Krasnostavsky pointed out that the configure script needs to define
  3480. _THREAD_SAFE for AIX systems to make libcurl built really thread-safe.
  3481. Also added a check for the xlc compiler on AIX, and if that is detect we use
  3482. the -qthreaded compiler option
  3483. Daniel (16 August 2004)
  3484. - libcurl now allows a custom "Accept-Encoding:" header override the
  3485. internally set one that gets set with CURLOPT_ENCODING. Pointed out by Alex.
  3486. - Roland Krikava found and fixed a cookie problem when using a proxy (the
  3487. path matching was wrong). I added test case 179 to verify that we now do
  3488. right.
  3489. Daniel (15 August 2004)
  3490. - Casey O'Donnell fixed some MSVC makefile targets to link properly.
  3491. Daniel (11 August 2004)
  3492. - configure now defines _XOPEN_SOURCE to 500 on systems that need it to build
  3493. warning-free (the only known one so far is non-gcc builds on 64bit SGI
  3494. IRIX). (Reverted this change later as it caused compiler errors.)
  3495. - the FTP code now includes the server response in the error message when the
  3496. server gives back a 530 after the password is provided, as it isn't
  3497. necessary because of a bad user name or password.
  3498. Version 7.12.1 (10 August 2004)
  3499. Daniel (10 August 2004)
  3500. - In OpenSSL 0.9.7d and earlier, ASN1_STRING_to_UTF8 fails if the input is
  3501. already UTF-8 encoded. This made the certificate verification fail if the
  3502. remote server used a certificate with the name UTF-8 encoded.
  3503. Work-around brought by Alexis S. L. Carvalho.
  3504. Daniel (9 August 2004)
  3505. - I fixed the configure script for krb4 to use -lcom_err as well, as I started
  3506. to get link problems with it unless I did that on my Solaris 2.7 box. I
  3507. don't understand why I started to get problems with this now!
  3508. Daniel (5 August 2004)
  3509. - Enrico Scholz fixed the HTTP-Negotiate service name to be uppercase as
  3510. reported in bug report #1004105
  3511. Daniel (4 August 2004)
  3512. - Gisle Vanem provided a fix for the multi interface and connecting to a host
  3513. using multiple IP (bad) addresses.
  3514. - Dylan Salisbury made libcurl no longer accept cookies set to a TLD only (it
  3515. previously allowed that on the seven three-letter domains).
  3516. Daniel (31 July 2004)
  3517. - Joel Chen reported that the digest code assumed quotes around the contents a
  3518. bit too much.
  3519. Daniel (28 July 2004)
  3520. - Bertrand Demiddelaer fixed the host name to get setup properly even when a
  3521. connection is re-used, when a proxy is in use. Previously the wrong Host:
  3522. header could get sent when re-using a proxy connection to a different target
  3523. host.
  3524. - Fixed Brian Akins' reported problems with duplicate Host: headers on re-used
  3525. connections. If you attempted to replace the Host: header in the second
  3526. request, you got two such headers!
  3527. - src/Makefile.am now includes the Makefile.inc file to get info about files
  3528. Daniel (26 July 2004)
  3529. - Made "curl [URL] -o name#2" work as expected. If there's no globbing for the
  3530. #-number, it will simply be used as #2 in the file name.
  3531. - Bertrand Demiddelaer fixed testing with valgrind 2.1.x and added two missing
  3532. newlines in the cookie informationals.
  3533. Daniel (24 July 2004)
  3534. - I fixed the autobuilds with ares, since they now need to have buildconf run
  3535. in the ares dir before the configure script is run.
  3536. - Added Casey O'Donnell's curl_easy_reset() function. It has a proto in
  3537. curl/curl.h but we have no man page yet.
  3538. Daniel (20 July 2004)
  3539. - Added buildconf and buildconf.bat to the release archives, since they are
  3540. handy for rebuilding curl when using a daily snapshot (and not a pure CVS
  3541. checkout).
  3542. Daniel (16 July 2004)
  3543. - As suggested by Toby Peterson, libcurl now ignores Content-Length data if the
  3544. given size is a negative number. Test case 178 verifies this.
  3545. Daniel (14 July 2004)
  3546. - Günter Knauf has made the Netware builds do without the config-netware.h
  3547. files, so they are now removed from the dist packages.
  3548. - Günter Knauf made curl and libcurl build with Borland again.
  3549. - Andres Garcia fixed the common test 505 failures on windows.
  3550. Daniel (6 July 2004)
  3551. - Andrés García found out why the windows tests failed on file:// "uploads".
  3552. Daniel (2 July 2004)
  3553. - Andrés García reported a curl_share_cleanup() crash that occurs when no
  3554. lock/unlock callbacks have been set and the share is cleaned up.
  3555. Daniel (1 July 2004)
  3556. - When using curl --trace or --trace-ascii, no trace messages that were sent
  3557. by curl_easy_cleanup() were included in the trace file. This made the
  3558. message "Closing connection #0" never appear in trace dumps.
  3559. Daniel (30 June 2004)
  3560. - Niels van Tongeren found that setting CURLOPT_NOBODY to TRUE doesn't disable
  3561. a previously set POST request, making a very odd request get sent (unless
  3562. you disabled the POST) a HEAD request with a POST request-body. I've now
  3563. made CURLOPT_NOBODY enforce a proper HEAD. Added test case 514 for this.
  3564. Daniel (29 June 2004)
  3565. - Günter Knauf made the testcurl.pl script capable of using a custom setup
  3566. file to easier run multiple autobuilds on the same source tree.
  3567. - Gisle fixed the djgpp build and fixed a memory problem in some of the
  3568. reorged name resolved code.
  3569. - Fixed code to allow connects done using the multi interface to attempt the
  3570. next IP when connecting to a host that resolves to multiple IPs and a
  3571. connect attempt fails.
  3572. Daniel (27 June 2004)
  3573. - Based on Rob Stanzel's bug report #979480, I wrote a configure check that
  3574. checks if poll() can be used to wait on NULL as otherwise select() should be
  3575. used to do it. The select() usage was also fixed according to his report.
  3576. Mac OS X 10.3 says "poll() functionality for Mac OS X is implemented via an
  3577. emulation layer on top of select(), not in the kernel directly. It is
  3578. recommended that programs running under OS X 10.3 prefer select() over
  3579. poll(). Configure scripts should look for the _POLL_EMUL_H_ define (instead
  3580. of _POLL_H_ or _SYS_POLL_H_) and avoid implementations where poll is not
  3581. implemented in the kernel."
  3582. Yes, we can probably use select() on most platforms but today I prefered to
  3583. leave the code unaltered.
  3584. Daniel (24 June 2004)
  3585. - The standard curl_version() string now only includes version info about
  3586. involved libraries and not about particular features. Thus it will no longer
  3587. include info about ipv6 nor GSS. That info is of course still available in
  3588. the feature bitmask curl_version_info() offers.
  3589. - Replaced all occurances of sprintf() with snprintf(). This is mostly because
  3590. it is "A Good Thing" rather than actually fixing any known problem. This
  3591. will help preventing future possible mistakes to cause buffer overflows.
  3592. - Major reorganization in the host resolve code (again). This time, I've
  3593. modified the code to now always use a linked list of Curl_addrinfo structs
  3594. to return resolved info in, no matter what resolver method or support that
  3595. is available on the platform. It makes it a lot easier to write code that
  3596. uses or depends on resolved data.
  3597. Internally, this means amongst other things that we can stop doing the weird
  3598. "increase buffer size until it works" trick when resolving hosts on
  3599. ipv4-only with gethostbyname_r(), we support socks even on libcurls built
  3600. with ipv6 enabled (but only to socks servers that resolve to an ipv4
  3601. address) and we no longer deep-copy or relocate hostent structs (we create
  3602. Curl_addrinfo chains instead).
  3603. The new "hostent to Curl_addrinfo" converter function is named Curl_he2ai()
  3604. and is slightly naive and simple, yet I believe it is functional enough to
  3605. work for libcurl.
  3606. Daniel (22 June 2004)
  3607. - David Cohen pointed out that RFC2109 says clients should allow cookies to
  3608. contain least 4096 bytes while libcurl only allowed 2047. I raised the limit
  3609. to 4999 now and made the used buffer get malloc()ed instead of simply
  3610. allocated on stack as before. Extended test case 46 to include a cookie with
  3611. very huge content to verify the fix.
  3612. - Günter Knauf fixed getdate.y to remove a few warnings. I removed the
  3613. ifdef'ed test we never ever use anyway.
  3614. - Gisle Vanem fixed the certificate wildcard checks to support a '*'-letter
  3615. anywhere in the wildcard string, support multiple '*'-letters in the
  3616. wildcard and to allow the '*'-letter to match a string that includes a dot.
  3617. Daniel (21 June 2004)
  3618. - testcurl.sh is now removed completely, tests/testcurl.pl is the script to
  3619. use when autobuilding curl!
  3620. - Kjetil Jacobsen brought my attention to the fact that you cannot properly
  3621. abort an upload with the readfunction callback, since returning 0 or -1 only
  3622. stops the upload and libcurl will continue waiting for downloaded data and
  3623. the server often waits for the rest of the upload data to arrive.
  3624. Thus, I've now added the ability for read callbacks to return
  3625. CURL_READFUNC_ABORT to abort an upload from a read callback. This will stop
  3626. the transfer immediately with a CURLE_ABORTED_BY_CALLBACK return code.
  3627. Test case 513 was added to verify that it works. I had to improve the test
  3628. HTTP server too to dump the request to a file even when the client
  3629. disconnects prematurely.
  3630. Daniel (19 June 2004)
  3631. - Luca Alteas provided a test case with a failing curl operation: when we POST
  3632. to a site with --digest (or similar) set, and the server responded with a 302
  3633. Location: to the "authprobe" request, it was not treated correctly. We still
  3634. will behave badly if FOLLOWLOCATION is enabled for this case, but I'm not
  3635. in the mood to dive into this right now and will leave it as-is for now.
  3636. Verified my fix with test case 177.
  3637. Daniel (18 June 2004)
  3638. - Gisle Vanem's patch that provides more details from the SSL layers (if you
  3639. use an OpenSSL version that supports it). It also introduces two new types
  3640. of data that can be sent to the debug callback: CURLINFO_SSL_DATA_IN and
  3641. CURLINFO_SSL_DATA_OUT.
  3642. - With David Byron's test server I could repeat his problem and make sure that
  3643. POSTing over HTTPS:// with NTLM works fine now. There was a general problem
  3644. with multi-pass authentication with non-GET operations with CONNECT.
  3645. Daniel (16 June 2004)
  3646. - Modified to keep the upload byte counter in an curl_off_t, not an int as
  3647. before. 32bits is not enough. This is most likely the bug Jean-Louis Lemaire
  3648. reported that makes 2GB FTP uploads to report error ("unaligned file sizes")
  3649. when completed.
  3650. Daniel (15 June 2004)
  3651. - Luca Alteas reported a problem that I fixed: if you did a POST with
  3652. CURLAUTH_DIGEST set but the server didn't require any authentication,
  3653. libcurl would repeatedly send HEAD lots of times until it gives up. This was
  3654. actually the case for all multi-pass authentications. Added test case 174,
  3655. 175 and 176 to verify this.
  3656. Daniel (14 June 2004)
  3657. - Multipart formposts uploading files no longer inserts the files themselves
  3658. into the huge prebuilt chunk. This enables libcurl to formpost files that is
  3659. larger than the amount of system memory. When the file given is passed on
  3660. stdin, libcurl still uses the old method of reading the full fill before the
  3661. upload takes place. This approach was selected in order to not alter the
  3662. behavior for existing applications, as when using stdin libcurl can't know
  3663. the size of the upload and chunked transfer-encoding can only be used on
  3664. HTTP 1.1 servers.
  3665. Daniel (13 June 2004)
  3666. - Gisle found out that we did wildcard cert name checks wrong, so that parts
  3667. of the check wrongly was case sensitive.
  3668. Daniel (11 June 2004)
  3669. - Tim Sneddon brought a minor VMS fix to make curl build properly on his VMS
  3670. machine. He also had some interesting libcurl patches... they might be able
  3671. to do in a slightly nicer way. Discussions are in progress.
  3672. Daniel (10 June 2004)
  3673. - Gisle Vanem brought code cleanupsm better verbose output and better connect
  3674. timeout handling when attempting to connect to a host that resolves to
  3675. multiple IP addresses.
  3676. - Steven Bazyl and Seshubabu Pasam pointed out a bug on win32 when freeing the
  3677. path after a file:// transfer.
  3678. Daniel (9 June 2004)
  3679. - Alexander Krasnostavsky made 'configure --disable-http' work to build libcurl
  3680. without HTTP support. I added a new return code for curl_formadd() in case
  3681. libcurl is built with HTTP disable: CURL_FORMADD_DISABLED.
  3682. - Alexander Krasnostavsky pointed out a missing file in the generated
  3683. curllib.dsp file, and now people building with this should get a libcurl.lib
  3684. file generated as it used to do before we generated this file.
  3685. Daniel (8 June 2004)
  3686. - Marty Kuhrt fixed a minor build problem for VMS.
  3687. Daniel (7 June 2004)
  3688. - Reverted the configure check from the 4th since it obviously didn't work.
  3689. Remade it in a different manner that hopefully works better.
  3690. Daniel (4 June 2004)
  3691. - Günter Knauf brought patches to make curl build fine on NetWare again.
  3692. - Made the configure checks for strerror_r() not exit the configure script
  3693. when built for cross-compiling.
  3694. Daniel (3 June 2004)
  3695. - Chris Gaukroger pointed out that 'make test' attempts to run the tests even
  3696. if curl is built cross-compiled. I've now made it output a short message
  3697. instead, saying it isn't possible to do.
  3698. - Alexander Krasnostavsky brought FTP 3rd party transfer support to libcurl.
  3699. You can now use libcurl to transfer files between two remote hosts using
  3700. FTP. There are a bunch of new options to control this with:
  3701. CURLOPT_SOURCE_HOST
  3702. CURLOPT_SOURCE_USERPWD
  3703. CURLOPT_SOURCE_PATH
  3704. CURLOPT_SOURCE_PORT
  3705. CURLOPT_PASV_HOST
  3706. CURLOPT_SOURCE_PREQUOTE
  3707. CURLOPT_SOURCE_POSTQUOTE
  3708. (They still remain to be documented properly in the curl_easy_setopt man
  3709. page.)
  3710. When using this, the ordinary CURLOPT_URL specifies the target URL, and you
  3711. specify the source data with these additional options. ftp3rdparty.c is a
  3712. new example source code showing how to use this.
  3713. - Vincent Bronner fixed the HTTP Digest code to use the proxy user name and
  3714. password when doing proxy authentication, it previously always used the host
  3715. user name and password!
  3716. Daniel (2 June 2004)
  3717. - CURLOPT_UPLOAD and CURLOPT_PUT now do the exact same thing internally, which
  3718. fixes some old confusions on when which of these should be used and what the
  3719. differences are.
  3720. - Applied Gisle's fixes to make curl build fine with lcc-win32
  3721. Version 7.12.0 (2 June 2004)
  3722. Daniel (1 June 2004)
  3723. - I clarified the --create-dirs option somewhat in the curl man page.
  3724. - Renaud Duhaut corrected the curl_unescape man page.
  3725. - David Byron modified one of Massimiliano Ziccardi's recent MSVC makefile
  3726. changes to now again use the mm lib by default.
  3727. Daniel (26 May 2004)
  3728. - Mohun Biswas added release-zlib and debug-zlib targets to the MSVC libcurl
  3729. Makefile
  3730. - David Byron reported a problem with proxy authentication when doing CONNECT,
  3731. like when accessing HTTPS sites wiht a proxy. This probably broke when I
  3732. rewrote the auth stuff recently.
  3733. - I added fileupload.c in the examples directory, showing how an upload to a
  3734. file:// URL is made.
  3735. Daniel (25 May 2004)
  3736. - Massimiliano Ziccardi updated the MSVC makefiles.
  3737. Daniel (24 May 2004)
  3738. - libcurl now supports "uploading" to file:// URLs. Test 204 and 205 were
  3739. added to verify.
  3740. - Simon Josefsson added a idn_free() function in libidn 0.4.5 as a reaction to
  3741. Gisle's previous mail. We now use this function, and thus we require libidn
  3742. 0.4.5 or later. No earlier version will do.
  3743. - Robert D. Young reported that CURLOPT_COOKIEFILE and CURLOPT_COOKIE could
  3744. not be used both in one request. Fixed it and added test case 172 to verify.
  3745. Daniel (21 May 2004)
  3746. - While talking to host a.b.c, libcurl did wrongly not accept cookies that
  3747. were set to the domain .a.b.c (that is with a dot prefix). This is now fixed
  3748. and test case 171 verifies it.
  3749. Daniel (20 May 2004)
  3750. - Jesse Noller reported that the upload speed info reported by libcurl was
  3751. wrong. The same was true for the download speed. Fixed now.
  3752. Daniel (19 May 2004)
  3753. - David Byron added test case 170 - this used to crash the previous version of
  3754. curl.
  3755. Daniel (17 May 2004)
  3756. - Peter Sylvester's patch that addresses two flaws in the peer certificate
  3757. name verification:
  3758. o when multiple common names are used (as in the curl tests), the last name
  3759. needs to be selected.
  3760. o allow comparing with encoded values, at least with BMP and ISO latin1
  3761. encoded T61strings.
  3762. - All 191 test cases run through the torture test OK! 'make test-torture' is
  3763. now available in the root makefile (on configure-based environments).
  3764. Daniel (14 May 2004)
  3765. - With a slightly modified ftpserver.pl I've now run almost all tests through
  3766. with runtests.pl -t. This is goodness!
  3767. - Since I have been unable to contact the CVS admins for several months, I've
  3768. decided that the current CVS hosting was not good enough. I've now moved the
  3769. CVS repo once again, see README for updated cvs checkout instructions.
  3770. Daniel (13 May 2004)
  3771. - runtests.pl -t now runs fine all the way to test 100. I believe test case
  3772. 100 fails because of an FTP server problem.
  3773. Daniel (12 May 2004)
  3774. - General cleanups all over to make libcurl survive and do well when a memory
  3775. function returns NULL. runtests.pl -t now works fine for the first 26 test
  3776. cases.
  3777. Daniel (11 May 2004)
  3778. - Seshubabu Pasam provided a patch that introduces curl_global_init_mem() -
  3779. like normal curl_global_init() but allows the app to replace all memory
  3780. functions with its own set. I modified it slightly.
  3781. - Based on Luca Alteas' comments, I modified the curllib.dsp generation code.
  3782. Daniel (10 May 2004)
  3783. - Gisle mailed Simon Josefsson (of libidn fame) about the benefits of a
  3784. separate free()-function by that lib to make sure the memory is freed by the
  3785. same memory subsystem that allocated it. He responded positively and this
  3786. will likely cause us to require a newer version of libidn as soon as Simon
  3787. releases one with such a libidn_free() function.
  3788. - James Bursa made runtests.pl's -t option work for any given test case, and I
  3789. edited to allow -g too. Not even test case 1 worked...
  3790. - Luca Altea made the nc= field not use quotes in outgoing HTTP Digest headers.
  3791. - Andrés García fixed a problem in the test script that made it fail to
  3792. recognize our own running HTTP server.
  3793. Daniel (7 May 2004)
  3794. - James Bursa fixed the memanalyze.pl script to conder malloc(0) areas OK to
  3795. free() and he made two failed-resolve error messages use the new display-
  3796. name instead of the internally-used name.
  3797. - Gisle Vanem tried curl with
  3798. www.etdomenenavnkanmaksimaltinneholdesekstitrebokstaversliksomdette.com
  3799. which caused problems, and I fixed the single zero byte buffer overwrite
  3800. that occurred (due to a stupid protocol buffer size and parser).
  3801. - Made the lib/curllib.dsp file get generated automaticly when a distribution
  3802. package is made, with the msvcproj.* files as templates and all
  3803. win32-sources added. I think this can be made to work better than the always
  3804. lagging-behind previous approach. I'm not sure this builds a working project
  3805. file right now though!
  3806. Daniel (6 May 2004)
  3807. - Michael Benedict brought a fix that fills in the errorbuffer properly when
  3808. ares fails to resolve a name for a case not previously dealt with like this.
  3809. Daniel (5 May 2004)
  3810. - Joe Halpin fixed the annoying typecast warning in lib/ldap.c
  3811. - Gisle Vanem fixes:
  3812. o memdebug to not access NULL on several places
  3813. o libcurl.def; curl_formparse is gone.
  3814. o progress.c; fixed the percent values being trunced to 0.
  3815. o if2ip.*; constified the 'interface' argument.
  3816. - Tor Arntsen reported that many of his autobuilds froze and I found and fixed
  3817. a problem introduced with the HTTP auth overhaul that could lead to a
  3818. never-ending internal request-loop due to un-initialized variables!
  3819. - Removed several compiler warnings on various compilers/platforms.
  3820. Daniel (4 May 2004)
  3821. - curl_formparse() has been removed from the library. It has been marked and
  3822. mentioned as deprecated for several years.
  3823. Daniel (3 May 2004)
  3824. - Rewritten HTTP authentication code. The previous code could not properly
  3825. deal with the added test cases 167, 168 and 169. I've now rewritten the code
  3826. to better separate host and proxy authentication and not re-use the same
  3827. variables as much as before as it proved non working in the more involved
  3828. cases. All the current tests run OK now, and so do the new ones. The curl
  3829. tool got a new option named --proxy-digest to enable HTTP Digest
  3830. authentication with the proxy. I also made the library support it.
  3831. - Gisle Vanem made the LDAP code work with wldap32.dll as supplied with
  3832. Win-98/ME/2000/XP, so no extra .dlls are required when curl/libcurl is used
  3833. on these Windows versions.
  3834. Daniel (30 April 2004)
  3835. - runtests.pl now scans the valgrind log for valgrind-detected memory leaks
  3836. after each test case if valgrind was found and used.
  3837. - I modified the app-code in curl to include the new lib/curlx.h and only
  3838. access those functions using the curlx_-prefix in preparation for the future
  3839. removal of several curl_-functions from the public libcurl API.
  3840. - Introduced lib/curlx.h as a single header to provide the curlx_-functions
  3841. to apps.
  3842. - Added notices in the man pages for curl_getenv, curl_mprintf, curl_strequal
  3843. and curl_strnequal that they are subject for removal in a future release.
  3844. STOP USING THESE FUNCTIONS.
  3845. - Mihai Ionescu noticed he couldn't do formposts with whitespace in the file
  3846. names and yes, I broke that on April 23. Sigh. I fixed it now and added
  3847. test case 166 to verify it.
  3848. - Luca Altea pointed out a mistake left from the Digest patch of yesterday.
  3849. Daniel (29 April 2004)
  3850. - Made IDN domains work when sending requsts over HTTP proxy as well. Added
  3851. test case 165 to verify the functionality.
  3852. - Fixed a bug in the new internal host name setup when re-using connections.
  3853. - James Bursa found out that curl_easy_duphandle() with ares-built libcurl
  3854. created a bad handle that would crash in the first name resolve attempt. This
  3855. is now fixed and test case 512 was added to verify it.
  3856. - Luca Altea provided a major HTTP Digest code fix and cleanup. We now follow
  3857. the Digest RFC a lot better.
  3858. - Gisle Vanem made the SSL code use ERR_error_string_n() where applicable.
  3859. Daniel (27 April 2004)
  3860. - I remodeled Gisle's IDN code slightly and now we convert both the host name
  3861. and proxy name to the ACE encoded version to use internally for resolves and
  3862. cookies etc. They are now using one 'struct hostname' each that keep both
  3863. the original name and the possibly encoded name. IDN resolves work for me
  3864. now using ipv6, ipv4 and ares resolving. Even cookies on IDN sites seem to
  3865. do right. I got some failures at first when CHARSET wasn't set at all which
  3866. confused libidn completely and it decided by encoding of choice was
  3867. 'ANSI_X3.4-1968'...
  3868. - made 'configure --without-libidn' work
  3869. Daniel (25 April 2004)
  3870. - Fixed the src/hugehelp.c file to include "setup.h" instead of "config.h" to
  3871. make the problems with USE_MANUAL on windows go away.
  3872. - configure --without-ssl could still wrongly include some OpenSSL info in the
  3873. Makefiles if pkg-config had info about OpenSSL. Bug #941762 reported by
  3874. Martin.
  3875. - Since we can now build and use quite a large set of 3rd party libraries, I
  3876. decided I would make configure produce a summary at the end showing what
  3877. libraries it uses and if not, what option to use to make it use that. I also
  3878. added some other random info that is nice in a "configure summary" output.
  3879. - Applied TommyTam's patch that now make curl work with telnet and stdin
  3880. properly on Windows.
  3881. - The changes for today below were made by me and Gisle Vanem.
  3882. The file previously known as hostip.c has now undergone a huge cleanup and
  3883. split:
  3884. hostip.c explained
  3885. ==================
  3886. The main COMPILE-TIME DEFINES to keep in mind when reading the host*.c
  3887. source file are these:
  3888. CURLRES_IPV6 - this host has getaddrinfo() and family, and thus we use
  3889. that. The host may not be able to resolve IPv6, but we don't really have to
  3890. take that into account. Hosts that aren't IPv6-enabled have CURLRES_IPV4
  3891. defined.
  3892. CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
  3893. name resolves. It cannot have ENABLE_IPV6 defined at the same time, as
  3894. c-ares has no ipv6 support. This can be Windows or *nix.
  3895. CURLRES_THREADED - is defined if libcurl is built to run under (native)
  3896. Windows, and then the name resolve will be done in a new thread, and the
  3897. supported asynch API will be the same as for ares-builds.
  3898. If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
  3899. libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
  3900. defined.
  3901. The host*.c sources files are split up like this:
  3902. hostip.c - method-independent resolver functions and utility functions
  3903. hostasyn.c - functions for asynchronous name resolves
  3904. hostsyn.c - functions for synchronous name resolves
  3905. hostares.c - functions for ares-using name resolves
  3906. hostthre.c - functions for threaded name resolves
  3907. hostip4.c - ipv4-specific functions
  3908. hostip6.c - ipv6-specific functions
  3909. The hostip.h is the single united header file for all this. It defines the
  3910. CURLRES_* defines based on the config*.h and setup.h defines.
  3911. - Added function header comments to many functions in an attempt to better
  3912. explain the purpose of them all.
  3913. - configure --with-libidn is now supported. It makes the configure script
  3914. check for libidn libs and include files in the prefix path given. If you
  3915. say --with-libidn=/usr/local, it will check for the lib in /usr/local/lib
  3916. and the includes in /usr/local/include etc.
  3917. - curl_version_info() now returns a struct aged CURLVERSION_THIRD including
  3918. libidn version info. The string curl_version() returns also includes libidn
  3919. version info, if available.
  3920. Version 7.11.2 (26 April 2004)
  3921. Daniel (25 April 2004)
  3922. - Erwin Authried pointed out that configure --disable-manual didn't do right
  3923. if you already had a src/hugehelp.c source file present (which most people
  3924. do I guess). It now uses the USE_MANUAL define properly.
  3925. Daniel (23 April 2004)
  3926. - Gisle Vanem found and fixed a memory leak when doing (failing) Windows
  3927. threaded name resolves.
  3928. - I also added test case 163 just to make sure -F "var=<file" works fine and
  3929. can pass on characters such as newlines, carriage-return and tabs.
  3930. - When we added test case 162 without adding the necessary requirement field
  3931. in the test meta data we could see that curl didn't complain if you used
  3932. --proxy-ntlm even if the underlying libcurl it uses has no NTLM support! I
  3933. now made it check this first, and it now exists with a "the installed
  3934. libcurl version doesn't support this" message if it happens again.
  3935. Daniel (22 April 2004)
  3936. - David Byron found and fixed a small bug with the --fail and authentication
  3937. stuff added a few weeks ago. Turns out that if you specify --proxy-ntlm and
  3938. communicate with a proxy that requires basic authentication, the proxy
  3939. properly returns a 407, but the failure detection code doesn't realize it
  3940. should give up, so curl returns with exit code 0. Test case 162 added to
  3941. verify the functionality.
  3942. - allow newlines in the contents when doing -F "var=[contents]"
  3943. Robert Marlow reported.
  3944. - If a transfer is found out to be only partial, libcurl will now treat that
  3945. as a problem serious enough to skip the final QUIT command before closing
  3946. the control connection. To avoid the risk that it will "hang" waiting for
  3947. the QUIT response. Added test case 161 to verify this.
  3948. Daniel (21 April 2004)
  3949. - Modified the heuristics for dealing with the test 160 scenario. When a
  3950. connection is re-used and nothing at all is received from it (because the
  3951. server closes the connection), we will now retry the request on a fresh new
  3952. connection. The previous ECONNRESET stuff from January 30 was removed again
  3953. as it didn't detect the situation good enough.
  3954. Daniel (20 April 2004)
  3955. - Added test case 160 to verify that curl works correctly when it gets a
  3956. connection reset when trying to re-use a connection. It should then simply
  3957. create a new connection and resend the request.
  3958. Daniel (19 April 2004)
  3959. - No more 512 byte limit for host name (inclusing name + password) in libcurl.
  3960. An added bonus is that we use less memory for the typical (shorter URL)
  3961. case.
  3962. - Cleaned up the sources to better use the terms 'hostname' and 'path'
  3963. internally when referring to that data. The buffers used for keep that info
  3964. is called 'namebuffer' and 'pathbuffer'. Much easier to read and understand
  3965. than the previous mess.
  3966. Daniel (15 April 2004)
  3967. - Modified runtests.pl again to remove all log files in the log/ dir between
  3968. each test, and then made -p display all non-zero byte files in the log dir.
  3969. It should make that data more usable and contain less rubbish.
  3970. - ftpserver.pl now produces log files more similar to how the sws ones look
  3971. and they now also contains a bit more details to help debugging ftp
  3972. problems.
  3973. - Removed the fixed maximum amount of dir levels the FTP code supported.
  3974. Previously we had a fixed array for 100 levels, now we save space in each
  3975. handle by allocating only for a few level by default and then enlarging that
  3976. in case of need (with no maximum depth). Adjusted test case 142 to verify
  3977. that 150 dir levels work fine. An added bonus is that we use less memory
  3978. for the typical (not very deep) case.
  3979. Daniel (14 April 2004)
  3980. - Asking for CURL_IPRESOLVE_V6 when ipv6 addresses can't be resolved will
  3981. now cause the resolve function to return NULL immediately. This flaw was
  3982. pointed out by Gisle Vanem.
  3983. - Gisle Vanem made curl -4/-6 actually set the desired option to libcurl.
  3984. - runtests.pl now has a new option (-p) that will display "interesting" log
  3985. files to stdout in case of a test failure. This is primarily intended to be
  3986. used in the 'full-test' make target that is used by the autobuild tests, as
  3987. we then get a much better chance to understand (remote) test failures based
  3988. on autobuild logs alone.
  3989. Daniel (13 April 2004)
  3990. - Gisle Vanem made the multi interface work again on Windows even when built
  3991. without ares. Before this, select() would return -1 during the name resolve
  3992. phase since curl_multi_fdset() didn't return any fd_set at all which wasn't
  3993. appreciated!
  3994. - curl_easy_duphandle() now duplicates the tcp_nodelay info as well.
  3995. Daniel (11 April 2004)
  3996. - Applied David Byron's patch for the MSVC libcurl makefile for builds with
  3997. zlib.
  3998. Daniel (9 April 2004)
  3999. - Dirk Manske improved the timer resolution for CURLINFO_*_TIME, it can now
  4000. be down to usec if the system sypports it.
  4001. Daniel (7 April 2004)
  4002. - A request that sends "Expect: 100-continue" and gets nothing but a single
  4003. 100 response back will now return a CURLE_GOT_NOTHING. Test 158 verifies.
  4004. - The strtoofft() macro is now named curlx_strtoofft() to use the curlx_*
  4005. approach fully.
  4006. Daniel (6 April 2004)
  4007. - Gisle Vanem's fixed bug #927979 reported by Nathan O'Sullivan. The problem
  4008. made libcurl on Windows leak a small amount of memory in each name resolve
  4009. when not used as a DLL.
  4010. - New authentication code added, particularly noticable when doing POST or PUT
  4011. with Digest or NTLM. libcurl will now use HEAD to negotiate the
  4012. authentication and when done perform the requested POST. Previously libcurl
  4013. sent POST immediately and expected the server to reply a final status code
  4014. with an error and then libcurl would not send the request-body but instead
  4015. send then next request in the sequence.
  4016. The reason for this change is due to IIS6 barfing on libcurl when we attempt
  4017. to POST with NTLM authentication. The reason for the problems is found in
  4018. RFC2616 section 8.2.3 regarding how servers should deal with the 100
  4019. continue request-header:
  4020. If it responds with a final status code, it MAY close the transport
  4021. connection or it MAY continue to read and discard the rest of the
  4022. request.
  4023. Previous versions of IIS clearly did close the connection in this case,
  4024. while this newer version decided it should "read and discard". That would've
  4025. forced us to send the whole POST (or PUT) data only to have it discarded and
  4026. then be forced to send it again. To avoid that huge penality, we switch to
  4027. using HEAD until we are authenticated and then send the POST.
  4028. The only actual drawback I can think of (except for the odd sites that might
  4029. treat HEAD differently than they would treat POST/PUT when given the same
  4030. URL) is that if you do POST with CURLAUTH_ANY set and the site requires NO
  4031. authentication, libcurl will still use a HEAD in a first round and then do a
  4032. POST.
  4033. If you do a HEAD or a GET on a site using CURLAUTH_ANY, libcurl will send
  4034. an un-authenticated request at once, which then is the only request if the
  4035. site requires no auth.
  4036. Alan Pinstein helped me work out the protocol details by figuring out why
  4037. libcurl failed and what IIS6 expects.
  4038. - The --limit-rate logic was corrected and now it works a lot better for
  4039. higher speeds, such as '10m' or similar. Reported in bug report #930249.
  4040. - Introducing curlx_tvnow() and curlx_tvdiff() using the new curlx_* fashion.
  4041. #include "timeval.h" from the lib dir to get the protos etc. Note that
  4042. these are NOT part of the libcurl API. The curl app simply uses the same
  4043. source files as the library does and therefore the file needs to be compiled
  4044. and linked with curl too, not just when creating libcurl.
  4045. - lib/strerror.c no longer uses sys_nerr on non-windows platforms since it
  4046. isn't portable enough
  4047. Daniel (2 April 2004)
  4048. - In the curl_strnqual.3 man page, we now prepend the man3 dir to the file
  4049. name to work better. As pointed out by Robin Kay.
  4050. - Andrés García updated the mingw makefiles.
  4051. - Dirk Manske fixed a problem I recently added in the progress meter code that
  4052. broke subsecond resolution for CURLINFO_TOTAL_TIME. He also pointed out a
  4053. mistake in the code that produces the final update of the progress meter
  4054. that would often prevent it from actually being updated that final time.
  4055. Daniel (1 April 2004)
  4056. - Dirk Manske fixed a memory leak that happened when we use ares for name
  4057. resolves and decides to time-out before ares does it. This fix uses the
  4058. brand new ares_cancel() function which is not present in c-ares 1.1.0.
  4059. When told to enable ares, the configure script now checks for presence of
  4060. the ares_cancel function to alert users if they attempt to use a too old
  4061. c-ares library.
  4062. Daniel (31 March 2004)
  4063. - Roy Shan fixed a flaw that prevented ares name resolve timeouts to occur!
  4064. - Dirk Manske found out that libcurl timed out waiting for resolves far too
  4065. easy when libcurl was built to use (c-)ares for name resolving.
  4066. - Further Digest fixing and a successful test case 153 now makes me believe
  4067. Mitz Wark's problems are fixed.
  4068. - Andres Garcia figured out that test case 63, while working, only proved a
  4069. flaw in libcurl's 'http_proxy' parser when a user name and password is
  4070. provided. The user name was not extracted properly (and 'http' was always
  4071. used as user name).
  4072. - Andrés García fixed compiler warnings in our ioctlsocket() usage.
  4073. Daniel (30 March 2004)
  4074. - Joe Halpin faced problems with the getnameinfo() argument ai_flags and the
  4075. particular bit named 'NI_WITHSCOPEID' on Solaris 9 for Intel. I've now
  4076. written a configure test that checks for a working NI_WITHSCOPEID
  4077. implemenation. No code uses the result from this test yet, it is still
  4078. experimental. James Carlson wrote in comp.unix.solaris: "It's a bug
  4079. (5006623) -- it's not supported and shouldn't be in the header file."
  4080. - I provided Mitz Wark with a first patch in order to fix libcurl's problems
  4081. to re-negotiate Digest authentication (when 'stale=true' is included in the
  4082. response header).
  4083. - Roy Shan discovered that the multi interface didn't properly timeout name
  4084. lookups which could make handles get stuck in that state and thus never get
  4085. completed. I've produced a first test patch that attempts to correct this.
  4086. - David Byron's patch was appplied to make CURLOPT_FAILONERROR work nicely
  4087. even with authentcations such as NTLM or Digest enabled. Test cases 150, 151
  4088. and 152 were added to verify the functionality.
  4089. Daniel (29 March 2004)
  4090. - Gisle Vanem updated files for the djgpp/MS-DOS build.
  4091. - Andrés García helped me work out a fix for the runtests.pl script to make
  4092. the file:// tests run fine when tested with the mingw-built version of curl.
  4093. - Fixed an include issue with netinet/tcp.h on AIX, based on input by Tor.
  4094. This also required a minor fix of the configure script.
  4095. - The postit2.c source example used the wrong struct name for the post data.
  4096. Daniel (26 March 2004)
  4097. - Gisle Vanem improved ipv6 support on windows by making the curl build to use
  4098. the correct getaddrinfo() function.
  4099. Daniel (25 March 2004)
  4100. - It turned out that AIX, despite having a "thread-safe libc", doesn't offer
  4101. all traditional functions thread-safe. This URL is informative on this
  4102. subject:
  4103. http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
  4104. genprogc/thread_quick_ref.htm
  4105. As a result of this, we now check for three *_r() functions on recent AIX
  4106. versions as well that the URL mentions aren't thread-safe in AIX 5.1.
  4107. - renamed curl_strerror.[ch] to strerror.[ch]
  4108. - Joe Halpin added CURLOPT_TCP_NODELAY and --tcp-nodelay to make it possible
  4109. for users to disable the Nagle algorthim-usage.
  4110. - Tor Arntsen provided some interesting strerror_r() knowledge. glibc has its
  4111. own API which differs from the POSIX one. Daniel adjusted the configure
  4112. script to detect the version in use, and the code now uses the new defines
  4113. accordingly.
  4114. - Fixed some build flaws with the new lib/curl_strerror.c source file.
  4115. Daniel (24 March 2004)
  4116. - Gisle Vanem's fix to replace the bad use of strerror(). This introduces
  4117. Curl_strerror() that attempts to be thread-safe _and_ works on Windows too!
  4118. - Tor Arntsen spell-fixed lots of libcurl man pages.
  4119. - Tor Arntsen made testcurl.pl work with older perl 5 versions, and Daniel
  4120. made it not use chdir .. to go back, as that isn't very good when you've
  4121. setup a testdir containing symlinks.
  4122. - Added a check for strerror_r() in the configure script.
  4123. Daniel (23 March 2004)
  4124. - Added Greg Hewgill's testcurl.pl script to CVS. We have not moved over to
  4125. use this script for the real distributed testing just yet, but it is only
  4126. a matter of time.
  4127. - Gisle Vanem provided code that makes curl report a better error message
  4128. if --interface fails on windows.
  4129. - The regular progress meter is now fixed to never wrap due to long lines. All
  4130. fields are now static sized. If the time in the time fields get a time value
  4131. that would represent a time that is 100 hours or more (if not, it remains
  4132. using a HH:MM:SS display), it switches first to a "NNNd NNh" display (for
  4133. days and hours) and if that isn't enough it switches to a "NNNd" display if
  4134. it is more than 999 days.
  4135. Several of the calculations were also moved to fixed-point math instead of
  4136. using doubles.
  4137. Daniel (22 March 2004)
  4138. - Glen Nakamura noticed CURLINFO_CONTENT_LENGTH_DOWNLOAD didn't work as it
  4139. used to do if CURLOPT_NOBODY is set TRUE.
  4140. - Kevin Roth patched the cygwin package makefile and README to adjust to
  4141. new cygwin packaging guidelines.
  4142. - Enabled "NT responses" in the NTLM authentication. Doing this simply means
  4143. that we provide an extra chunk of data in each "type-3 message". The only
  4144. reason for doing this is that it seems that using only the "Lanmanager hash"
  4145. (as we've been doing until now) doesn't support passwords longer than 14
  4146. characters and it turns out there are users out there who want to use
  4147. libcurl and NTLM with such passwords! ;-) Seven NTLM-related test cases were
  4148. updated accordingly. Mentioned as issue 29 in TODO-RELEASE, bug report
  4149. #915609
  4150. - Moved the generated libcurl version info to a new header file, named
  4151. curl/curlver.h. Now interested parties can include ONLY version info, should
  4152. anyone want that (and it seems at least some windows resource files would).
  4153. Mentioned as issue 27 in TODO-RELEASE.
  4154. Daniel (21 March 2004)
  4155. - Fixed the root Makefile to use tabs for the netware target. Günter Knauf
  4156. pointed this out.
  4157. - Marty Kuhrt's VMS cleanup
  4158. - Thomas Schwinge made buildconf recognize ACLOCAL_FLAGS to invoke aclocal
  4159. with particular pre-determined options.
  4160. Version 7.11.1 (19 March 2004)
  4161. Daniel (18 March 2004)
  4162. - Tor Arntsen brought some info about SGI IRIX:
  4163. IRIX supports 3 different executable/object formats, -32, -n32 and -64.
  4164. -n32 is default 32-bit format, -32 is the "old" 32-bit format, and -64 is
  4165. the 64-bit format. Libraries for the different formats are in lib, lib32
  4166. and lib64 respectively.
  4167. We've now adjusted the configure script to adapt to this when scanning for
  4168. 3rd party libs, such as OpenSSL.
  4169. Daniel (17 March 2004)
  4170. - Watz pointed out a few missing files in the MSVC project description file.
  4171. - Günter Knauf brought patches, code and makefiles to build curl on Novell
  4172. NetWare.
  4173. Daniel (15 March 2004)
  4174. - Lots of libcurl man pages were updated to contain references to other man
  4175. pages the recognized way so that they appear as nice hyperlinks in the HTML
  4176. versions.
  4177. - buildconf now checks the m4 version too, since autoconf requires a GNU m4
  4178. version to build proper configure scripts.
  4179. Daniel (12 March 2004)
  4180. - Added CURLOPT_POSTFIELDSIZE_LARGE, the large file version of
  4181. CURLOPT_POSTFIELDSIZE to allow POSTs larger than 2GB.
  4182. - David Byron fixed an uninitialized variable case/crash.
  4183. Daniel (10 March 2004)
  4184. - Jeff Lawson fixed the SSL connection to deal with received signals during the
  4185. connect.
  4186. - Changed the OS string for win32 to become "i386-pc-win32".
  4187. Daniel (9 March 2004)
  4188. - Changed the internals to use curl_socket_t for socket variable type. This
  4189. should enable us to build with less warnings on Windows, where SOCKET is
  4190. used which is an unsigned int, while most other platforms use a mere int.
  4191. - Modified lib/config-win32.h to build fine on MSVC again.
  4192. Version 7.11.1-pre1 (8 March 2004)
  4193. Daniel (8 March 2004)
  4194. - Minor fix to make curl CURL_VERSION_LARGEFILE is only set if curl_off_t is
  4195. larger than 4 bytes.
  4196. Daniel (4 March 2004)
  4197. - Improved PUT/POST with NTLM/Digest authentication, the so called issue 12.
  4198. - Modified the test HTTP server a lot to work with the upcoming changes for
  4199. PUT/POST with NTLM/Digest authentication (like test case 88). Added Andrés
  4200. García's win32-changes. Improved the logging.
  4201. - Fixed the file:-related progress/getinfo stuff a bit more.
  4202. Daniel (4 March 2004)
  4203. - I corrected a problem with the multi interface when following a Location:
  4204. header or when doing multiple-request authentications. A subsequent request
  4205. could erroneously re-use a previous connection that was sent with
  4206. Connection: close. Christopher R. Palmer reported.
  4207. - Andrés García patched curl to prevent warnings while compiling with mingw,
  4208. mainly because it is now possible to have both WIN32 and HAVE_CONFIG_H
  4209. defined.
  4210. - When transferring files from a file: URL, the progress meter and other
  4211. transfer metrics were not updated properly.
  4212. - David Byron provided a "version resource" file to the curl executable for
  4213. the windows builds.
  4214. Daniel (3 March 2004)
  4215. - David Byron's work on making libcurl only require winsock 1.1 on Windows
  4216. machines.
  4217. - More variable cleanups based on compiler warnings generated by Tor Arntsen's
  4218. autobuilds with MIPSPro.
  4219. - Joe Halpin helped us fix some pedantic compiler warnings on FreeBSD.
  4220. - Applied Tom Bates' patch to build on nsr-tandem-nsk.
  4221. - Dan Fandrich corrected some flaws in the configure GSS detection.
  4222. Daniel (2 March 2004)
  4223. - Fixed the libcurl code to use FORMAT_OFF_T for printf() formatting
  4224. curl_off_t types internally.
  4225. Daniel (1 March 2004)
  4226. - Added CURL_VERSION_LARGEFILE as a feature-bit in the curl_version_info()
  4227. response, that signals if this libcurl supports >2GB files. curl -V now
  4228. outputs 'Largefile' in the Features: field if this is the case. Most systems
  4229. are likely to support this.
  4230. - We offer a CURL_FORMAT_OFF_T define in the public header, which can be used
  4231. to printf() curl_off_t variables. We also modified the libcurl sources to
  4232. use this define instead of the previous %Od approach (although I've left the
  4233. O-flag functional in the code). This should also prevent compilers to warn
  4234. on the home-grown option.
  4235. - Fixed the resume-check code to test for a working resume at the end of the
  4236. headers and not at the first body-byte.
  4237. - CURLOPT_DNS_USE_GLOBAL_CACHE is now considered obsolete. Stop using it. If
  4238. you need a global DNS cache for whatever reason, use the share interface and
  4239. you'll get a global cache that works the way it should work. You can even
  4240. have any number of global caches, all at your command. This is now also
  4241. mentioned in the docs.
  4242. - Made the *printf code support the z-flag to enable size_t printf() in a
  4243. manner similar to how glibc allows it. To make printfing of this work on
  4244. platforms with 64bit size_t and 32bit ints. If there even are any! ;-)
  4245. - Christopher R. Palmer discovered that if you CURLOPT_FRESH_CONNECT and
  4246. CURLAUTH_NTLM (or CURLAUTH_ANY and libcurl then picked NTLM), libcurl would
  4247. loop without succeeding to authenticate due to the new connection that was
  4248. made for all round-trips in the authentication. Now, the FRESH_CONNECT is
  4249. remade to only matter for the first connection made with curl_easy_perform()
  4250. and all the rest that might follow due to FOLLOWLOCATION or HTTP
  4251. authentication are now ignoring that option.
  4252. - Adjusted the QUIT code slightly since it could core-dump.
  4253. - Corrected the test suite's FTP server to provide a correct size to the
  4254. 'verifiedserver' request.
  4255. Daniel (27 February 2004)
  4256. - Joe Halpin made the FTP code send QUIT on the control connection before
  4257. disconnecting the TCP connection. This is what good-behaving ftp clients
  4258. should do.
  4259. Daniel (26 February 2004)
  4260. - David Byron updated several files to make curl build fine on MSVC 6. He
  4261. also added the 'buildconf.bat' that works like the 'buildconf + configure'
  4262. combo does on unixes.
  4263. - Gisle Vanem made the memdebug stuff support calloc() as well.
  4264. - Tor Arntsen pointed out that testcurl.sh needed to remove the generated
  4265. files in order to have them re-generated in each build.
  4266. - Andy Serpa found out that the share interface did not enjoy life when not
  4267. having the lock and unlock callbacks set, even though documented to be
  4268. OK. It still is OK, and now the code won't segfault anymore!
  4269. Daniel (25 February 2004)
  4270. - Based on a patch by Greg Hewgill I modified how long long is used in the
  4271. mprintf code, as we can use a 64bit type with MSVC that is a long long
  4272. equivalent. This corrects some weird large file behaviors on windows.
  4273. - Tor Arntsen helped me work out --enable-debug to work better with different
  4274. versions of the gcc and icc compilers.
  4275. - Added CURLOPT_SHARE to the curl_easy_setopt.3 man page.
  4276. Daniel (22 February 2004)
  4277. - Applied the final pieces of Gisle Vanem's patch that brings a working name
  4278. resolve timeout to the windows versions of curl!
  4279. Daniel (21 February 2004)
  4280. - David Byron's fix to allow the speed-limit logic work even if you set
  4281. limit-rate. It does work on the expense of the rate limiter.
  4282. Daniel (20 February 2004)
  4283. - configure --enable-debug with gcc now also tries to detect the icc compiler
  4284. (which somehow gets treated as if it is a gcc) to stop using all the gcc
  4285. options with it, and we also provide -isystem options for each extra -I
  4286. option the configure script has figured out (for OpenSSL, kerberos, zlib,
  4287. Heimdal etc). This of course to prevent warnings on headers we don't have
  4288. control of.
  4289. Daniel (19 February 2004)
  4290. - Doug Porter made libcurl use the HOME environment variable before the
  4291. getpwuid results when looking for .netrc files.
  4292. - If 'configure --enable-debug' is used with gcc, it now checks which gcc
  4293. version it is and uses as picky compiler options as possible for the
  4294. particular version.
  4295. - Code that can be used in both the lib and in the curl app is now made to use
  4296. the curlx_ prefix. The first function to be available like this is the
  4297. curlx_strtoll() function. This is made to allow the app to use existing code,
  4298. but without polluting the libcurl API. Further explanations posted here:
  4299. http://curl.haxx.se/mail/lib-2004-02/0215.html
  4300. Daniel (18 February 2004)
  4301. - Fixed buildconf to not use "which" as AIX and Tru64 have what have been
  4302. referred to as "horribly broken 'which' programs".
  4303. - Made sure dns cache timeout set to -1 really means caching forever.
  4304. Daniel (17 February 2004)
  4305. - Made it possibly to build c-ares with the libcurl memdebug system to better
  4306. track memory.
  4307. Daniel (16 February 2004)
  4308. - When using ares, we now initialize the ares 'channel' in curl_easy_init()
  4309. and re-use that same handle during the entire curl handle's life-time. It
  4310. improves performance.
  4311. - Fixed a problem when displaying verbose for ipv6-enabled libcurls and
  4312. re-used connections. Problem reported and fix verified by Grigory Entin.
  4313. - Jeff Lawson fixed the version-check in the SOCKS5 code.
  4314. Daniel (15 February 2004)
  4315. - Fixed a case where a host cache entry was not flagged in-use properly when a
  4316. cached entry was used.
  4317. - Andrés García's patch that checks for winmm in the configure script was
  4318. applied.
  4319. Daniel (13 February 2004)
  4320. - Ben Greear's SO_BINDTODEVICE patch for the binding of the local end to a
  4321. specific network interface.
  4322. - Greg Hewgill found out that the variable holding 'contentlength' wasn't big
  4323. enough to hold a large file!
  4324. - Tor Arntsen fixed a 64bit-related problem in date-related code in the ftp
  4325. department, and there was another potential problem in the name resolve code
  4326. too.
  4327. Daniel (11 February 2004)
  4328. - Removed a few variables that were only set but never used, as some compilers
  4329. warn about that and we do not like compiler warnings!
  4330. - Removed the need for symlinks in the tests/data directory if curl is built
  4331. outside of the source directory and the 'make test' is used. This was done
  4332. by providing a "source dir path" to the scripts/servers.
  4333. - Now, if the configure script can't find an nroff tool or an option to nroff
  4334. to use to convert man pages with, it will completely switch off the built-in
  4335. manual.
  4336. - 'configure --disable-manual' completely disables the built-in manual from
  4337. the curl command tool.
  4338. - Andrés García fixed the configure script and a minor source edit, and now
  4339. he has managed to get msys/mingw to run configure and then build!
  4340. Daniel (9 February 2004)
  4341. - The default HTTP Accept: header was modified to the much simpler
  4342. "Accept: */*".
  4343. - P R Schaffner updated the curl-ssl spec file for RPMs.
  4344. - Dominick Meglio brought lots of documentation for the share interface's man
  4345. pages that were previously missing.
  4346. - Tor Arntsen provided a patch that makes libcurl work-around a bug in the
  4347. AIX5 implementation of getaddrinfo(). This makes the FTP PORT stuff work on
  4348. ipv6-enabled AIX builds.
  4349. - Ken Rastatter provided portability fixes for the curlgtk.c example, and now
  4350. it runs on windows with GTK as well!
  4351. Daniel (6 February 2004)
  4352. - Andrés García made the configure script find gethostbyname() fine when run
  4353. with mingw on windows.
  4354. - Modified the ldap code to use proper function pointers all over (instead of
  4355. mixed data and function pointers) to work-around the picky MIPSPro compiler
  4356. warnings.
  4357. - A custom Host: header is only considered if the request is not made by
  4358. following a location. After discussions with Tim Baker.
  4359. Daniel (5 February 2004)
  4360. - The libz part of the configure script now only set the two libz-related
  4361. define HAVE_ZLIB_H and HAVE_LIBZ if both the lib and the header is found.
  4362. If one is missing, none of the defines is set.
  4363. - Andrés García fixed the Mingw makefiles.
  4364. - Len Krause reported that curl 7.9.X could do uploading from stdin without
  4365. doing chunked encoding, which current curl cannot do even if you disable
  4366. the transfer-encoding chunked header. Now it can again, and test case 98
  4367. verifies this functionality.
  4368. - Tor Arntsen fixed a weird getaddrinfo() usage in the FTP code, preventing
  4369. the ipv6-code for PORT work on AIX 5.2. We now also provide (better) error
  4370. messages when bailing out in the that function.
  4371. - Tor Arntsen now provides AIX and IRIX (using gcc, xlc and the MIPSPro
  4372. compilers) automated build logs (http://curl.haxx.se/auto/) and we've fixed
  4373. numerous minor quirks to make less warnings appear.
  4374. Daniel (4 February 2004)
  4375. - Based on a patch by Gilad, we now use the custom timeouts when waiting for a
  4376. server to connect when using FTP PORT. Previously we always waited 10
  4377. seconds, no more no less. We now also changed the default (if no timeout is
  4378. set) to wait 60 seconds for the connect before we fail.
  4379. Daniel (3 February 2004)
  4380. - Modified to link with c-ares instead of ares.
  4381. Daniel (2 February 2004)
  4382. - Added a configure test to check for which option the (g)nroff tool wants
  4383. to extract plain text from the man pages. Tor Arntsen told us the AIX
  4384. version of GNU gnroff doesn't support -man!
  4385. - Added an undef of accept in memdebug.h to make curl build with --enable-debug
  4386. on AIX 5.2 which seems to have accept defined. Reported by Tor Arntsen.
  4387. - curl_version() now includes c-ares version info, and curl_version_info() now
  4388. returns a struct with version SECOND that also includes that info.
  4389. - We are now officially using c-ares for asynch name resolves. c-ares is the
  4390. new library, based on the existing ares but with an extended and slightly
  4391. modified API.
  4392. - Dirk improved the ares timeout code, and now we also include the ares error
  4393. string when we fail to resolve a name.
  4394. - Another tweak to make test case 91 run fine. Now we have another bit on a
  4395. connection that is set true if the connection is marked for 'retry'. That
  4396. makes the connection get closed and re-opened and the HTTP-done code must
  4397. not complain on the fact that no data was received.
  4398. - Based on Dirk Manske's patch, I modified the name resolving with ares to
  4399. feature a timeout for really slow lookups. It now defaults to 300 seconds,
  4400. but is now adjusted to the CONNECTTIMEOUT/TIMOUE timeouts if one of them
  4401. is set.
  4402. - Fixed the inclusion of ca-bundle.h to really use the one in the build dir
  4403. before the one in the source dir. Domenico Andreoli found out and reported.
  4404. - Added test case 97, a simple POST with a custom Content-Type header
  4405. replacing the original application/x-www-form-urlencoded one.
  4406. Daniel (30 January 2004)
  4407. - Added code that attempts to fix the test 91 failure. As has been figured out
  4408. by Patrick Smith, the error happens because we re-use a connection that the
  4409. server is just about to close and we even manage to send away the request
  4410. without seeing an error. On the first read attempt we get a ECONNRESET.
  4411. Starting now, we attempt to detect this and if so, we retry the request on a
  4412. fresh connection.
  4413. - I added test case 510 which is a custom program that does a POST using a
  4414. read callback, with chunked transfer-encoding.
  4415. - Adjusted one of the MPE/iX changes as it made test case 504 fail all over.
  4416. - Added --socks as a recognized option. It works just like --proxy but sets a
  4417. SOCKS5 proxy to use. SOCKS5 support has been available in libcurl for a
  4418. while, just not provided by the curl tool. This does not currently work for
  4419. IPv6-enabled libcurls.
  4420. Daniel (29 January 2004)
  4421. - Stadler Stephan pointed out that src/hugehelp.c included config.h without
  4422. checking the define if its present...
  4423. - Ken Hirsch provided patches to make curl build fine on the MPE/iX operating
  4424. system.
  4425. - Dan Fandrich compiled curl with lots of aggressively pedantic compiler
  4426. options and thus found a few minor errors and did some general cleanups to
  4427. avoid them.
  4428. - Dirk Manske fixed a flaw in ares that prevented it to use non-blocking
  4429. sockets properly.
  4430. Daniel (28 January 2004)
  4431. - Richard Bramante fixed chunked transfer-encoded "uploads" to send a final
  4432. CRLF combo properly.
  4433. Daniel (27 January 2004)
  4434. - Made the response-headers during a CONNECT request to a proxy get passed on
  4435. as regular headers, so they appear with -i/-I options and similar.
  4436. - Based on a patch by Gisle Vanem, I've made the progress meter display
  4437. properly switch to a GB-display when more than 9999MB have been transfered.
  4438. Daniel (23 January 2004)
  4439. - Gisle Vanem pointed out a curlrc parser problem/crash when an option with a
  4440. required didn't have one and was on the last line of a file.
  4441. - More Windows fixes for large files. We now build and link with
  4442. ../lib/strtoofft.c in the app code since Curl_strtoll() is not a provided
  4443. libcurl function... Perhaps we should consider a 'common' dir or similar
  4444. where we put source code used in both the lib and the client. Or perhaps
  4445. we'll just make this function available in the library...
  4446. - Vincent Bronner found out the socks5 code crashed when no username was
  4447. set.
  4448. - Vincent Bronner spotted a problem with proxy username/password when re-using
  4449. a persistent connection.
  4450. - Fixed the progress meter display for files larger than 2^31 bytes. Gisle
  4451. Vanem reported.
  4452. Daniel (22 January 2004)
  4453. - Gisle Vanem made strtoll() get used when curl is built with the mingw
  4454. compiler.
  4455. - Gisle Vanem fixed the compressed help text code to display properly.
  4456. - Removed the '#define HttpPost' from the public header file, as curl_httppost
  4457. is the proper name and it has been for quite some time now. Fixes another
  4458. name space pollution.
  4459. - Added 'curl_off_t' typedef in the public header file, to be used to provide
  4460. large file sizes to the *_LARGE options. Adjusted the code all over to use
  4461. this variable type instead of 'off_t'. This is an attempt to make the large
  4462. file support work on more platforms. The configure script now checks the
  4463. size of the curl_off_t instead of the plain off_t.
  4464. Version 7.11.0 (22 January 2004)
  4465. Daniel (21 January 2004)
  4466. - Removed the defines in the public header file with TIMECOND_ prefixes. They
  4467. have been obsolete since April 22nd 2002, and if this causes anyone any
  4468. problems now it is very easy to just add CURL_ to the names. This corrects
  4469. this name space pollution.
  4470. Daniel (19 January 2004)
  4471. - David Byron cleaned up how --trace with no option was treated, and also
  4472. arguments in a config file without a required parameter!
  4473. Daniel (16 January 2004)
  4474. - Gisle Vanem fixed a few issues where compilers warned about variables
  4475. possibly being used unassigned.
  4476. - Minor Interix build problem fixed.
  4477. Daniel (15 January 2004)
  4478. - Peter Sylvester pointed out some necessary escaping needed in the
  4479. acinclude.m4 file when automake 1.8 or later is used.
  4480. Daniel (14 January 2004)
  4481. - Vincent Bronner fixed the Curl_resolv() return code. This extends the fix
  4482. Steve Green provided on december 3...
  4483. Daniel (13 January 2004)
  4484. - Luke Call made the win32 version of the password prompting function support
  4485. backspace.
  4486. - Dan Fandrich fixed the hugehelp source file to contain both a compressed and
  4487. an uncompressed version in the distribution, so that more people easier can
  4488. build curl with the compressed version.
  4489. - Diego Casorran brought another AmigaOS build patch for native Amiga builds.
  4490. - Matt Veenstra updated the Mac OS X framework files.
  4491. - Brian R Duffy brought a section to the INSTALL file on how to build a
  4492. SSL-enabled curl using the free Borland C++ compiler. He also updated the
  4493. Borland lib/Makefile.b32.
  4494. - I fixed the test case 509 which I broke yesterday. Now the libtest are
  4495. compiled with an include path that points to the library's source dir, so
  4496. that the libtests can include files from the source tree. This was made to
  4497. make it possible to use the USE_SSLEAY define in the library test files.
  4498. Daniel (12 January 2004)
  4499. - Peter Sylvester brought code that now allows a callback to modified the URL
  4500. even when the multi interface is used, and then libcurl will simulate a
  4501. "follow location" to that new URL. Test 509 was added to test this feature.
  4502. - Extended the time we retry servers in the test script, and I also made it
  4503. retry the https and ftps servers before they are considered bad. I believe
  4504. the previous approach could turn problematic on really slow hosts.
  4505. Version 7.11.0-pre1 (12 January 2004)
  4506. Daniel (11 January 2004)
  4507. - Dominick Meglio pointed out FTPS should use default port 990 according to
  4508. IANA.
  4509. Daniel (8 January 2004)
  4510. - Fixed the SPNEGO configure check to not use -R or other non-portable options
  4511. in the LDFLAGS. Reported by Pierre in bug report #872930.
  4512. Daniel (5 January 2004)
  4513. - Dan Fandrich provided a fix on our zlib usage.
  4514. - David J Meyer's patch that introduce large file support to libcurl was
  4515. applied. New curl_easy_setopt options that accept 'off_t' arguments are:
  4516. INFILESIZE_LARGE
  4517. RESUME_FROM_LARGE
  4518. MAXFILESIZE_LARGE
  4519. Daniel (4 January 2004)
  4520. - Based on Dominick Meglio's comments, I made our private version of
  4521. gettimeofday() declared static. This would otherwise collide with the same
  4522. function in other libs (like ares for example).
  4523. - Added Dominick Meglio's description on how to build libcurl with ares
  4524. on win32.
  4525. Daniel (19 December)
  4526. - CURLOPT_IPRESOLVE was not possible to set.
  4527. - Gisle Vanem updated the djgpp build files.
  4528. Daniel (18 December)
  4529. - John McGowan reported a redirect-problem that happened if a site used a URL
  4530. like "url.com?var=content" (without a proper slash) and from that address
  4531. redirected the user-agent to an absolute directory.
  4532. - David Byron made libcurl build fine with both the .NET and VC6 versions of
  4533. MSVC
  4534. Daniel (16 December)
  4535. - Updated test 506 since it started to fail after the cache prune change
  4536. yesterday. I also changed it slightly to feature a counter in each debug
  4537. output for easier tracing.
  4538. Daniel (15 December)
  4539. - Old DNS cache entries are now only pruned after curl is done with a request,
  4540. and not in the actual name resolve call.
  4541. - corrected the --enable-ares patch
  4542. - Giuseppe Attardi found and fixed a problem within libcurl that re-used
  4543. already freed memory.
  4544. Daniel (10 December)
  4545. - Gisle Vanem reported that the dict support was broken. I broke it during my
  4546. ftps-changes overhaul. I've now added a 'curlassert' function that can be
  4547. used to verify expressions, to prevent future errors of the same
  4548. kind. They're only present in debug-builds.
  4549. - Diego Casorran made curl and libcurl possible to build natively (no more
  4550. need for the ixemul library) on AmigaOS.
  4551. - Dominick Meglio made configure --enable-ares support a given path to the
  4552. installed ares lib, instead of always using it in the curl source tree.
  4553. This also fixed the curl-config --libs output.
  4554. - Eric S. Raymond patched a very minor man page format error in
  4555. libcurl-errors.3
  4556. Daniel (8 December)
  4557. - Fixed the flaw that made -lz appear twice on the link command line.
  4558. - After correspondence with Gisle Vanem, I changed the 'connection aborted'
  4559. error text when the FTP response reader failed to more specificly identify
  4560. what the problem is.
  4561. - Based on a patch from Dominick Meglio, curl-config --feature now outputs
  4562. 'AsynchDNS' as a feature if libcurl was built with ares. The feature name
  4563. is the same that 'curl -V' outputs, for simplicity.
  4564. Daniel (3 December)
  4565. - Marty Kuhrt made the build up-to-date on VMS, and moved most of the VMS-
  4566. specific stuff in the client code to a separate header file.
  4567. - Steve Green fixed a return code bug in Curl_resolv(), that made the socks5
  4568. code fail.
  4569. - swalkaus at yahoo.com patched libcurl to ignore Content-Length: headers
  4570. when Transfer-Encoding: chunked is used, as mandated by RFC2616.
  4571. Daniel (2 December)
  4572. - --ftp-pasv was added, which serves the only purpose of overriding a
  4573. previously set --ftpport option. Starting now, --ftp-port is a recognized
  4574. alias for --ftpport for consistency.
  4575. - Giuseppe Attardi pointed out that we should use MSG_NOSIGNAL when we use
  4576. send() and recv(). I added checks for the define in the configure script and
  4577. adjusted the code accordingly. If the symbol is present, we won't attempt
  4578. to ignore the SIGPIPE signal.
  4579. Daniel (1 December)
  4580. - Mathias Axelsson set up a bsdftpd-ssl server for me and I could make curl
  4581. run fine against its FTPS implementation. Now these FTPS-related things
  4582. work:
  4583. o explicit and implicit FTPS
  4584. o active (PORT) and passive (PASV)
  4585. o upload and download
  4586. o verified against bsdftpd-ssl and RaidenFTPD
  4587. Daniel (27 November)
  4588. - James Clancy made the Borland Makefiles up to date.
  4589. - Markus Moeller improved the SPNEGO detection in the configure script.
  4590. Daniel (25 November)
  4591. - Dave May filed bug report #848371, identifying that if you'd do POST over a
  4592. proxy to a https server, libcurl didn't POST at all, it just made a GET! It
  4593. turned out to be because libcurl wrongly didn't consider the authentication
  4594. "negotiation phase" to be complete yet.
  4595. I added test case 95 to verify my fix for this.
  4596. Daniel (24 November)
  4597. - Thanks to Mathias Axelsson, I've been able to work on FTPS for libcurl and it
  4598. seems to work somewhat fine now.
  4599. The FTPS stuff is based on RFC2228 and the murray-auth-ftp-ssl draft
  4600. (version 12). There seems to exist quite a few servers that have implemented
  4601. the server side of this.
  4602. We can now use ftps:// URLs to explicitly switch on SSL/TSL for the control
  4603. connection and the data connection (dealing with two SSL connections forced
  4604. me to change a lot of stuff in libcurl).
  4605. Alternatively, and what seems to be the recommended way, we can set the new
  4606. option CURLOPT_FTP_SSL to one of these values:
  4607. CURLFTPSSL_NOPE, - do not attempt to use SSL
  4608. CURLFTPSSL_TRY - try using SSL, proceed anyway otherwise
  4609. CURLFTPSSL_CONTROL - SSL for the control connection or fail
  4610. CURLFTPSSL_ALL - SSL for all communication or fail
  4611. Any failure to set the desired level will make libcurl fail with the error
  4612. code CURLE_FTP_SSL_FAILED. This new option makes a "normal" ftp:// transfer
  4613. attempt to be made securely.
  4614. I've been able to login and get files (passively) from Mathias' server using
  4615. both ftps:// and CURLOPT_FTP_SSL. (I've made 'curl' understand the --ftp-ssl
  4616. option that sets CURLFTPSSL_TRY.)
  4617. - Gaz Iqbal fixed a range string memory leak.
  4618. - Gisle Vanem fixed the Windows builds.
  4619. - Added the new FTPSSL defines in curl/curl.h
  4620. Daniel (20 November)
  4621. - Josh Kapell filed bug report #845247 as he found an endless loop when
  4622. getting a 407 back from a proxy when no user+password was given. Added test
  4623. case 94 to verify the fix.
  4624. Daniel (19 November)
  4625. - Kevin Roth fixed a progress-bar problem on Windows.
  4626. - While working with Nicolas Croiset's bug report #843739, I noticed two minor
  4627. problems related to ftp partial downloads: if a partial transfer is
  4628. detected, we must close the connection as we cannot know in what state it is
  4629. anymore. This looks like a ProFTPD bug:
  4630. http://curl.haxx.se/mail/lib-2003-11/0079.html
  4631. Daniel (17 November)
  4632. - Maciej W. Rozycki made the configure script use a cache variable for the
  4633. writable argv test. This way, the default can be overridden better (for
  4634. cross-compiles etc)
  4635. Daniel (15 November)
  4636. - Mathias Axelsson found out libcurl sometimes freed the server certificate
  4637. twice, leading to crashes!
  4638. Daniel (14 November)
  4639. - Siddhartha Prakash Jain found a case with a bad resolve that we didn't
  4640. properly bail out from, when using ares.
  4641. Daniel (13 November)
  4642. - Default Content-Type for parts in multipart formposts has changed to
  4643. "application/octet-stream". This seems more appropriate, and I believe
  4644. mozilla and the likes do this. In the same area: .html files now get
  4645. text/html as Content-Type. (Pointed out in bug report #839806)
  4646. - Gisle Vanem corrected the --progress-bar output by doing a flush of the
  4647. output, which apparently makes it look better on at least windows, but
  4648. possibly other platforms too.
  4649. - Peter Sylvester identified a problem in the connect code, which made the
  4650. multi interface on a ipv6-enabled solaris box do bad. Test case 504 to be
  4651. specific. I've spent some time to clean-up the Curl_connecthost() function
  4652. now to use less duplicated code for the two different sections: ipv6 and
  4653. ipv4.
  4654. Daniel (11 November)
  4655. - Added CURLOPT_NETRC_FILE. Use this to tell libcurl which file to use instead
  4656. of trying to find a .netrc in the current user's home directory. The
  4657. existing .netrc file finder is somewhat naive and is far from perfect on
  4658. several platforms that aren't unix-style. If this option isn't set when
  4659. CURLOPT_NETRC is set, the previous approach will still be used.
  4660. The current .netrc check code now also support longer than 256 bytes path
  4661. names.
  4662. Daniel (10 November)
  4663. - Kang-Jin Lee pointed out that the generated ca-bundle.h file shouldn't be
  4664. written in the source dir if a different build dir is used.
  4665. - After Sébastien Willemijns' bug report, we now check the separators properly
  4666. in the 229-reply servers respond on a EPSV command and bail out better if
  4667. the reply string is not RFC2428-compliant.
  4668. Daniel (7 November)
  4669. - Based on Gisle Vanem's patch, I made curl try harder to get the home
  4670. directory of the current user, in order to find the default .curlrc file.
  4671. We're also considering moving out the HOME-dir code from libcurl, and
  4672. instead have the app pass in the path to the .netrc file (which is the only
  4673. logic left in libcurl that uses the HOME dir). Then curl can use the home
  4674. dir for that purpose too.
  4675. - Ralph Mitchell's updated testcurl.sh to the script to take an existing
  4676. directory name and build/run/test curl in there instead of trying to update
  4677. from CVS. Using this approach, the script can now be used to test daily
  4678. tarballs etc.
  4679. - Gisle Vanem added a "resource file" to the Windows DLL builds, to contain
  4680. information such as version number, library name, copyright info etc.
  4681. Daniel (6 November)
  4682. - curl checks if the existing libcurl supports things like --ntlm, --negotiate
  4683. and --krb4 and returns error if not.
  4684. - I added three new global defines in the curl/curl.h header:
  4685. LIBCURL_VERSION_MAJOR, LIBCURL_VERSION_MINOR and LIBCURL_VERSION_PATCH. They
  4686. are the three numbers in the library's version number, separated for easier
  4687. usage. 'maketgz' was updated accordingly to generate these numbers properly
  4688. when building release-archives.
  4689. - Uninitialized variable fix, reported by both Marty Kuhrt and Benjamin
  4690. Gerard.
  4691. - Matt Veenstra provided build files to build libcurl as a "framework" under
  4692. Mac OS X. See the lib/libcurl.framework.make for details.
  4693. - Removed the defines of TRUE and FALSE from the curl/curl.h header file.
  4694. They're not in our name space so we should not fiddle with them.
  4695. Daniel (5 November)
  4696. - Replaced the man page to HTML converter program with a new one: roffit.
  4697. Makes nicer web pages.
  4698. Daniel (4 November)
  4699. - Troels Walsted Hansen fixed the MSVC makefiles to let them build curl fine
  4700. on Windows.
  4701. - Kevin Roth corrected the cygwin package generator and spell-fixed the
  4702. comment in the ca-bundle.h file.
  4703. Version 7.10.8 (1 November 2003)
  4704. Daniel (31 October)
  4705. - Assume that MDTM on an FTP server returns the timestamp using the UTC time
  4706. zone. This changes the time CURLINFO_FILETIME returns for a given file over
  4707. FTP, and will change existing uses of CURLOPT_TIMECONDITION. It will make
  4708. the functionality more similar to how the HTTP one is already working.
  4709. - Command line options that take numerical parameters (such as -y, -Y, -C etc)
  4710. now report error and exit if the parameter isn't truly a number greater than
  4711. or equal to zero. This helps users to notice bad usage earlier. Before, when
  4712. a user forgot or missed to add a numerical parameter to an option, the
  4713. command line parser would simply "eat" the following option and it would
  4714. cause great confusion.
  4715. Daniel (30 October)
  4716. - David Hull made libcurl deal with NOBODY and HEADER for file:// the same way
  4717. it already does for FTP: it provides HTTP-looking headers that provide info
  4718. only about the file, without doing the actual transfer. The curl tool then
  4719. lets --head do this.
  4720. Daniel (29 October)
  4721. - runtests.pl now checks for and use valgrind if present. It will redirect the
  4722. valgrind results in log/valgrind[num] but it currently doesn't scan that
  4723. file for any errors or anything, that is still only made manually.
  4724. - David Hull made the file: URL parser also accept the somewhat sloppy file
  4725. syntax: file:/path. I added test case 203 to verify this.
  4726. Daniel (28 October)
  4727. - Dan C tracked down yet another weird behavior in the glibc gethostbyname_r()
  4728. function for some specific versions (reported on 2.2.5 and 2.1.1), and
  4729. provided a fix. On Linux machines with these glibc versions, non-ipv6
  4730. builds of libcurl would often fail to resolve perfectly resolvable host
  4731. names.
  4732. Daniel (26 October)
  4733. - James Bursa found out that curl_msnprintf() could write the trailing
  4734. zero-byte outside its given buffer size. This could happen if you generated
  4735. a very long error message as then libcurl would overwrite the ERRORBUFFER
  4736. with one byte. Using a non-existing very long local file:// name is one case
  4737. that could make this occur.
  4738. Daniel (24 October)
  4739. - David Hull filed bug report #829827. It identified a problem with -C - if
  4740. the full file already was downloaded and thus the server responded with a
  4741. 416. libcurl would then wrongly use the Content-Length: header and expect
  4742. that size to get transfer, causing a "hang" until the server closed the
  4743. connection and then an error 18 ("still N bytes data left of the transfer").
  4744. Now we don't return any error at all, but I think libcurl should perhaps
  4745. return some kind of info since the requested range was out of the size of
  4746. the document.
  4747. - Based on David Hull's fix in bug report #804599, we now check for solaris and
  4748. gcc in configure and set the -mimpure-text link flag for linking the lib
  4749. better.
  4750. - I've introduced a -t option to the runtests.pl script. With that option set,
  4751. the script runs special "memory torture" tests. For each test command line
  4752. in that section, the script first runs the command line and counts the total
  4753. amount of allocations made. It then runs the exact same command line again,
  4754. forcing allocation number N to fail. It will try every N from 1 to the total
  4755. number of amounts made. For every invoke, it checks that no memory was
  4756. leaked as that would indicate a bad cleanup somewhere in the code.
  4757. This is just beginning to work, and I've already made some corrections in
  4758. libcurl code. When this code works somewhat fine, I'll make sure 'make test'
  4759. in the root dir will run these tests as well.
  4760. Daniel (23 October)
  4761. - Georg Horn fixed how the CA verification is made. Verifications can now be
  4762. made while at the same time the result of it can be ignored. This also
  4763. affects the curl tool as -k can now be used together with --cacert or
  4764. --capath.
  4765. Daniel (22 October)
  4766. - Gisle Vanem found out --disable-eprt didn't work and patched it.
  4767. - Test case 91 was modified and could now repeat the problem Kevin Roth has
  4768. reported, and the bug was fixed.
  4769. - Dylan Ellicott added vc-libcurl-ssl-dll as a target to the root makefile
  4770. to build a static libcurl that links with a shared OpenSSL using MSVC.
  4771. Daniel (21 October)
  4772. - Andrés García updated the mingw32 makefiles.
  4773. Version 7.10.8-pre5 (21 October 2003)
  4774. Daniel (19 October)
  4775. - Georg Horn made libcurl output more info on SSL failures when receiving
  4776. data.
  4777. Version 7.10.8-pre4 (18 October 2003)
  4778. Daniel (17 October)
  4779. - Dominick Meglio implemented CURLOPT_MAXFILESIZE and --max-filesize.
  4780. - Made libcurl show verbose info about what auth type and user name that is
  4781. being sent in its HTTP request-headers.
  4782. Daniel (16 October)
  4783. - Removed support for CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA. libcurl
  4784. no longer prompt for passwords under any circumstances. Password prompting
  4785. was instead moved to curl, which now prompts for password if -u or -U lack
  4786. it. This solves the problem Kevin Roth reported when curl prompted for
  4787. password twice when doing NTLM authentication.
  4788. - I rewrote the SSL subjectAltName check to avoid having to rely on OpenLDAP-
  4789. licensed derivate code.
  4790. Daniel (15 October)
  4791. - Avoid doing getsockopt() on Windows to verify connects. It seems that this
  4792. hogs Windows machines when libcurl is being used multi-threaded (with > ~50
  4793. threads). Andrew Fuller helped us verify and test this.
  4794. Daniel (14 October)
  4795. - Kimmo Kinnunen fixed a crash with duphandle() when CURLDEBUG is set.
  4796. - Gisle Vanem made libcurl build and work with IPv6 on Windows.
  4797. Daniel (13 October)
  4798. - Giuseppe Attardi reported yet another segfault with ares and the multi
  4799. interface. Me fixed.
  4800. - Domenico Andreoli removed the extra LDFLAGS assignment in lib/Makefile.am
  4801. that was reported about in the debian bug report #212086.
  4802. Domenico also fixed two makefiles where we used 'gnroff' instead of the more
  4803. portable $(NROFF).
  4804. Daniel (12 October)
  4805. - Dirk Manske made the share locking around DNS lookups slightly different to
  4806. allow the share system's DNS lookups to run somewhat more
  4807. independent/faster.
  4808. Daniel (9 October)
  4809. - Lachlan O'Dea fixed a resume problem: "If I set CURLOPT_RESUME_FROM, perform
  4810. an HTTP download, then reset CURLOPT_RESUME_FROM to 0, the next download
  4811. still has a Range header with a garbage value." bug report #820502
  4812. - Dominick Meglio made the inet_pton.c file build fine using MSVC.
  4813. - The 'sws' test suite web server now #include setup.h from the lib directory.
  4814. This makes it more portable easier.
  4815. Version 7.10.8-pre3 (8 October 2003)
  4816. Daniel (8 October)
  4817. - Frank Ticheler provided a patch that fixes how libcurl connects to multiple
  4818. addresses, if one of them fails (ipv4-code).
  4819. Daniel (7 October)
  4820. - Neil Dunbar provided a patch that now makes libcurl check SSL
  4821. subjectAltNames when matching certs. This is apparently detailed in RFC2818
  4822. as the right thing to do. I had to add configure checks for inet_pton() and
  4823. our own (strictly speaking, code from BIND written by Paul Vixie) provided
  4824. code for the function for platforms that miss it.
  4825. - HTTP POST using the read callback didn't work, as Florian Schoppmann
  4826. reported.
  4827. Daniel (5 October)
  4828. - Shared provided a few fixes to make libcurl build on BeOS
  4829. out-of-the-box. New code for BeOS-style non-blocking sockets, provided by
  4830. Shard and Jeremy Friesner. Modified the autoconf check for non-blocking
  4831. sockets to check for this kind too.
  4832. Daniel (4 October)
  4833. - Vincent Bronner pointed out that if you set CURLOPT_COOKIE for a transfer
  4834. and then set it to NULL in a subsequent one, the previous cookie was still
  4835. sent off!
  4836. - Jon Turner fixed a problem libcurl had when it failed on an FTP transfer due
  4837. to a bad path, it would cause the next transfer to use a bad path as well.
  4838. - Siddhartha Prakash Jain provided a patch with a fix for libcurl with ares,
  4839. when working on IP-only names as we then could return "wait" status when the
  4840. name in fact already was resolved. I edited the patch slightly to not expose
  4841. asynch details to non-ares aware source code.
  4842. Daniel (3 October)
  4843. - Neil Spring posted the debian bug report #213180, and pointed out that using
  4844. the name 'access' in a function prototype is not very wise as some compilers
  4845. complain.
  4846. - Peter Sylvester provided his and Jean-Paul Merlin's curlx.c example source
  4847. code that shows how they use ssl and callbacks.
  4848. Daniel (2 October)
  4849. - James MacMillan's patch makes curl build on QNX 6.2.x.
  4850. Daniel (26 September)
  4851. - My daughter was born!
  4852. Daniel (23 September)
  4853. - Added support for -4/--ipv4 and -6/--ipv6 to force names to resolve to that
  4854. particular IP version. They only work for IPv6-enabled libcurls.
  4855. - curl -V now outputs 'SPNEGO' as a feature in case libcurl was built to
  4856. support that.
  4857. Version 7.10.8-pre2 (22 September 2003)
  4858. Daniel (22 September)
  4859. - Giuseppe Attardi found a segfault in libcurl when using the multi interface
  4860. with ares and doing repeated operations against a non-resolving host name.
  4861. Daniel (19 September)
  4862. - Added the CURLOPT_IPRESOLVE option, that allows an application to select
  4863. what kind of IP addresses he wants to use when resolving host names. This
  4864. is only interesting when using host names that resolve addresses using more
  4865. than one version of IP.
  4866. - Applied Markus Moeller's patch that introduces SPNEGO support if libcurl
  4867. is built with the FBopenssl libraries. curl_version_info() now returns
  4868. info on SPNEGO availability. The patch also made the GSSAPI stuff work fine
  4869. with the MIT GSS-library (the Heimdal one still works too).
  4870. Daniel (16 September)
  4871. - Doing PUT with --digest failed, as reported in bug report #805853.
  4872. - Using --anyauth that picked NTLM, and then a redirect closed the connection
  4873. and took curl to a second NTLM page made curl fail. Bug report #806328
  4874. identified the problem, test case 90 was added to verify the fix.
  4875. Daniel (14 September)
  4876. - codemastr brought a patch for ares to make the Windows portions of it work
  4877. properly on NT4. I uploaded a new diff and updated the docs on where to get
  4878. it etc.
  4879. - Jeff Pohlmeyer tracked down a very hard-to-find bug where we removed a
  4880. cached DNS entry even though it may be in use, which caused "random" memory
  4881. to get overwritten and thus "random" crashes.
  4882. Daniel (12 September)
  4883. - Based on a bug report by David Kimdon, I made the runtests.pl script clear
  4884. all possible proxy environment variables before the tests are run.
  4885. - By default, easy handles within a multi handle now share DNS cache.
  4886. - Tim Bartley brought a patch that makes the GSSNEGOTIATE option work for
  4887. Microsoft's "Negotiate" authentication as well.
  4888. Daniel (11 September)
  4889. - A zero-length proxy string confused FTP transfers.
  4890. - Bjorn Reese found a case with an uninitialized pointer, only present when
  4891. built for ares.
  4892. Version 7.10.8-pre1 (8 September 2003)
  4893. Daniel (7 September)
  4894. - Jurij Smakov found out that the non-OpenSSL MD5 code was not working on
  4895. Alpha (or ia64). Only the OpenSSL-version did. I made a fix I think corrects
  4896. the problem.
  4897. Daniel (5 September)
  4898. - Kevin Fisk reported that configure --enable-thread didn't work. I fixed.
  4899. - De-macrofied the lib/hash.c source code somewhat.
  4900. Daniel (4 September)
  4901. - CURLINFO_HTTPAUTH_AVAIL and CURLINFO_PROXYAUTH_AVAIL added, Based on Joerg
  4902. Mueller-Tolk's patch,
  4903. Early (4 September)
  4904. - Added CURLOPT_FTP_RESPONSE_TIMEOUT - allows user to set strict timeout
  4905. requirements on the FTP server's ability to respond to individual commands
  4906. without placing global requirements on transfer or connect time. Files
  4907. affected:
  4908. - include/curl/curl.h
  4909. Added option CURLOPT_FTP_RESPONSE_TIMEOUT
  4910. - lib/ftp.c
  4911. Added branch inside Curl_GetFTPResponse to check for
  4912. data->set.ftp_response_timeout
  4913. - lib/url.c
  4914. Modified Curl_setopt to recognize CURLOPT_FTP_RESPONSE_TIMEOUT
  4915. - lib/urldata.h
  4916. Added ftp_response_timeout to struct UserDefined
  4917. Daniel (3 September)
  4918. - Peter Pentchev found and fixed two problems in the test suite's web server
  4919. code, that made it segfault at times.
  4920. - Jörg Mueller-Tolk improved the proxy user+password handling, especially
  4921. when providing a blank password.
  4922. Daniel (2 September)
  4923. - Fix for making CONNECT to proxies do the correct magic to allow NTLM, Digest
  4924. and similar to work.
  4925. Daniel (1 September)
  4926. - Henrik Storner made libcurl work fine with OpenLDAP 2.1.22 (current).
  4927. - Jeff Pohlmeyer added a proper error message for non-resolving hosts when
  4928. using ares for lookups.
  4929. Daniel (25 August)
  4930. - John McGowan reported that curl -k still failed if the HTTPS server's CN
  4931. field wasn't obtainable. This was due to the CURLOPT_SSL_VERIFYHOST being
  4932. set to 1, and libcurl failed if the CN was missing. Starting now, having it
  4933. set to 1 will simply output a warning if no CN could be obtained (as having
  4934. a mismatch is OK).
  4935. Daniel (21 August)
  4936. - Vincent Sanders provided a fix for name resolving when linked with uClibc.
  4937. Daniel (20 August)
  4938. - Gerd v. Egidy provided a patch that makes libcurl store the FTP response
  4939. code from ftp servers. Using curl_easy_getinfo() with CURLINFO_HTTP_CODE
  4940. returns that data. The option is therefore now also known as
  4941. CURLINFO_RESPONSE_CODE.
  4942. - Antoine Calando found a segfault when doing multi-part/formpost using
  4943. the multi interface.
  4944. - Antoine Calando pointed out that curl_multi_info_read() didn't set the
  4945. msgs_in_queue to 0 properly when returning NULL.
  4946. Daniel (19 August)
  4947. - I made curl support multiple -T options, as well as -T "{file1,file2}"
  4948. style globbing. One -T for each URL is supported.
  4949. - Jeff Pohlmeyer found a segfault when using ares-enabled libcurl and the
  4950. multi interface when trying a non-existing host name.
  4951. - Made the libcurl printf code support long longs if available.
  4952. - Loren Kirkby pointed out that we did not clean up all SSL-allocated memory
  4953. in curl_global_cleanup().
  4954. Daniel (17 August)
  4955. - Setting CURLOPT_WRITEFUNCTION or CURLOPT_READFUNCTION to NULL will now make
  4956. them get the internal defaults restored. Previously this could cause a
  4957. segfault. We should aim at having all pointer-related options get restored
  4958. to default/safe values when set to NULL.
  4959. Version 7.10.7 (15 August 2003)
  4960. Daniel (14 August)
  4961. - I modified the memdebug system to return failure on memory allocation
  4962. functions after a set amount of successful ones. This enables us to test
  4963. out-of-memory situations in a controlled manner and we can make sure that
  4964. curl/libcurl behaves good in those.
  4965. This made me find and fix several spots where we did not cleanup properly
  4966. when bailing out due to errors (low memory).
  4967. - Corrected test case 74. Made using -o with bad #[num] codes complain and
  4968. bail out. Made #[num] support numbers larger than 9 as well. Added test
  4969. case 86 for a proper range globbing test as well.
  4970. Version 7.10.7-pre4 (12 August 2003)
  4971. Daniel (12 August)
  4972. - curl_version_info() now returns a flag if libcurl was built with asynch DNS
  4973. support, and this is now also displayed with 'curl -V'.
  4974. - Added a few new man pages to the docs/libcurl dir: curl_share_init,
  4975. curl_share_setopt, curl_share_cleanup, libcurl-easy and libcurl-share.
  4976. Daniel (11 August)
  4977. - Mike Cherepov made the local binding code work for Windows, which makes
  4978. the option CURLOPT_INTERFACE work on Windows as well.
  4979. - Vincent Sanders updated the fopen.c example code a lot.
  4980. - --proxy-ntlm is now supported by the curl tool. It forces the proxy
  4981. authentication to be made using NTLM. It does not yet work for HTTPS over
  4982. proxies (or other proxy-tunneling options). Test case 81 and 82 do some
  4983. simple initial ntlm testing.
  4984. - Found and fixed a minor memory leak on re-used connections with
  4985. proxy-authentication.
  4986. - I removed -@ and -Z as valid short options. They were very rarely used (@
  4987. wasn't even documented).
  4988. - Serge Semashko introduced CURLOPT_PROXYAUTH, and make it work when set to
  4989. CURLAUTH_NTLM and/or CURLAUTH_BASIC. The PROXAUTH is similar to HTTPAUTH,
  4990. but is for the proxy connection only, and HTTPAUTH is for the remote host.
  4991. - Fixed loading of cookies with blank contents from a cookie jar. Also made the
  4992. cookie functions inform on added and skipped cookies (for cookie debugging).
  4993. Version 7.10.7-pre3 (8 August 2003)
  4994. Daniel (8 August)
  4995. - Applied David Byron's fix for file:// URLs with drive letters included.
  4996. - I added the --ftp-create-dirs to the client code, which activates Early's
  4997. CURLOPT_FTP_CREATE_MISSING_DIRS option, and wrote test case 147 to verify
  4998. it. Added the option to the curl.1 man page too. Added the option to the
  4999. curl_easy_setopt.3 man page too.
  5000. Daniel (7 August)
  5001. - Test case 60 failed on ia64 and AMD Opteron. Fixed now.
  5002. - Fixed a printf problem that resulted in urlglobbing bugs (bug #203827 in the
  5003. debian bug tracker). Added test case 74 to verify the fix and to discover if
  5004. this breaks in the future.
  5005. - "make distcheck" works again.
  5006. Version 7.10.7-pre2 (6 August 2003)
  5007. Daniel (5 August)
  5008. - Duncan Wilcox helped me verify that the latest incarnation of my ares patch
  5009. builds fine on Mac OS X (see the new lib/README.ares) file for all details.
  5010. - Salvatore Sorrentino filed bug report #783116 and Early Ehlinger posted a
  5011. bug report to the libcurl list, both identifying a problem with FTP
  5012. persistent connections and how the dir hierarchy was not properly reset
  5013. between files.
  5014. - David Byron's thoughts on a fixed Makefile in tests/ were applied.
  5015. - Jan Sundin reported a case where curl ignored a cookie that browsers don't,
  5016. which turned up to be due to the number of dots in the 'domain'. I've now
  5017. made curl follow the the original netscape cookie spec less strict on that
  5018. part.
  5019. Daniel (4 August)
  5020. - Dirk Manske added cookie support for the experimental, hidden and still
  5021. undocumented share feature!
  5022. - Mark Fletcher provided an excellent bug report that identified a problem
  5023. with FOLLOWLOCATION and chunked transfer-encoding, as libcurl would not
  5024. properly ignore the body contents of 3XX response that included the
  5025. Location: header.
  5026. Early (6 August)
  5027. - Added option CURLOPT_FTP_CREATE_MISSING_DIRS
  5028. This option will force the target file's path to be created if it
  5029. does not already exist on the remote system.
  5030. Files affected:
  5031. - include/curl/curl.h
  5032. Added option CURLOPT_FTP_CREATE_MISSING_DIRS
  5033. - lib/ftp.c
  5034. Added function ftp_mkd, which issues a MKD command
  5035. Added function ftp_force_cwd, which attempts a CWD,
  5036. and does a MKD and retries the CWD if the original CWD
  5037. fails
  5038. Modified ftp_perform() to call its change directory function
  5039. through a pointer. The pointer points to ftp_cwd by default,
  5040. and is modified to point to ftp_force_cwd IFF
  5041. data->set.ftp_create_missing_dirs is not 0.
  5042. - lib/url.c
  5043. Modified Curl_setopt to recognize CURLOPT_FTP_CREATE_MISSING_DIRS
  5044. - lib/urldata.h
  5045. Added ftp_create_missing_dirs to struct UserDefined
  5046. - Minor Bugfix for CURLOPT_TIMECONDITION with FTP - if the file was not
  5047. present to do the time comparison, it would fail.
  5048. Files affected:
  5049. - lib/ftp.c
  5050. In ftp_perform(), the call to ftp_getfiletime() used to be followed
  5051. by
  5052. if (result)
  5053. return result;
  5054. And then by the code that actually did the time comparison.
  5055. The code that did the comparison handled the case where the filetime
  5056. was not available (as indicated by info.filetime < 0 or set.timevalue
  5057. < 0), so I replaced the if (result) return result with a switch(result)
  5058. that allows CURLE_FTP_COULDNT_RETR_FILE to fall through to the
  5059. normal time comparison.
  5060. Daniel (3 August)
  5061. - When proxy authentication is used in a CONNECT request (as used for all SSL
  5062. connects and otherwise enforced tunnel-thru-proxy requests), the same
  5063. authentication header is also wrongly sent to the remote host.
  5064. This is a rather significant info leak. I've fixed it now and mailed a patch
  5065. and warning to the mailing lists.
  5066. Daniel (1 August)
  5067. - David Byron provided a patch to make 7.10.6 build correctly with the
  5068. compressed hugehelp.c source file.
  5069. Version 7.10.7-pre1 (31 July 2003)
  5070. Daniel (30 July)
  5071. - Jörg Müller-Tolk updated the VC makefile.
  5072. - Daniel Noguerol made the ftp code output "Accept-Ranges: bytes" in similar
  5073. style like other faked HTTP headers when NOBODY and HEADER are used. I
  5074. updated two corresponding test cases too.
  5075. - Marty Kuhrt pointed out a compilation problem on VMS due to my having
  5076. changed a type from long to time_t, and I'm now changing it back to work
  5077. more portably...
  5078. He also indicated that distributing the src/hugehelp.c in a compressed state
  5079. like I accidentally did may not be the smartest move... I've now fixed the
  5080. distribute procedure to automatically generate an uncompressed version when I
  5081. make release archives.
  5082. Daniel (29 July)
  5083. - Gisle Vanem brought changes to the mkhelp script for the generation of the
  5084. compressed help text on some platforms.
  5085. Version 7.10.6 (28 July 2003)
  5086. Daniel (28 July)
  5087. - François Pons brought a patch that once again made curl deal with ftp and
  5088. "double slash" as indicating the root directory. In the RFC1738-fix of April
  5089. 30, that ability was removed (since it is not the "right" way). So, starting
  5090. now we can list the root dir of an ftp server both these ways:
  5091. curl ftp://server.com/%2f as well as
  5092. curl ftp://server.com//
  5093. Daniel (24 July)
  5094. - Henry Bland pointed out that we included sys/resource.h without good reason
  5095. in several source files. Without it included, QNX builds better...
  5096. - Andrés García updated the mingw makefiles.
  5097. Daniel (23 July)
  5098. - Tracy Boehrer experienced DNS cache problems and did some nice debugging
  5099. and tracking which made it easy for me to correct the problem and Tracy
  5100. could verify that it did cure the problem! When re-using a connection we
  5101. now make sure we don't re-use the 'connect_addr' struct.
  5102. - Daniel Kouril corrected the GSS-Negotiate code.
  5103. - Juan F. Codagnone provided fixes to allow curl to build fine on Windows
  5104. again.
  5105. Daniel (22 July)
  5106. - Edited the curl/curl.h include file to build on Windows properly.
  5107. Daniel (21 July)
  5108. - Moved the proxy credentials from the SessionHandle struct to the connectdata
  5109. struct, to make multiple proxy connections with differerent user names work.
  5110. - Adjusted the NTLM code to support proxy functionality.
  5111. - Made the krb4 stuff compile with the user+password fields moved.
  5112. Version 7.10.6-pre4 (21 July 2003)
  5113. Daniel (20 July)
  5114. - David Gardner pointed out in bug report 770755 that using the FTP command
  5115. CWD with a blank argument is a bad idea and I made libcurl skip empty path
  5116. segments starting now.
  5117. Daniel (18 July)
  5118. - Cris pointed out that my fix on July 16th didn't work fully. His pointing
  5119. out this (and his patch) also made me realize that we have a very similar
  5120. bug in the FTP connection re-use code. We must store a separate user and
  5121. password field for each connection we keep (at least for FTP and HTTP+NTLM
  5122. connections, so I made us do this unconditionally).
  5123. - Since NTLM authenticates connections instead of single requests, I had to
  5124. re-arrange how we store the NTLM data and I had to improve the test suite to
  5125. finally work properly with persistency to make the NTLM tests run fine
  5126. again. This also forced me to have to update lots of HTTP test cases.
  5127. Daniel (16 July)
  5128. - Cris Bailiff's bug report 768275 pointed out that using Basic auth with
  5129. wrong user+password caused an endless loop. Fixed now. He also found out that
  5130. we didn't properly authenticate connections with NTLM. Fixed too.
  5131. - Dan Winship provided fixes for the NTLM code.
  5132. Daniel (5 July)
  5133. - Doug Kaufman provided additional fixes for the DOS port.
  5134. Daniel (4 July)
  5135. - Rick Richardson pointed out that using setvbuf() to achieve non-buffering
  5136. on output is no-good for SCO Xenix and other unixes. We switched over to
  5137. using plain fflush() instead.
  5138. - Dan Grayson pointed out that we set the CURL_CA_BUNDLE variable wrongly in
  5139. the configure script, and I had to change some build stuff to make the new
  5140. way work.
  5141. - Peter Sylvester's patch was applied that introduces the following:
  5142. CURLOPT_SSL_CTX_FUNCTION to set a callback that gets called with the
  5143. OpenSSL's ssl_ctx pointer passed in and allow a callback to act on it. If
  5144. anything but CURLE_OK is returned, that will also be returned by libcurl
  5145. all the way back. If this function changes the CURLOPT_URL, libcurl will
  5146. detect this and instead go use the new URL.
  5147. CURLOPT_SSL_CTX_DATA is a pointer you set to get passed to the callback set
  5148. with CURLOPT_SSL_CTX_FUNCTION.
  5149. Daniel (1 July)
  5150. - David Byron provided a patch that allows a client to quit the test suite's
  5151. HTTP server.
  5152. - Gisle Vanem found and patched a lib handle leak in the ldap code.
  5153. Daniel (25 June)
  5154. - More NTLM-improvements. Less code. Smaller packets back and forth.
  5155. Daniel (23 June)
  5156. - Eric Glass provided us with a better doc on NTLM details, and I added more
  5157. comments and clarified the current code more. Using the new knowledge, we
  5158. should be able to make the NTLM stuff work even better.
  5159. Eric's original URL: http://davenport.sourceforge.net/ntlm.html
  5160. Version stored and provided at curl site: http://curl.haxx.se/rfc/ntlm.html
  5161. - Fixed the minor compile problems pre3 had if built without GSSAPI and/or
  5162. SSL.
  5163. Version 7.10.6-pre3 (19 June 2003)
  5164. Daniel (19 June)
  5165. - Made curl use curl_free() on memory returned by curl_getenv(), as this
  5166. should theoreticly make it possibly to build and run curl and libcurl with
  5167. different memory allocation schemes with no problems.
  5168. Daniel (18 June)
  5169. - Improved the mkhelp.pl a bit further to make a nicer hugehelp text and to
  5170. include a better comment in the top for the gzip compressed version.
  5171. Daniel (17 June)
  5172. - CURLOPT_HTTPAUTH is now a bitmask, in which you set which authentication
  5173. type(s) you want to use. If more than one is set, libcurl will use one of
  5174. the selected one and the one it considers is more secure. Test case 67 and
  5175. 68 (for NTLM) were fixed and we've reduced a round-trip for specific --ntlm
  5176. fetches, and test case 69 and 70 were added for testing authentication
  5177. "picking". --anyauth is the new command line tool option, and I also added
  5178. --basic for completeness (that's the default type).
  5179. - Fixed the runtests.pl script to use the info provided by the new curl -V
  5180. output.
  5181. - --enable-debug now sets the CURLDEBUG define instead of MALLOCDEBUG, as it
  5182. is meant to be a generic debug conditional.
  5183. - curl_version_info() can now return CURL_VERSION_DEBUG as a feature bit, to
  5184. indicate that the library was built with CURLDEBUG set.
  5185. - Ralph Mitchell found out that some web applications very badly uses white
  5186. spaces in Location: redirects, and apparently IE is a browser (the only
  5187. one?) that supports this abomination. Based on Ralph's patch, I added code
  5188. that now attempts to replace white spaces with the proper "%20" or "+".
  5189. Test case 40 and 42 were added to verify my changes.
  5190. - curl -V now also outputs a list of features the available library offers (if
  5191. any).
  5192. - The curl_version() string now includes "GSS" if libcurl is built with GSSAPI
  5193. support.
  5194. - David Orrell reported that libcurl still crashed when sending HUGE requests
  5195. over HTTPS... I fixed.
  5196. Version 7.10.6-pre2 (16 June 2003)
  5197. Daniel (16 June)
  5198. - curl_version_info() now returns bitmasked information weather NTLM and
  5199. GSSNEGOTIATE are supported, since it is doomed to vary on different
  5200. installations.
  5201. - I remade the HTTP Digest code to use the MD5-code provided by OpenSSL if
  5202. that is present, and only use our own MD5-code if it isn't.
  5203. Daniel (13 June)
  5204. - More NTLM help, fixes and patches from Cris Bailiff.
  5205. - Marty Kuhrt brought include fixes for making VMS builds warning-free.
  5206. Daniel (12 June)
  5207. - NTLM authentication works somewhat against the test servers provided by
  5208. Mathias Axelsson and Cris Bailiff. Use by setting CURLOPT_HTTPAUTH to
  5209. CURLAUTH_NTLM to libcurl, or --ntlm for the curl tool. Test case 67 and 68
  5210. were added for this. NTLM-support requires OpenSSL.
  5211. - Dan Fandrich provided a patch, that granted that gzip and libz are available
  5212. at build-time, compresses the hugehelp text in the curl command line and
  5213. uncompresses it at request. Saves some ~60K in the final output executable.
  5214. Daniel (11 June)
  5215. - Long day of fighting the NTLM demons.
  5216. Daniel (10 June)
  5217. - Modified how to set auth type to libcurl. Now use CURLOPT_HTTPAUTH instead,
  5218. and pick method. Supported ones currently are:
  5219. CURLAUTH_BASIC - default selection
  5220. CURLAUTH_DIGEST - formerly CURLOPT_HTTPDIGEST
  5221. CURLAUTH_GSSNEGOTIATE
  5222. - Daniel Kouril added HTTP GSS-Negotiate authentication support, as defined in
  5223. the IETF draft draft-brezak-spnego-http-04.txt. In use already by various
  5224. Microsoft web applications. --negotiate is the new family member. To take
  5225. advantage of this, you need one of these packages:
  5226. o Heimdal Kerberos5 http://www.pdc.kth.se/heimdal/heimdal.html
  5227. o GSSAPI from Globus http://www.globus.org/
  5228. o GSSAPI libraries from MIT Kerberos5 http://web.mit.edu/kerberos/www/
  5229. - A missing ending bracket (']') while doing URL globbing could lead to a
  5230. segfault. While fixing this, I also introduced better error reporting in the
  5231. globbing code. (All this is application code outside libcurl.)
  5232. Daniel (6 June)
  5233. - David Orrell found out that sending a huge GET request over HTTPS could
  5234. make libcurl fail and return an error code.
  5235. Daniel (2 June)
  5236. - Richard Bramante found out that "Content-Length: 0" was not properly used by
  5237. libcurl if the response-headers indicated that the connection would be
  5238. closed.
  5239. - David Byron's patch was applied, that makes the --progress-bar take the
  5240. local size into account when doing resumed downloads.
  5241. - Feedback from Serge Semashko made me change the error message returned when
  5242. CURLE_HTTP_RETURNED_ERROR is returned.
  5243. - Anonymous in bug report #745122 pointed out that we should really be using
  5244. SSL_CTX_set_options(... SSL_OP_ALL) to work around flaws in existing SSL
  5245. implementations.
  5246. Daniel (27 May)
  5247. - Andreas Ley and Rich Gray helped me point out that no version of HP-UX has
  5248. the sys/select.h header file so including it unconditionally in curl/multi.h
  5249. is not a good thing. Now we check for HPUX and avoid using that header on
  5250. such systems.
  5251. - Rudy Koento experienced problems with curl's recent habit of POSTing data in
  5252. two separate send() calls, first the headers and then the data. I've now
  5253. made a fix that for static and known content that is less than 100K in size,
  5254. everything is now sent in one single system call again. This is also better
  5255. for network performance reasons.
  5256. - I modified the main makefile to not build the test suite and a few other
  5257. unnecessary things by default. Now, the test suite is built when 'make test'
  5258. is run. This reduces build time for those who don't care for the test
  5259. suite, and it also reduces confusion for people using platforms where the
  5260. test suite build fails!
  5261. Daniel (26 May)
  5262. - Chris Lewis pointed out a flaw in the #ifdefs in curl/multi.h for Windows,
  5263. which is now corrected.
  5264. - Jis Joy found another flaw in the SOCK5 code, as libcurl treated the socks5
  5265. proxy a little too much like as if it was a http proxy.
  5266. Daniel (23 May)
  5267. - Ricardo Cadime found a socket leak when listing directories without
  5268. contents. Test cases 144 and 145 were added to verify the fix.
  5269. - Rudy Koento found yet another problem when a HTTP server returns only a
  5270. single-line of contents without any headers at all. libcurl then failed to
  5271. count the data, thus returning error 52 "no contents". Test case 66 was
  5272. added to verify that we now do right.
  5273. Version 7.10.6-pre1 (23 May 2003)
  5274. Daniel (23 May)
  5275. - Jis in bug report #741841, fixed a bug in the SOCKS5 proxy-using code.
  5276. Daniel (22 May)
  5277. - David Remahl set up a test-server for me providing Digest authentication,
  5278. and I wrote the first working code that support it. The test suite was
  5279. modified slightly as well to work better for it and --digest was added to
  5280. the command line options (and CURLOPT_HTTPDIGEST to the library)... RFC2617
  5281. has all the gory details.
  5282. Daniel (21 May)
  5283. - David Balazic pointed out that curl_unescape() didn't check that %-codes
  5284. were correctly followed by two hexadecimal digits when it unescape strings.
  5285. Now, we do the check and only %XX codes are unescaped if the X letters are
  5286. hexadecimals.
  5287. - Gisle Vanem made curl build with djgpp on DOS.
  5288. - Gisle Vanem improved the mkhelp.pl script to make a nicer manual that is
  5289. shown with curl -M.
  5290. Daniel (20 May)
  5291. - Gisle Vanem provided a fix that makes libcurl more conservative, not
  5292. expecting h_aliases of the hostent struct to always be non-NULL.
  5293. Daniel (19 May)
  5294. - As requested by Martin Michlmayr in Debian bug report #193630, libcurl now
  5295. supports user name and password in the proxy environment variables. Added
  5296. test case 63 to verify this.
  5297. Version 7.10.5 (19 May 2003)
  5298. Daniel (15 May)
  5299. - Changed the order for the in_addr_t testing, as 'unsigned long' seems to be
  5300. a very common type inet_addr() returns.
  5301. Daniel (14 May)
  5302. - George Comninos provided a fix that calls the progress meter when waiting
  5303. for FTP command responses take >1 second. It'll make applications more
  5304. "responsive" even when dealing with very slow ftp servers.
  5305. Daniel (12 May)
  5306. - George Comninos pointed out that libcurl uploads had two quirks:
  5307. o when using FTP PORT command, it used blocking sockets!
  5308. o it could loop a long time without doing progress meter updates
  5309. Both items are fixed now.
  5310. Daniel (9 May)
  5311. - Dan Fandrich changed CURLOPT_ENCODING to select all supported encodings if
  5312. set to "". This frees the application from having to know which encodings
  5313. the library supports.
  5314. - Dan Fandrich pointed out we had three unnecessary files in CVS that is
  5315. generated with libtoolize, so they're now removed and libtoolize is invoked
  5316. accordingly in the buildconf script.
  5317. - Avery Fay found out that the CURLOPT_INTERFACE way of first checking if the
  5318. given name is a network interface gave a real performance penalty on Linux,
  5319. so now we more appropriately first check if it is an IP number and if so
  5320. we don't check for a network interface with that name.
  5321. - CURLOPT_FTP_USE_EPRT added. Set this to FALSE to disable libcurl's attempts
  5322. to use EPRT and LPRT before the traditional PORT command. The command line
  5323. tool sets this option with '--disable-eprt'.
  5324. Version 7.10.5-pre2 (6 May 2003)
  5325. Daniel (6 May)
  5326. - Kevin Delafield reported another case where we didn't correctly check for
  5327. EAGAIN but only EWOULDBLOCK, which caused badness on HPUX.
  5328. Daniel (4 May)
  5329. - Ben Greear noticed that the check for 'writable argv' exited the configure
  5330. script when run for cross-compiling, which wasn't nice. Now it'll default to
  5331. no and output a warning about the fact that it was not checked for.
  5332. Daniel (2 May)
  5333. - Added test case 62 and fixed some more on the cookie sending with a custom
  5334. Host: header set.
  5335. Daniel (1 May)
  5336. - Andy Cedilnik fixed a few compiler warnings.
  5337. - Made the "SSL read error: 5" error message more verbose, by adding code that
  5338. queries the OpenSSL library to fill in the error buffer.
  5339. Daniel (30 Apr)
  5340. - Added sys/select.h include in the curl/multi.h file, after having been
  5341. reminded about this by Rich Gray.
  5342. - I made each test set its own server requirements, thus abandoning the
  5343. previous system where the test number implied what server(s) to use for a
  5344. specific test.
  5345. - David Balazic made curl more RFC1738-compliant for FTP URLs, by fixing so
  5346. that libcurl now uses one CWD command for each path part. A bunch of test
  5347. cases were fixed to work accordingly.
  5348. - Cookie fixes:
  5349. A. Save domains in jars like Mozilla does. It means all domains set in
  5350. Set-Cookie: headers are dot-prefixed.
  5351. B. Save and use the 'tailmatch' field in the Mozilla/Netscape cookie jars
  5352. (the second column).
  5353. C. Reject cookies using illegal domains in the Set-Cookie: line. Concerns
  5354. both domains with too few dots or domains that are outside the currently
  5355. operating server host's domain.
  5356. D. Set the path part by default to the one used in the request, if none was
  5357. set in the Set-Cookie line.
  5358. To make item C really good, I also made libcurl notice custom Host: headers
  5359. and extract the host name set in there and use that as the host name for the
  5360. site we're getting the cookies from. This allows user to specify a site's
  5361. IP-address, but still be able to receive and send its cookies properly if
  5362. you provide a valid Host: name for the site.
  5363. Daniel (29 Apr)
  5364. - Peter Kovacs provided a patch that makes the CURLINFO_CONNECT_TIME work fine
  5365. when using the multi interface (too).
  5366. Version 7.10.5-pre1 (23 Apr 2003)
  5367. Daniel (23 Apr)
  5368. - Upgraded to libtool 1.5.
  5369. Daniel (22 Apr)
  5370. - Peter Sylvester pointed out that curl_easy_setopt() will always (wrongly)
  5371. return CURLE_OK no matter what happens.
  5372. - Dan Fandrich fixed some gzip decompression bugs and flaws.
  5373. Daniel (16 Apr)
  5374. - Fixed minor typo in man page, reported in the Debian bug tracker.
  5375. Daniel (15 Apr)
  5376. - Fixed some FTP tests in the test suite that failed on my Solaris host, due
  5377. to the config.h not being included before the system headers. When done that
  5378. way, it did get a mixed sense of if big files are supported or not and then
  5379. stat() and fstat() (as used in test case 505) got confused and failed to
  5380. return a proper file size.
  5381. - Formposting a file using a .html suffix is now properly set to Content-Type: text/html.
  5382. Daniel (14 Apr)
  5383. - Fixed the SSL error handling to return proper SSL error messages again, they
  5384. broke in 7.10.4. I also attempt to track down CA cert problems and then
  5385. return the CURLE_SSL_CACERT error code.
  5386. - The curl tool now intercepts the CURLE_SSL_CACERT error code and displays
  5387. a fairly big and explanatory error message. Kevin Roth helped me out with
  5388. the wording.
  5389. Daniel (11 Apr)
  5390. - Nic Hines provided a second patch for gzip decompression, and fixed a bug
  5391. when deflate or gzip contents were downloaded using chunked encoding.
  5392. - Dan Fandrich made libcurl support automatic decompression of gzip contents
  5393. (as an addition to the previous deflate support).
  5394. - I made the CWD command during FTP session consider all 2xy codes to be OK
  5395. responses.
  5396. Daniel (10 Apr)
  5397. - Vlad Krupin fixed a URL parsing issue. URLs that were not using a slash
  5398. after the host name, but still had "?" and parameters appended, as in
  5399. "http://hostname.com?foobar=moo", were not properly parsed by libcurl.
  5400. Daniel (9 Apr)
  5401. - Made CURLOPT_TIMECONDITION work for FTP transfers, using the same syntax as
  5402. for HTTP. This then made -z work for ftp transfers too. Added test case 139
  5403. and 140 for verifying this.
  5404. - Getting the file date of an ftp file used the wrong time zone when
  5405. displayed. It is supposedly always GMT. Added test case 141 for this.
  5406. - Made the test suite's FTP server support MDTM.
  5407. - The default DEBUGFUNCTION, as enabled with CURLOPT_VERBOSE now outputs
  5408. CURLINFO_HEADER_IN data as well. The most notable effect from this is that
  5409. using curl -v, you get to see the incoming "headers" as well. This is
  5410. perhaps most useful when doing ftp.
  5411. Daniel (8 Apr)
  5412. - James Bursa fixed a flaw in the Content-Type extraction code, which missed
  5413. the first letter if no space followed the colon.
  5414. - Magnus Nilsson pointed out that share.c was missing in the MSVC project
  5415. file.
  5416. Daniel (6 Apr)
  5417. - Ryan Weaver provided a patch that makes the CA cert bundle not get installed
  5418. anymore when 'configure --without-ssl' has been used.
  5419. Daniel (4 Apr)
  5420. - Martijn Broenland found another cases where a server application didn't
  5421. like the boundary string used by curl when doing a multi-part/formpost. We
  5422. modified the boundary string to look like the one IE uses, as this is
  5423. probably gonna make curl work with more applications.
  5424. Daniel (3 Apr)
  5425. - Kevin Roth reported that a bunch of tests fails on cygwin. One set fails
  5426. when using perl 5.8 (and they run fine with perl 5.6), and another set
  5427. failed because of an artifact in the test suite's FTP server that I
  5428. corrected. It turned out the FTP server code was still having a file opened
  5429. while the main test script removed it and invoked the HTTP server that
  5430. attempted to create the same file name of the file the FTP server kept open.
  5431. This operation works fine on unix, but not on cygwin.
  5432. Version 7.10.4 (2 Apr 2003)
  5433. Daniel (1 Apr)
  5434. - Added test case 505 to exercise FTP upload with rename done with libcurl,
  5435. and for that I had to extend the test suite's FTP server to deal with the
  5436. RNFR and RNTO commands.
  5437. Daniel (31 Mar)
  5438. - Even more SSL config check modifications after Richard's testing.
  5439. Version 7.10.4-pre6 (31 Mar 2003)
  5440. Daniel (31 Mar)
  5441. - More fixes for the SSL session ID cache checks when SSL configs are changed
  5442. between connections. Based on tests and talks with Richard Bramante.
  5443. - Guillaume Cottenceau provided a patch that added CURLOPT_UNRESTRICTED_AUTH.
  5444. When enabled, it will prevent libcurl from limiting to which host it sends
  5445. user+password to when following locations. By default, libcurl only sends
  5446. name and password to the original host used in the first URL, but with this
  5447. option set it will send the auth info to all hosts it follows location
  5448. headers to. The new tool command line option for this is named
  5449. "--location-trusted".
  5450. - Frankie Fong reported a problem with libcurl if you re-used an easy handle
  5451. with a proxy, and you first made a https:// connection to a host and then
  5452. switched to a http:// one to the same host. libcurl would then wrongly re-use
  5453. the same connection for it and fail to get the second URL properly
  5454. Daniel (29 Mar)
  5455. - Dan Shearer's fix that makes curl complain if invoked with nothing but "curl
  5456. -O" was applied.
  5457. Daniel (26 Mar)
  5458. - Bryan Kemp was friendly enough to lend me an account on his Redhat 9 box and
  5459. I could fix the configure problems on redhat 8.1 and 9 in no time thanks to
  5460. this. Thanks a bunch Bryan!
  5461. Daniel (25 Mar)
  5462. - Renamed configure.in to configure.ac
  5463. Version 7.10.4-pre5 (25 Mar 2003)
  5464. Daniel (25 Mar)
  5465. - Richard Bramante provided a fix for a handle re-use problem seen when you
  5466. change options on an SSL-enabled connection between requests. Previously,
  5467. changing peer verification or host verification and similar things was not
  5468. taken into account when a connection were checked for re-use and thus
  5469. enabling stricter check between requests on a re-used connection made no
  5470. difference and the connection would thus be used erroneously.
  5471. Daniel (24 Mar)
  5472. - Götz Babin-Ebell pointed out that the ca-bundle.crt file contained a
  5473. certificate from Trustcenter that was a demo certificate only that was never
  5474. intended to be part of a CA bundle.
  5475. Daniel (21 Mar)
  5476. - Life is a mystery. Within a time period of 17 hours, Tim Pope and Michael
  5477. Churchill filed one bug report each, both identifying problems with a second
  5478. transfer when doing persistent transfers re-using a connection. Tim's one is
  5479. #706624, labeled "Multiple uploads per handle fail" and Michael's #707003
  5480. "Does not send Authorization: header when reusing connection". I could track
  5481. both down to the same piece of logic and it turned out libcurl was not using
  5482. new settings properly when re-using an existing connection. This concerned
  5483. both uploading and downloading and involved exactly those pieces these two
  5484. reports identified. This code has been this faulty since the day I
  5485. introduced persistent connection support in libcurl, more than 2 years ago.
  5486. Daniel (20 Mar 2003)
  5487. - Five year anniversary. Today five years ago, the first ever curl release saw
  5488. the light of day.
  5489. Daniel (17 Mar)
  5490. - Andy Cedilnik corrected flaws in some libcurl example-usage sources.
  5491. Daniel (16 Mar)
  5492. - Juan F. Codagnone reported that the fix from March 2nd was incomplete.
  5493. - Added code to the configure.in to check for select() argument types. I've
  5494. not made any code use the results just yet though.
  5495. Daniel (15 Mar)
  5496. - Gisle Vanem provided two patches to build better on Windows.
  5497. - Adjusted the test suite code to better make sure that the server(s) required
  5498. for a specific test is properly started before the test case is attempted.
  5499. Many tests now run a lot faster than before.
  5500. Daniel (14 Mar)
  5501. - Another configure.in adjustment made the configure detect functions properly
  5502. on HPUX now.
  5503. Daniel (13 Mar)
  5504. - Philippe Raoult fixed pre4-compile quirks for FreeBSD.
  5505. Version 7.10.4-pre4 (13 Mar 2003)
  5506. Daniel (13 Mar)
  5507. - Added a backup-check for functions that aren't found by AC_CHECK_FUNCS()
  5508. as I believe some checks on HPUX need this. At least some of the info given
  5509. to us by Rick Jones seemed to indicate this.
  5510. Daniel (12 Mar)
  5511. - Thomas Tonino found out that if you used the curl tool to do PUT operations
  5512. as in 'curl www.foo.com/dir/ -T file' and the file name included for example
  5513. space or other characters that don't belong in URLs, curl did not properly
  5514. URL encode them before using them in the URL.
  5515. - Added an option to configure called --enable-libgcc that simply adds -lgcc
  5516. to the LIBS variable, as this seems to be a common problem.
  5517. - I modified the configure.in file, so that the headers are now checked in an
  5518. order of "viality". We must also make sure to use the "default headers"
  5519. parameter to AC_CHECK_HEADERS() so that headers are checked with the proper
  5520. prerequisites included (i.e all the major and generally important header
  5521. files are included there by default). This might be what we need for various
  5522. Sun, HP, AIX and Tru64 systems to behave good again on the header check
  5523. front.
  5524. - Rick Jones pointed out a few compiler warnings on HP-UX that I addressed.
  5525. - I made the configure --help output nicer by using AC_HELP_STRING() a lot
  5526. more.
  5527. Daniel (11 Mar)
  5528. - Christophe Demory fixed the socket sending code to work better on HP-UX
  5529. when sending data to a socket that would block. It then returns EAGAIN, not
  5530. EWOULDBLOCK.
  5531. - Richard Gorton improved the seeding function for systems without a good
  5532. and reliable random source.
  5533. - Richard Gorton fixed a few warnings that popped up when you built curl
  5534. using the Sun compiler on a 64bit SPARC platform.
  5535. - Martin C. Martin fixed a case where a connect failure using the multi
  5536. interface didn't produce a human readable error string.
  5537. Daniel (10 Mar)
  5538. - Reverted ltmain.sh back to libtool 1.4.2 status again, as the 1.4.3 version
  5539. broke the build on numerous platforms. It seems that libtool 1.4.3 puts some
  5540. requirements on what versions of the other tools (autoconf + automake) that
  5541. I am not familiar with and thus I couldn't fulfill at this point.
  5542. Yes, this is more than mildly frustrating.
  5543. Daniel (7 Mar)
  5544. - Run libtoolize version 1.4.3.
  5545. Version 7.10.4-pre3 (4 Mar 2003)
  5546. Daniel (3 Mar)
  5547. - Added share.obj to the VC6 and Borland libcurl makefiles.
  5548. - Troels Walsted Hansen found and investigated a problem with libcurl on AIX,
  5549. presumably only on 4.3 or later. gethostbyname_r() is not returning data
  5550. that is possible to "keep" and cache the way libcurl does. But instead these
  5551. versions of AIX uses a gethostbyname() that works thread-safely we can
  5552. instead use the ordinary gethostbyname() and our pack_hostent() approach to
  5553. achieve what we want. The configure script now attempts to detect AIX 4.3 or
  5554. later to adjust for this.
  5555. Daniel (2 Mar)
  5556. - Juan F. Codagnone found a problem introduced in 7.10.3 when you first did a
  5557. POST and then back to a GET using the same easy handle.
  5558. Daniel (28 Feb)
  5559. - Removed the strequal and strnequal defines from curl/curl.h header. They
  5560. were never meant for the public header anyway. Philippe Raoult brought it
  5561. up.
  5562. - James Bursa fixed the RISC OS build.
  5563. Daniel (27 Feb)
  5564. - Avery Fay pointed out the very misleading curl_multi_info_read man page, and
  5565. I updated it to become more accurate.
  5566. - Salvatore Sorrentino found a problem with FTP downloading that turned out to
  5567. be his FTP server returning size zero (0 bytes) when SIZE was used on a file
  5568. while being in BINARY mode. We now make a second check for the actual size
  5569. by scanning the RETR reply anyway, even if the SIZE command returned 0.
  5570. Daniel (26 Feb)
  5571. - Kyle Sallee reported a case where he would do a transfer that didn't update
  5572. the progress meter properly. It turned out to be a case where libcurl would
  5573. loop a little too eagerly in the transfer loop, which isn't really good for
  5574. the APIs, especially not the multi API.
  5575. Version 7.10.4-pre2 (24 Feb 2003)
  5576. Daniel (24 Feb)
  5577. - Kjetil Jacobsen found out that setting CURLOPT_MAXCONNECTS to a value higher
  5578. than 5 could cause a segfault.
  5579. - I believe I fixed the 'Expect: 100-continue' behavior that has been broken
  5580. for a while (I think since my change dated Dec 10 2002). When this header is
  5581. used, libcurl should wait for a HTTP 100 (or timeout) before sending the
  5582. post/put data.
  5583. Daniel (14 Feb)
  5584. - Matthew Clarke provided some info what to modify to make curl build
  5585. flawlessly on AIX 3.2.5.
  5586. - Martin C. Martin found and fixed a problem in the multi interface when
  5587. running on Windows and trying to connect to a port without a listener.
  5588. Daniel (13 Feb)
  5589. - Christopher R. Palmer fixed Curl_base64_encode() to deal with zeroes in the
  5590. data to encode.
  5591. Daniel (4 Feb)
  5592. - Jean-Philippe added the first code that enables the 'share' system. This
  5593. should now enable sharing of DNS data between two curl easy handles.
  5594. - Incorporated Nico Baggus' fixes to again compile flawlessly on VMS.
  5595. - James Bursa corrected a bad comment in the public include file curl/multi.h
  5596. - Peter Forret reported one of those error:00000000 cases in libcurl again
  5597. when connecting to a HTTPS site, and this time I did discover some oddities
  5598. in how curl reports SSL errors back. It could miss showing the actual error.
  5599. Version 7.10.4-pre1 (3 Feb 2003)
  5600. Daniel (3 Feb)
  5601. - Removed things in the docs saying capath doesn't work on Windows, as Julian
  5602. Noble told us it works fine.
  5603. Daniel (31 Jan)
  5604. - Kevin Roth fixed the zlib build stuff in the Mingw32 makefile.
  5605. Daniel (30 Jan)
  5606. - Kevin Roth found out that curl on Windows always checked for the CA cert
  5607. bundle using the environment variable and the path scan, even though
  5608. -k/--insecure was used.
  5609. - Hamish Mackenzie pointed out that curl only did strict host name verifying
  5610. if capath or cainfo was used. Now it'll always do it unless -k / --insecure
  5611. is used!
  5612. - Pavel Cenek pointed out that the Content-Type extraction was done wrongly
  5613. as the full string was not fetched. Added test case 57 to verify that curl
  5614. does it right now.
  5615. Daniel (29 Jan)
  5616. - Jamie Wilkinson provided a patch that now makes curl attempt to clear out
  5617. "sensitive" command line arguments so that they don't appear in ps outputs
  5618. (only on platforms that allow writing to argv[]).
  5619. - John McGowan found out that the DEBUGFUNCTION could be called with bad
  5620. arguments and thus cause the --trace outputs to go wrong.
  5621. - Removed all the emacs local variables from all files. Mats Lidell provided
  5622. the new sample.emacs file (for a sample of what to include in your .emacs)
  5623. and the curl-style.el that sets a better c-style for editing curl sources.
  5624. - Dave Halbakken found a problem with FTP downloads that could accidently
  5625. return CURLE_PARTIAL_FILE when curl_easy_perform() was called with NOBODY
  5626. set TRUE.
  5627. Daniel (27 Jan)
  5628. - The fopen.c example was flawed as Nick Humfrey noticed, and I fixed it to
  5629. work again.
  5630. Daniel (24 Jan)
  5631. - Bertrand Demiddelaer found and fixed a memory leak (the content-type string)
  5632. when following locations.
  5633. Daniel (22 Jan 2003)
  5634. - Ian Wilkes and Legoff Vincent both independently provided fixes for making
  5635. curl/multi.h work properly when compiled with a C++ compiler.
  5636. Daniel (20 Jan 2003)
  5637. - Fixed 'buildconf' to check version number of the required tools before
  5638. they're actually used.
  5639. - Wrote 'testcurl.sh', a script targeted for automatic and distributed curl
  5640. tests on various platforms.
  5641. - David Thiel pointed out that the .netrc file was not being dealt with
  5642. properly anymore. I broke this in the password prompting "fix".
  5643. - Markus F.X.J. Oberhumer patched libcurl to allocate the scratch buffer only
  5644. on demand and thus we save 32KB in each curl handle that don't use that
  5645. buffer. This need appeared when some people started using thousands of
  5646. simultaneous curl handles... :-)
  5647. Daniel (16 Jan 2003)
  5648. - Markus Oberhumer fixed curl-config --cflags when the includedir was not
  5649. /usr/include.
  5650. - Markus Oberhumer fixed CURLINFO_PRIVATE to properly return NULL if it was
  5651. set to NULL!
  5652. Version 7.10.3 (14 Jan 2003)
  5653. Daniel (10 Jan 2003)
  5654. - Steve Oliphant pointed out that test case 105 did not work anymore and this
  5655. was due to a missing fix for the password prompting.
  5656. Version 7.10.3-pre6 (10 Jan 2003)
  5657. Daniel (9 Jan 2003)
  5658. - Bryan Kemp pointed out that curl -u could not provide a blank password
  5659. without prompting the user. It can now. -u username: makes the password
  5660. empty, while -u username makes curl prompt the user for a password.
  5661. - Kjetil Jacobsen found a remaining connect problem in the multi interface on
  5662. ipv4 systems (Linux only?), that I fixed and Kjetil verified that it fixed
  5663. his problems.
  5664. - memanalyze.pl now reads a file name from the command line, and no longer
  5665. takes the data on stdin as before.
  5666. Version 7.10.3-pre5 (9 Jan 2003)
  5667. Daniel (9 Jan 2003)
  5668. - Fixed tests/memanalyze.pl to work with file names that contain colons (as on
  5669. Windows).
  5670. - Kjetil Jacobsen quickly pointed out that lib/share.h was missing...
  5671. Version 7.10.3-pre4 (9 Jan 2003)
  5672. Daniel (9 Jan 2003)
  5673. - Updated lib/share.c quite a bit to match the design document at
  5674. http://curl.haxx.se/dev/sharing.txt a lot more.
  5675. I'll try to update the document soonish. share.c is still not actually used
  5676. by libcurl, but the API is slowly getting there and we can start
  5677. implementing code that takes advantage of this system.
  5678. Daniel (8 Jan 2003)
  5679. - Updated share stuff in curl/curl.h, including data types, structs and
  5680. function prototypes. The corresponding files in lib/ were also modified
  5681. of course to remain compilable. Based on input from Jean-Philippe and also
  5682. to make it more in line with the design document.
  5683. - Jean-Philippe Barrette-LaPierre patched a very trivial memory leak in
  5684. curl_escape() that would happen when realloc() returns NULL...
  5685. - Matthew Blain provided feedback to make the --create-dirs stuff build
  5686. properly on Windows.
  5687. - Fixed the #include in tests/libtest/first.c as Legoff Vincent pointed out.
  5688. Daniel (7 Jan 2003)
  5689. - Philippe Raoult provided a patch that now makes libcurl properly support
  5690. wildcard checks for certificate names.
  5691. - Simon Liu added CURLOPT_HTTP200ALIASES, to let an application set other
  5692. strings recognized as "HTTP 200" to allow http-like protocols to get
  5693. downloaded fine by curl.
  5694. - Now using autoconf 2.57 and automake 1.7.2
  5695. - Doing "curl -I ftp://domain/non-existing-file" still outputed a date!
  5696. Wayne Haigh reported.
  5697. - The error message is now written properly with a newline in the --trace
  5698. file.
  5699. Daniel (6 Jan 2003)
  5700. - Sterling Hughes fixed a possible bug: previously, if you called
  5701. curl_easy_perform and then set the global dns cache, the global cache
  5702. wouldn't be used. Pointed out by Jean-Philippe Barrette-LaPierre.
  5703. - Matthew Blain's fixed the VC6 libcurl makefile to include better debug data
  5704. on debug builds.
  5705. Daniel (27 Dec 2002)
  5706. - Philippe Raoult reported a bug with HTTPS connections which I evidently
  5707. added in my 19 dec fix. I corrected it.
  5708. Daniel (20 Dec)
  5709. - Idea from the Debian latest patch: use AM_MAINTAINER_MODE in the configure
  5710. script to make the default makefile less confusing "to the casual
  5711. installer".
  5712. Version 7.10.3-pre3 (20 Dec)
  5713. Daniel (19 Dec)
  5714. - Matthew Blain patched the Curl_base64_decode() function.
  5715. - Evan Jordan reported in bug report #653022 that the SSL_read() usage was
  5716. wrong, and it certainly was. It could lead to curl using too much CPU due to
  5717. a stupid loop.
  5718. Daniel (18 Dec)
  5719. - As suggested by Margus Freudenthal, CURLE_HTTP_NOT_FOUND was renamed to
  5720. CURLE_HTTP_RETURNED_ERROR since it is returned on any >= 400 code when
  5721. CURLOPT_FAILONERROR is set.
  5722. Daniel (17 Dec)
  5723. - Bug reported #651464, reported by Christopher Palmer, provided an example
  5724. source code using the multi interface that hang when trying to connect to a
  5725. proxy on a localhost port where no proxy was listening. This bug was not
  5726. repeatable on libcurls that were IPv6-enabled.
  5727. Daniel (16 Dec)
  5728. - Christopher Palmer also noticed what Vojtech Janota already was
  5729. experiencing: The attempted name resolve fix for glibc 2.2.93 caused libcurl
  5730. to crash when used on some older glibc versions. The problem is of course
  5731. the silliness of the 2.2.93. I committed a fix that hopefully should make
  5732. the binary run fine on either one of the versions, even though the solution
  5733. is not as nice as I'd like it to be.
  5734. Daniel (13 Dec)
  5735. - Bug report #651460 by Christopher R. Palmer showed that when using libcurl
  5736. to for example go over a proxy on localhost, it would attempt to connect
  5737. through the proxy TWICE.
  5738. I added test case 503 with which I managed to repeat this problem and I
  5739. fixed the code to not re-attempt any connects (which also made it a nicer
  5740. fix for the #650941 bug mentioned below).
  5741. The sws server was extended to deal with CONNECT in order to make test
  5742. case 503 do good.
  5743. - Evan Jordan posted bug report #650989 about a memory leak in the public key
  5744. retrieving code. He provided a suggested fix and I merely applied it!
  5745. - Bug report #650941, posted by Christopher R. Palmer identified a problem
  5746. with the multi interface and getting file:// URLs. This was now fixed and
  5747. test case 502 was added to verify this.
  5748. Daniel (12 Dec)
  5749. - Test case 500 and 501 are the first ever libcurl test cases that run.
  5750. - Made "configure --enable-debug" cut off all -O* options to the compiler
  5751. - Finally fixed the test suite's ftp server so that test case 402 doesn't
  5752. cause the following test case to fail anymore!
  5753. Daniel (11 Dec)
  5754. - CURL_MAX_WRITE_SIZE is now decreased to 16KB since it makes the Windows
  5755. version perform uploads much faster!!! RBramante did lots of research on
  5756. this topic.
  5757. - Fixed the #include in curl/curl.h to include the other files outside the
  5758. extern "C" scope.
  5759. Daniel (10 Dec)
  5760. - Moved around and added more logic:
  5761. First, POST data is never sent as part of the request headers in the http.c
  5762. code. It is always sent the "normal" read callback then send() way. This now
  5763. enables a plain HTTP POST to be sent chunked if we want to. This also
  5764. reduces the risk of having very big POSTs causing problems.
  5765. Further, sending off the initial HTTP request is not done using a loop
  5766. anymore. If it wasn't all sent off in the first send(), the rest of the
  5767. request is sent off in the normal transfer select() loop. This makes several
  5768. things possible, but mainly it makes libcurl block less when used from the
  5769. multi interface and it also reduces the risk of problems with issuing very
  5770. large requests.
  5771. Daniel (9 Dec)
  5772. - Moved the read callback pointer and data within the structs to a more
  5773. suitable place. This in preparation for a better HTTP-request sending code
  5774. without (a silly) loop.
  5775. - The Dodds fix seems not to work.
  5776. - Vojtech Janota tests proved that the resolve fix from oct 21st is not good
  5777. enough since obviously older glibcs might return EAGAIN without this meaning
  5778. that the buffer was too small.
  5779. - [the other day] Made libcurl loop on recv() and send() now until done, and
  5780. then get back to select(). Previously it went back to select() more often
  5781. which really was a slight overhead. This was due to the reported performance
  5782. problems on HTTP PUT on Windows. I couldn't see any notable difference on
  5783. Linux...
  5784. Version 7.10.3-pre2 (4 Dec 2002)
  5785. Daniel (4 Dec 2002)
  5786. - Lots of work with Malcolm Dodds made me add a temporary code fix that now
  5787. shortens the timeout waiting for the 226 or 250 line after a completed
  5788. FTP transfer.
  5789. If no data is received within 60 seconds, this is taken as a sign of a dead
  5790. control connection and we bail out.
  5791. Daniel (3 Dec 2002)
  5792. - Ralph's bug report #644841 identified a problem in which curl returned a
  5793. timeout error code when in fact the problem was not a timeout. The proper
  5794. error should now be propagated better when they're detected in the FTP
  5795. response reading function.
  5796. - Updated the Borland Makefiles.
  5797. Daniel (2 Dec 2002)
  5798. - Nicolas Berloquin provided a patch that introduced --create-dirs to the
  5799. command line tool. When used in combination with -o, it lets curl create
  5800. [non-existing] directories used in -o, suitably used with #-combinations
  5801. such as:
  5802. curl "www.images.com/{flowers,cities,parks,mountains}/pic_[1-100].jpg \
  5803. -o "dir_#1/pic#2.jpg" --create-dirs
  5804. Version 7.10.3-pre1
  5805. Daniel (28 Nov 2002)
  5806. - I visited Lars Nordgren and had a go with his problem, which lead me to
  5807. implement this fix. If libcurl detects the added custom header
  5808. "Transfer-Encoding: chunked", it will now enable a chunked transfer.
  5809. Also, chunked transfer didn't quite work before but seems to do so now.
  5810. - Kjetil Jacobsen pointed out that ./configure --disable-ipv6 --without-zlib
  5811. didn't work on any platform...
  5812. Daniel (26 Nov 2002)
  5813. - Fixed a bad addrinfo free in the hostip.c code, hardly exposed anywhere
  5814. - Dan Becker found and fixed a minor memory leak on persistent connnections
  5815. using CURLOPT_USERPWD.
  5816. Daniel (22 Nov 2002)
  5817. - Based on Ralph Mitchell's excellent analysis I found a bug in the test suite
  5818. web server (sws) which now lets test case 306 run fine even in combination
  5819. with the other test cases.
  5820. - Juan Ignacio Hervás found a crash in the verbose connect message that is
  5821. used on persistent connections. This bug was added in 7.10.2 due to the
  5822. rearranged name resolve code.
  5823. Daniel (20 Nov 2002)
  5824. - Kjetil Jacobsen provided a patch that introduces:
  5825. CURLOPT_PRIVATE stores a private pointer in the curl handle.
  5826. CURLINFO_PRIVATE retrieves the private pointer from the curl handle.
  5827. - Karol Pietrzak pointed out how curl-config --cflags didn't output a good
  5828. include dir so I've removed that for now.
  5829. Version 7.10.2 (18 Nov 2002)
  5830. Daniel (11 Nov 2002)
  5831. - Dave Halbakken added curl_version_info to lib/libcurl.def to make libcurl
  5832. properly build with MSVC on Windows.
  5833. Daniel (8 Nov 2002)
  5834. - Doing HTTP PUT without a specified file size now makes libcurl use
  5835. Transfer-Encoding: chunked.
  5836. Daniel (7 Nov 2002)
  5837. - Bug report #634625 identified how curl returned timeout immediately when
  5838. CURLOPT_CONNECTTIMEOUT was used and provided a fix.
  5839. Version 7.10.2-pre4 (6 Nov 2002)
  5840. Daniel (5 Nov 2002)
  5841. - Lehel Bernadt found out and fixed. libcurl sent error message to the debug
  5842. output when it stored the error message.
  5843. - Avery Fay found some problems with the DNS cache (when the cache time was
  5844. set to 0 we got a memory leak, but when the leak was fixed he got a crash
  5845. when he used the CURLOPT_INTERFACE with that) that had me do some real
  5846. restructuring so that we now have a reference counter in the dns cache
  5847. entries to prevent an entry to get flushed while still actually in use.
  5848. I also detected that we previously didn't update the time stamp when we
  5849. extracted an entry from the cache so that must've been a reason for some
  5850. very weird dns cache bugs.
  5851. Version 7.10.2-pre3
  5852. Daniel (31 Oct 2002)
  5853. - Downgraded automake to 1.6.3 in an attempt to fix cygwin problems. (It
  5854. turned out this didn't help though.)
  5855. - Disable the DNS cache (by setting the timeout to 0) made libcurl leak
  5856. memory. Avery Fay brought the example code that proved this.
  5857. Version 7.10.2-pre2
  5858. Daniel (28 Oct 2002)
  5859. - Upgraded to autoconf 2.54 and automake 1.7 on the release-build host.
  5860. - Kevin Roth made the command line tool check for a CURL_CA_BUNDLE environment
  5861. variable (if --cacert isn't used) and if not set, the Windows version will
  5862. check for a file named "curl-ca-bundle.crt" in the current directory or the
  5863. directory where curl is located. That file is then used as CA root cert
  5864. bundle.
  5865. - Avery Fay pointed out that curl's configure scrip didn't get right if you
  5866. used autoconf newer than 2.52. This was due to some badly quoted code.
  5867. Version 7.10.2-pre1
  5868. Daniel (23 Oct 2002)
  5869. - Emiliano Ida confirmed that we now build properly with the Borland C++
  5870. compiler too. We needed yet another fix for the ISO cpp check in the curl.h
  5871. header file.
  5872. - Yet another fix was needed to get the HTTP download without headers to work.
  5873. This time it was needed if the first "believed header" was read all in the
  5874. first read. Test 306 has not run properly since the 11th october fix.
  5875. Daniel (21 Oct 2002)
  5876. - Zvi Har'El pointed out a problem with curl's name resolving on Redhat 8
  5877. machines (running IPv6 disabled). Mats Lidell let me use an account on his
  5878. machine and I could verify that gethostbyname_r() has been changed to return
  5879. EAGAIN instead of ERANGE when the given buffer size is too small. This is
  5880. glibc 2.2.93.
  5881. - Albert Chin helped me get the -no-undefined option corrected in
  5882. lib/Makefile.am since Cygwin builds want it there while Solaris builds don't
  5883. want it present. Kevin Roth helped me try it out on cygwin.
  5884. - Nikita Schmidt provided a bug fix for a FOLLOWLOCATION bug introduced when
  5885. the ../ support got in (7.10.1).
  5886. Daniel (18 Oct 2002)
  5887. - Fabrizio Ammollo pointed out a remaining problem with FOLLOWLOCATION in
  5888. the multi interface.
  5889. Daniel (17 Oct 2002)
  5890. - Richard Cooper's experimenting proved that -j (CURLOPT_COOKIESESSION) didn't
  5891. work quite as supposed. You needed to set it *before* you use
  5892. CURLOPT_COOKIEFILE, and we dont' want that kind of dependencies.
  5893. Daniel (15 Oct 2002)
  5894. - Andrés García provided corrections for erratas in four libcurl man pages.
  5895. Daniel (13 Oct 2002)
  5896. - Starting now, we generate and include PDF versions of all the docs in the
  5897. release archives.
  5898. Daniel (12 Oct 2002)
  5899. - Trying to connect to a host on a bad port number caused the multi interface
  5900. to never return failure and it appeared to keep on trying forever (it just
  5901. didn't do anything).
  5902. Daniel (11 Oct 2002)
  5903. - Downloading HTTP without headers didn't work 100%, some of the initial data
  5904. got written twice. Kevin Roth reported.
  5905. - Kevin Roth found out the "config file" parser in the client code could
  5906. segfault, like if DOS newlines were used.
  5907. Version 7.10.1 (11 Oct 2002)
  5908. Daniel (10 Oct 2002)
  5909. - Jeff Lawson fixed a few problems with connection re-use that remained when
  5910. you set CURLOPT_PROXY to "".
  5911. Daniel (9 Oct 2002)
  5912. - Craig Davison found a terrible flaw and Cris Bailiff helped out in the
  5913. search. Getting HTTP data from servers when the headers are split up in
  5914. multiple reads, could cause junk data to get inserted among the saved
  5915. headers. This only concerns HTTP(S) headers.
  5916. Daniel (8 Oct 2002)
  5917. - Vincent Penquerc'h gave us the good suggestion that when the ERRRORBUFFER
  5918. is set internally, the error text is sent to the debug function as well.
  5919. - I fixed the telnet code to timeout properly as the option tells it to. On
  5920. non-windows platforms.
  5921. Daniel (7 Oct 2002)
  5922. - John Crow pointed out that libcurl-the-guide wasn't included in the release
  5923. tarball!
  5924. - Kevin Roth pointed out that make install didn't do right if build outside
  5925. the source tree (ca-bundle wise).
  5926. - FOLLOWLOCATION bugfix for the multi interface
  5927. Daniel (4 Oct 2002)
  5928. - Kevin Roth got problems with his cygwin build with -no-undefined was not
  5929. present in lib/Makefile.am so I put it back in there again. The poor one who
  5930. needs to remove it again must write a configure script to detect that need.
  5931. - Ralph Mitchell pointed out that curl was a bit naive and didn't deal with ./
  5932. or ../ stuff in the string passed back in a Location: header when following
  5933. locations.
  5934. - Albert Chin helped me to work out a better configure.in check for zlib, and
  5935. both --without-zlib and -with-zlib seem to work rather well right now.
  5936. - Zvi Har'El improvied the OpenSSL ENGINE check in the configure script to
  5937. become more accurate.
  5938. Daniel (1 Oct 2002)
  5939. - Detlef Schmier pointed out the lack of a --without-libz option to configure,
  5940. so I added one.
  5941. Version 7.10 (1 Oct 2002)
  5942. Daniel (30 Sep 2002)
  5943. - Modified the curl_version_info() proto and returned struct once again, and
  5944. updated the man page accordingly.
  5945. - Cris Bailiff found out that the pre-releases crashed on name lookups on
  5946. names such as "a:" or "baz:" (on Linux versions not being ipv6-enabled) due
  5947. to some weird return codes from gethostbyname_r(). I'll blame the complete
  5948. lack of docs in that department. Cris provided a fix, which I modified only
  5949. slightly.
  5950. Daniel (27 Sep 2002)
  5951. - After a suggestion from Christian Kurz to Debian curl package maintainer
  5952. Domenico Andreoli, I made it possible to override the proxy environment
  5953. variables better. Now, by setting -x "" you can explicitly tell libcurl to
  5954. not use a proxy, no matter whan the environment variables say.
  5955. Version 7.10-pre4
  5956. Daniel (26 Sep 2002)
  5957. - Extended curl_version_info() more and wrote a man page for it.
  5958. Daniel (25 Sep 2002)
  5959. - libcurl could leak memory when downloading multiple files using http ranges,
  5960. reported and fixed by Jean-Luc Guevel.
  5961. - Walter J. Mack provided code and docs for the new curl_free() function that
  5962. shall be used to free memory that is allocated by libcurl and returned back
  5963. to the application, as curl_escape() and curl_unescape() do.
  5964. - Yarram Sunil pointed out a flaw in the multi interface where a failed
  5965. connection didn't close down properly and thus a second transfer using the
  5966. same handle failed.
  5967. - Andrés García fixed a flaw that made (among other things) dict-fetches
  5968. return a random value.
  5969. Daniel (24 Sep 2002)
  5970. - Wez Furlong brought his initial patch that introduced curl_version_info().
  5971. We might need to tweak it somewhat before release.
  5972. Daniel (20 Sep 2002)
  5973. - Craig Markwardt fixed another Tru64 IP resolve problem.
  5974. Daniel (19 Sep 2002)
  5975. - Dolbneff A.V and Spiridonoff A.V made the file:// code work with resumes
  5976. in the same style other code does.
  5977. - Ilguiz Latypov fixed a flaw in the client code when fetching multiple URLs
  5978. and -C - was used. The first file's resume position was then accidentally
  5979. reused on all the other files too.
  5980. Daniel (18 Sep 2002)
  5981. - The curl_easy_setopt.3 man page was greatly modified and the options have
  5982. now been grouped in logical groups so that it should be somewhat easier to
  5983. read it and find things you search for.
  5984. Daniel (13 Sep 2002)
  5985. - Kevin Roth pinpointed a scary flaw in libcurl, when the HTTP server doesn't
  5986. send any headers back, only raw content. Right, that is a violation of the
  5987. standard but still happens at times and we need to deal with it. Test case
  5988. 306 was added to verify that we do right now.
  5989. Version 7.10-pre3
  5990. Daniel (11 Sep 2002)
  5991. - Lukasz Czekierda found out that curl didn't send a correct HTTP Host: header
  5992. when you specified the URL with an IPv6 IP-address.
  5993. Daniel (4 Sep 2002)
  5994. - Sven Neuhaus made --silent being acknowledged even when multiple URLs
  5995. were used. It used to output "[1/2]: http://host/a.html.de --> a.html.d" etc
  5996. even when told to shut up.
  5997. Daniel (3 Sep 2002)
  5998. - Updated all source code headers to use MIT-license references only, and
  5999. point to the COPYING file and the http://curl.haxx.se/docs/copyright.html
  6000. URL. I've cut out all references to MPL that I could find.
  6001. - Corected the makefiles to not always use -lz when linking
  6002. Version 7.10-pre2
  6003. Daniel (2 Sep 2002)
  6004. - James Gallagher added Content-Encoding support to libcurl so now curl and
  6005. libcurl-using apps can request compressed contents using the 'deflate'
  6006. method. See the special file lib/README.encoding for details.
  6007. curl --compressed is now used to request compressed contents.
  6008. curl-config --feature will include 'libz' if this feature was around when
  6009. the library was built.
  6010. Daniel (30 Aug 2002)
  6011. - Applied an anonymous SOCKS5-proxy patch. Not properly working in all
  6012. situations though, as all getaddrinfo()-using libcurls will fail on this.
  6013. This is because of the somewhat naive way the current code tries to extract
  6014. the IP address of the proxy.
  6015. - Fixed up the SSL cert fixes from the other day even more after more inputs
  6016. from Cris. Added three new SSL error codes to make the
  6017. CURLE_SSL_CONNECT_ERROR slightly less overloaded.
  6018. Daniel (27 Aug 2002)
  6019. - After lots of talk with Tom Zerucha, Nick Gimbrone and Cris Bailiff I
  6020. decided to talk the bold path and I now made libcurl do CA certificate
  6021. verification by default. Thus library users need to explicitly turn this off
  6022. if you want to connect to sites without proper checking. We also install a
  6023. CA cert bundle on 'make install' now.
  6024. The curl tool now requires the -k/--insecure option in order to allow
  6025. connections and operations on SSL sites that aren't properly verified with
  6026. -cafile or --capath.
  6027. curl-config --ca displays the built-in path to the CA cert bundle.
  6028. Daniel (26 Aug 2002)
  6029. - Andrew Francis cleaned up some code that now compiles fine without the need
  6030. for ugly MSVC pragmas.
  6031. - Keith MacDonald found a minor bug in src/main.c that made it close stdin
  6032. instead of the actual file handle. It shouldn't have resulted in much
  6033. trouble as most operating systems close all file handles on process exit
  6034. anyway.
  6035. Daniel (22 Aug 2002)
  6036. - Markus Oberhumer provided some documentation for his previously provided
  6037. CURLOPT_NOSIGNAL fix.
  6038. - Patched the lib/Makefile.am to hopefully no longer complain on undefined
  6039. symbols that seemed to occur on builds with shared OpenSSL libraries on
  6040. Solaris lately...
  6041. Daniel (20 Aug 2002)
  6042. - Fixed compiler warnings on MSCV++ compiles. We're looking for help here:
  6043. remove the pragmas from lib/config-win32.h and adjust the sources where
  6044. the warnings occur. Hiding them with pragmas like this is not the correct
  6045. way of dealing with compiler warnings.
  6046. Daniel (13 Aug 2002)
  6047. - Ulrich Zadow made the global include files in curl/* include themselves
  6048. using "curl.h" instead of <curl/curl.h> which thus allows people to more
  6049. freely decide how to include curl and how to setup their include paths.
  6050. - Sterling Hughes added the curl_share* interface, somewhat as discussed
  6051. previously.
  6052. - Jörn Hartroth pointed out that poll() was used in the pre1 source code and
  6053. it isn't very portable, so now I check for it in the configure script and
  6054. work around it.
  6055. Version 7.9.9-pre1
  6056. Daniel (12 Aug 2002)
  6057. - Applied my initial take on making the multi stuff more asynchronous. Connects
  6058. should now return back without "hanging" until it has connected for real.
  6059. This should also be the case for FTP-PASV connects.
  6060. Daniel (9 Aug 2002)
  6061. - Applied Markus F.X.J. Oberhumer's patch that introduces CURLOPT_NOSIGNAL,
  6062. which effectively prevents libcurl from doing anything that may cause
  6063. signals to get sent. This is basicly for multi-threaded applications that
  6064. now can use timeouts properly, without risking any signals to burst in and
  6065. ruin the party.
  6066. Daniel (5 Aug 2002)
  6067. - Lukasz Czekierda reported that RFC2732-style literal IPv6 addresses didn't
  6068. work. When did that code vanish? Anyway, it's back again now and seems to
  6069. work!
  6070. - Jonatan Lander found out that POSTing an empty string didn't work with the
  6071. command line tool.
  6072. Daniel (3 Aug 2002)
  6073. - Jörn Hartroth fixed the libcurl.def file to build the windows DLL with
  6074. the multi interface enabled.
  6075. Daniel (1 Aug 2002)
  6076. - The ftp PORT command now uses a better default IP address, as it will
  6077. extract and use the local IP address used by the control connection.
  6078. - Modified the #include lines in curl/multi.h to work better on more
  6079. platforms.
  6080. Daniel (31 Jul 2002)
  6081. - Attempted a fix for Ray DeGennaro's reported HP-UX host name resolve
  6082. problems.
  6083. Daniel (30 Jul 2002)
  6084. - Priya Ramakrishnan and Ryan Jones compiles curl/curl.h with a C++ compiler
  6085. and don't get __STDC__ defined, which required us to extend the preprocessor
  6086. check for the ## operator usage.
  6087. - Correct the description for CURLOPT_PASSWDFUNCTION, if set to NULL the
  6088. internal default function will be put back.
  6089. - danfuzz at milk.com found out that libcurl badly assumed a space after
  6090. 'Set-Cookie:' so if it wasn't present, it caused the first letter of the
  6091. cookie name to fall off!
  6092. Daniel (29 Jul 2002)
  6093. - The password prompt asking for user password used stdout and now uses
  6094. stderr instead to better allow redirecting. It also leaked a fopen() file
  6095. handle that is now fixed.
  6096. Daniel (28 Jul 2002)
  6097. - HAVE_SETVBUF was left out from src/main.c which made -N not work. Found out
  6098. by M T.
  6099. Daniel (26 Jun 2002)
  6100. - Glen Nakamura solved a crash in the name resolving function for IP-only
  6101. addresses on Alpha Linux (at least).
  6102. - T. Bharath corrected the high resolution timer introduced in 7.9.8.
  6103. Daniel (22 Jun 2002)
  6104. - Andrés García pointed out man page errors in curl_formadd.3. I fixed.
  6105. Daniel (19 Jun 2002)
  6106. - Chris Combes pointed out a flaw in curl_escape(). I fixed. We no longer
  6107. tries to generate nor parse '+' in URLs. Spaces become %20, and only %-codes
  6108. are translated by curl_unescape().
  6109. Daniel (15 Jun 2002)
  6110. - Added --limit-rate to the curl tool. Allows the user to set a maxmimum
  6111. upper limit to how much bandwidth to use for transfers.
  6112. - CURLOPT_BUFFERSIZE was added to libcurl. This sets a prefered size for the
  6113. receive buffer in libcurl. The main point of this would be that the write
  6114. callback gets called more often and with smaller chunks.
  6115. Daniel (14 Jun 2002)
  6116. - Yarram Sunil found out that the SocketIsDead() function performed a lot
  6117. faster on Windows when removing the 1 microsecond timeout.
  6118. - Hanno L. Kranzhoff fixed the VC++ project files.
  6119. - Tom Mattison found out that ftp transfers closed the connection a little
  6120. too often.
  6121. - Miklos Nemeth posted a VC++ makefile fix and some INSTALL comments on how
  6122. to disable specific protocols when building for Windows.
  6123. Version 7.9.8
  6124. Daniel (13 Jun 2002)
  6125. - Time to let this baby go.
  6126. Daniel (12 Jun 2002)
  6127. - Chris Combes added three new options for curl_formadd(): CURLFORM_BUFFER,
  6128. CURLFORM_BUFFERPTR, CURLFORM_BUFFERLENGTH. They are used to create a
  6129. multipart that appears as a regular file upload, but the data is provided
  6130. with a pointer and length.
  6131. - Nico Baggus made the VMS version use sigsetjmp() too.
  6132. - Jörn Hartroth fixed the mingw32 build using the mm lib.
  6133. - Applied patches by Kris Kennaway that correct format string problems in
  6134. lib/ftp.c and lib/ldap.c.
  6135. Version 7.9.8-pre3
  6136. Daniel (11 Jun 2002)
  6137. - James Cone brought the idea of using sigsetjmp() in the signal handler to
  6138. make the time-out of name lookups to work, even when the underlying name
  6139. resolver library traps EINTR. The use of sigsetjmp() and siglongjmp() for
  6140. this may be a bit drastic, and also not likely to exist on all platforms. I
  6141. added careful checking for this in the configure script, even checks for it
  6142. being a macro (which seems to be the case in for example Linux).
  6143. sigsetjmp() seems to be mentioned in the Single Unix specification.
  6144. - Miklos Nemeth brought a patch that allows libcurl to get built with specific
  6145. protocols disabled. This is done by running ./configure
  6146. --disable-[protocol].
  6147. - FTP range downloads could make CURLE_FTP_WRITE_ERROR get returned. We now
  6148. make precautions to not return this for range downloads.
  6149. Added test case 135 that makes an ftp range download. Had to tweak the
  6150. runtests.pl script a bit too.
  6151. - Bug report #566835 identified a strlen() on a NULL pointer. Added additional
  6152. check to prevent this.
  6153. Daniel (10 Jun 2002)
  6154. - Found and corrected a connect failure problem that didn't create a human
  6155. error text.
  6156. - Added code to compile with OpenSSL 0.9.7. Based on patch from Jacob Meuser
  6157. and comments from Götz Babin-Ebell.
  6158. - Gautam Mani found a socket descriptor leak that happened when FTP transfers
  6159. failed and you reinvoked curl_easy_perform().
  6160. Daniel (5 Jun 2002)
  6161. - Gustaf Hui corrected curl_multi_remove_handle() so that it won't crash no
  6162. matter when you decide to remove the CURL handle.
  6163. - HAVE_RAND_STATUS was added to lib/config-win32.h by Andreas Olsson, as it
  6164. makes windows builds stop complaining about "weak seeding" when it in fact
  6165. isn't.
  6166. - Another 64bit architecture crash that was introduced in 7.9.7 was now
  6167. removed, as bug report #564585 clarified. This happened due to our attempts
  6168. to only allocate only as much memory as is actually needed for name
  6169. resolving (using realloc) which called for a function that could 'move' a
  6170. hostent struct in memory.
  6171. Version 7.9.8-pre2
  6172. Daniel (3 Jun 2002)
  6173. - T. Bharath fixed the CURLINFO_REDIRECT_TIME to return a correct time and
  6174. made the CURLINFO_REQUEST_SIZE return the correct total request size. He
  6175. also made the win32 timers use higher resolution than before.
  6176. Daniel (29 May 2002)
  6177. - Renaud Chaillat made me aware of the fact that libcurl returned an error if
  6178. you tried to get an empty FTP file. This seemed like a wrong thing to do, so
  6179. now it no longer does that! I just hope that no one built anything fancy
  6180. upon this unexpected behavior...
  6181. Daniel (28 May 2002)
  6182. - Cris Bailiff brought CURLOPT_CAPATH that works like CURLOPT_CAINFO but
  6183. specifies a path to a directory with certificates rather than a single file
  6184. with them all concatenated. --capath was added to the command line tool
  6185. for the same function.
  6186. Windows users need to pay attention that the directory should be setup with
  6187. the c_rehash tool of the OpenSSL package, and that creates symlinks by
  6188. default that need to be replaced with actual copies to work on Windows.
  6189. - Gustaf Hui provided new code that changes how curl_multi_info_read()
  6190. messages are stored, so that they don't have to be kept around for the multi
  6191. handle's entire life time. He also made it return failure codes properly
  6192. which it didn't do before.
  6193. Daniel (27 May 2002)
  6194. - Gustaf Hui pointed out that running curl_multi_perform() without doing
  6195. curl_multi_fdset() first was not really a working combo. I added an internal
  6196. check for this and have some extra select() code without timeout to make the
  6197. library internals work identically nevertheless. We might need to somehow
  6198. either document that once you've used the *_fdset() you should remain using
  6199. them in select() or you should blank them somehow so that libcurl won't go
  6200. crazy.
  6201. Version 7.9.8-pre1
  6202. Daniel (22 May 2002)
  6203. - James Cone brought an excellent patch, including several tests and docs!
  6204. CURLOPT_NETRC now takes an enum as argument instead of the previous boolean.
  6205. --netrc-optional was introduced as an addition to --netrc to allow the
  6206. command line client to take use of all that new netrc stuff.
  6207. - Bug report #558888 showed a case where libcurl re-used the previous host
  6208. name when a connection over a proxy was re-used but to a different target
  6209. host.
  6210. Daniel (21 May 2002)
  6211. - Edin Kadribasic helped me sort out a problem to made libcurl crash when
  6212. trying to HTTP POST an empty string.
  6213. - Clarified that Juergen Wilke donated the original tests/server/sws.c code.
  6214. - Jean-Philippe Barrette-LaPierre made curl_formadd() return a typedef named
  6215. CURLFORMcode instead of the previous 'int', and the various return codes are
  6216. now globally exported. It allows applications to better figure out what goes
  6217. wrong when curl_formadd() returns errors.
  6218. Daniel (20 May 2002)
  6219. - Roland Zimmermann pointed out that SSL_CTX_use_certificate_chain_file()
  6220. is prefered to SSL_CTX_use_certificate_file().
  6221. Daniel (17 May 2002)
  6222. - Bug report #556869 pointed out that src/writeout.c didn't compile on freebsd
  6223. after my AIX fixes the other week.
  6224. - Bug report #556930 pointed out a FreeBSD core dump introduced in 7.9.7 in
  6225. the DNS struct realloc stuff. Actually, this crash could happen on all
  6226. systems that made the pack_hostent() function get invoked.
  6227. - I removed several compiler warnings in the test suite's HTTP server.
  6228. Version 7.9.7
  6229. Daniel (10 May 2002)
  6230. - Kevin Roth adjusted the --trace-ascii output slightly.
  6231. - Paul Harrington found out that src/writeout.c needed an additional header
  6232. file included for AIX builds
  6233. Version 7.9.7-pre2
  6234. Daniel (7 May 2002)
  6235. - Updated the man page with --trace-ascii and -j/--junk-session-cookies.
  6236. - Made --trace-ascii do pretty much the same as --trace but without the hex
  6237. part in the output.
  6238. - Added CURLOPT_COOKIESESSION that when enabled makes libcurl ignore session
  6239. cookies read from a file. This option is enforced by the curl command line
  6240. tool using the new -j/--junk-session-cookies option. After discussions with
  6241. Kevin Roth. This makes it easier to use curl to fully emulate a browser's
  6242. behavior, even when it comes to "session cookies". Session cookies are
  6243. cookies that a normal browser discards when the browser is shut
  6244. down. They're identified by not having any expire date/time.
  6245. - When CURLOPT_DEBUGDATA was set, it ruined the CURLOPT_STDERR setting and
  6246. this was discovered when --trace was made to crash.
  6247. - Using -v and --trace at the same time confused matters. -v is now pretty
  6248. much ignored when --trace or --trace-ascii is used.
  6249. - Made --trace (and --trace-ascii) support - as file name to pass output to
  6250. stdout instead. It makes it consistent with how other options work.
  6251. Version 7.9.7-pre1
  6252. Daniel (6 May 2002)
  6253. - Added multi-post.c to the examples directory. I got the basic source for
  6254. this from Gustaf Hui.
  6255. Daniel (3 May 2002)
  6256. - CURL_MAX_WRITE_SIZE is now an exported #define in the curl/curl.h header and
  6257. can be used to figure out the maximum buffer size your write callback can
  6258. get.
  6259. - CURLOPT_READDATA is now an alias for CURLOPT_INFILE and CURLOPT_WRITEDATE is
  6260. an alias for CURLOPT_FILE. These two were added for conformity. Most other
  6261. callback function's userdata are provided with options using a similar name-
  6262. scheme.
  6263. - Added "--trace [file]" to the command line tool. It makes a very detailed
  6264. trace dump get stored, with a full protocol dump that includes all received
  6265. and transmitted data. This could be a very effective tool for debugging what
  6266. goes wrong. This dump includes every byte the way it is sent to/received
  6267. from the server. The dump is the plain-text version, so SSL transfers will
  6268. still be readable.
  6269. - I found out that the DEBUGFUNCTION was not called properly everywhere as we
  6270. wanted it to. I fixed it.
  6271. - -D now stores all headers to the same file if multiple URLs are given on the
  6272. command line! Kevin Roth made me aware of that it didn't already do this!
  6273. - Gustaf Hui wrote an excellent formpost example that used the multi
  6274. interface. Unfortunately, it didn't work due to several bugs in how
  6275. transfers were made when the multi interface was used.
  6276. Daniel (2 May 2002)
  6277. - Hanno Kranzhoff found out that when doing multiple transfers on the same
  6278. easy handle, the progress meter would show a bad "currently downloaded
  6279. value" when the transfer starts.
  6280. Daniel (1 May 2002)
  6281. - Applied another patch by Jacky Lam to make the name resolve info realloc()
  6282. stuff work properly.
  6283. Daniel (28 April 2002)
  6284. - curl_multi_info_read() is now implemented!
  6285. Daniel (27 April 2002)
  6286. - Updated BUGS, TODO, FAQ, INSTALL and added BINDINGS.
  6287. - I think I fixed the DNS cache prune crach Jacky Lam found and reported.
  6288. - I cleaned up the name prefix stuff in the hash and llist modules.
  6289. - FTP responses should now be better on timing out properly. The timeout value
  6290. is maximum timeout for the entire request operation, but before this, the
  6291. timeout was used as a maximum allowed time between two reads...
  6292. Daniel (26 April 2002)
  6293. - Fixed the test suite http server to not use snprintf() anymore due to better
  6294. portability.
  6295. Daniel (25 April 2002)
  6296. - With Sterling Hughes' new DNS pruning, Jacky Lam asked if this wouldn't
  6297. cause problems since the pruning is only checking the entry time, and it
  6298. sure could cause problems. Therefor, I've now added and changed code so that
  6299. this should not be a problem. Nowhere in the code will be store name
  6300. resolved information around so that a sunsequent DNS cache prune should
  6301. cause a problem. This of course called for some mild internal changes.
  6302. Daniel (23 April 2002)
  6303. - Improved the 'no_proxy' check, as using port numbers in the URL confused it
  6304. previously. Reported by Erwan Legrand in bug report #547484.
  6305. - The --interface option now works even on IPv6 enabled builds. Reported by
  6306. 'thor'.
  6307. Daniel (22 April 2002)
  6308. - The #defines names starting with TIMECOND now has CURL_ prefixes. (The old
  6309. names are still #defined too.) Pointed out by Robert Olson.
  6310. - Jacky Lam brought code that lets the name resolve function only use as much
  6311. memory as it actually needs. This only works on certain operating systems,
  6312. but is totally transparant to all users.
  6313. Daniel (19 April 2002)
  6314. - Bjorn Reese fixed pack_hostent to work properly with 64 bit pointers.
  6315. Daniel (18 April 2002)
  6316. - Sterling Hughes added code to prune old DNS cache entries, since Jacky Lam
  6317. experienced very big caches.
  6318. Daniel (17 April 2002)
  6319. - Dirk Manske patched the 301 response to work against the RFC but more like
  6320. common browsers do. If a POST get a 301 back, it'll switch to GET in the
  6321. next request (if location-following is enabled).
  6322. Daniel (16 April 2002)
  6323. - Dirk Manske posted a patch originally written by Ingo Wilken that introduced
  6324. two new CURLINFO_* values: CURLINFO_REDIRECT_TIME and
  6325. CURLINFO_REDIRECT_COUNT.
  6326. Daniel (15 April 2002)
  6327. - Jonatan Lander patched the verbose text 'Disables POST, goes with GET' to
  6328. reflect reality better, like when the first request isn't POST and when
  6329. the second isn't GET... :-)
  6330. - Craig Davison pointed out that when curl_formadd()ing a file that doesn't
  6331. exist, libcurl doesn't return error. Now, curl_easy_perform() will return
  6332. CURLE_READ_ERROR if that is the case. Test 41 was added to verify this.
  6333. Version 7.9.6
  6334. Daniel (14 April 2002)
  6335. - Dirk Manske brought a fix that makes libcurl strip off white spaces from the
  6336. beginning of cookie contents.
  6337. - Had to patch include/curl/curl.h since MSVC doesn't set the __STDC__ define.
  6338. Moonesamy pointed out the problem, Bjorn Reese the solution.
  6339. Version 7.9.6-pre5
  6340. Daniel (12 April 2002)
  6341. - Fixed the TIMER_CONNECT to be more accurate for FTP transfers. Previously
  6342. FTP transfers got the "connect done" time set after the initial FTP commands
  6343. and not directly after the TCP/IP connect as it should.
  6344. I also made the time stamp get set even if the connect itself fails, which
  6345. it didn't do previously.
  6346. - Jean-Philippe Barrette-LaPierre provided his patch that introduces
  6347. CURLOPT_DEBUGFUNCTION and CURLOPT_DEBUGDATA. They allow a program to a set a
  6348. callback to receive debug/information data. That includes headers and data
  6349. that is received and sent. CURLOPT_VERBOSE still controls it.
  6350. By default, there is an internal debugfunction that will make things look
  6351. and work as before if not changed.
  6352. Daniel (10 April 2002)
  6353. - Sebastien Willemijns found out that -x didn't use the default port number as
  6354. is documented. It does now.
  6355. - libcurl-errors.3 is a new man page attempting to document all libcurl error
  6356. codes
  6357. - Added two new error codes and changed the behaviour of two old ones
  6358. slightly:
  6359. CURLE_WRITE_ERROR
  6360. This error was returned *both* for errors that occured when writing
  6361. received data to a local file, as well as when we get problems writing data
  6362. to a remote server. CURLE_SEND_ERROR has now been added for the latter
  6363. error.
  6364. CURLE_READ_ERROR
  6365. This error was similarly returned *both* for errors when reading a local
  6366. file, as well as when getting problems when reading network data.
  6367. CURLE_RECV_ERROR has now been added for the latter error.
  6368. (Two test cases were adjusted accordingly.)
  6369. Daniel (9 April 2002)
  6370. - runtests.pl now sets the HOME variable before running curl, to prevent any
  6371. actual ~/.curlrc file to fool the tests!
  6372. Version 7.9.6-pre4
  6373. Daniel (8 April 2002)
  6374. - Michael Curtis provided new functionality for curl on some platforms. Using
  6375. the --environment option, curl will *set* a bunch of environment variables
  6376. to values. The names are the same ones as for the -w/--writeout option.
  6377. For now, this only works on the RISC OS version, as this feature relies on
  6378. both OS support and that it matches OS paradigms.
  6379. - Jacky Lam provided a fix for getting headers-only when the reply is HTTP/1.0
  6380. and 304, I edited it slightly.
  6381. Daniel (5 April 2002)
  6382. - As requested by Jay Graves, the '.curlrc' file (or _curlrc as it is called
  6383. when used in windows), is now loaded from the current directory if the HOME
  6384. environment variable isn't set (or if it is too long). I also enlarged the
  6385. array used to store the full file path in, to 512 bytes.
  6386. - Kevin Roth pointed out to me why the "19 March" change regarding -G and -I
  6387. was stupid and the change was reverted. Added test case 48 to verify the
  6388. functionality.
  6389. Version 7.9.6-pre3
  6390. Daniel (4 April 2002)
  6391. - Jonatan Lander brought a patch that makes curl/curl.h compile nicely on
  6392. pre-ISO compilers, like when using gcc -traditional.
  6393. Daniel (3 April 2002)
  6394. - Jacky Lam identified a glitch when getting headers-only, where libcurl would
  6395. "hang" 1 second in vain in the select() loop before returning back.
  6396. - Tor Arntsen brought a patch for multipart formposts. It turned out that the
  6397. "CGI_Lite Perl package" makes some bad assumptions on what letters that may
  6398. be used in boundary strings and thus curl could confuse it by including '+'
  6399. and '/'. While this is standards-compliant, we change the behavior to work
  6400. smoothly with existing software based on that package.
  6401. Daniel (2 April 2002)
  6402. - Gerhard Herre filed bug report #536238 where he pointed out a crash in
  6403. verbose FTP passive transfers for AIX.
  6404. - Clarence Gardner pointed out a minor flaw in how libcurl didn't properly
  6405. take care of all errors that SSL_read() could return.
  6406. - Jacky Lam fixed a MALLOCDEBUG problem in lib/getinfo.c
  6407. Daniel (27 March 2002)
  6408. - T. Bharath pointed out a flaw in the connection re-use function that didn't
  6409. check proxy connections properly for "deadness" before they were re-used.
  6410. - Pedro Neves found out that HTTP POSTing with --data-binary did not properly
  6411. work under Windows as the file specified wasn't read fully binary!
  6412. Daniel (25 March 2002)
  6413. - Jacky Lam brought a fix that improves treatment of cookies using identical
  6414. domains but with leading dots properly.
  6415. Daniel (22 March 2002)
  6416. - Miklos Nemeth updated the windows section of the docs/INSTALL file and the
  6417. windows makefiles.
  6418. - Jon Dillon provided us with several good-looking curl images for
  6419. promotion. View them here http://curl.haxx.se/icons.html
  6420. Daniel (20 March 2002)
  6421. - Peter Verhas found out that CRLF replacement in uploads was not working. I
  6422. fixed it, and added test case 128 that verifies the functionality.
  6423. - The list formerly known as curl-main is now named curl-users and is hosted
  6424. by sourceforge. Susbcribe to the new list, get off the old one.
  6425. Version 7.9.6-pre2
  6426. Daniel (19 March 2002)
  6427. - Made -G and -I on the same command line cause an error.
  6428. - Moved the multi.h file to the "public" include directory and made it get
  6429. included by curl.h so that no extra include files will be necessary to use
  6430. it.
  6431. Added docs and man pages for the multi interface to the release archive.
  6432. Added the three example source codes too.
  6433. Necessary steps in my campaign to sneak in the multi interface... ;-)
  6434. - Updated the year in all copyright notices in all C and H files.
  6435. Daniel (18 March 2002)
  6436. - Tomas Szepe found out that -d and -G didn't mix as they should. I broke this
  6437. in 7.9.5... Added test case 32 for this.
  6438. Version 7.9.6-pre1
  6439. Daniel (16 March 2002)
  6440. - Peter Verhas pointed out that the curl_escape and curl_unscape man pages
  6441. contained factual errors.
  6442. - Albert Choy found and corrected a problem with the verbose output when doing
  6443. PASV ftp transfers. It could make libcurl crash.
  6444. Details in bug report #530562:
  6445. http://sourceforge.net/tracker/?func=detail&atid=100976&aid=530562&group_id=976
  6446. Daniel (15 March 2002)
  6447. - Jun-ichiro itojun Hagino filed bug report #530204 that clearly pointed out
  6448. the PF_INET fix from February 19 as a not-very-good fix as it broke IPv6
  6449. capability! That patch is now reverted.
  6450. The problem with slow name lookups with getaddrinfo() on non-IPv6 enabled
  6451. hosts are instead made by first checking if the stack is IPv6-enabled and if
  6452. not, the PF_INET is used and otherwise we go with the full PF_UNSPEC.
  6453. - T. Bharath pointed out that when we return an "error" from a WRITEFUNCTION
  6454. as described in the man page, libcurl did not return the documented error
  6455. code (CURLE_WRITE_ERROR) but would instead return CURLE_READ_ERROR. This is
  6456. now corrected.
  6457. Daniel (14 March 2002)
  6458. - Setting CURLOPT_POST without setting CURLOPT_POSTFIELDS now read the POST-
  6459. data from the callback.
  6460. - The GOPHER support seems to be broken. I don't think I'll even start fixing
  6461. it until someone else finds out... :-)
  6462. Daniel (13 March 2002)
  6463. - Trying 'curl -I ftp.sunet.se' or similar did a SIZE on a silly "(nil)"
  6464. string. If such a file would be present, curl returned the size of it! Now
  6465. we prevent this.
  6466. - Curl_sendf() was fixed to deal with situation where Curl_write() would've
  6467. blocked and thus return -1.
  6468. - Setting CURLOPT_PROGRESSFUNCTION to NULL now restores the internal function.
  6469. - All CURLFORM_* options can now be used in a CURLFORM_ARRAY except the
  6470. CURLFORM_ARRAY itself. This was necessary since we couldn't expand the
  6471. CURLFORM_* list proprely and unrestricted until this was the case. It was
  6472. also a bit peculiar to users why some options could be used in an array
  6473. while others couldn't.
  6474. - Removed some silly CRLF lines that had accidentally slipped into src/main.c
  6475. Nico Baggus pointed them out to me.
  6476. Daniel (11 March 2002)
  6477. - CURLFORM_FILENAME was added. This can be set when creating a file upload
  6478. part, to set the 'filename' field to a custom value. If this isn't used,
  6479. the actually used filename will be included instead (as libcurl always has
  6480. done). curl was adjusted accordingly, and now -F accepts a 'filename=' field
  6481. too, and allows constructs such as:
  6482. -F 'name=@filename;filename=/dev/null'
  6483. and this can be combined with type= too, in a manner similar to:
  6484. -F "file=@log/test39.txt;filename=fakerfile;type=moo/foobar"
  6485. Test case 39 was added to verify this functionality.
  6486. - The struct formerly known as HttpPost is now named curl_httppost to properly
  6487. use the curl name space. I added a #define for the old name to make existing
  6488. programs compile even when this new include file is used.
  6489. Daniel (8 March 2002)
  6490. - Clifford also discovered that if the client code failed early, as when doing
  6491. "curl -O" only, it would do fclose(NULL) which caused a segmentation fault
  6492. on some systems.
  6493. - Clifford Wolf provided a patch that made --progress-bar work again.
  6494. - I closed bug report #527032 by making sure that we add a newline after a
  6495. transfer when --progress-bar has been used. Before, without the newline, it
  6496. made the subsequent text come out wrong.
  6497. Version 7.9.5
  6498. Daniel (7 March 2002)
  6499. - Added docs/KNOWN_BUGS to the release archive.
  6500. Daniel (6 March 2002)
  6501. - Kevin Roth corrected a flaw in the curl client globbing code that made it
  6502. mess up backslashes. This was most notable on windows (cygwin) machines when
  6503. using file://.
  6504. - Brad provided another fix for building outside the source-tree.
  6505. - Ralph Mitchell patched away a few compiler warnings in tests/server/sws.c
  6506. Daniel (5 March 2002)
  6507. - I noticed that the typedef in curl.h for the progress callback prototype was
  6508. wrong and thus applications that used it would not get the proper input
  6509. data. It used size_t where the implementation actually uses doubles!
  6510. I wish I could blame someone else, but this was my fault. Again.
  6511. Version 7.9.5-pre6
  6512. Daniel (4 March 2002)
  6513. - Cut off the changes done during 2001 from this changelog file and put them
  6514. in a separate file (CHANGES.2001), available from CVS of course.
  6515. - I removed the multi directory. The example sources were moved to the
  6516. docs/examples directory where they belong.
  6517. - Wrote 7 new man pages for the current functions in the new multi interface.
  6518. They're all still pretty basic, but we can use them as a start and add more
  6519. contents to them when we figure out what to write. The large amount of man
  6520. pages for libcurl now present made me decide to put them in a new separate
  6521. subdirectory in the docs directory. Named libcurl.
  6522. - Giuseppe Corbelli provided a template file for the EPM package manager, it
  6523. gets generated nicely by the configure script now.
  6524. Version 7.9.5-pre5
  6525. Daniel (1 March 2002)
  6526. - Moved the memanalyze.pl script into the tests/ dir and added it to the
  6527. release archives. It was previously only present in the CVS tree.
  6528. - Modified the February 17th Host: fix, as bug report #523718 pointed out that
  6529. it caused crashes!
  6530. - Nico Baggus added more error codes to the VMS stuff.
  6531. - Wesley Laxton brought the code that introduced the new CURLOPT_PREQUOTE
  6532. option. It is just another FTP quote option that allows the user to specify
  6533. a list of FTP commands to issue *just before* the transfer command (RETR or
  6534. STOR etc). It has turned up a few systems that really need this.
  6535. The curl command line tool can also take advantage of this by prefixing the
  6536. quote commands with a plus (+) in similar style that post transfer quote
  6537. commands are specified.
  6538. This is not yet documented. There is no test case for this yet.
  6539. Daniel (28 February 2002)
  6540. - Ralph Mitchell made some serious efforts and put a lot of sweat in setting
  6541. up scripts and things for me to be able to repeat his problems, and I
  6542. finally could. I found a problem with the header byte counter that wasn't
  6543. increased properly and thus we could return CURLE_GOT_NOTHING when we in
  6544. fact had received data.
  6545. Daniel (27 February 2002)
  6546. - I had to revert the non-space parsing cookie fix I posted to the mailing
  6547. list. Expire dates do have spaces and still need to get parsed properly!
  6548. Instead we just ignore trailing white space and it seems to work...
  6549. Daniel (26 February 2002)
  6550. - Made the cookie property 'Max-Age' work, just since we already tried to
  6551. support it, it is better to do it right. No one uses this anyway.
  6552. - The cookie parser could crash if a really weird (illegal) cookie line was
  6553. received. I also made it better discard really oddly formatted lines better.
  6554. Made the cookie jar store the second field from the left using the syntax
  6555. that Netscape and Mozilla probably like. Curl itself ignores it.
  6556. Added test case 31 for these cases.
  6557. Clay Loveless' email regarding some cookie issues started my cleanup.
  6558. - Kevin Roth pointed out that my automake fiddles broke the ability to build
  6559. outside the source-tree and I posted a patch to the mailing list that brings
  6560. this ability back.
  6561. Version 7.9.5-pre4
  6562. Daniel (25 February 2002)
  6563. - Fiddled with the automake files to make all source files in the lib
  6564. directory not have ../src in the include path, and the src sources shouldn't
  6565. have ../lib!
  6566. - All 79 test cases ran OK under Linux and Solaris using the new HTTP server
  6567. in the test suite. The new HTTP server was first donated by Georg Horn and
  6568. subsequently modified to work with the test suite. It is currently still not
  6569. portable enough to run on "all over" but this is a start and I can run all
  6570. curl tests on my machines. This is an important requirement for the upcoming
  6571. public release.
  6572. - Using -d and -I on the same command line now reports an error, as it implies
  6573. two different HTTP requests that can't be mixed.
  6574. - Jeffrey Pohlmeyer provided a patch that made the -w/--write-out option
  6575. support %{content_type} to get the content type of the recent download.
  6576. - Kevin Roth reported that pre2 and pre3 didn't compile properly on cygwin,
  6577. and this was because I used #ifdef HAVE_WINSOCK_H in lib/multi.h to figure
  6578. out if we could include winsock.h which turns out not to be a wise choice to
  6579. do on cygwin since it has the file but can't include it!
  6580. Daniel (22 February 2002)
  6581. - Added src/config-vms.h to the release archive.
  6582. - Fixed the connection timeout value again, the change from February 18 wasn't
  6583. complete.
  6584. Version 7.9.5-pre3
  6585. Daniel (21 February 2002)
  6586. - Kevin Roth and Andrés García both found out that lib/config.h.in was missing
  6587. in the pre-release archive and thus the configure script failed.
  6588. Version 7.9.5-pre2
  6589. Daniel (20 February 2002)
  6590. - Andrés García provided a solution to bug report #515228. the total time
  6591. counter was not set correctly when -I was used during some conditions (all
  6592. headers were read in one single read).
  6593. - Nico Baggus provided a huge patch with minor tweaks all over to make curl
  6594. compile nicely on VMS.
  6595. Daniel (19 February 2002)
  6596. - Rick Richardson found out that by replacing PF_UNSPEC with PF_INET in the
  6597. getaddrinfo() calls, he could speed up some name resolving calls with an
  6598. order of magnitudes on his Redhat Linux 7.2.
  6599. - Philip Gladstone found a second INADDR_NONE problem where we used long
  6600. intead of in_addr_t which caused 64bit problemos. We really shouldn't define
  6601. that on two different places.
  6602. Daniel (18 February 2002)
  6603. - Philip Gladstone found a problem in how HTTP requests were sent if the
  6604. request couldn't be sent all at once.
  6605. - Emil found and corrected a bad connection timeout comparison that made curl
  6606. use the longest of connect-timeout and timout as a timeout value, instead of
  6607. the shortest as it was supposed to!
  6608. - Aron Roberts provided updated information about LDAP URL syntax to go into
  6609. the manual as a replacement for the old references.
  6610. Daniel (17 February 2002)
  6611. - Philip Gladstone pointed out two missing include files that made curl core
  6612. dump on 64bit architectures. We need to pay more attention on these details.
  6613. It is *lethal* to for example forget the malloc() prototype, as 'int' is
  6614. 32bit and malloc() must return a 64bit pointer on these platforms.
  6615. - Giaslas Georgios fixed a problem with Host: headers on repeated requests on
  6616. the same handle using a proxy.
  6617. Daniel (8 February 2002)
  6618. - Hanno L. Kranzhoff accurately found out that disabling the Expect: header
  6619. when doing multipart formposts didn't work very well. It disabled other
  6620. parts of the request header too, resulting in a broken header. When I fixed
  6621. this, I also noticed that the Content-Type wasn't possible to disable. It is
  6622. now, even though it probably is really stupid to try to do this (because of
  6623. the boundary string that is included in the internally generated header,
  6624. used as form part separator.)
  6625. Daniel (7 February 2002)
  6626. - I moved the config*.h files from the root directory to the lib/ directory.
  6627. - I've added the new test suite HTTP server to the CVS repository, It seems to
  6628. work pretty good now, but we must make it get used by the test scripts
  6629. properly and then we need to make sure that it compiles, builds and runs on
  6630. most operating systems.
  6631. Version 7.9.5-pre1
  6632. Daniel (6 February 2002)
  6633. - Miklos Nemeth provided updated windows makefiles and INSTALL docs.
  6634. - Mr Larry Fahnoe found a problem with formposts and I managed to track down
  6635. and patch this bug. This was actually two bugs, as the posted size was also
  6636. said to be two bytes too large.
  6637. - Brent Beardsley found out and brought a correction for the
  6638. CURLINFO_CONTENT_TYPE parser that was off one byte. This was my fault, I
  6639. accidentaly broke Giaslas Georgios' patch.
  6640. Daniel (5 February 2002)
  6641. - Kevin Roth found yet another SSL download problem.
  6642. Version 7.9.4
  6643. - no changes since pre-release
  6644. Version 7.9.4-pre2
  6645. Daniel (3 February 2002)
  6646. - Eric Melville provided a few spelling corrections in the curl man page.
  6647. Daniel (1 February 2002)
  6648. - Andreas Damm corrected the unconditional use of gmtime() in getdate, it now
  6649. uses gmtime_r() on all hosts that have it.
  6650. Daniel (31 January 2002)
  6651. - An anonymous bug report identified a problem in the DNS caching which made it
  6652. sometimes allocate one byte too little to store the cache entry in. This
  6653. happened when the port number started with 1!
  6654. - Albert Chin provided a patch that improves the gethostbyname_r() configure
  6655. check on HP-UX 11.00.
  6656. Version 7.9.4-pre1
  6657. Daniel (30 January 2002)
  6658. - Georg Horn found another way the SSL reading failed due to the non-blocking
  6659. state of the sockets! I fixed.
  6660. Daniel (29 January 2002)
  6661. - Multipart formposts now send the full request properly, including the CRLF.
  6662. They were previously treated as part of the post data.
  6663. - The upload byte counter bugged.
  6664. - T. Bharath pointed out that we seed SSL on every connect, which is a time-
  6665. consuming operation that should only be needed to do once. We patched
  6666. libcurl to now only seed on the first connect when unseeded. The seeded
  6667. status is global so it'll now only happen once during a program's life time.
  6668. If the random_file or egdsocket is set, the seed will be re-made though.
  6669. - Giaslas Georgios introduced CURLINFO_CONTENT_TYPE that lets
  6670. curl_easy_getinfo() read the content-type from the previous request.
  6671. Daniel (28 January 2002)
  6672. - Kjetil Jacobsen found a way to crash curl and after much debugging, it
  6673. turned out it was a IPv4-linux only problem introduced in 7.9.3 related to
  6674. name resolving.
  6675. - Andreas Damm posted a huge patch that made the curl_getdate() function fully
  6676. reentrant!
  6677. - Steve Marx pointed out that you couldn't mix CURLOPT_CUSTOMREQUEST with
  6678. CURLOPT_POSTFIELDS. You can now!
  6679. Daniel (25 January 2002)
  6680. - Krishnendu Majumdar pointed out that the header length counter was not reset
  6681. between multiple requests on the same handle.
  6682. - Pedro Neves rightfully questioned why curl always append \r\n to the data
  6683. that is sent in HTTP POST requests. Unfortunately, this broke the test suite
  6684. as the test HTTP server is lame enough not to deal with this... :-O
  6685. - Following Location: headers when the connection didn't close didn't work as
  6686. libcurl didn't properly stop reading. This problem was added in 7.9.3 due to
  6687. the restructured internals. 'Frank' posted a bug report about this.
  6688. Daniel (24 January 2002)
  6689. - Kevin Roth very quickly spotted that we wrongly installed the example
  6690. programs that were built in the multi directory, when 'make install' was
  6691. used. :-/
  6692. Version 7.9.3
  6693. Daniel (23 January 2002)
  6694. - Andrés García found a persistancy problem when doing HTTP HEAD, that made
  6695. curl "hang" until the connection was closed by the server. This problem has
  6696. been introduced in 7.9.3 due to internal rewrites, this was not present in
  6697. 7.9.2.
  6698. Version 7.9.3-pre4
  6699. Daniel (19 January 2002)
  6700. - Antonio filed bug report #505514 and provided a fix! When doing multipart
  6701. formposts, libcurl would include an error text in the actual post if a
  6702. specified file wasn't found. This is not libcurl's job. Instead we add an
  6703. empty part.
  6704. Daniel (18 January 2002)
  6705. - Played around with stricter compiler warnings for gcc (when ./configure
  6706. --enable-debug is used) and changed some minor things to stop the warnings.
  6707. - Commented out the 'long long' and 'long double' checks in configure.in, as
  6708. we don't currently use them anyway and the code in lib/mprintf.c that use
  6709. them causes warnings.
  6710. - Saul Good and jonatan pointed out Mac OS X build problems with pre3 and how
  6711. to correct them. Two compiler warnings were removed as well.
  6712. - Andrés García fixed two minor mingw32 building problems.
  6713. Version 7.9.3-pre3
  6714. Daniel (17 January 2002)
  6715. - docs/libcurl-the-guide is a new tutorial for our libcurl programming
  6716. friends.
  6717. - Richard Archer brought back the ability to compile and build with OpenSSL
  6718. versions before 0.9.5.
  6719. [http://sourceforge.net/tracker/?func=detail&atid=100976&aid=504163&group_id=976]
  6720. - The DNS cache code didn't take the port number into account, which made it
  6721. work rather bad on IPv6-enabled hosts (especially when doing passive
  6722. FTP). Sterling fixed it.
  6723. Daniel (16 January 2002)
  6724. - Georg Horn could make a transfer time-out without error text. I found it and
  6725. corrected it.
  6726. - SSL writes didn't work, they return an uninitialized value that caused
  6727. havoc all over. Georg Horn experienced this.
  6728. - Kevin Roth patched the curl_version() function to use the proper OpenSSL
  6729. function for version information. This way, curl will report the version of
  6730. the SSL library actually running right now, not the one that had its headers
  6731. installed when libcurl was built. Mainly intersting when running with shared
  6732. OpenSSL libraries.
  6733. Version 7.9.3-pre2
  6734. Daniel (16 January 2002)
  6735. - Mofied the main transfer loop and related stuff to deal with non-blocking
  6736. sockets in the upload section. While doing this, I've now separated the
  6737. connection oriented buffers to have one for downloads and one for uploads
  6738. (as two can happen simultaneously). I also shrunk the buffers to 20K
  6739. each. As we have a scratch buffer twice the size of the upload buffer, we
  6740. arrived at 80K for buffers compared with the previous 150K.
  6741. - Added the --cc option to curl-config command as it enables so very cool
  6742. one-liners. Have a go a this one, building the simple.c example:
  6743. $ `curl-config --cc --cflags --libs` -o example simple.c
  6744. Daniel (14 January 2002)
  6745. - I made all socket reads (recv) handle EWOULDBLOCK. I hope nicely. Now we
  6746. only need to address all writes (send) too and then I'm ready for another
  6747. pre-release...
  6748. - Stoned Elipot patched the in_addr_t configure test to make it work better on
  6749. more platforms.
  6750. Daniel (9 January 2002)
  6751. - Cris Bailiff found out that filling up curl's SSL session cache caused a
  6752. crash!
  6753. - Posted the curl questionnaire on the web site. If you haven't posted your
  6754. opinions there yet, go there and do it now while it is still there:
  6755. http://curl.haxx.se/q/
  6756. - Georg Horn quickly found out that the SSL reading no longer worked as
  6757. supposed since the switch to non-blocking sockets. I've made a quick patch
  6758. (for reading only) but we should improve it even further.
  6759. Version 7.9.3-pre1
  6760. Daniel (7 January 2002)
  6761. - I made the 'bool' typedef use an "unsigned char". It makes it the same on
  6762. all platforms, no matter what the platform thinks the default format for
  6763. char is. This was noticed since we made a silly comparison involving such a
  6764. bool variable, and only one compiler/platform combination (on Debian Linux)
  6765. complained about it (that happened to have its char unsigned by default).
  6766. - Bug report #495290 identified a cookie parsing problem that was corrected.
  6767. When a Set-Cookie: line is received without a trailing semicolon, libcurl
  6768. didn't read the last "name=value" pair of the line, leading to confusions...
  6769. - Sterling committed his updated DNS cache code.
  6770. - I worked with Georg Horn and comments from Götz Babin-Ebell and switched
  6771. curl's socket operations completely over to non-blocking for the entire
  6772. operation (previously we used non-blocking only for the connection phase).
  6773. We had to do this to make the SSL connection phase timeout properly without
  6774. the use of signals. A little extra code to deal with this was added.
  6775. - T. Bharath pointed out a slightly obscure cookie engine flaw.
  6776. - Pete Su pointed out that libcurl didn't treat HTTP code 204 as it should.
  6777. 204-replies never provides a response-body. This resulted in bad persistant
  6778. behavior when 204 was received.
  6779. Daniel (5 January 2002)
  6780. - SM updated the VC++ library Makefiles for the new source files.
  6781. Daniel (4 January 2002)
  6782. - I discovered that we wrongly used inet_ntoa() (instead of inet_ntoa_r() in
  6783. two places in the source code). One happened with VERBOSE set on connects,
  6784. and the other when VERBOSE was on and krb4 over nat was used... I honestly
  6785. don't think anyone has suffered from these mistakes.
  6786. - I replaced a lot of silly occurances of printf() to instead use the more
  6787. appropriate Curl_infof() or Curl_failf(). The krb4 and telnet code were
  6788. affected.
  6789. - Philip Gladstone found a few more problems with 64-bit archs (the 64-bit
  6790. sparc on solaris 8).
  6791. - After discussions on the libcurl list with Raoul Cridlig, I just made FTP
  6792. response lines get passed to the header callback if such a one is
  6793. registered. It'll make it possible for any application to get all the
  6794. responses an FTP server sends to libcurl.
  6795. Daniel (3 January 2002)
  6796. - Sterling Hughes brought a few buckets of code. Now, libcurl will
  6797. automatically cache DNS lookups and re-use the previous results first if any
  6798. such is available. It greatly improves speed when doing many repeated
  6799. operations to the same host.
  6800. - As the test case uses --include and then --head, I had to modify src/main.c
  6801. to deal with this situation slightly better than previously. When done, we
  6802. have 100% good tests again in the main branch.
  6803. Daniel (2 January 2002)
  6804. - Made test case 25 run again in the multi-dev branch. But it seems that the
  6805. changes done on dec-20 made test case 104 cease to work (in both branches).
  6806. - Philip Gladstone pointed out a few portability problems in the source code
  6807. that didn't compile on 64-bit sparcs using Sun's native compiler.
  6808. Daniel (20 December 2001)
  6809. - Björn Stenberg caught an unpleasent (but hard-to-find) bug that could cause
  6810. libcurl to hang on transfers over proxy, when the proxy was specified with
  6811. an environment variable!
  6812. - Added code to make ftp operations treat the NO_BODY and HEADERS options
  6813. better:
  6814. NO_BODY set TRUE and HEADERS set TRUE:
  6815. Return a set of headers with file info
  6816. NO_BODY set FALSE
  6817. Transfer data as usual, HEADERS is ignored
  6818. NO_BODY set TRUE and HEADERS set FALSE
  6819. Don't transfer any data, don't return any headers. Just perform the set
  6820. of FTP commands.
  6821. Daniel (17 December 2001)
  6822. - Götz Babin-Ebell dove into the dark dungeons of the OpenSSL ENGINE stuff and
  6823. made libcurl support it! This allows libcurl to do SSL connections with the
  6824. private key stored in external hardware.
  6825. To make this good, he had to add a bunch of new library options that'll be
  6826. useful to others as well:
  6827. CURLOPT_SSLCERTTYPE set SSL cert type (PEM/DER)
  6828. CURLOPT_SSLKEY set SSL private key (file)
  6829. CURLOPT_SSLKEYTYPE: set SSL key type (PEM/DER/ENG)
  6830. CURLOPT_SSLKEYPASSWD: set the passphrase for your private key
  6831. (CURLOPT_SSLCERTPASSWD is an alias)
  6832. CURLOPT_SSLENGINE: set the name of the crypto engine
  6833. (returns CURLE_SSL_ENGINE_NOTFOUND on error)
  6834. CURLOPT_SSLENGINE_DEFAULT: set the default engine
  6835. There are two new failure codes:
  6836. CURLE_SSL_ENGINE_NOTFOUND
  6837. CURLE_SSL_ENGINE_SETFAILED
  6838. Daniel (14 December 2001)
  6839. - We have "branched" the source-tree at a few places. Checkout the CVS sources
  6840. with the 'multi-dev' label to get the latest multi interface development
  6841. tree. The idea is to only branch affected files and to restrict the branch
  6842. to the v8 multi interface development only.
  6843. *NOTE* that if we get bug reports and patches etc, we might need to apply
  6844. them in both branches!
  6845. The multi-dev branch is what we are gonna use as main branch in the future
  6846. if it turns out successful. Thus, we must maintain both now in case we need
  6847. them. The current main branch will be used if we want to release a 7.9.3 or
  6848. perhaps a 7.10 release before version 8. Which is very likely.
  6849. - Marcus Webster provided code for the new CURLFORM_CONTENTHEADER option for
  6850. curl_formadd(), that lets an application add a set of headers for that
  6851. particular part in a multipart/form-post. He also provided a section to the
  6852. man page that describes the new option.
  6853. Daniel (11 December 2001)
  6854. - Ben Greear made me aware of the fact that the Curl_failf() usage internally
  6855. was a bit sloppy with adding newlines or not to the error messages. Let's
  6856. once and for all say that they do not belong there!
  6857. - When uploading files with -T to give a local file name, and you end the URL
  6858. with a slash to have the local file name used remote too, we now no longer
  6859. use the local directory as well. Only the file part of the -T file name
  6860. will be appended to the right of the slash in the URL.
  6861. Daniel (7 December 2001)
  6862. - Michal Bonino pointed out that Digital Unix doesn't have gmtime_r so the
  6863. link failed. Added a configure check and corrected source code.
  6864. Version 7.9.2
  6865. Daniel (5 December 2001)
  6866. - Jon Travis found out that if you used libcurl and CURLOPT_UPLOAD and then
  6867. on the same handle used CURLOPT_HTTPGET it would still attempt to upload.
  6868. His suggested fix was perfect.
  6869. Daniel (4 December 2001)
  6870. - Incorporated more macos fixes and added four specific files in a new
  6871. subdirectory below src.
  6872. Daniel (3 December 2001)
  6873. - Eric Lavigne reported two problems:
  6874. First one in the curl_strnequal() function. I think this problem is rather
  6875. macos 9 specific, as most platform provides a function to use instead of the
  6876. one provided by libcurl.
  6877. A second, more important, was in the way we take care of FTP responses. The
  6878. code would read a large chunk of data and search for the end-of-response
  6879. line within that chunk. When found, it would just skip the rest of the
  6880. data. However, when the network connections are special, or perhaps the
  6881. server is, we could actually get more than one response in that chunk of
  6882. data so that when the next invoke to this function was done, the response
  6883. had already been read and thrown away. Now, we cache the data not used in
  6884. one call, as it could be useful in the subsequent call. Test case 126 was
  6885. added and the test ftp server modified, to exercise this particular case.
  6886. Version 7.9.2-pre8
  6887. Daniel (2 December 2001)
  6888. - Bug report #487825 correctly identified a problem when using a proxy and
  6889. following a redirection from HTTP to HTTPS. libcurl then re-used the same
  6890. proxy connection but without doing a proper HTTPS request.
  6891. - Fixed win32 compiling quirks.
  6892. Version 7.9.2-pre7
  6893. Daniel (30 November 2001)
  6894. - Documented --disable-epsv and CURLOPT_FTP_USE_EPSV.
  6895. Daniel (29 November 2001)
  6896. - Added --disable-epsv as an option. When used, curl won't attempt to use the
  6897. EPSV command when doing passive FTP downloads. Wrote a test case for it.
  6898. - Eric provided a few more fixes for building on Macs. He also pointed out
  6899. a flaw in the signal handler restoration code.
  6900. Daniel (28 November 2001)
  6901. - Fiddled with some Tru64 problems reported by Dimitris Sarris. They appeared
  6902. only when using VERBOSE ftp transfers. Do we use a too small buffer for
  6903. gethostbyaddr_r(), was the lack of using in_addr_t wrong or is it that the
  6904. hostent struct must be blanked before use? With Dimitris help and these
  6905. patches, the problems seem to be history.
  6906. - CURLOPT_FTP_USE_EPSV was added and can be set to FALSE to prevent libcurl
  6907. from using the EPSV command before trying the normal PASV. Heikki Korpela
  6908. pointed out that some firewalls and similar don't like the EPSV so we must
  6909. be able to shut if off to work everywhere.
  6910. - I added a configure check for 'in_addr_t' and made the ftp code use that to
  6911. receive the inet_addr() return code in. Works on Solaris and Linux at
  6912. least. The Linux man page for inet_addr() doesn't even mention in_addr_t...
  6913. - Adjusted (almost) all FTP tests to the new command sequence.
  6914. - FTP command sequence changes:
  6915. EPSV is now always attempted before PASV. It is the final touch to make IPv6
  6916. passive FTP downloads to work, but EPSV is not restricted to IPv6 but works
  6917. fine with IPv4 too on the servers that support it.
  6918. SIZE is now always issued before RETR. It makes curl know the actual
  6919. download size before the download takes place, as it makes it less important
  6920. to find the size sent in RETR responses. Many sites don't include the size
  6921. in there.
  6922. Both these changes made it necessary to change the test suite's ftp server
  6923. code, and all FTP test cases need to be checked and adjusted!
  6924. Daniel (27 November 2001)
  6925. - Hans Steegers pointed out that the telnet code read from stdout, not stdin
  6926. as it is supposed to do!
  6927. Version 7.9.2-pre6
  6928. Daniel (27 November 2001)
  6929. - Eric Lavigne's minor changes to build on MacOS before OS X were applied.
  6930. - greep at mindspring.com provided a main index.html page for our release
  6931. archive docs directory. It just links to all the existing HTML files, but
  6932. I think it may come useful to people.
  6933. - There's now some initial code to support the EPSV FTP command. That should
  6934. be used to do passive transfers IPv6-style. The code is still #if 0'ed in
  6935. lib/ftp.c as I have no IPv6 ftp server to test this with.
  6936. Daniel (26 November 2001)
  6937. - Robert Schlabbach had problems to understand how to do resumed transfers,
  6938. and I clarified the man page -C section somewhat.
  6939. Version 7.9.2-pre5
  6940. Daniel (22 November 2001)
  6941. - Andrés García helped me out to track down the roots of bug report #479537,
  6942. which was concerning curl returning the wrong error code when failing to
  6943. connect. This didn't happen on all systems, and more specificly I've so far
  6944. only seen this happen on IPv4-only Linux hosts.
  6945. - I applied the fixes for the two bugs Eric Lavigne found when doing his MacOS
  6946. port. A missing comma in arpa_telnet.h and a pretty wild write in the FTP
  6947. response reader function. The latter write is however likely to occur in our
  6948. own buffer unless very big FTP server replies (>25K) are read. I've never
  6949. seen such a reply ever, so I think this is a relatively minor risk.
  6950. Daniel (21 November 2001)
  6951. - Moonesamy provided code to prevent junk from being output when libcurl
  6952. returns an error code but no error description and that corrects how make is
  6953. run in the Makefile.dist file (that appears as root Makefile in release
  6954. archives).
  6955. - Eric Lavigne mailed me bugfixes and patches for building libcurl on MacOS
  6956. (non-X).
  6957. - Kevin Roth modified the cygwin files once again, now to build against the
  6958. shared OpenSSL DLLs.
  6959. Version 7.9.2-pre4
  6960. Daniel (20 November 2001)
  6961. - Georg Horn brought a patch that introduced CURLINFO_STARTTRANSFER_TIME,
  6962. complete with man page updates!
  6963. Daniel (19 November 2001)
  6964. - Miklos Nemeth provided details enough to update the Borland makefile
  6965. properly.
  6966. - Lars M Gustafsson found a case with a bad free(). In fact, it was so bad I'm
  6967. amazed we never saw this before!
  6968. - Kevin Roth patched the cygwin Makfile.
  6969. Daniel (16 November 2001)
  6970. - Klevtsov Vadim fixed a bug in how time-conditionals were sent when doing
  6971. HTTP.
  6972. Version 7.9.2-pre3
  6973. Daniel (14 November 2001)
  6974. - Samuel Listopad patched away the problem with SSL we got when someone call
  6975. curl_global_init() => curl_global_cleanup() => curl_global_init(). The
  6976. second init would not "take" and SSL would be unusable with curl from that
  6977. point. This doesn't change the fact that calling the functions that way is
  6978. wrong. curl_global_init() should be called exactly once and not more.
  6979. Daniel (13 November 2001)
  6980. - Fixed some minor variable type mixups in ftp.c that caused compiler warnings
  6981. on HP-UX 11.00.
  6982. - The FTP fix I did yesterday used an uninitialized variable that caused
  6983. spurious errors when doing FTP.
  6984. Version 7.9.2-pre2
  6985. Daniel (12 November 2001)
  6986. - Ricardo Cadime fell over a multiple-requests problem when first a FTP
  6987. directory fetch failed and then a second request is made after that. The
  6988. second request happened to get the FTP server response back from the
  6989. previous request, when it did its initial CWD command.
  6990. - Bjorn Reese pointed out that we could improve the time diff function to
  6991. prevent truncation a bit.
  6992. - Kai-Uwe Rommel made me aware that -p (http proxy tunnel) silly enough didn't
  6993. work for plain HTTP requests! So I made that work.
  6994. Version 7.9.2-pre1
  6995. Daniel (12 November 2001)
  6996. - Rewrote the Curl_ConnectHTTPProxyTunnel(). It should now not only work a lot
  6997. faster, it should also support such ("broken") proxies that John Lask
  6998. previously have reported problems with. His proxy sends a trailing zero byte
  6999. after the end of the (proxy-) headers. I've tested this myself and it seems
  7000. to work on a proxy the previous version also worked with...! This rewrite is
  7001. due to the problems John Lask previously experienced.
  7002. - Andrés García found out why the "current speed" meter sometimes showed 2048K
  7003. for very quick transfers. It turned out the "time diff"-function returned a
  7004. zero millisecond diff. We now always say it is at least one millisecond! In
  7005. reality, these timers very rarely have that good resolution so even though
  7006. the time diff was longer than 1 millisecond, it was reported as no diff.
  7007. - I also modified the getinfo() again when returning times, as Paul Harrington
  7008. reports that 7.9.1 only returns times with 1 second accuracy, which indeed
  7009. is wrong.
  7010. Daniel (8 November 2001)
  7011. - Marcus Webster found out that curl_formadd() could read one byte outside a
  7012. buffer boundary, which then of course could lead to a crash. Marcus also
  7013. gracefully provided a patch for this this.
  7014. - Glen Scott ran configure on his Cobalt Qube and it didn't figure out the
  7015. correct way of calling gethostbyname_r() and thus failed to resolve hosts.
  7016. This is two errors: it shouldn't continue the configure script if it finds
  7017. gethostbyname_r() but can't figure out how to use it, and it should really
  7018. figure out how to use it as it was running Linux and we know how that
  7019. works...
  7020. Daniel (7 November 2001)
  7021. - docs/VERSIONS is a new file in the archive that explains the version number
  7022. system we use in the curl project.
  7023. - Did some more fixes that now makes libcurl only ignore signals as long as
  7024. it needs to, and then restore (if any) previous signal handler again.
  7025. Daniel (6 November 2001)
  7026. - Enrik Berkhan posted bug report #478780, in which he very correctly pointed
  7027. out two bad timeout matters in libcurl: we didn't restore the sigaction
  7028. struct (the alarm handler for SIGALRM) nor did we restore the previous
  7029. alarm() timeout that could've been set by a "parent" process or similar.
  7030. - Kevin Roth made the cygwin binary get stripped before install.
  7031. Daniel (5 November 2001)
  7032. - Detlef Schmier reported that curl didn't compile using Solaris 8 with the
  7033. native cc compiler. It was due to a bad function prototype. Fixed now.
  7034. Unfortunately, I can't enable the -Wstrict-prototypes in my debug builds
  7035. though, as gcc then complains like crazy on OpenSSL include files... :-(
  7036. - John Lask provided SSL over HTTP proxy fixes. They'll need some tweaking
  7037. to work on all platforms.
  7038. - John Lask added the -1/--TLSv1 options that forces SSL into using TLS
  7039. version 1 when speaking HTTPS.
  7040. - John Lask brought a brand new VC++ makefile for the lib directory, that
  7041. works a lot better than the previous!
  7042. - Ramana Mokkapati brought some clever insights on the LDAP failures (bug
  7043. report #475407), and his suggested changes are now applied.
  7044. Version 7.9.1
  7045. Daniel (4 November 2001)
  7046. - I've added a number of new test cases the last few days. A few of them since
  7047. I got reports that hinted on problems on timeouts, so I added four tests
  7048. with timeouts for all sorts of protocols and stuff. I also came to think of
  7049. a few other error scenarios that we currently didn't test properly, so I
  7050. wrote up tests for a few of those too.
  7051. Daniel (2 November 2001)
  7052. - Replaced read() and write() with recv() and send() for socket operations
  7053. even under normal unixes.
  7054. Daniel (1 November 2001)
  7055. - When an FTP transfer was aborted due to a timeout, it wasn't really aware of
  7056. how many bytes that had been transferred and the error text always said 0
  7057. bytes. I modified this to output the actually transferred amount! :-)
  7058. - The FTP fixes in pre7 didn't compile on IPv6 enabled hosts. Does now. I also
  7059. added more comments in the lib/ftp.c source file.
  7060. - Minor updates to the FAQ, added a brand new section to the web site about
  7061. the name issue (who owns "curl"? will someone sue us? etc etc):
  7062. http://curl.haxx.se/legal/thename.html
  7063. Version 7.9.1-pre7
  7064. Daniel (31 October 2001)
  7065. - The curl_easy_getinfo() timers accidentally lost their subsecond accuracy as
  7066. the calculations used longs instead of doubles! Paul Harrington reported.
  7067. - The SSL SocketIsDead() checks weren't good enough (as expected really), so I
  7068. had to add a generic internal try-it-out system. If the request on a re-used
  7069. connection seems to fail, then we go back and get a new (fresh) connection
  7070. and re-tries the request on that instead. It kind of makes the
  7071. SocketIsDead() check obsolete, but I think it is a quicker way for those
  7072. cases where it actually discovers that the connection is dead.
  7073. - When fixing the above, I noticed that we did quite a few writes to sockets
  7074. in libcurl where we didn't check the return code (that it actually worked to
  7075. send the data). With the new "attempted request" system we must detect those
  7076. situations so I went over a bunch of functions, changed return types and
  7077. added checks for what they actually return.
  7078. Version 7.9.1-pre6
  7079. Daniel (31 October 2001)
  7080. - Paul Harrington detected a problem with persistant SSL connections. Or to be
  7081. more exact, we didn't properly detect that the connection was dead and then
  7082. a second connection would try to re-use it wrongly. The solution to this
  7083. problem is still not very clear and I'm working on it. One OpenSSL insider
  7084. said there is no way to know if the SSL connection is alive or not without
  7085. actually trying an operation.
  7086. Daniel (30 October 2001)
  7087. - If a cookie was read from a file, it could accidentally strdup() a NULL
  7088. pointer. Paul Harrington reported. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/cookie.c.diff?r1=1.25&r2=1.26]
  7089. - The MANUAL file now documents -t correctly. I also fixed the -T description
  7090. in the curl.1 man page.
  7091. Daniel (29 October 2001)
  7092. - John Janssen found out that curl_formadd was missing in the libcurl.def file
  7093. and that the docs stated the wrong return type for the function.
  7094. - Andrés García found a bug with multiple files in the curl_formadd() function,
  7095. 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].
  7096. - Kevin Roth brought another patch that moved the cygwin package files to the
  7097. packages/Win32/cygwin directory.
  7098. - A bug in the connection re-use logic made repeated requests to the same FTP
  7099. server (when using name+pasword in the URL) sometimes use more than one
  7100. connection. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/url.c.diff?r1=1.166&r2=1.167]
  7101. - Moonesamy tracked down and fixed a problem with the new 7.9.1 connect
  7102. code. This corrected the error Kevin Roth reported on the 7.9.1-pre5 release
  7103. (test 19)...
  7104. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/connect.c.diff?r1=1.13&r2=1.14]
  7105. Daniel (26 October 2001)
  7106. - Added test28 which verifies that "Location:"-following works even if the
  7107. contents is separated with more than one space.
  7108. Daniel (25 October 2001)
  7109. - Ramana Mokkapati pointed out that LDAP transfers would 'hang' after the
  7110. correct data has been output.
  7111. Version 7.9.1-pre5
  7112. Daniel (24 October 2001)
  7113. - T. Bharath found a memory leak in the cookie engine. When we update a cookie
  7114. that we already knew about, we lost a chunk of memory in the progress... The
  7115. 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]
  7116. Daniel (23 October 2001)
  7117. - pack_hostent() didn't properly align some pointers, so at least SPARC CPUs
  7118. would core. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/hostip.c.diff?r1=1.34&r2=1.35]
  7119. Daniel (22 October 2001)
  7120. - Tom Benoist reported that this SGI IRIX compiler didn't handle indented
  7121. preprocessor instructions, so they're no longer in the source code!
  7122. - Applied Kevin Roth's patches to make it easier to build cygwin packages from
  7123. the out-of-the-box curl release archives.
  7124. - I forgot to mention it below, but libcurl now closes connections that report
  7125. transfer failures. Unconditionally. This could be made more nicely in the
  7126. future if we set a flag or something that the connection is still good to be
  7127. used for the errors that know that for a fact. We have to close the
  7128. connection for the cases where we abort for example a HTTP transfer in the
  7129. middle, or otherwise we might re-use that connection later with lots of data
  7130. 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]
  7131. Daniel (19 October 2001)
  7132. - CURLE_GOT_NOTHING is now returned when a HTTP server doesn't return
  7133. anything, not even a header. test case 37 was added to test for this.
  7134. - T. Bharath made curl_easy_duphandle() properly clone the cookie status as
  7135. well.
  7136. Version 7.9.1-pre4
  7137. Daniel (18 October 2001)
  7138. - CURLOPT_FAILONERROR, set with "curl --fail" no longer returns an error if
  7139. the HTTP return code is below 400.
  7140. Daniel (17 October 2001)
  7141. - The test suite now kills any running test http server when you re-start the
  7142. tests.
  7143. - We had to remove 'use strict' from two perl scripts, as the cygwin
  7144. adjustments didn't play nicely otherwise for some reason. Any perl wizard
  7145. out there who can put the scrict back and still make it run good on unix and
  7146. cygwin?
  7147. - A potential memory leak pointed out to us by Yanick Pelletier was removed.
  7148. 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]
  7149. - The memory debugging system should no longer display anything to stderr
  7150. if the curl_memdebug() hasn't been used to explicitly say so. This makes it
  7151. easier to use the memory debug system and switch the logging on/off.
  7152. Daniel (16 October 2001)
  7153. - Kevin Roth provided fixes for building curl nicer in cygwin environments.
  7154. Daniel (12 October 2001)
  7155. - Cleaning up the progress meter/info code. The "current speed" is now more
  7156. accurate than before as we now use the true time spent between the measures,
  7157. and not just "assuming" every-second-update like before. The output should
  7158. now also be of the same width at all times, never to show "extra" zeroes on
  7159. the right edge.
  7160. - After talking about possible Location: bugs on the mailing list, I modified
  7161. the "absolute URL" checker in lib/transfer.c to be more strict when checking
  7162. if the redirected URL is absolute.
  7163. Daniel (11 October 2001)
  7164. - Kevin Roth provided patches that make the test suite run fine on Windows
  7165. 2000 running cygwin.
  7166. Daniel (10 October 2001)
  7167. - Setting the -c or the CURLOPT_COOKIEJAR option now enables the cookie parser.
  7168. Previously -b or CURLOPT_COOKIEFILE was also required for the jar to work.
  7169. Version 7.9.1-pre3
  7170. Daniel (9 October 2001)
  7171. - Added a new option to the command line client: -0/--http1.0. It uses the new
  7172. libcurl option CURLOPT_HTTP_VERSION to request that libcurl uses HTTP 1.0
  7173. requests instead of the default version (1.1). It should only be used if you
  7174. really MUST do that because of a silly remote server.
  7175. - Renamed the 'TimeCond' typedef in curl/curl.h to use a 'curl_' prefix as
  7176. all public curl-symbols should.
  7177. - libcurl now explicitly ignores the SIGPIPE signal.
  7178. Daniel (8 October 2001)
  7179. - Kevin Roth's change to the cookie-jar comment (in the stored file) was
  7180. applied.
  7181. - Lucas Adamski's minor bug in the bind error code failf() was fixed.
  7182. Daniel (5 October 2001)
  7183. - Moonesamy fixed the Curl_connecthost() function to not give compiler errors
  7184. on a bunch of compilers, due to the argument named 'socket'.
  7185. - Moonesamy also provided updated VC++ makefiles and project files.
  7186. Version 7.9.1-pre2
  7187. Daniel (4 October 2001)
  7188. - Albert Chin provided a configure patch that makes the script detect proper
  7189. gethostbyname_r() method without actually running any code, only compiling
  7190. is necessary. This also removes the need of having a resolving 'localhost'
  7191. name.
  7192. - Found and removed memory leakage (name resolve data) in libcurl on
  7193. IPv6-enabled hosts. These could sneak through because we didn't have any
  7194. resource tracing on the IPv6-related functions. We do now.
  7195. Daniel (3 October 2001)
  7196. - Keith McGuigan patched away a (mainly Windows-) problem with the name
  7197. resolver data being kept in the static memory area, which is removed when a
  7198. thread is killed. The curl handle itself though perfectly handles being
  7199. passed between threads.
  7200. - Dirk Eddelbuettel reported an odd bug that turned out to be his proxy that
  7201. required an Authorization: header. Now, proxies are not supposed to require
  7202. that header, that is for true servers...
  7203. - I accidentally ruined Georg's curl_formadd(). Uh, bad me. Corrected now.
  7204. Version 7.9.1-pre1
  7205. Daniel (3 October 2001)
  7206. - Georg Huettenegger once again made an effort beyond the call of duty and not
  7207. only improved the curl_formadd() function, but also took care of adjusting
  7208. the curl command line client to use this new function instead of the
  7209. obsoleted curl_formparse.
  7210. Daniel (2 October 2001)
  7211. - Major fix in how libcurl does TCP connects. It now does non-blocking
  7212. connects to enable good timeouts without signals, and it now tries all IP
  7213. addresses for any given host (if it resolves more than one and the first
  7214. one(s) don't connect). Added a new source file 'connect.c' to deal with all
  7215. the TCP connect stuff.
  7216. - We now support IPv4-style IP-addresses in rfc2732-format, to better support
  7217. people writing scripts without knowing what address there is.
  7218. Daniel (28 September 2001)
  7219. - Cleanups in the FTP source code. Divided the code into even more smaller
  7220. functions and generally tried to make the differences between IPv4 and IPv6
  7221. get less noticable in the sources.
  7222. - If the remote file time is not readable/accessable/understood by libcurl,
  7223. libcurl now returns -1 in the CURLINFO_FILETIME data, not 0 as it previously
  7224. did. This should make curl not touch the file data unless there was a known
  7225. remote date when -R is used.
  7226. Daniel (27 September 2001)
  7227. - Working on getting non-blocking connects working platform independent. We
  7228. will also make curl try all IPs for a given host if the first one should
  7229. fail.
  7230. Daniel (26 September 2001)
  7231. - Kevin Roth provided a cookie example that proved the cookie jar
  7232. functionality wasn't working properly. I added test case 46 and made it
  7233. work.
  7234. Daniel (25 September 2001)
  7235. - Jörn Hartroth updated the mingw32 makefiles.
  7236. Version 7.9
  7237. Daniel (23 September 2001)
  7238. - Found and removed a 'socket leak' that would occur on IPv6 enabled hosts
  7239. when FTP RETR failed.
  7240. - Made the FTP upload tests run fine on machines with IPv6 enabled.
  7241. Version 7.9-pre8
  7242. Daniel (19 September 2001)
  7243. - Vojtech Minarik set up a special-purpose test server and provided me with
  7244. test certificates in order for me to repeat the bug reports #440068 and
  7245. #440373. It turned out we didn't check all the error codes properly. We do
  7246. now, and connecting with a unacceptable certificate will make libcurl fail
  7247. to connect with an error code returned.
  7248. - Ramana Mokkapati found a case when the Location: following code did wrong.
  7249. I wrote a test case for this (45).
  7250. Version 7.9-pre7
  7251. Daniel (17 September 2001)
  7252. - Linus Nielsen Feltzing fixed telnet for win32. It makes libcurl require
  7253. winsock 2.0.
  7254. Version 7.9-pre6
  7255. - libtool 1.4.2 is now in use!
  7256. Version 7.9-pre5
  7257. Daniel (14 September 2001)
  7258. - Added another 14 ftp tests.
  7259. Daniel (13 September 2001)
  7260. - Added curl_easy_duphandle() to the easy.h header file. It has now been
  7261. tested and proved to work in a real-world tests by T Bharath. We still need
  7262. to write up some docs for this function.
  7263. - Added four more ftp tests to the test suite.
  7264. Daniel (12 September 2001)
  7265. - CURLOPT_SSL_CIPHER_LIST was added, and the curl tool option is named
  7266. --ciphers. Use them to specify a list of ciphers to use in the SSL
  7267. connection.
  7268. - T. Bharath found a memory leak in libcurl's windows version. It turned out
  7269. to be the new duphandle() that didn't quite work yet.
  7270. Version 7.9-pre4
  7271. Daniel (11 September 2001)
  7272. - Added verbose output for SSL connections that output the server
  7273. certificate's start and expire dates. As suggested by Paul Harrington.
  7274. - Heikki Korpela found problems in the perl ftp server used for the test
  7275. suite, when he runs on on OpenBSD with perl 5.6. Some changes have been
  7276. made, but nothing really certain.
  7277. - T. Bharath has experienced problems with libcurl's stack usage on windows
  7278. and works on reducing it.
  7279. Daniel (10 September 2001)
  7280. - Cris Bailiff fixed the perl interface. It stopped working since the changed
  7281. behavior with WRITEHEADER and NULL pointers.
  7282. - The "output cookies" function could dump core if no cookies were enabled.
  7283. Daniel (7 September 2001)
  7284. - SM pointed out that the SSL code didn't compile any longer if SSL was
  7285. disabled... Also, we needed to correct the #include for the utime stuff on
  7286. windows.
  7287. Daniel (6 September 2001)
  7288. - T. Bharath pointed out a flaw in the SSL session cache code that made it
  7289. sometimes read from a NULL pointer.
  7290. Version 7.9-pre3
  7291. Daniel (3 September 2001)
  7292. - Added the -R/--remote-time option, that uses the remote file's datestamp to
  7293. set the local file's datestamp. Thus, when you get a remote file your local
  7294. file will get the same time and date. Note that this only works when you use
  7295. -o or -O.
  7296. - Installed libtool 1.4.1, libtoolized and everything.
  7297. Daniel (1 September 2001)
  7298. - Heikki Korpela pointed out that I did not ship the proper libtool stuff in
  7299. the pre-releases, even though that was my intention. libtoolize has now
  7300. been re-run.
  7301. - Heikki also patched away the bad use of 'make -C' in the test suite
  7302. makefile. make -C is not very portable and is now banned from here.
  7303. Version 7.9-pre2
  7304. Daniel (31 August 2001)
  7305. - I just made a huge internal struct rehaul, and all the big internally used
  7306. structs have been renamed, redesigned and stuff have been moved around a bit
  7307. to make the source easier to follow, more logically grouped and to hopefully
  7308. decrease future bugs. I also hope that this will make new functions to get
  7309. easier to add, and make it less likely that we have bugs left like the URL-
  7310. free bug from August 23.
  7311. Version 7.9-pre1
  7312. Daniel (29 August 2001)
  7313. - The new cookie code have enabled the brand new '-c/--cookie-jar' option. Use
  7314. that to specify the file name in which you want to have all cookies curl
  7315. knows of, dumped to. It'll be written using the netscape cookie format.
  7316. This is internally done with the new CURLOPT_COOKIEJAR option to libcurl,
  7317. which in turn dumps this information when curl_easy_cleanup() is invoked.
  7318. There might be reasons to re-consider my choice of putting it there. Perhaps
  7319. it is better placed to get done just before *_perform() is done. It is all
  7320. of course depending on how you guys want to use this feature...
  7321. - Added ftpupload.c in the source examples section, based on source code posted
  7322. by Erick Nuwendam.
  7323. Daniel (28 August 2001)
  7324. - Now running libtool CVS branch-1-4 to generate stuff. Should fix problems
  7325. on OpenBSD and hopefully on FreeBSD as well!
  7326. - Georg Huettenegger modified the curl_formadd() functionality slightly, and
  7327. added support for error code 417 when doing form post and using the Expect:
  7328. header. Great work!
  7329. - Made some tests with cached SSL session IDs, and they seem to work. There
  7330. should be a significant speed improvement in the SSL connection phase, but
  7331. in my tiny tests it just isn't possible to notice any difference. Like other
  7332. caching in libcurl, you must reuse the same handle for the caching to take
  7333. effect. SSL session ID caching is done on a per host-name and destination
  7334. port number basis.
  7335. Set verbose, and you'll get informational tests when libcurl detects and
  7336. uses a previous SSL session ID.
  7337. - Upgraded to automake 1.5 on my development/release machine.
  7338. Daniel (27 August 2001)
  7339. - Slowly started writing SSL session ID caching code
  7340. Daniel (24 August 2001)
  7341. - T. Bharath removed compiler warnings on windows and updated the MS project
  7342. files.
  7343. - Kevin Roth reported two kinds of command line constructs with the new -G that
  7344. curl didn't really deal with the way one would like.
  7345. - Tim Costello patched away a use of strcasecmp() in the SSL code. We have our
  7346. own portable version named strequal() that should be used!
  7347. - Tim also pointed out a problem in the lib/Makefile.vc6 file that made it mix
  7348. debug object modules causing confusions.
  7349. Daniel (23 August 2001)
  7350. - T. Bharath accurately found a libcurl bug that would happen when doing a
  7351. second invoke of curl_easy_perform() with a new URL when the previous invoke
  7352. followed a Location: header.
  7353. - Started the improvement work on the cookie engine:
  7354. - Now keeps cookies in the same order as the cookie file
  7355. - A write to the possibly static string was removed
  7356. - Added a function that can output all cookies
  7357. - Now supports reading multiple cookie files
  7358. - Steve Lhomme corrected a DLL naming issue in the MSVC++ project file.
  7359. - Split up the monster function in lib/ftp.c to use more smallish functions to
  7360. increase readability and maintainability.
  7361. Daniel (21 August 2001)
  7362. - Georg Huettenegger's big patch was applied. Now we have:
  7363. o "Expect: 100-continue" support. We will from now on send that header in
  7364. all rfc1867-posts, as that makes us abort much faster when the server
  7365. rejects our POST. Posting without the Expect: header is still possible in
  7366. the standard replace-internal-header style.
  7367. o curl_formadd() is a new formpost building function that is introduced to
  7368. replace the now deprecated curl_formparse() function. The latter function
  7369. will still hang around for a while, but the curl_formadd() is the new way
  7370. and correct way to build form posts.
  7371. o Documentation has been updated to reflect these changes
  7372. These changes are reason enough to name the next curl release 7.9...
  7373. - We now convert man pages to HTML pages and include them in the release
  7374. archive. For the pleasure of everyone without nroff within reach.
  7375. - Andrés García's suggested flushing of the progress meter output stream was
  7376. added. It should make the progress meter look better on Windows.
  7377. - Troy Engel pointed out a mistake in the configure script that made it fail
  7378. on many Red Hat boxes!
  7379. Daniel (20 August 2001)
  7380. - We need an updated libtool to make a better build environment for OpenBSD
  7381. as well as FreeBSD
  7382. Version 7.8.1
  7383. Daniel (20 August 2001)
  7384. - Brad pointed out that we ship two extra libtool files in the tarballs that
  7385. we really don't need to! Removing them makes the gz-archive about 60K
  7386. smaller!
  7387. - Albert Chin brought fixes for the configure script to detect socklen_t
  7388. properly as well as moving lots of our custom autoconf macros to
  7389. acinclude.m4.
  7390. Daniel (19 August 2001)
  7391. - Moonesamy improved his -G feature for host names only URLs...
  7392. Daniel (17 August 2001)
  7393. - Finally cleaned up the kerberos code to use Curl_ prefixes on all global
  7394. symbols and to not use global variables.
  7395. Version 7.8.1-pre6
  7396. Daniel (16 August 2001)
  7397. - S. Moonesamy added the -G option to curl, that converts the data specified
  7398. with -d to a GET request. Default action when using -d is POST. When -G is
  7399. used, the -d specified data will be appended to the URL with a '?'
  7400. separator. As suggested previously by Kevin Roth.
  7401. - curl-config --libs should now display all linker options required to link
  7402. with libcurl. It includes the path and options for libcurl itself.
  7403. curl-config --cflags displays the compiler option(s) needed to compile
  7404. source files that use libcurl functions. Basically, that sets the include
  7405. path correct.
  7406. Daniel (15 August 2001)
  7407. - Arkadiusz Miskiewicz pointed out a mistake in how IPv6-style IP-addresses
  7408. were parsed and used. (RFC2732-format)
  7409. - Bug #12733 over on php.net identified a problem in libcurl that made it core
  7410. dump if you used CURLOPT_POST without setting any data to post with
  7411. CURLOPT_POSTFIELDS! This is no longer the case. Not using CURLOPT_POSTFIELDS
  7412. now equals setting it to no data at all.
  7413. - Ramana Mokkapati reported that curl with '-w %{http_code}' didn't work
  7414. properly when used for multiple URLs on a single command line. Indeed, the
  7415. variable was not reset between the requests. This is now fixed.
  7416. - David James fixed the Borland makefile so that libcurl still compiles and
  7417. builds with that compiler.
  7418. Daniel (14 August 2001)
  7419. - Oops. I ruined Nico's socklen_t define in config-vms.h, corrected it now.
  7420. - An older item not mentioned here before: CURL_GLOBAL_WIN32 is a define for
  7421. windows users to curl_global_init(), that makes libcurl init the winsock
  7422. stuff. If libcurl is all socket stuff you do, then allowing it to fiddle
  7423. with this is a comfortable shortcut to fame.
  7424. Version 7.8.1-pre5
  7425. Daniel (14 August 2001)
  7426. - Nico Baggus provided more feedback from his VMS porting efforts and a few
  7427. minor changes were necessary.
  7428. - I modified configure.in so that --enable-debug sets more picky gcc options.
  7429. I then removed almost all the new warnings that appeared, and by doing so I
  7430. corrected the size_t-treated-as-signed problem that has been discussed on
  7431. the mailing list previously. I also removed a bunch of the just recently
  7432. added #ifdef VMS lines.
  7433. - I removed the use of a global variable in the SSL code. It was once
  7434. necessary but hasn't been needed since OpenSSL 0.9.4. The old code should
  7435. (hopefully) still work if libcurl is built against an ancient version of
  7436. OpenSSL.
  7437. Daniel (13 August 2001)
  7438. - Peter Todd posted a patch that now allows non-file rc1867-style form posts
  7439. to be larger than 4K.
  7440. Daniel (10 August 2001)
  7441. - S. Moonesamy fixed bugs for building debug and SSL lib in VC makefile
  7442. Daniel (9 August 2001)
  7443. - The redirected error stream was closed before the curl_easy_cleanup() call
  7444. was made, and when VERBOSE was enabled, the cleanup function tried to use
  7445. the stream. It could lead to a segmentation fault. Also, the stream was
  7446. closed even if we looped to get more files. Corrects Dustin Boswell's bug
  7447. report #441610
  7448. - Now generates the release configure script with autoconf 2.52
  7449. Version 7.8.1-pre4
  7450. Daniel (8 August 2001)
  7451. - curl -E uses a colon to separate a file name from a passphrase. This turned
  7452. out really bad for the windows people who wants to include a drive letter in
  7453. the file name like "c:\cert.pem". There's now a win32 work-around
  7454. implemented that tries work around that, when the colon seems to be used for
  7455. this kind of construct.
  7456. - Patrick Bihan-Faou introduced CURLOPT_SSL_VERIFYHOST, which makes curl
  7457. verify the server's CN field when talking https://. If --cacert is not used,
  7458. any failures in matching is only displayed as information (-v).
  7459. Daniel (7 August 2001)
  7460. - Wrote up nine more test cases, more or less converted from the former test
  7461. suite.
  7462. Daniel (6 August 2001)
  7463. - Heikki Korpela posted a patch that makes 'curl-config --libs' include the
  7464. directory in which libcurl itself is installed in. While this wasn't my
  7465. initial intention with this option, it makes sense and makes linking with
  7466. libcurl easier.
  7467. - Stefan Ulrich pointed out to us that other tools and libraries treat file://
  7468. URLs with only one slash after the host name slighly different than libcurl
  7469. does. Since all the others seem to agree, we better follow them.
  7470. - Nico Baggus provided us with a huge set of fixes to make curl compile and
  7471. build under OpenVMS.
  7472. Version 7.8.1-pre3
  7473. Daniel (6 August 2001)
  7474. - Jonathan Hseu noticed that you couldn't get a header callback unless you
  7475. set CURLOPT_WRITEHEADER to non-NULL, even if you didn't care about that
  7476. data. This is now fixed.
  7477. Daniel (5 August 2001)
  7478. - Sergio Ballestrero provided a patch for reading responses from NCSA httpd
  7479. 1.5.x servers, as they return really screwed up response headers when asked
  7480. for with HTTP 1.1.
  7481. - curl_escape() no longer treats already encoded characters in the input
  7482. string especially.
  7483. Daniel (3 August 2001)
  7484. - I replaced the former lib/arpa_telnet.h file with one I wrote myself, to
  7485. avoid the BSD annoucement clause of the license in the former file.
  7486. - Andrew Francis provided a new version of base64.c to work around the license
  7487. boiler plate that came with the previous one. I patched it, but the glory
  7488. should go to Andrew for his heads up.
  7489. - Tomasz Lacki noticed that when you do repeated transfers with libcurl you
  7490. couldn't always reliably change HTTP request. This has now been fixed and a
  7491. new libcurl option was added: CURLOPT_HTTPGET, that can force the HTTP
  7492. requestr (back) to GET.
  7493. - Linus Nielsen Feltzing pointed out that httpsserver.pl wasn't included in
  7494. release archives. It should be now.
  7495. Daniel (2 August 2001)
  7496. - Frank Keeney pointed out a manual mistake for certificate convertions.
  7497. - Tomasz Lacki pointed out a problem in the transfer loop that could make the
  7498. select() loop use far too much CPU.
  7499. - Pawel A. Gajda pointed out an output mistake done when using libcurl's
  7500. progress callback.
  7501. Daniel (29 June 2001)
  7502. - Naveen Noel noticed that the Borland library makefile wasn't updated.
  7503. - Nic Roets brought a fix for the certificate verification when using SSL.
  7504. Daniel (27 June 2001)
  7505. - Made the FTP tests run OK even on machines running curl IPv6-enabled.
  7506. - Troy Engel corrected some RPM package details.
  7507. Version 7.8.1-pre2
  7508. Daniel (25 June 2001)
  7509. - Björn Stenberg correctly identified a problem that occurred when downloading
  7510. several files with curl, and using resume. The first file's resume index was
  7511. then used for all files, resulting in weird results...
  7512. - Anton Kalmykov provided a fix that makes curl work with form field names
  7513. with spaces like when -F is used.
  7514. Version 7.8.1-pre1
  7515. Daniel (20 June 2001)
  7516. - Mike Bytnar provided a fine report that proved that the --with-ssl option
  7517. for configure needed tweaking. It no longer searches the default directories
  7518. for OpenSSL libs or directories when a specified path is given.
  7519. Daniel (19 June 2001)
  7520. - When an FTP transfer is cut off during transfer, curl could present a truly
  7521. garbaged error message and in worst case dump core. Thanks to detailed
  7522. reports from Shawn Poulson we nailed this.
  7523. Daniel (12 June 2001)
  7524. - Salvador Dávila provided a fix for FTP range downloads.
  7525. - Added a few more test cases from the former test suite to the new file
  7526. format. We're now at a total of 26 tests.
  7527. Daniel (11 June 2001)
  7528. - libcurl's version-info was wrong, as noted by both Domenico Andreoli and
  7529. David Odin.
  7530. Daniel (7 June 2001)
  7531. - Jörn fixed the curl_unescape duplicate entry in lib/libcurl.def
  7532. - I made SSL certificate failure messages to be more detailed.
  7533. Version 7.8
  7534. Daniel (7 June 2001)
  7535. - SDavila provided a resumed download fix.
  7536. Version 7.8-pre4
  7537. Daniel (1 June 2001)
  7538. - Sterling provided some new PHP examples.
  7539. - Changed the CVS hierarchy and the older checkout instruction does no longer
  7540. work. We moved the entire source code into a CVS module named 'curl'.
  7541. Daniel (31 May 2001)
  7542. - CURLOPT_MUTE does not exist anymore. It is still present in the include file
  7543. to not cause compiler errors for applications using it, but it isn't used
  7544. anywhere in the library.
  7545. Version 7.8-pre3
  7546. Daniel (31 May 2001)
  7547. - Once and for all fixed the _REENTRANT mess for Solaris compiles to present
  7548. less warnings.
  7549. - Sterling Hughes tirelessly points out and corrects my mistakes...! So,
  7550. curl_global_init() now lets the argument flags *SET* what parts to
  7551. init. CURL_GLOBAL_DEFAULT makes a nice default, CURL_GLOBAL_ALL inits all
  7552. known subsystems and CURL_GLOBAL_NONE inits nothing more than absolutely
  7553. necessary. Man page updated accordingly.
  7554. - Fixed the strtok.h include file as it wouldn't compile on all platforms!
  7555. Daniel (30 May 2001)
  7556. - Made libcurl by default act as if CURLOPT_MUTE and CURLOPT_NOPROGRESS were
  7557. set TRUE. Set them to FALSE to make libcurl more talkative. The *_MUTE
  7558. option is subject for complete removal...
  7559. Version 7.8-pre2
  7560. Daniel (30 May 2001)
  7561. - Cris Bailiff wrote a makefile for building Solaris packages.
  7562. - Sterling Hughes brought fixes for 'buildconf' (the build-from-CVS tool) and
  7563. we discussed and added a few CURL_GLOBAL_* flags in include/curl.h
  7564. - Kjetil Jacobsen privately announced his python interface to libcurl,
  7565. available at http://pycurl.sourceforge.net/
  7566. Daniel (29 May 2001)
  7567. - Sterling Hughes fixed a strtok() problem in libcurl. It is not a thread-
  7568. safe function. Now configure checks for a thread-safe version, and
  7569. lib/strtok.c offers one for the systems that don't come with one included!
  7570. - Mettgut Jamalla correctly pointed out that the -# progress bar was written
  7571. to stderr even though --stderr redirection was used. This is now corrected.
  7572. - I moved out the list of contributors from the curl.1 man page and made a
  7573. separate docs/THANKS file. It makes the list easier to find, and made it
  7574. easier for me to make a separate web page with that same information.
  7575. I really do want all you guys mentioned in there to feel you get the credit
  7576. you deserve.
  7577. - lib/easy.c didn't compile properly in the 7.8-pre1 due to a silly mistake
  7578. Version 7.8-pre1
  7579. Daniel (28 May 2001)
  7580. - curl-config now supports '--vernum' that outputs a plain hexadecimal version
  7581. of the libcurl version number (using 8 bits for each 3 numbers). Version
  7582. 7.7.4 appears as 070704
  7583. - Wrote man pages for curl_global_init and curl_global_cleanup...
  7584. - T. Bharath brought news about the usage of the OpenSSL interface that was
  7585. not previously taken into consideration and thus caused libcurl to leak
  7586. memory. The only somewhat sane approach to fix this dilemma, is adding two
  7587. two new functions curl_global_init() and curl_global_cleanup() that should
  7588. be called *ONCE* by the application using libcurl. The init should be done
  7589. only at startup, no matter how many threads the application is gonna use,
  7590. and the cleanup should be called when the application has finished using
  7591. libcurl completely.
  7592. *** UPGRADE NOTICE ***
  7593. If you write applications using libcurl, you really want to use the two
  7594. functions mentioned above !!!
  7595. I can't say I think this is a very beautiful solution, but as OpenSSL
  7596. insists on making lots of stuff on a "global" scope, we're forced to walk
  7597. the path they point us to.
  7598. - Moving more test cases into the new file format.
  7599. Version 7.7.4-pre3
  7600. Daniel (23 May 2001)
  7601. - Introduced a new file format for storing test cases, and thus I had to
  7602. modify all the perl test scripts and more (I added a new one). I have not
  7603. "ported" all the old test cases to the new format yet, but it'll come.
  7604. The main advantage of this new format is that all test data for each test
  7605. case is stored in a single file. It gives a better overview for each test
  7606. case and a lot less files.
  7607. - Andrés García brought a fix for the netscape/mozilla cookie file parsing
  7608. function, as it turns out it doesn't always store the path!
  7609. Daniel (22 May 2001)
  7610. - As was reported anonymously, when FAILONERROR was used, the httpcode was
  7611. not stored properly and thus wasn't possibly to read after a transfer with
  7612. the curl_easy_getinfo() function. This is now corrected.
  7613. - Installed and made use of the following tool versions:
  7614. autoconf 2.50
  7615. libtool 1.4
  7616. automake 1.4-p1
  7617. I wouldn't recommend any developer to try to generate things with older
  7618. versions than these. Building from CVS will probably more or less require
  7619. at least these versions.
  7620. As a result of this, the configure script grew to more than double its
  7621. previous size!
  7622. Arkadiusz Miskiewicz helped me by pointing out I had to remove my
  7623. acinclude.m4 file before I could get it working!
  7624. Daniel (21 May 2001)
  7625. - I made ftps:// work. Added test case 400 to the release archive, as the
  7626. first ftps:// test case. Requires stunnel.
  7627. - Also made the test cases that runs ssl tests not run if libcurl isn't built
  7628. with ssl support.
  7629. Daniel (19 May 2001)
  7630. - Made the configure not add any extra -L LDFLAGS or -I CPPFLAGS unless they
  7631. are actually needed. Albert Chin's and Domenico Andreoli's suggestions
  7632. helped out.
  7633. Version 7.7.4-pre2
  7634. Daniel (18 May 2001)
  7635. - Nicer configure-check for the OpenSSL headers, which then sets the proper
  7636. variable to have curl-config be good. (Albert Chin provided the fix)
  7637. - For systems that don't have theiw own 'strlcat()' libcurl provides its own.
  7638. It was now renamed to prevent collides with other libs. (After discussions
  7639. with Sterling Hughes and the implications this had on PHP builds.)
  7640. Daniel (17 May 2001)
  7641. - Colm Buckley posted a detailed bug report on (the debianized) 7.7.3, that
  7642. turned out to be a problem with the debian-built 7.7.3-package that
  7643. contained files from the 7.7.2 release!
  7644. - I added the CURLE_ALREADY_COMPLETE again, but with a fake value, just to
  7645. make programs that use it, not fail when compiling against this version of
  7646. libcurl.
  7647. Daniel (14 May 2001)
  7648. - Pawel A. Gajda fixed a problem with resumed transfers on re-used persistent
  7649. connections.
  7650. Version 7.7.4-pre1
  7651. Daniel (14 May 2001)
  7652. - Jun-ichiro itojun Hagino fixed FTP PORT for IPv6-enabled libcurl.
  7653. - Added the first HTTPS test to the test suite in the release archive.
  7654. Daniel (12 May 2001)
  7655. - Jukka Pihl suggested that if (lib)curl is told to verify the peer's
  7656. certificate and the peer can't be verified, it should fail and return a
  7657. proper error code. I added a brand new error code named
  7658. CURLE_SSL_PEER_CERTIFICATE for this purpose.
  7659. Daniel (11 May 2001)
  7660. - As was discussed with Frederic Lepied a while ago, I now made libcurl not
  7661. return error even though no data was transfered on upload/download resume
  7662. when the no transfer is needed. The CURLE_ALREADY_COMPLETE error was removed
  7663. from the header file to make any implemenator that uses that to be aware of
  7664. the fact that it can't be returned anymore!
  7665. - Improved general header-parsing to better allow white spaces and more.
  7666. - Rodney Simmons proved the fix I did yesterday was bad and I had to post
  7667. another one.
  7668. - Ingo Wilken patched away two redirect problems more!
  7669. Daniel (10 May 2001)
  7670. - Cris Bailiff correctly noted that the space-after-header problem with
  7671. Location: is present on several other places in the libcurl sources.
  7672. - Ingo Wilken patched away a problem libcurl had when following Location:
  7673. headers with an extra space after the colon.
  7674. - Rodney Simmons found out that multiple FTP transfers did not treat relative
  7675. directories correctly.
  7676. Daniel (9 May 2001)
  7677. - Getting an FTP file with CURLOPT_NOBODY set (or -I from the command line),
  7678. makes curl use the non-standard ftp command "SIZE". If it failed, libcurl
  7679. returned error. Starting now, it just don't output the file size instead.
  7680. Anonymous bug report.
  7681. - stunnel.pm was accidentally left out from the release archive, it is now
  7682. added (stunnel is needed to run the https-tests in the test suite)
  7683. Daniel (7 May 2001)
  7684. - Corrected two minor compiler warnings due to the FILE * to void * conversion
  7685. that I missed at two places. Jörn Hartroth brought me patches. Sander Gates
  7686. filed a bug report on this.
  7687. Version 7.7.3
  7688. Daniel (4 May 2001)
  7689. - All callback functions now take 'void *' instead of 'FILE *'. This is made
  7690. this way to make it more obvious to people that anything can be passed to
  7691. them (by using the apropriate option). After discussions with Sterling
  7692. Hughes.
  7693. Daniel (3 May 2001)
  7694. - Cris Bailiff fixed a chunked transfer encoding problem with persistent
  7695. connection that made libcurl fail if the persistent connection used mixed
  7696. chunked and non-chunked transfers.
  7697. - Cris Bailiff fixed a bad treatment of 304-replies, as they would not be
  7698. treated as content-length 0 replies but would cause a "hang" until the
  7699. server timed-out and closed the connection.
  7700. - Brad Burdick found a minor problem in the docs/examples/Makefile.am
  7701. Daniel (27 April 2001)
  7702. - Updated the INTERALS document again. It was lagging a bit. I think I made it
  7703. more easy to follow now as well.
  7704. - Brad Burdick found a problem with persistent connections when curl received
  7705. a "Content-Length: 0" header.
  7706. - Giuseppe D'Ambrosio was first out to report that TELNET doesn't work in curl
  7707. compiled/built on win32. It seems to work for unixes though!
  7708. - Dave Hamilton reported weird problems with CURL/PHP that I really can't
  7709. explain at the moment. I'm hoping on some help from the PHP crew.
  7710. Daniel (26 April 2001)
  7711. - I rewrote the FTP command response function. I had to do it to make ftps
  7712. work, as the OpenSSL read()-function didn't work the same way the normal
  7713. unix read() does, but it was also a huge performance boost. Previously the
  7714. function read one byte at a time, now it reads very large chunks, and it
  7715. makes a notable speed difference.
  7716. Daniel (25 April 2001)
  7717. - Connection re-use when not using a proxy didn't work properly for
  7718. non-default port numbers.
  7719. Daniel (24 April 2001)
  7720. - I've noticed that FTPS doesn't work. We attempt to use ssl even for the
  7721. data transfer, which causes the transfer to 'hang'... We need to fix this.
  7722. - Improved the test suite to use 'stunnel' to do HTTPS and FTPS testing on
  7723. the alredy written perl servers easily.
  7724. Daniel (23 April 2001)
  7725. - The OpenSSL version string recently modified didn't zero terminate one
  7726. of the generated strings properly, which could lead to a crash or simply
  7727. weird version string output!
  7728. Version 7.7.2
  7729. Daniel (22 April 2001)
  7730. - Rosimildo da Silva updated the Makefiles for Borland/Windows.
  7731. - Eric Rautman pointed out a problem with persistent connections that would
  7732. lead to broken Host: headers in the second HTTP request.
  7733. Daniel (20 April 2001)
  7734. - Added man pages for the curl_strequal() and curl_mprintf() families. Wrote
  7735. a 'libcurl overview' man page.
  7736. - Spell-fixed some documents.
  7737. - S. Moonesamy corrected mistakes in the man page.
  7738. - Cris Bailiff fixed the curl_slists options in the perl interface, present
  7739. separately in the Curl::easy 1.1.4 package.
  7740. Daniel (19 April 2001)
  7741. - Linus Nielsen Feltzing removed the decimals from the size variables in the
  7742. --write-out output. We hardly ever get fraction of bytes! :-)
  7743. Version 7.7.2-pre1
  7744. Daniel (19 April 2001)
  7745. - Albert Chin provided a configure patch for the AC_SYS_LARGEFILE macro.
  7746. Daniel (18 April 2001)
  7747. - Input from Michael Mealling made me add --feature to curl-config. It
  7748. displays a list of features that have been built-in in the current
  7749. libcurl. The currently available features that can be listed are: SSL, KRB4
  7750. and IPv6.
  7751. - I committed Cris and Georg's perl interface work. They've got callbacks
  7752. working and options that receives those slist pointers.
  7753. - Puneet Pawaia detected a problem with resumed downloads that use persistent
  7754. connections and I made a rather large writeup to correct this. It is
  7755. important that all session-data is stored in the connectdata struct and not
  7756. in the main struct as this previously did.
  7757. Daniel (17 April 2001)
  7758. - Frederic Lepied fixed a ftp resumed download problem and introduced a new
  7759. error code that lets applications be able to detect when a resumed download
  7760. actually didn't download anything since the whole file is already present.
  7761. Should this return OK instead?
  7762. - I added 'curl-config.in' to the root dir and configure script. Now, a
  7763. curl-config script is made when curl is built. The script can be used to
  7764. figure out compile time options used when libcurl was built, which in turn
  7765. should be options YOU should use to build applications that use libcurl.
  7766. This *-config style is not a new idea, but something that has been used
  7767. successfully in other (library based) projects.
  7768. - Phil Karn pointed out that libcurl wrongly did not always use GMT time zone
  7769. for the If-Modified-Since style headers.
  7770. - Georg Schwarz pointed out an extra needed #include file needed in src/main.c
  7771. for curl to build on Ultrix.
  7772. Daniel (11 April 2001)
  7773. - Cris Bailiff pointed out two problems that I corrected. First, libcurl's use
  7774. of the environment variable HTTP_PROXY in uppercase may become a security
  7775. hazard when people use libcurl in a server/cgi situation where the server
  7776. sets the HTTP_*-variables according to incoming headers in the HTTP
  7777. request. Thus, a "Proxy:"-header would set that environment variable!
  7778. Then, invoking curl_easy_perform() without having an URL set caused a crash.
  7779. - S. Moonesamy brought a patch that make curl use non-blocking connects on
  7780. windows when connection timeout is set, as it allows windows users to set
  7781. that timeout!
  7782. - Hirotaka Matsuyuki wrote a Ruby interface to libcurl!
  7783. - Cris Bailiff, Forrest Cahoon and Georg Horn work on the Perl interface.
  7784. - I've written a first shot at a Java interface to libcurl. Many thanks to
  7785. Daniel Marell for tirelessly answering to all my basic Java questions. It
  7786. works, but it is still very basic.
  7787. Daniel (10 April 2001)
  7788. - The progress display could get silly when doing multiple file transfers, as
  7789. it wasn't properly reset between transfers!
  7790. - Discussions with Cris Bailiff who writes a Perl interface to libcurl, made
  7791. me add CURLOPT_HEADERFUNCTION. It can be used to set a separate callback
  7792. function for writing headers. Previously you could only set a different FILE
  7793. * when headers are written from within libcurl.
  7794. Daniel (7 April 2001)
  7795. - Andrés García fixed a problem in curl_escape() and pointed out a flaw in
  7796. the curl_easy_setopt man page.
  7797. Daniel (6 April 2001)
  7798. - Adjusted the version code to properly display OpenSSL 0.9.6a. They sure
  7799. change their version define format often...
  7800. - curl_formfree() now accepts a NULL pointer without crashing!
  7801. Version 7.7.1
  7802. Daniel (3 April 2001)
  7803. - Puneet Pawaia pointed out two serious problems. Libcurl would attempt to
  7804. read bad memory during situations when an (ftp) connection attempt failed.
  7805. Also, the lib/Makefile.vc6 was corrected.
  7806. - More investigations in the Location: following code made me realize that
  7807. it was not clean enough to work transparantly with persistent and non-
  7808. persistent connections. I think I've fixed it now.
  7809. Daniel (29 March 2001)
  7810. - Georg Horn mailed me some corrections for the Curl::easy perl interface.
  7811. - Experimental ftps:// support added. It is basically FTP over SSL for the
  7812. control connection. It still makes all data transfers going over unencrypted
  7813. connections. Rainer Weikusat's ftpd-ssl server hack supports this and I used
  7814. that to verify the functionality.
  7815. Daniel (27 March 2001)
  7816. - Guenole Bescon discovered that if you set a CURLOPT_TIMEOUT and then tried
  7817. to get a file from a site and it fails, the SIGALRM would still be sent
  7818. after the timeout-time, quite inexpectedly!
  7819. - I added an ftp transfer example to docs/examples/ and I also wrote a tiny
  7820. example makefile that can be used as a start when building one of the
  7821. examples.
  7822. Version 7.7.1-beta1
  7823. Daniel (26 March 2001)
  7824. - Mohamed Lrhazi reported problems with 7.6.1 and persistent HTTP/1.0
  7825. connections (when the server replied a Connection: Keep-Alive) and this
  7826. problem was not properly dealt with in 7.7 either. A patch was posted to the
  7827. curl-and-php mailing list.
  7828. Daniel (24 March 2001)
  7829. - Colin Watson reported about a problem and brought a patch that corrected it,
  7830. which was about the man page and lines starting with a single quote (') in a
  7831. way that gnroff doesn't like.
  7832. Daniel (23 March 2001)
  7833. - Peter Bray reported correctly that the root makefile used make instead of
  7834. $(MAKE) for the test target.
  7835. - Corrected the Curl::easy perl interface to use curl_easy_setopt() and not
  7836. curl_setopt() which was removed in 7.7!
  7837. - S. Moonesamy provided updates on three documents (MANUAL, INSTALL and FAQ).
  7838. - When following a Location:, libcurl would sometimes write to the URL string
  7839. in a way it shouldn't. As the pointer is passed-in to libcurl from an
  7840. application, we can't be allowed to write to it. The particular bug report
  7841. from 'nk' that brought this up was because he had a read-only URL that then
  7842. caused a libcurl crash!
  7843. - No longer reads HEAD responses longer than to the last header. Previously,
  7844. curl would read the full reply if the connection was a "close" one.
  7845. - libcurl did re-use connections way too much. Doing "curl
  7846. http://www.{microsoft,ibm}.com" would make it re-use the connection which
  7847. made the second request return very odd results.
  7848. Daniel (22 March 2001)
  7849. - Edin Kadribasic made me aware that curl should not re-send POST requests
  7850. when following 302-redirects. I made 302 work like 303 which means curl uses
  7851. GET in the following request(s).
  7852. - libcurl now reset the "followed-location" counter on each invoke of
  7853. curl_easy_perform() as it otherwise would sum up all redirects on the same
  7854. connection and thus could reach the maxredirs counter wrongly.
  7855. - Jim Drash suggested curl_escape() should not re-encode what already looks
  7856. like an encoded sequence and I think that's a fair suggestion.
  7857. Version 7.7
  7858. Daniel (22 March 2001)
  7859. - The configure script now fails with an error message if gethostbyname_r() is
  7860. detected but it couldn't figure out how to invoke it (what amount of
  7861. arguments it is supposed to get). Reports from Andrés García made me aware
  7862. of this need.
  7863. - Talking with Jim Drash made me finally put the curl_escape and curl_unescape
  7864. functions in the curl.h include file and write man pages for them. The
  7865. escape function was modified to use the same interface as the unescape one
  7866. had.
  7867. - No bug reports at all on the latest betas. Release time coming up.
  7868. Version 7.7-beta5
  7869. Daniel (19 March 2001)
  7870. - Georg Ottinger reported problems with using -C together with -L in the sense
  7871. that the -C info got lost when it was redirected. I could not repeat this
  7872. problem on the 7.7 branch why I leave this for the moment. Test case 39 was
  7873. added to do exactly this, and it seems to do right.
  7874. - Christian Robottom Reis reported how his 7.7 beta didn't successfully do
  7875. form posts as elegantly as 7.6.1 did. Indeed, this was a flaw in the header
  7876. engine, as HTTP 1.1 has introduced a new 100 "transient" return code for PUT
  7877. and POST operations that I need to add support for. Section 8.2.3 in RFC2616
  7878. has all the details. Seems to work now!
  7879. Daniel (16 March 2001)
  7880. - After having experienced another machine break-down, we're back.
  7881. - Georg Horn's perl interface Curl::easy is now included in the curl release
  7882. archive. The perl/ directory is now present. Please help me with docs,
  7883. examples and updates you think fit.
  7884. - Made a new php/ directory in the release archive and moved the PHP examples
  7885. into a subdirectory in there. Not much PHP info yet, but I plan to. Please
  7886. help me here as well!
  7887. - Made libcurl return error if a transfer is aborted in the middle of a
  7888. "chunk". It actually enables libcurl to discover premature transfer aborts
  7889. even if the Content-Length: size is unknown.
  7890. Daniel (15 March 2001)
  7891. - Added --connect-timeout to curl, which sets the new CURLOPT_CONNECTTIMEOUT
  7892. option in libcurl. It limits the time curl is allowed to spend in the
  7893. connection phase. This differs from -m/--max-time that limits the entire
  7894. file transfer operation. Requested by Larry Fahnoe and others.
  7895. I also updated the curl.1 and curl_easy_setopt.3 man pages and removed the
  7896. item from the TODO.
  7897. Version 7.7-beta4
  7898. Daniel (14 March 2001)
  7899. - Made curl grok IPv6 with HTTP proxies and got everything to compile nicely
  7900. again when ENABLE_IPV6 is set.
  7901. I need to remake things in the test suite. I can't test the FTP parts with
  7902. curl built for IPv6 as it uses a different set of FTP commands then!
  7903. - I fell onto a bug report on php.net (posted by Lars Torben Wilson) that was
  7904. a report meant for our project. Anyway, it said the .netrc parsing didn't
  7905. work as supposed, and as I agreed with Lars, I made the netrc parser use
  7906. getpwuid() to figure out the home directory of the effective user and try
  7907. that netrc. It still uses the environment variable HOME for those that don't
  7908. have that function or if the user doesn't return valid pwd info.
  7909. - Edin Kadribaic posted a bug report where he got a crash when a fetch with
  7910. user+password in the URL followed a Location: to a second URL (absolute,
  7911. without name+password). This bug has been around for a long while and
  7912. crashes due to a read at address zero. Fixed now. Wrote test case 38, that
  7913. tests this.
  7914. - Modified the test suite's httpserver slightly to append all client request
  7915. data to its log file so that the test script now better can verify a range
  7916. of requests and not only the last one, as it did previously.
  7917. - Updated the curl man page with --random-file and --egd-file details.
  7918. Version 7.7-beta3
  7919. Daniel (14 March 2001)
  7920. - Björn Stenberg provided similar fixes as Jörn did and some additional patches
  7921. for non-SSL compiles.
  7922. - I increased the interface number for libcurl as I've removed the low level
  7923. functions from the interface. I also took this opportunity to rename the
  7924. Curl_strequal function to curl_strequal and Curl_strnequal to
  7925. curl_strnequal, as they're public libcurl functions (even if they're still
  7926. undocumented).
  7927. This will make older programs not capable of using the new libcurl with
  7928. just a drop-in replacement.
  7929. - Jörn Hartroth updated stuff for win32 compiles:
  7930. o config-win32.h was fixed for socklen_t
  7931. o lib/ssluse.c had a bad #endif placement
  7932. o lib/file.c was made to compile on win32 again
  7933. o lib/Makefile.m32 was updated with the new files
  7934. o lib/libcurl.def matches the current interface state
  7935. Daniel (13 March 2001)
  7936. - It only took an hour or so before Jörn Hartroth found a problem in the
  7937. chunked transfer-encoding. Given his fine example-site, I could easily spot
  7938. the problem and when I re-read the spec (the part I have pasted in the top
  7939. of the http_chunks.h file), I realized I had made my state-machine slightly
  7940. wrong and didn't expect/handle the trailing CRLF that comes after the data
  7941. in each chunk (and those extra two bytes sure feel wasted).
  7942. Had to modify test case 34 to match this as well.
  7943. Version 7.7-beta2
  7944. Daniel (13 March 2001)
  7945. - Added the policy stuff to the curl_easy_setopt man page for the two supported
  7946. policies.
  7947. - Implemented some support for the CURLOPT_CLOSEPOLICY option. The policies
  7948. CURLCLOSEPOLICY_LEAST_RECENTLY_USED and CURLCLOSEPOLICY_OLDEST are now
  7949. supported, and the "least recently used" is used as default if no policy
  7950. is chosen.
  7951. Daniel (12 March 2001)
  7952. - Added CURLOPT_RANDOM_FILE and CURLOPT_EGDSOCKET to libcurl for seeding the
  7953. SSL random engine. The random seeding support was also brought to the curl
  7954. client with the new options --random-file <file> and --egd-file <file>. I
  7955. need some people to really test this to know they work as supposed. Remember
  7956. that libcurl now informs (if verbose is on) if the random seed is considered
  7957. weak (HTTPS connections).
  7958. - Made the chunked transfer-encoding engine detected bad formatted data length
  7959. and return error if so (we can't possibly extract sensible data if this is
  7960. the case). Added a test case that detects this. Number 36. Now there are 60
  7961. test cases.
  7962. - Added 5 new libcurl options to curl/curl.h that can be used to control the
  7963. persistent connection support in libcurl. They're also documented (fairly
  7964. thoroughly) in the curl_easy_setopt.3 man page. Three of them are now
  7965. implemented, although not really tested at this point... Anyway, the new
  7966. implemented options are named CURLOPT_MAXCONNECTS, CURLOPT_FRESH_CONNECT,
  7967. CURLOPT_FORBID_REUSE. The ones still left to write code for are:
  7968. CURLOPT_CLOSEPOLICY and its related option CURLOPT_CLOSEFUNCTION.
  7969. - Made curl (the actual command line tool) use the new libcurl 7.7 persistent
  7970. connection support by re-using the same curl handle for every specified file
  7971. transfer and after some more test case tweaking we have 100% test case OK.
  7972. I made some test cases return HTTP/1.0 now to make sure that works as well.
  7973. - Had to add 'Connection: close' to the headers of a bunch of test cases so
  7974. that curl behaves "old-style" since the test http server doesn't do multiple
  7975. connections... Now I get 100% test case OK.
  7976. - The curl.haxx.se site, the main curl mailing list and my personal email are
  7977. all dead today due to power blackout in the area where the main servers are
  7978. located. Horrible.
  7979. - I've made persistance work over a squid HTTP proxy. I find it disturbing
  7980. that it uses headers that aren't present in any HTTP standard though
  7981. (Proxy-Connection:) and that makes me feel that I'm now on the edge of what
  7982. the standard actually defines. I need to get this code excercised on a lot
  7983. of different HTTP proxies before I feel safe.
  7984. Now I'm facing the problem with my test suite servers (both FTP and HTTP)
  7985. not supporting persistent connections and libcurl is doing them now. I have
  7986. to fix the test servers to get all the test cases do OK.
  7987. Daniel (8 March 2001)
  7988. - Guenole Bescon reported that libcurl did output errors to stderr even if
  7989. MUTE and NOPROGRESS was set. It turned out to be a bug and happens if
  7990. there's an error and no ERRORBUFFER is set. This is now corrected.
  7991. Version 7.7-beta1
  7992. Daniel (8 March 2001)
  7993. - "Transfer-Encoding: chunked" is no longer any trouble for libcurl. I've
  7994. added two source files and I've run some test downloads that look fine.
  7995. - HTTP HEAD works too, even on 1.1 servers.
  7996. Daniel (5 March 2001)
  7997. - The current 57 test cases now pass OK. It would suggest that libcurl works
  7998. using the old-style with one connection per handle. The test suite doesn't
  7999. handle multiple connections yet so there are no test cases for this.
  8000. - I patched the telnet.c heavily to not use any global variables anymore. It
  8001. should make it a lot nicer library-wise.
  8002. - The file:// support was modified slightly to use the internal connect-first-
  8003. then-do approach.
  8004. Daniel (4 March 2001)
  8005. - More bugs erased.
  8006. Version 7.7-alpha2
  8007. Daniel (4 March 2001)
  8008. - Now, there's even a basic check that a re-used connection is still alive
  8009. before it is assumed so. A few first tests have proven that libcurl will
  8010. then re-connect instead of re-use the dead connection!
  8011. Daniel (2 March 2001)
  8012. - Now they work intermixed as well. Major coolness!
  8013. - More fiddling around, my 'tiny' client I have for testing purposes now has
  8014. proved to download both FTP and HTTP with persistent connections. They do
  8015. not work intermixed yet though.
  8016. Daniel (1 March 2001)
  8017. - Wilfredo Sanchez pointed out a minor spelling mistake in a man page and that
  8018. curl_slist_append() should take a const char * as second argument. It does
  8019. now.
  8020. Daniel (22 February 2001)
  8021. - The persistent connections start to look good for HTTP. On a subsequent
  8022. request, it seems that libcurl now can pick an already existing connection
  8023. if a suitable one exists, or it opens a new one.
  8024. - Douglas R. Horner mailed me corrections to the curl_formparse() man page
  8025. that I applied.
  8026. Daniel (20 February 2001)
  8027. - Added the docs/examples/win32sockets.c file for our windows friends.
  8028. - Linus Nielsen Feltzing provided brand new TELNET functionality and
  8029. improvements:
  8030. * Negotiation is now passive. Curl does not negotiate until the peer does.
  8031. * Possibility to set negotiation options on the command line, currently only
  8032. XDISPLOC, TTYPE and NEW_ENVIRON (called NEW_ENV).
  8033. * Now sends the USER environment variable if the -u switch is used.
  8034. * Use -t to set telnet options (Linus even updated the man page, awesome!)
  8035. - Haven't done this big changes to curl for a while. Moved around a lot of
  8036. struct fields and stuff to make multiple connections get connection specific
  8037. data in separate structs so that they can co-exist in a nice way. See the
  8038. mailing lists for discussions around how this is gonna be implemented. Docs
  8039. and more will follow.
  8040. Studied the HTTP RFC to find out better how persistent connections should
  8041. work. Seems cool enough.
  8042. Daniel (19 February 2001)
  8043. - Bob Schader brought me two files that help set up a MS VC++ libcurl project
  8044. easier. He also provided me with an up-to-date libcurl.def file.
  8045. - I moved a bunch of prototypes from the public <curl/curl.h> file to the
  8046. library private urldata.h. This is because of the upcoming changes. The
  8047. low level interface is no longer being planned to become reality.
  8048. Daniel (15 February 2001)
  8049. - CURLOPT_POST is not required anymore. Just setting the POST string with
  8050. CURLOPT_POSTFIELDS will switch on the HTTP POST. Most other things in
  8051. libcurl already works this way, i.e they require only the parameter to
  8052. switch on a feature so I think this works well with the rest. Setting a NULL
  8053. string switches off the POST again.
  8054. - Excellent suggestions from Rich Gray, Rick Jones, Johan Nilsson and Bjorn
  8055. Reese helped me define a way how to incorporate persistent connections into
  8056. libcurl in a very smooth way. If done right, no change may have to be made
  8057. to older programs and they will just start using persistent connections when
  8058. applicable!
  8059. Daniel (13 February 2001)
  8060. - Changed the word 'timeouted' to 'timed out' in two different error messages.
  8061. Suggested by Larry Fahnoe.
  8062. Version 7.6.1
  8063. Daniel (9 February 2001)
  8064. - Frank Reid and Cain Hopwood provided information and research around a HTTPS
  8065. PUT/upload problem we seem to have. No solution found yet.
  8066. Daniel (8 February 2001)
  8067. - An interesting discussion is how to specify an empty password without having
  8068. curl ask for it interactively? The current implmentation takes an empty
  8069. password as a request for a password prompt. However, I still want to
  8070. support a blank user field. Thus, today if you enter "-u :" (without user
  8071. and password) curl will prompt for the password. Tricky. How would you
  8072. specify you want the prompt otherwise?
  8073. - Made the netrc parse result possible to use for other protocols than FTP and
  8074. HTTP (such as the upcoming TELNET fixes).
  8075. - The previously mentioned "MSVC++ problems" turned out to be a non-issue.
  8076. - Added a HTTP file upload code example in the docs/examples/ section on
  8077. request.
  8078. - Adjusted the FTP response fix slightly.
  8079. Version 7.6.1-pre3
  8080. Daniel (7 February 2001)
  8081. - S. Moonesamy found a flaw in the response reading function for FTP that
  8082. could make libcurl not get out of the loop properly when it should, if
  8083. libcurl got -1 returned when reading the socket.
  8084. - I found a similar mistake in http.c when using a proxy and reading the
  8085. results from the proxy connection.
  8086. Daniel (6 February 2001)
  8087. - S. Moonesamy pointed out that the VC makefile in src/ needed the libpath set
  8088. for the debug build to work.
  8089. - Daniel Gehriger stepped in to assist with the VC++ stuff Robert Weaver
  8090. brought up yesterday.
  8091. Daniel (5 February 2001)
  8092. - Jun-ichiro itojun Hagino brought a big patch that brings IPv6-awareness to
  8093. a bunch of different areas within libcurl.
  8094. - Robert Weaver told me about the problems the MS VC++ 6.0 compiler has with
  8095. the 'static' keyword on a number of libcurl functions. I might need to add a
  8096. patch that redefines static when libcurl is compiled with that compiler.
  8097. How do I know when VC++ compiles, anyone?
  8098. Daniel (4 February 2001)
  8099. - curl_getinfo() was extended with two new options:
  8100. CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD. They
  8101. return the full assumed content length of the transfer in the given
  8102. direction. The CURLINFO_CONTENT_LENGTH_DOWNLOAD will be the Content-Length:
  8103. size of a HTTP download. Added descriptions to the man page as well. This
  8104. was done after discussions with Bob Schader.
  8105. Daniel (3 February 2001)
  8106. - Ingo Ralf Blum provided another fix that makes curl build under the more
  8107. recent cygwin installations. It seems they've changed the preset defines to
  8108. not include WIN32 anymore.
  8109. Version 7.6.1-pre2
  8110. Daniel (31 January 2001)
  8111. - Curl_read() and curl_read() now return a ssize_t for the size, as it had to
  8112. be able to return -1. The telnet support crashed due to this and there was a
  8113. possibility to weird behavior all over. Linus Nielsen Feltzing helped me
  8114. find this.
  8115. - Added a configure.in check for a working getaddrinfo() if IPv6 is requested.
  8116. I also made the configure script feature --enable-debug which sets a couple
  8117. of compiler options when used. It assumes gcc.
  8118. Daniel (30 January 2001)
  8119. - I finally took a stab at the long-term FIXME item I've had on myself, and
  8120. now libcurl will properly work when doing a HTTP range-request that follows
  8121. a Location:. Previously that would make libcurl fail saying that the server
  8122. doesn't seem to support range requests.
  8123. Daniel (29 January 2001)
  8124. - I added a test case for the HTTP PUT resume thing (test case 33).
  8125. Version 7.6.1-pre1
  8126. Daniel (29 January 2001)
  8127. - Yet another Content-Range change. Ok now? Bob Schader checks from his end
  8128. and it works for him.
  8129. Daniel (27 January 2001)
  8130. - So the HTTP PUT resume fix wasn't good. There should appearantly be a
  8131. Content-Range header when resuming a PUT.
  8132. - I noticed I broke the download-check that verifies that a resumed HTTP
  8133. download is actually resumed. It got broke because my new 'httpreq' field
  8134. in the main curl struct. I should get slapped. I added a test case for
  8135. this now, so I won't be able to ruin this again without noticing.
  8136. - Added a test case for content-length verifying when downloading HTTP.
  8137. - Made the progress meter title say if the transfer is being transfered. It
  8138. makes the output slightly better for resumes.
  8139. - When dealing with Location: and HTTP return codes, libcurl will not attempt
  8140. to follow the spirit of RFC2616 better. It means that when POSTing to a
  8141. URL that is being following to a second place, the standard will judge on
  8142. what to do. All HTTP codes except 303 and 305 will cause curl to make a
  8143. second POST operation. 303 will make a GET and 305 is not yet supported.
  8144. I also wrote two test cases for this POST/GET/Location stuff.
  8145. Version 7.6
  8146. Daniel (26 January 2001)
  8147. - Lots of mails back and forth with Bob Schader finally made me add a small
  8148. piece of code in the HTTP engine so that HTTP upload resume works. You can
  8149. now do an operation like 'curl -T file -C <offset> <URL>' and curl will PUT
  8150. the ending part of the file starting at given offet to the specified URL.
  8151. Version 7.6-pre4
  8152. Daniel (25 January 2001)
  8153. - I took hold of Rick Jones' question why we don't use recv() and send() for
  8154. reading/writing to the sockets and I've now modified the sread() and
  8155. swrite() macros to use them instead. If nothing else, they could be tested
  8156. in the next beta-round coming right up.
  8157. - Jeff Morrow found a problem with libcurl's usage of SSL_read() and supplied
  8158. his research results in how to fix this. It turns out we have to invoke the
  8159. function several times in some cases. The same goes for the SSL_write().
  8160. I made some rather drastic changes all over libcurl to make all writes and
  8161. reads get done on one single place so that this repeated-attempts thing
  8162. would only have to be implemented at one point.
  8163. - Rick Jones spotted that the 'total time' counter really didn't measure the
  8164. total time very accurate on subsecond levels.
  8165. - Johan Nilsson pointed out the need to more clearly specify that the timeout
  8166. value you set for a download is for the *entire* download. There's currently
  8167. no option available that sets a timeout for the connection phase only.
  8168. Daniel (24 January 2001)
  8169. - Ingo Ralf Blum submitted a series of patches required to get curl to compile
  8170. properly with cygwin.
  8171. - Robert Weaver posted a fix for the win32 section of the curl_getenv() code
  8172. that corrected a potential memory leak.
  8173. - Added comments in a few files in a sudden attempt to make the sources more
  8174. easy to read and understand!
  8175. Daniel (23 January 2001)
  8176. - Added simple IPv6 detection in the configure script and made the version
  8177. string add 'ipv6' to the enable section in that case. ENABLE_IPV6 will be
  8178. set if curl is compiled with IPv6 support enabled.
  8179. - Added a parser for IPv6-style specified IP-addresses in a URL. Thus, when
  8180. IPv6 gets enabled soon, we can use URLs like '[0::1]:80'...
  8181. - Made the URL globbing in the client possible to fail silently if there's an
  8182. error in the globbing. It makes it almost intuitive, so when you don't
  8183. follow the syntax rules, globbing is simply switched off and the raw string
  8184. is used instead.
  8185. I still think we'll get problems with IPv6-style IP-addresses when we *want*
  8186. globbing on parts of the URL as the initial part of the URL will for sure
  8187. seriously confuse the globber.
  8188. Daniel (22 January 2001)
  8189. - Björn Stenberg supplied a progress meter patch that makes it look better even
  8190. during slow starts. Previously it made some silly assumptions...
  8191. - Added two FTP tests for -Q and -Q - stuff since it was being discussed on
  8192. the mailing list. Had to correct the ftpserver.pl too as it bugged slightly.
  8193. Daniel (19 January 2001)
  8194. - Made the Location: parsers deal with any-length URLs. Thus I removed the last
  8195. code that restricts the length of URLs that curl supports.
  8196. - Added a --globoff test case (#28) and it quickly identified a memory problem
  8197. in src/main.c that I took care of.
  8198. Version 7.6-pre3
  8199. Daniel (17 January 2001)
  8200. - Made the two former files lib/download.c and lib/highlevel.c become the new
  8201. lib/transfer.c which makes more sense. I also did the rename from Transfer()
  8202. to Curl_Transfer() in the other source files that use the transfer function
  8203. in the spirit of using Curl_ prefix for library-scoped global symbols.
  8204. Daniel (11 January 2001)
  8205. - Added -g/--globoff that switches OFF the URL globbing and thus enables {}[]
  8206. letters to be part of the URL. Do note that RFC2396 section 2.4.3 explicitly
  8207. mention these letters to be escaped. This was posted as a feature request by
  8208. Jorge Gutierrez and as a bug by Terry.
  8209. - Short options to curl that requires parameters can now be specified without
  8210. having the option and its parameter space separated. -ofile works as good as
  8211. -o file. -m20 is equal to -m 20. Do note that this goes for single-letter
  8212. options only, verbose --long-style options still must be separated with
  8213. space from their parameters.
  8214. Daniel (8 January 2001)
  8215. - Francis Dagenais reported that the SCO compiler still fails when compiling
  8216. curl due to that getpass_r() prototype. I've now put it around #ifndef
  8217. HAVE_GETPASS_R in an attempt to please the SCO systems.
  8218. - Made some minor corrections to get the client to cleanup properly and I made
  8219. the separator work again when getting multiple globbed URLs to stdout.
  8220. - Worked with Loic Dachary to get the make dist and make distcheck work
  8221. correctly. The 'maketgz' script is now using the automake generated 'make
  8222. dist' when creating release archives. Loic successfully made 'make rpms'
  8223. automatically build RPMs!
  8224. Loic Dachary (6 January 2001)
  8225. - Automated generation of rpm packages, no need to be root.
  8226. - make distcheck generates a proper distribution (EXTRA_DIST
  8227. in all Makefile.am modified to match FILES).
  8228. Daniel (5 January 2001)
  8229. - Huge client-side hack: now multiple URLs are supported. Any number of URLs
  8230. can be specified on the command line, and they'll all be downloaded. There
  8231. must be a corresponding -o or -O for each URL or the data will be written to
  8232. stdout. This needs more testing, time to release a 7.6-pre package.
  8233. - The krb4 support was broken in the release. Fixed now.
  8234. - Huge internal symbol rename operation. All non-static but still lib-internal
  8235. symbols should now be prefixed with 'Curl_' to prevent collisions with other
  8236. libs. All public symbols should be prefixed with 'curl_' and the rest should
  8237. be static and thus invisible to the outside world. I updated the INTERNALS
  8238. document to say this as well.
  8239. Version 7.5.2
  8240. Daniel (4 January 2001)
  8241. - As Kevin P Roth suggested, I've added text to the man page for every command
  8242. line option and what happens when you specify that option more than
  8243. once. That hasn't been exactly crystal clear before.
  8244. - Made the configure script possible to run from outside the source-tree. For
  8245. odd reasons I can't build curl properly outside though. It has to do with
  8246. curl's dependencies on libcurl...
  8247. - Cut off all older (dated 1999 and earlier) CHANGES entries from this file.
  8248. The older piece is named CHANGES.0 and is added to the CVS repository in
  8249. case anyone would need it.
  8250. - I added another file 'CVS-INFO' to the CVS. It contains information about
  8251. files in the CVS that aren't included in release archives and how to build
  8252. curl when you get the sources off CVS.
  8253. - Updated CONTRIBUTE and FAQ due to the new license.
  8254. Daniel (3 January 2001)
  8255. - Renamed README.libcurl to LIBCURL
  8256. - Changed headers in all sources files to the new dual license concept of
  8257. curl: use the MIT/X derivate license *or* MPL. The LEGAL file was updated
  8258. accordingly and the MPL 1.1 and MIT/X derivate licenses are now part of the
  8259. release archive.
  8260. Daniel (30 December 2000)
  8261. - Made all FTP commands get sent with the trailing CRLF in one single write()
  8262. as splitting them up seems to confuse at least some firewalls (FW-1 being
  8263. one major).
  8264. Daniel (19 December 2000)
  8265. - Added file desrciptor and FILE handle leak detection to the memdebug system
  8266. and thus I found and removed a file descriptor leakage in the ftp parts
  8267. that happened when you did PORTed downloads.
  8268. - Added an include <stdio.h> in <curl/curl.h> since it uses FILE *.
  8269. Daniel (12 December 2000)
  8270. - Multiple URL downloads with -O was still bugging. Not anymore I think or
  8271. hope, or at least I've tried... :-O
  8272. - Francois Petitjean fixed another -O problem
  8273. Version 7.5.1
  8274. Daniel (11 December 2000)
  8275. - Cleaned up a few of the makefiles to use unix-style newlines only. As Kevin
  8276. P Roth found out, at least one CVS client behaved wrongly when it found
  8277. different newline conventions within the same file.
  8278. - Albert Chin-A-Young corrected the LDFLAGS use in the configure script for
  8279. the SSL stuff.
  8280. Daniel (6 December 2000)
  8281. - Massimo Squillace correctly described how libcurl could use session ids when
  8282. doing SSL connections.
  8283. - James Griffiths found out that curl would crash if the file you specify with
  8284. -o is shorter than the URL! This took some hours to fully hunt down, but it
  8285. is fixed now.
  8286. Daniel (5 December 2000)
  8287. - Jaepil Kim sent us makefiles that build curl using the free windows borland
  8288. compiler. The root makefile now accepts 'make borland' to build curl with
  8289. that compiler.
  8290. - Stefan Radman pointed out that the test makefiles didn't use the PERL
  8291. variable that the configure scripts figure out. Actually, you still need
  8292. perl in the path for the test suite to run ok.
  8293. - Rich Gray found numerous portability problems:
  8294. * The SCO compiler got an error on the getpass_r() prototype in getpass.h
  8295. since the curl one differed from the SCO one
  8296. * The HPUX compiler got an error because of how curl did the sigaction
  8297. stuff and used a define HPUX doesn't have (or need).
  8298. * A few more problems remain to be researched.
  8299. - Paul Harrington experienced a core dump using https. Not much details yet.
  8300. Daniel (4 December 2000)
  8301. - Jörn Hartroth fixed a problem with multiple URLs and -o/-O.
  8302. Version 7.5
  8303. Daniel (1 December 2000)
  8304. - Craig Davison gave us his updates on the VC++ makefiles, so now curl should
  8305. build fine with the Microsoft compiler on windows too.
  8306. - Fixed the libcurl versioning so that we don't ruin old programs when
  8307. releasing new shared library interfaces.
  8308. Daniel (30 November 2000)
  8309. - Renamed docs/README.curl to docs/MANUAL to better reflect what the document
  8310. actually contains.
  8311. Daniel (29 November 2000)
  8312. - I removed a bunch of '#if 0' sections from the code. They only make things
  8313. harder to follow. After all, we do have all older versions in the CVS.
  8314. Version 7.5-pre5
  8315. Daniel (28 November 2000)
  8316. - I filled in more error codes in the man page error code list that had been
  8317. lagging.
  8318. - James Griffiths mailed me a fine patch that introduces the CURLOPT_MAXREDIRS
  8319. libcurl option. When used, it'll prevent location following more than the
  8320. set number of times. It is useful to break out of endless redirect-loops.
  8321. Daniel (27 November 2000)
  8322. - Added two test cases for file://.
  8323. Daniel (22 November 2000)
  8324. - Added the libcurl CURLOPT_FILETIME setopt, when set it tries to get the
  8325. modified time of the remote document. This is a special option since it
  8326. involves an extra set of commands on FTP servers. (Using the MDTM command
  8327. which is not in the RFC959)
  8328. curl_easy_getinfo() got a corresponding CURLINFO_FILETIME to get the time
  8329. after a transfer. It'll return a zero if CURLOPT_FILETIME wasn't used or if
  8330. the time wasn't possible to get.
  8331. --head/-I used on a FTP server will now present a 'Last-Modified:' header
  8332. if curl could get the time of the specified file.
  8333. - Added the option '--cacert [file]' to curl, which allows a specified PEM
  8334. file to be used to verify the peer's certificate when doing HTTPS
  8335. connections. This has been requested, rather recently by Hulka Bohuslav but
  8336. others have asked for it before as well.
  8337. Daniel (21 November 2000)
  8338. - Numerous fixes the test suite has brought into the daylight:
  8339. * curl_unescape() could return a too long string
  8340. * on ftp transfer failures, there could be memory leaks
  8341. * ftp CWD could use bad directory names
  8342. * memdebug now uses the mprintf() routines for better portability
  8343. * free(NULL) removed when doing resumed transfers
  8344. - Added a bunch of test cases for FTP.
  8345. - General cleanups to make less warnings with gcc -Wall -pedantic.
  8346. - I made the tests/ftpserver.pl work with the most commonly used ftp
  8347. operations. PORT, PASV, RETR, STOR, LIST, SIZE, USER, PASS all work now. Now
  8348. all I have to do is integrate the ftp server doings in the runtests.pl
  8349. script so that ftp tests can be run the same way http tests already run.
  8350. Daniel (20 November 2000)
  8351. - Made libcurl capable of dealing with any-length URLs. The former limit of
  8352. 4096 bytes was a bit annoying when people wanted to use curl to really make
  8353. life tough on a web server. Now, the command line limit is the most annoying
  8354. but that can be circumvented by using a config file.
  8355. NOTE: there is still a 4096-byte limit on URLs extracted from Location:
  8356. headers.
  8357. - Corrected the spelling of 'resolve' in two error messages.
  8358. - Alexander Kourakos posted a bug report and a patch that corrected it! It
  8359. turned out that lynx and wget support lowercase environment variable names
  8360. where curl only looked for the uppercase versions. Now curl will use the
  8361. lowercase versions if they exist, but if they don't, it'll use the uppercase
  8362. versions.
  8363. Daniel (17 November 2000)
  8364. - curl_formfree() was added. How come no one missed that one before? I ran the
  8365. test suite with the malloc debug enabled and got lots of "nice" warnings on
  8366. memory leaks. The most serious one was this. There were also leaks in the
  8367. cookie handling, and a few errors when curl failed to connect and similar
  8368. things. More tests cases were added to cover up and to verify that these
  8369. problems have been removed.
  8370. - Mucho updated config file parser (I'm dead tired of all the bug reports and
  8371. weird behaviour I get on the former one). It works slightly differently now,
  8372. although I doubt many people will notice the differences. The main
  8373. difference being that if you use options that require parameters, they must
  8374. both be specified on the same line. With this new parser, you can also
  8375. specify long options without '--' and you may separate options and
  8376. parameters with : or =. It makes a config file line could look like:
  8377. user-agent = "foobar and something"
  8378. Parameters within quotes may contain spaces. Without quotes, they're
  8379. expected to be a single non-space word.
  8380. Had to patch the command line argument parser a little to make this work.
  8381. - Added --url as an option to allow the URL to be specified this way. It makes
  8382. way nicer config files. The previous way of specifying URLs in the config
  8383. file doesn't work anymore.
  8384. Daniel (15 November 2000)
  8385. - Using certain characters in usernames or passwords for HTTP authentication
  8386. failed. This was due to the mprintf() that had a silly check for letters,
  8387. and if they weren't isprint() they weren't outputed "as-is". This caused
  8388. passwords and usernames using '§' (for example) to fail.
  8389. Version 7.4.2
  8390. Daniel (15 November 2000)
  8391. - 'tests/runtests.pl' now sorts the test cases properly when 'all' is used.
  8392. Daniel (14 November 2000)
  8393. - I fell over the draft-ietf-ftpext-mlst-12.txt Internet Draft titled
  8394. "Extensions to FTP" that contains a defined way how the ftp command SIZE
  8395. could be assumed to work.
  8396. - Laurent Papier posted a bug report about using "-C -" and FTP uploading a
  8397. file that isn't prsent on the server. The server might then return a 550 and
  8398. curl will fail. Should it instead as Laurent Papier suggests, start
  8399. uploading from the beginning as a normal upload?
  8400. Daniel (13 November 2000)
  8401. - Fixed a crash with the followlocation counter.
  8402. - While writing test cases for the test suite, I discovered an old limitation
  8403. that prevented -o and -T to be used at the same time. I removed this
  8404. immediately as this has no relevance in the current libcurl.
  8405. - Chris Faherty fixed a free-twice problem in lib/file.c
  8406. - I fixed the perl http server problem in the test suite.
  8407. Version 7.4.2 pre4
  8408. Daniel (10 November 2000)
  8409. - I've (finally) started working on the curl test suite. It is in the new
  8410. tests/ directory. It requires sh and perl. There's a TCP server in perl and
  8411. most of the other stuff running a pretty simple shell script.
  8412. I've only made four test cases so far, but it proves the system can work.
  8413. - Laurent Papier noticed that curl didn't set TYPE when doing --head checks
  8414. for sizes on FTP servers. Some servers seem to return different sizes
  8415. depending on whether ASCII or BINARY is used!
  8416. - Laurent Papier detected that if you appended a FTP upload and everything was
  8417. already uploaded, curl would hang.
  8418. - Angus Mackay's getpass_r() in lib/getpass.c is now compliant with the
  8419. getpass_r() function it seems some systems actually have.
  8420. - Venkataramana Mokkapati detected a bug in the cookie parser and corrected
  8421. it. If the cookie was set for the full host name (domain=full.host.com),
  8422. the cookie was never sent back because of a faulty length comparison between
  8423. the set domain length and the current host name.
  8424. Daniel (9 November 2000)
  8425. - Added a configure check for gethostbyname in -lsocket (OS/2 seems to need
  8426. it). Added a check for RSAglue/rsaref for the cases where libcrypto is found
  8427. but libssl isn't. I haven't verified this fix yet though, as I have no
  8428. system that requires those libs to build.
  8429. Version 7.4.2 pre3
  8430. Daniel (7 November 2000)
  8431. - Removed perror() outputs from getpass.c. Angus Mackay also agreed to a
  8432. slightly modified license of the getpass.c file as the prototype was changed.
  8433. Daniel (6 November 2000)
  8434. - Added possibility to set a password callback to use instead of the built-in.
  8435. They're controled with curl_easy_setopt() of course, the tags are
  8436. CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA.
  8437. - Used T. Bharath's thinking and fixed the timers that showed terribly wrong
  8438. times when location: headers were followed.
  8439. - Emmanuel Tychon discovered that curl didn't really like user names only in
  8440. the URL. I corrected this and I also fixed the since long living problem
  8441. with URL encoded user names and passwords in the URLs. They should work now.
  8442. Daniel (2 November 2000)
  8443. - When I added --interface, the new error code that was added with it was
  8444. inserted in the wrong place and thus all error codes from 35 and upwards got
  8445. increased one step. This is now corrected, we're back at the previous
  8446. numbers. All new exit codes should be added at the end.
  8447. Daniel (1 November 2000)
  8448. - Added a check for signal() in the configure script so that if sigaction()
  8449. isn't present, we can use signal() instead.
  8450. - I'm having a license discussion going on privately. The issue is yet again
  8451. GPL-licensed programs that have problems with MPL. I am leaning towards
  8452. making a kind of dual-license that will solve this once and for all...
  8453. Daniel (31 October 2000)
  8454. - Added the packages/ directory. I intend to let this contain some docs and
  8455. templates on how to generate custom-format packages for various platforms.
  8456. I've now removed the RPM related curl.spec files from the archive root.
  8457. Daniel (30 October 2000)
  8458. - T. Bharath brought a set of patches that bring new functionality to
  8459. curl_easy_getinfo() and curl_easy_setopt(). Now you can request peer
  8460. certificate verification with the *setopt() CURLOPT_SSL_VERIFYPEER option
  8461. and then use the CURLOPT_CAINFO to set the certificate to verify the remote
  8462. peer against. After an such an operation with a verification request, the
  8463. *_getinfo() option CURLINFO_SSL_VERIFYRESULT will return information about
  8464. whether the verification succeeded or not.
  8465. Daniel (27 October 2000)
  8466. - Georg Horn brought us a splendid patch that solves the long-standing
  8467. annoying problem with timeouts that made curl exit with silly exit codes
  8468. (which as been commented out lately). This solution is sigaction() based and
  8469. of course then only works for unixes (and only those unixes that actually
  8470. have the sigaction() function).
  8471. Daniel (26 October 2000)
  8472. - Björn Stenberg supplied a patch that fixed the flaw mentioned by Kevin Roth
  8473. that made the password get echoed when prompted for interactively. The
  8474. getpass() function (now known as my_getpass()) was also fixed to not use any
  8475. static buffers. This also means we cannot use the "standard" getpass()
  8476. function even for those systems that have it, since it isn't thread-safe.
  8477. - Kevin Roth found out that if you'd write a config file with '-v url', the
  8478. url would not be used as "default URL" as documented, although if you wrote
  8479. it 'url -v' it worked! This has been corrected now.
  8480. - Kevin Roth's idea of using multiple -d options on the same command line was
  8481. just brilliant, and I couldn't really think of any reason why we shouldn't
  8482. support it! The append function always append '&' and then the new -d
  8483. chunk. This enables constructs like the following:
  8484. curl -d name=daniel -d age=unknown foobarsite.com
  8485. Daniel (24 October 2000)
  8486. - I fixed the lib/memdebug.c source so that it compiles on Linux and other
  8487. systems. It will be useful one day when someone else but me wants to run the
  8488. memory debugging system.
  8489. Daniel (23 October 2000)
  8490. - I modified the maketgz and configure scripts, so that the configure script
  8491. will fetch the version number from the include/curl/curl.h header files, and
  8492. then the maketgz doesn't have to rebuild the configure script when I build
  8493. release-archives.
  8494. - Björn Stenberg and Linus Nielsen correctly pointed out that curl was silly
  8495. enough to not allow @-letters in passwords when they were specified with the
  8496. -u or -U flags (CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD). This also
  8497. suggests that curl probably should url-decode the password piece of an URL
  8498. so that you could pass an encoded @-letter there...
  8499. Daniel (20 October 2000)
  8500. - Yet another http server barfed on curl's request that include the port
  8501. number in the Host: header always. I now only include the port number if it
  8502. isn't the default (80 for HTTP, 443 for HTTPS). www.perl.com turned out to
  8503. run one of those nasty servers.
  8504. - The PHP4 module for curl had problems with referer that seems to have been
  8505. corrected just yesterday. (Sterling Hughes of the PHP team confirmed this)
  8506. Daniel (17 October 2000)
  8507. - Vladimir Oblomov reported that the -Y and -y options didn't work. They
  8508. didn't work for me either. This once again proves we should have that test
  8509. suite...
  8510. - I finally changed the error message libcurl returns if you try a https://
  8511. URL when the library wasn't build with SSL enabled. It will now return this
  8512. error:
  8513. "libcurl was built with SSL disabled, https: not supported!"
  8514. I really hope it will make it a bit clearer to users where the actual
  8515. problem lies.
  8516. Version 7.4.1
  8517. Daniel (16 October 2000)
  8518. - I forgot to remove some of the malloc debug defines from the makefiles in
  8519. the release archive (of course).
  8520. Version 7.4
  8521. Daniel (16 October 2000)
  8522. - The buffer overflow mentioned below was posted to bugtraq on Friday 13th.
  8523. Daniel (12 October 2000)
  8524. - Colin Robert Phipps elegantly corrected a buffer overflow. It could be used
  8525. by an evil ftp server to crash curl. I took the opportunity of replacing a
  8526. few other sprintf()s into snprintf()s as well.
  8527. Daniel (11 October 2000)
  8528. - Found some more memory leaks. This new simple memory debugger has turned out
  8529. really useful!
  8530. Version 7.4 pre6
  8531. Daniel (9 October 2000)
  8532. - Florian Koenig pointed out that the bool typedef in the curl/curl.h include
  8533. file was breaking PHP 4.0.3 compiling. The bool typedef is not used in the
  8534. public interface and was wrongly inserted in that header file.
  8535. - Jörg Hartroth corrected a minor memory leak in the src/urlglob.c stuff. It
  8536. didn't harm anyone since the memory is free()ed on exit anyway.
  8537. - Corrected the src/main.c. We use the _MPRINTF_REPLACE #define to use our
  8538. libcurl-printf() functions. This gives us snprintf() et al on all
  8539. platforms. I converted the allocated useragent string to one that uses a
  8540. local buffer.
  8541. - I've set an #if 0 section around the Content-Transfer-Encoding header
  8542. generated in lib/formdata.c. This will hopefully make curl do more
  8543. PHP-friendly multi-part posts.
  8544. Version 7.4 pre5
  8545. Daniel (9 October 2000)
  8546. - Nico Baggus found out that curl's ability to force a ASCII download when
  8547. using FTP was no longer working! I corrected this. This problem was probably
  8548. introduced when I redesigned libcurl for version 7.
  8549. - Georg Horn provided a source example that proved a memory leak in libcurl.
  8550. I added simple memory debugging facilities and now we can make libcurl log
  8551. all memory fiddling functions. An additional perl script is used to analyze
  8552. the output logfile and to match malloc()s with free()s etc. The memory leak
  8553. Georg found turned out to be the main cookie struct that cookie_cleanup()
  8554. didn't free! The perl script is named memanalyze.pl and it is available in
  8555. the CVS respository, not in the release archive.
  8556. Daniel (8 October 2000)
  8557. - Georg Horn found a GetHost() problem. It turned out it never assigned the
  8558. pointer in the third argument properly! This could make a crash, or at best
  8559. a memory leak!
  8560. Version 7.4 pre4
  8561. Daniel (6 October 2000)
  8562. - Is the -F post following the RFC 1867 spec? We had this dicussion on the
  8563. mailing list since it appears curl can't post -F form posts to a PHP
  8564. receiver... I've been in touch with the PHP developers about this.
  8565. - Domenico Andreoli found out that the long option '--proxy' wasn't working
  8566. anymore! The option parser got confused when I added the --proxytunnel for
  8567. 7.3. This was indeed a very old flaw that hasn't turned up until now...
  8568. - Jörn Hartroth provided patches, updated makefiles and two new files for DLL
  8569. stuff on win32. He also pointed out that lib source files were compiled with
  8570. -I../src which isn't only wrong but plain stupid!
  8571. - Troels Walsted Hansen fixed a problem with HTTP resume. Curl previously used
  8572. a local variable badly, that could lead to crashes.
  8573. Version 7.4 pre3
  8574. Daniel (4 October 2000)
  8575. - More docs written. The curl_easy_getinfo.3 man page is now pretty accurate,
  8576. as is the -w section in curl.1. I added two options to enable the user to
  8577. get information about the received headers' size and the size of the HTTP
  8578. request. T. Bharath requested them.
  8579. Daniel (3 October 2000)
  8580. - Corrected a sever free() before use in the new add_buffer_send()! ;-)
  8581. Version 7.4 pre2
  8582. Daniel (3 October 2000)
  8583. - Jason S. Priebe sent me patches that changed the way curl issues HTTP
  8584. requests. The entire request is now issued in one single shot. It didn't do
  8585. this previously, and it has turned out that since the common browsers do it
  8586. this way, some sites have turned out to work with browsers but not with
  8587. curl! Although this is not a client-side problem, we want to be able to
  8588. fully emulate browsers, and thus we have now adjusted the networking layer
  8589. to slightly more appear as a browser. I adjusted Jason's patch, the faults
  8590. are probably mine.
  8591. Daniel (2 October 2000)
  8592. - Anyone who ever uploaded data with curl on a slow link has noticed that the
  8593. progess meter is updated very infrequently. That is due to the large buffer
  8594. size curl is using. It reads 50Kb and sends it, updates the progress meter
  8595. and loops. 50Kb is very much on a slow link, although it is pretty neat to
  8596. use on a fast one.
  8597. I've now made an adjustment that makes curl use a 2Kb buffer for uploads to
  8598. start with. If curl's average upload speed is faster than buffer size bytes
  8599. per second, curl will increase the used buffer size up to max 50Kb. It
  8600. should make the progress meter work better.
  8601. Version 7.4 pre1
  8602. Daniel (29 September 2000)
  8603. - Ripped out the -w stuff from the library and put in the curl tool. It gets
  8604. all the relevant info from the library using the new curl_easy_getinfo()
  8605. function.
  8606. - brad at openbsd.org mailed me a patch that corrected my kerberos mistake and
  8607. removed a compiler warning from hostip.c that OpenBSD people get.
  8608. Daniel (28 September 2000)
  8609. - Of course (I should probably get punished somehow) I didn't properly correct
  8610. the #include lines for the base64 stuff in the kerberos sources in the just
  8611. released 7.3 package. They still include the *_krb.h files! Now, the error
  8612. is sooo very easy to spot and fix so I won't bother with a quick bug fix
  8613. release. I'll post a patch whenever one is needed instead. It'll be
  8614. available in the CVS in a few minutes anyway.
  8615. Version 7.3
  8616. Daniel (28 September 2000)
  8617. - Removed the base64_krb.[ch] files. They've now replaced the former
  8618. base64.[ch] files.
  8619. Daniel (26 September 2000)
  8620. - Updated some docs.
  8621. - I changed the OpenSSL fix to work with older versions as well. The posted
  8622. patch was only working with 0.9.6 and no older ones.
  8623. Version 7.3-pre8
  8624. Daniel (25 September 2000)
  8625. - Erdmut Pfeifer informed us that curl didn't build with OpenSSL 0.9.6 and
  8626. showed us what needed to get patched in order to make it build properly
  8627. again.
  8628. - Dirk Kruschewski found a bug in the cookie parser. I made an alternative
  8629. approach to the solution Dirk himself suggested. The bug made a cookie
  8630. header that didn't end with a trailing semicolon to not get parsed.
  8631. - I've marked -c and -t deprecated now. If you use any of them, curl will tell
  8632. you to use "-C -" or "-T -" instead. I don't think occupying two letters for
  8633. nearly identical functions is good use. Also, -T - kind of follows the curl
  8634. tradition of using - for stdin where a file name is expected.
  8635. Daniel (23 September 2000)
  8636. - Martin Hedenfalk provided the patch that finally made the krb4 ftp upload
  8637. work!
  8638. Daniel (21 September 2000)
  8639. - The kerberos code is not quite thread-safe yet. There are a few more globals
  8640. that need to be take care of. Let's get the upload working first!
  8641. Daniel (20 September 2000)
  8642. - Richard Prescott solved another name lookup buffer size problem. I took this
  8643. opportunity to rewrite the GetHost() function. With these large buffer
  8644. sizes, I think keeping them as local arrays quickly turn ugly. I now use
  8645. malloc() to get the buffer memory. Thanks to this, I now can realloc() to a
  8646. large buffer in case of demand (errno == ERANGE) in case a solution like
  8647. that would become necessary. I still want to avoid that kind of nastiness.
  8648. - Tried to compile and run curl on Linux for alpha and FreeBSD for alpha. Went
  8649. as smooth as it could.
  8650. - Added a docs/examples directory with two tiny example sources that show how
  8651. to use libcurl. I hope users will supply me with more useful examples
  8652. further on.
  8653. - Applied a patch by Jörn Hartroth to no longer use the word 'inteface' in the
  8654. config struct in the src/main.c file since certain compilers have that word
  8655. "reservered". I figure that is some kind of C++ decease.
  8656. - Updated the curl.1 man page with --interface and --krb4.
  8657. - Modified the base64Encode() function to work like the kerberos one, so that
  8658. I could remove the use of that. There is no need for *two* base64 encoding
  8659. functions! ;-)
  8660. Version 7.3pre5
  8661. Daniel (19 September 2000)
  8662. - The kerberos4-layer source code that is much "influenced" by the original
  8663. krb4 source code, through yafc into curl, was using quite a lot of global
  8664. variables. libcurl can't work properly with globals like that why I had to
  8665. clean up almost every function in the new security.c to make them use
  8666. connection specific variables instead of the globals. I just hope I didn't
  8667. destroy anything now... :-) configure updated, version string now reflects
  8668. krb4 built-in. It almost works now. Only uploads are still being naughty.
  8669. Version 7.3pre3
  8670. Daniel (18 September 2000)
  8671. - Martin Hedenfalk supplied a major patch that introduces krb4-ftp support to
  8672. curl. Martin is the primary author of the ftp client named yafc and he did
  8673. not hesitate to help us implement this when I asked him. Many and sincere
  8674. thanks to a splendid effort. It didn't even take many hours!
  8675. - Stephen Kick supplied a big patch that introduces the --interface flag to
  8676. the curl tool and CURLOPT_INTERFACE for libcurl. It allows you to specify an
  8677. outgoing interface to use for your request. This may not work on all
  8678. platforms. This needs testing.
  8679. - Richard Prescott noticed that curl on Tru64 unix could core dumped if the
  8680. name didn't resolve properly. This was due to the GetHost() function not
  8681. returning an error even though it failed on some platforms!
  8682. Daniel (15 September 2000)
  8683. - Updated all sorts of documents in regards to the new proxytunnel support.
  8684. Version 7.3pre2
  8685. Daniel (15 September 2000)
  8686. - Kai-Uwe Rommel pointed out a problem in the httpproxytunnel stuff for ftp.
  8687. Adjusted it. Added better info message when setting up the tunnel and the
  8688. pasv message when doing the second connect.
  8689. Version 7.3pre1
  8690. Daniel (15 September 2000)
  8691. - libcurl now allows "httpproxytunnel" to an arbitrary host and port name. The
  8692. second connection on ftp needed that.
  8693. - TheArtOfHTTPScripting was corrected all over. I both type and spell really
  8694. bad at times!
  8695. Daniel (14 September 2000)
  8696. - -p/--proxytunnel was added to 'curl'. It uses the new
  8697. CURLOPT_HTTPPROXYTUNNEL libcurl option that allows "any" protocol to tunnel
  8698. through the specified http proxy. At the moment, this should work with ftp.
  8699. Daniel (13 September 2000)
  8700. - Jochen Schaeuble found that file:// didn't work as expected. Corrected this
  8701. and mailed the patch to the mailing list.
  8702. Daniel (7 September 2000)
  8703. - I changed the #define T() in curl.h since it turned out it wasn't really
  8704. a good symbol to use (when you compiled PHP with curl as a module, that
  8705. define collided with some IMAP define or something). This was posted to the
  8706. PHP bug tracker.
  8707. - I added extern "C" stuff in two header files to better allow libcurl usage
  8708. in C++ sorces. Discussions on the libcurl list with Danny Horswell lead to
  8709. this.
  8710. Version 7.2.1
  8711. Daniel (31 August 2000)
  8712. - Albert Chin-A-Young fixed the configure script *again* and now it seems to
  8713. detect Linux name resolving properly! (heard that before?)
  8714. - Troels Walsted Hansen pointed out that downloading a file containing the
  8715. letter '+' from an ftp server didn't work. It did work from HTTP though and
  8716. the reason was my lame URL decoder.
  8717. - I happened to notice that -I didn't at all work on ftp anymore. I corrected
  8718. that.
  8719. Version 7.2
  8720. Daniel (30 August 2000)
  8721. - Understanding AIX is a hard task. I believe I'll never figure out why they
  8722. solve things so differently from the other unixes. Now, I'm left with the
  8723. AIX 4.3 run-time warnings about duplicate symbols that according to this
  8724. article (http://www.geocrawler.com/archives/3/405/1999/9/0/2593428/) is a
  8725. libtool flaw. I tried the mentioned patch, although that stops the linking
  8726. completely.
  8727. So, if I select to ignore the ld warnings there are compiler warnings that
  8728. fill the screen pretty bad when curl compiles. It turns out that if I want
  8729. to '#include <arpa/inet.h>', I can get tid of the warnings by include the
  8730. following three include files before that one:
  8731. #include <net/if_dl.h>
  8732. #include <sys/mbuf.h>
  8733. #include <netinet/if_ether.h>
  8734. Now, is it really sane to add those include files before arpa/inet.h in all
  8735. the source files that include it?
  8736. Thanks to Albert Chin-A-Young at thewrittenword.com who gave me the AIX
  8737. login to try everything on.
  8738. Daniel (24 August 2000)
  8739. - Jan Schmidt supplied us a new VC6 makefile for Windows as the previous one
  8740. was not up to date but lacked several object files.
  8741. - More work on the naming.
  8742. - Albert Chin-A-Young provided a configure-check for large file support, as
  8743. some systems seem to need that for them to work. Had to change the position
  8744. for the config.h include file in every .c file in the libcurl dir...
  8745. - As suggested on the mailing list (by Troy Engel), I did use a --data-binary
  8746. option instead of the messy way I've left described below. It seems to
  8747. work. The libcurl fix remained the same as yesterday.
  8748. Daniel (23 August 2000)
  8749. - Back on the -d stripping newlines thing. The 'plain post' thing was added
  8750. when I had no thought of that one could actually post binary data with
  8751. it. Now, I have to add this functionality in a graceful manner and I think
  8752. I've managed to come up with a way: '-d @file;binary' will thus post the
  8753. file binary, exactly as its contents are. It is implemented with a new
  8754. *setopt() option (CURLOPT_POSTFIELDSIZE) to set the postfield size, since
  8755. libcurl can't strlen() the data in these cases.
  8756. - Albert Chin-A-Young made some very serious efforts and all the name
  8757. resolving problems seem to have been sorted out now on all the platforms
  8758. that previously showed them. I'll make another release now anyday because of
  8759. this.
  8760. - The FAQ was much enhanced when it comes to the licensing issues thanks to
  8761. Bjorn Reese.
  8762. Daniel (21 August 2000)
  8763. - Rick Welykochy pointed out a problem when you use -d to post and you want to
  8764. keep the newlines, as curl strips them off as a bonus before posting...
  8765. This needs to be addressed.
  8766. Version 7.1.1
  8767. Daniel (21 August 2000)
  8768. - Got more people involved in the gethostbyname_r() mess. Caolan McNamara sent
  8769. me configure-code that turned out to be very similar to my existing tests
  8770. which only make me more sure I'm on the right path. I changed the order of
  8771. the tests slightly, as it seems that some compilers don't yell error if a
  8772. function is used with too many parameters. Thus, the first tested function
  8773. will seem ok... Let's hope more compilers think of too-few parameters as bad
  8774. manners, as we're now trying the functions in that order; fewer first. I
  8775. should also add that Lars Hecking mailed me and volunteered to run tests on
  8776. a few odd systems. Coalan is keeping his work over at
  8777. http://www.csn.ul.ie/~caolan/publink/gethostbyname_r/. Might be handy in the
  8778. future as well.
  8779. Daniel (18 August 2000)
  8780. - I noticed I hadn't increased the name lookup buffer in lib/ftp.c. I don't
  8781. think this is the reason for the continued trouble though.
  8782. Daniel (17 August 2000)
  8783. - Fred Noz corrected my stupid mistakes in the gethostbyname_r() fluff. It
  8784. should affect some AIX, Digital Unix and HPUX 10 systems.
  8785. Daniel (15 August 2000)
  8786. - Mathieu Legare compiled and build 7.1 without errors on both AIX 4.2 as well
  8787. as AIX 4.3. Now why did problems occur before?
  8788. - Fred Noz reported a -w/--write-out bug that caused it to malfunction when
  8789. used combined with multiple URL retrievales. All but the first display got
  8790. screwed up!
  8791. Daniel (11 August 2000)
  8792. - Jason Priebe and an anonymous friend found some host names the Linux version
  8793. of curl could not resolve. It turned out the buffer used to retrieve that
  8794. information was too small. Fixed. One could argue about the usefulness of
  8795. not having the slightest trace of a man page for gethostbyname_r() on my
  8796. Linux Redhat installation...
  8797. Daniel (10 August 2000)
  8798. - Balaji S Rao was first in line to note the missing possibility to replace
  8799. the Content-Type: and Content-Length: headers when doing -d posts. I added
  8800. the possibility just now. It seems some people wants to do standard posts
  8801. using custom Content-Types.
  8802. Daniel (8 August 2000)
  8803. - Mike Dowell correctly discovered that curl did not approve of URLs with no
  8804. user name but password. As in 'http://:foo@haxx.se'. I corrected this.
  8805. Version 7.1
  8806. Daniel (7 August 2000)
  8807. - My AIX 4 fix does not work. I need help from a AIX 4 hacker.
  8808. - I added my new document in the docs directory. It is aimed to become a sort
  8809. of tutorial on how to do HTTP scripting with curl.
  8810. Daniel (4 August 2000)
  8811. - Working with Rich Gray on compiling curl for lots of different platforms.
  8812. My fix for AIX 3.2 was not good enough and was slightly changed, I had to
  8813. move an include file before another, as is now described in the source.
  8814. AIX 4.2 (4.X?) has different gethostbyname_r() and gethostbyaddr_r()
  8815. functions that the configure script didn't check for and thus the compile
  8816. broke with an error. I have now changed the gethostbyname_r() check in the
  8817. configure file to support all three versions of both these functions. My
  8818. implementation that uses the AIX-style is though not yet verified and I may
  8819. get problems to fix it if it turns out to bug since I don't have access to
  8820. any system using that.
  8821. For problems like that, I made the configure script allow --disable-thread
  8822. to completely switch off the check for threadsafe versions of a few
  8823. functions and thus go with the "good old versions" that tend to work
  8824. although will break thread-safeness for libcurl. Most people won't use
  8825. libcurl for other things than curl though, and curl doesn't need a
  8826. thread-safe lib.
  8827. - Working on my big tutorial about HTTP scripting with curl.
  8828. Daniel (1 August 2000)
  8829. - Rich Gray spotted a problem in src/setup.h caused by a #define strequal()
  8830. that was just a left-over from passed times. The strequal() is now a true
  8831. function supplied by libcurl for a portable case insensitive string
  8832. comparison. I added the prototypes in include/curl.h and removed the
  8833. now obsolete #define.
  8834. - Igor Khristophorov made a fix to allow resumed download from Sun's
  8835. JavaWebServer/1.1.1. It seems that their server sends bad Content-Range
  8836. headers.
  8837. - The makefiles forced a static library build, which is bad since we now use
  8838. libtool and thus have excellent shared library support! Albert Chin-A-Young
  8839. found out.
  8840. Version 7.0.11beta
  8841. Daniel (1 August 2000)
  8842. - Albert Chin-A-Young pointed out that 'make install' did not properly create
  8843. the header include directory, why it failed to install the header files as
  8844. it should. Automake isn't really equipped to deal with subdirectories
  8845. without Makefiles in any nice way. I had to run ahead and add Makefiles in
  8846. both include and include/curl before I managed to create a top-level
  8847. makefile that succeeds in install everything properly!
  8848. - Ok, no more "features" added now. Let's just verify that there's no major
  8849. flaws added now.
  8850. Daniel (31 July 2000)
  8851. - Both Jeff Schasny and Ketil Froyn asked me how to tell curl not to send one
  8852. of those internally generated headers. They didn't settle with the blank
  8853. ones you could tell curl to use. I rewrote the header-replace stuff a
  8854. little. Now, if you replace an internal header with your own and that new
  8855. one is a blank header you will only remove the internal one and not get any
  8856. blank. I couldn't figure out any case when you want that blank header.
  8857. Daniel (29 July 2000)
  8858. - It struck me that the lib used localtime() which is not thread-safe, so now
  8859. I use localtime_r() in the systems that has it.
  8860. - I went through this entire document and removed all email addresses and left
  8861. names only. I've really made an effort to always note who brought be bug
  8862. reports or fixes, but more and more people ask me to remove the email
  8863. addresses since they become victims for spams this way. Gordon Beaton got me
  8864. working on this.
  8865. Daniel (27 July 2000)
  8866. - Jörn Hartroth found out that when you specified a HTTP proxy in an
  8867. environment variable and used -L, curl failed in the second fetch. I
  8868. corrected this problem and posted a patch to the list. No need for an extra
  8869. beta release just for this.
  8870. Version 7.0.10beta
  8871. Daniel (27 July 2000)
  8872. - So, libtool replaced two of my files with symbolic links and I forgot to add
  8873. the two new libtool files to the release archive (and they were added as
  8874. symlinks as well!) This of course lead to that the configure script failed
  8875. on 7.0.9...
  8876. Version 7.0.9beta
  8877. Daniel (25 July 2000)
  8878. - Kristian Köhntopp <kris at koehntopp.de> brought a fix that makes libcurl
  8879. libtoolified, just as we've wanted for a while now. He also made the
  8880. recently added man pages get installed properly on 'make install' and some
  8881. other nice cleanups.
  8882. - In a discussion with Eetu Ojanen it struck me that if we use curl to get a
  8883. page using a password, and that page then sends a Location: to another
  8884. server that curl follows, curl will send the user name and password to that
  8885. server as well.
  8886. Now, I'll never be able to make curl do Location: following all that perfect
  8887. and you're all sooner or later required to write a script to do several
  8888. fetches when you're doing advanced stuff, but now I've modified curl to at
  8889. least *only* send the user name and password to the original server. Which
  8890. means that if get a page from server A with a password, that forwards curl
  8891. to server B, curl won't use the password there. If server B then forwards
  8892. curl back to server A again, the password will be used again.
  8893. This is not a perfect implementation, as in a browser case it would only use
  8894. the password if the left-prefix of the first path is the same. I just think
  8895. that this fix prevents a somewhat lurky "security hole".
  8896. As a side-note in this subject: HTTP passwords are sent in cleartext and
  8897. will never be considered to be safe or secure. Use HTTPS for that.
  8898. - As discussed on the mailing list, I converted the FTP response reading
  8899. function into using select() which then allows timeouts (even under win32!)
  8900. if the command-reply session gets too slow or dies completely. I made a
  8901. default timeout on 3600 seconds unless anything else is specified, since I
  8902. don't think anyone wants to wait more than that for a single character to
  8903. get received...
  8904. - Torsten Foertsch <torsten.foertsch at gmx.net> brought a set of fixes for
  8905. the rfc1867 form posts. He introduced 'name=<file' which brings a means to
  8906. suuply very large text chunks read from the given file name. It differs from
  8907. 'name=@file' in the way that this latter thing is marked in the uploaded
  8908. contents as a file upload, while the first is just text (as in a input or
  8909. textarea field). Torsten also corrected a bug that would happen if you used
  8910. %s or similar in a -F file name.
  8911. - As discovered by Nico Baggus <Nico.Baggus at mail.ing.nl>, when transferring
  8912. files to/from FTP using type ASCII curl should not expect the transfer to be
  8913. the exact size reported by the server as the file size. Since ASCII may very
  8914. well mean that the content is translated while transfered, the final size
  8915. may very well differ. Therefor, curl now ignores the file size when doing
  8916. ASCII transfers in FTP.
  8917. Daniel (24 July 2000)
  8918. - Added CURLOPT_PROXYPORT to the curl_easy_setopt() call to allow the proxy
  8919. port number to be set separately from the proxy host name.
  8920. - Andrew <andrew at ugh.net.au> pointed out a netrc manual bug.
  8921. - The FTP transfer code now accepts a 250-code as well as the previously
  8922. accepted 226, after a successful file transfer. Mohan <mnair at
  8923. evergreen-funds.com> pointed this out.
  8924. - The check for *both* nsl and socket was never added in the v7 configure.in
  8925. when I moved the main branch. I re-added that check to configure.in. This was
  8926. discovered by Rich Gray.
  8927. - Howard, Blaise <Blaise.Howard at factiva.com> pointed out a missing free() in
  8928. curl_disconnect() which of course meant libcurl ate memory.
  8929. - Brian E. Gallew noted that the HTTP 'Host:' header curl sent did not
  8930. properly include the port number if non-default ports were used. This should
  8931. now have been fixed.
  8932. - HTTP connect errors now return errors earlier. This was most notably causing
  8933. problems when the HTTPS certificate had problems and later caused a crash.
  8934. Many thanks to Gregory Nicholls <gnicholls at level8.com> for discovering
  8935. and suggesting a fix...
  8936. Daniel (21 June 2000)
  8937. - After a "bug report" I received where the user was using both -F and -I in a
  8938. HTTP request (it severly confused the library I should add), I added some
  8939. checks to src/main.c that prevents setting more than one HTTP request
  8940. command, no matter what the user wants! ;-)
  8941. Version 7.0.8beta
  8942. Daniel (20 June 2000)
  8943. - I did a major replace in many files to use the new curl domain haxx.se
  8944. instead of the previous one.
  8945. - As Eetu Ojanen suggested, I finally took the step and now libcurl no longer
  8946. makes a POST after it has followed a location. When the initial POST has
  8947. been done, it'll turned into a GET for the further requests. This is only
  8948. interesting when using -L/--location *and* doing a POST at the same time.
  8949. While messing with this, I added another weird feature I call 'auto
  8950. referer'. If you append ';auto' to the right of a given referer string (or
  8951. only use that string as referer), libcurl will automatically set the
  8952. previoud URL as refered when it follows a Location: and gets a succeeding
  8953. document.
  8954. - My hero Rich Gray found the very obscure FTP bug that happened to him only
  8955. when passing through a particular firewall and using the PORT command. It
  8956. turned out that PORT was the only command in the lib/ftp.c source that
  8957. didn't send a proper \r\n sequence but instead used the faulty \n which as
  8958. it seemed is supported by most major ftp servers... :-O
  8959. Version 7.0.7beta
  8960. Daniel (16 June 2000)
  8961. - I had avoided this long enough now, so I moved the alternative progress bar
  8962. stuff from the lib and added it to the client code. This is now using the
  8963. recently added progress callback and it seems to work pretty much like
  8964. before. Since it is only one progress bar and you and download and upload at
  8965. the same time, this bar shows the combined progress of both directions. This
  8966. code was just ported from the old place to this, Lars is still our saviour!
  8967. ;-) This also made the documentation more accurate since I never removed
  8968. this function from any docs! Although I now removed the CURLOPT_PROGRESSMODE
  8969. from the library since the lib has only one internal progress meter and it
  8970. will never get another. It is although likely that the internal one also
  8971. will be moved to the client code in the future (when I have other means of
  8972. getting the writeout data and move that too to the client).
  8973. - I took the opportunity to verify that standard progress meter works and I
  8974. found out it didn't get inited properly. Grrr. I corrected that as well.
  8975. Daniel (15 June 2000)
  8976. - I thought I'd better verify that the -F option still works in v7 and of
  8977. course it didn't... :-/ Anyway, I had the problems I could discover
  8978. corrected. About one month of beta testing and not a single person has used
  8979. this feature with v7?
  8980. - Björn correctly pointed out that the --progress-bar still doesn't work in
  8981. v7. Hm.
  8982. Daniel (14 June 2000)
  8983. - Tim Tassonis discovered that curl 7 didn't handle normal http POST as it
  8984. should. I corrected this.
  8985. Version 7.0.6beta
  8986. Daniel (14 June 2000)
  8987. - Björn Stenberg pointed out several problems (related to win32 compiling):
  8988. lib/strequal.c had a bad #ifdef for one of the string comparisons (win32)
  8989. src/main.c had several minor problems
  8990. lib/makefile.m32 had getpass.[co] twice
  8991. src/config-win32.h lacked the HAVE_FCNTL_H define
  8992. both config-win32.h files now only set the HAVE_UNISTD_H define if the
  8993. define MINGW32 is set, and I modified src/makefile.m32 and lib/makefile.m32
  8994. to set it.
  8995. Version 7.0.5beta
  8996. Daniel (14 June 2000)
  8997. - Applied Luong Dinh Dung's comments about a few win32 compile problems.
  8998. - Applied Björn Stenberg's suggested fix that turns the win32 stdout to
  8999. binary. It won't do it if the -B / --use-ascii option is used. That option
  9000. is now an extended version of the previous -B /--ftp--ascii. The flag was
  9001. already in use be the ldap as well so the new name fits pretty good. The
  9002. libcyrl CURLOPT_TRANSFERTEXT was also introduced as an alias to the now
  9003. obsolete CURLOPT_FTPASCII. Can't verify this fix myself as I have no win32
  9004. compiler around.
  9005. Daniel (13 June 2000)
  9006. - Luong Dinh Dung <dung at sch.bme.hu> found a problem in curl_easy_cleanup()
  9007. since it free()ed the main curl struct *twice*. This is now corrected.
  9008. Daniel (9 June 2000)
  9009. - Updated the RESOURCES file, added a README.win32 file.
  9010. Daniel (8 June 2000)
  9011. - So I finally added the progress callback to the *setopt() options and it
  9012. should work now. I don't have the energy to write any test program for it
  9013. right now.
  9014. - Made the callback function typedefs public in curl/curl.h for comfort. Just
  9015. in case anyone wanna fiddle with such pointers.
  9016. - Updated the curl_easy_setopt() man page accordingly.
  9017. Version 7.0.4beta
  9018. Daniel (2 June 2000)
  9019. - I noticed that when doing Location: following, we lost custom headers in all
  9020. but the first request.
  9021. - Removed the 'HttpPost' struct and moved the header stuff to the more generic
  9022. curl_slist.
  9023. - Added some better slist-cleanups in src/main.c
  9024. Version 7.0.3beta
  9025. Daniel (31 May 2000)
  9026. - So I discovered that I released the 7.0.2beta without it being able to
  9027. compile under Linux. gethostbyname_r() and gethostbyaddr_r() turned out to
  9028. feature a different amount of arguments on different systems so I had to add
  9029. a configure check for this and adjust the code slightly.
  9030. Version 7.0.2beta
  9031. Daniel (29 May 2000)
  9032. - Corrected the bits.* assignments when using CURLOPT options that only
  9033. toggles one of those bits.
  9034. - Applied the huge patches from David LeBlanc <dleblanc at qnx.com> that add
  9035. usage of the gethostbyname_r() and similar functions in case they're around,
  9036. since that make libcurl much better threadsafe in many systems (such as
  9037. solaris). I added the checks for these functions to the configure script.
  9038. I can't explain why, but the inet_ntoa_r() function did not appear in my
  9039. Solaris include files, I had to add my own include file for this for now.
  9040. Daniel (22 May 2000)
  9041. - Jörn Hartroth brought me fixes to make the win32 version compile properly as
  9042. well as a rename of the 'interface' field in the urldata struct, as it seems
  9043. to be reserved in some gcc versions!
  9044. - Rich Gray struck back with yet some portability reports. Data General DG/UX
  9045. needed a little fix in lib/ldap.c since it doesn't have RTLD_GLOBAL defined.
  9046. More fixes are expected as a result of Richies very helpful work.
  9047. Version 7.0.1beta
  9048. Daniel (21 May 2000)
  9049. - Updated lots of #defines, enums and variable type names in the library. No
  9050. more weird URG or URLTAG prefixes. All types and names should be curl-
  9051. prefixed to avoid name space clashes. The FLAGS-parameter to the former
  9052. curl_urlget() has been converted into a bunch of flags to use in separate
  9053. setopt calls. I'm still focusing on the easy-interface, as the curl tool is
  9054. now using that.
  9055. - Bjorn Reese has provided me with an asynchronous name resolver that I plan
  9056. to use in upcoming versions of curl to be able to gracefully timeout name
  9057. lookups.
  9058. Version 7.0beta
  9059. Daniel (18 May 2000)
  9060. - Introduced LIBCURL_VERSION_NUM to the curl.h include file to better allow
  9061. source codes to be dependent on the lib version. This define is now set to
  9062. a dexadecimal number, with 8 bits each for major number, minor number and
  9063. patch number. In other words, version 1.2.3 would make it 0x010203. It also
  9064. makes a larger number a newer version.
  9065. Daniel (17 May 2000)
  9066. - Martin Kammerhofer correctly pointed out several flaws in the FTP range
  9067. option. I corrected them.
  9068. - Removed the win32 winsock init crap from the lib to the src/main.c file
  9069. in the application instead. They can't be in the lib, especially not for
  9070. multithreaded purposes.
  9071. Daniel (16 May 2000)
  9072. - Rewrote the src/main.c source to use the new easy-interface to libcurl 7.
  9073. There is still more work to do, but the first step is now taken.
  9074. <curl/easy.h> is the include file to use.
  9075. Daniel (14 May 2000)
  9076. - FTP URLs are now treated slightly different, more according to RFC 1738.
  9077. - FTP sessions are now performed differently, with CWD commands to change
  9078. directory instead of RETR/STOR/LIST with the full path. Discussions with
  9079. Rich Gray made me notice these problems.
  9080. - Janne Johansson discovered and corrected a buffer overflow in the
  9081. src/usrglob.c file.
  9082. - I had to add a lib/strequal.c file for doing case insensitive string
  9083. compares on all platforms.
  9084. Daniel (8 May 2000):
  9085. - Been working lots on the new lib.
  9086. - Together with Rich Gray, I've tried to adjust the configure script to work
  9087. better on the NCR MP-RAS Unix.
  9088. Daniel (2 May 2000):
  9089. - Albert Chin-A-Young pointed out that I had a few too many instructions in
  9090. configure.in that didn't do any good.
  9091. Daniel (24 April 2000):
  9092. - Added a new paragraph to the FAQ about what to do when configure can't
  9093. find OpenSSL even though it is installed. Supplied by Bob Allison
  9094. Daniel (12 April 2000):
  9095. - Started messing around big-time to convert the old library interface to a
  9096. better one...
  9097. Daniel (8 April 2000):
  9098. - Made the progress bar look better for file sizes between 9999 kilobytes
  9099. and 100 megabytes. They're now displayed XX.XM.
  9100. - I also noticed that ftp fetches through HTTP proxies didn't add the user
  9101. agent string. It does now.
  9102. - Habibie <habibie at MailandNews.com> supplied a pretty good way to build RPMs
  9103. on a Linux machine. It still a) requires me to be root to do it, b) leaves
  9104. the rpm packages laying at some odd place on my disk c) doesn't work to
  9105. build the ssl version of curl since I didn't install openssl from an rpm
  9106. package so now the rpm crap thinks I don't have openssl and refuses to build
  9107. a package that depends on ssl... Did I mention I don't get along with RPM?
  9108. - Once again I received a bug report about autoconf not setting -L prior to -l
  9109. on the command line when checking for libs. In this case it made the native
  9110. cc compiler on Solaris 7 to fail the OpenSSL check. This has previously been
  9111. reported to cause problems on HP-UX and is a known flaw in autoconf 2.13. It
  9112. is a pity there's no newer release around...
  9113. Daniel (4 April 2000):
  9114. - Marco G. Salvagno supplied me with two fixes that
  9115. appearantly makes the OS/2 port work better with multiple URLs.
  9116. Daniel (2 April 2000):
  9117. - Another Location: fix. This time, when curl connected to a port and then
  9118. followed a location with an absolute URL to another port, it misbehaved.
  9119. Daniel (27 March 2000):
  9120. - H. Daphne Luong pointed out that curl was wrongly
  9121. messing up the proxy string when fetching a document through a http proxy,
  9122. which screwed up multiple fetches such as in location: followings.
  9123. Daniel (23 March 2000):
  9124. - Marco G. Salvagno corrected my badly applied patch he
  9125. actually already told me about!
  9126. - H. Daphne Luong brought me a fix that now makes curl
  9127. ignore select() errors in the download if errno is EINTR, which turns out to
  9128. happen every now and then when using libcurl multi-threaded...
  9129. Daniel (22 March 2000):
  9130. - Wham Bang supplied a couple of win32 fixes. HAVE_UNAME
  9131. was accidentally #defined in config-win32.h, which it shouldn't have been.
  9132. The HAVE_UNISTD_H is not defined when compiling with the Makefile.vc6
  9133. makefile for MS VC++.
  9134. Daniel (21 March 2000):
  9135. - I removed the AC_PROG_INSTALL macro from configure.in, since it appears that
  9136. one of the AM_* macros searches for a BSD compatible install already. Janne
  9137. Johansson made me aware of this.
  9138. Version 6.5.2
  9139. Daniel (21 March 2000):
  9140. - Paul Harrington quickly pointed out to me that 6.5.1
  9141. crashes hard. I upload 6.5.2 now as quickly as possible! The problem was
  9142. the -D adjustments in src/main.c.
  9143. Version 6.5.1
  9144. Daniel (20 March 2000):
  9145. - An anonymous post on sourceforge correctly pointed out a possible buffer
  9146. overflow in the curl_unescape() function for URL conversions. The main
  9147. problem with this bug is that the ftp download uses that function and this
  9148. single- byte overflow could lead to very odd bugs (as one reported by Janne
  9149. Johansson).
  9150. Daniel (19 March 2000):
  9151. - Marco G. Salvagno supplied me with a series of patches
  9152. that now allows curl to get compiled on OS/2. It even includes a section in
  9153. the INSTALL file. Very nice job!
  9154. Daniel (17 March 2000):
  9155. - Wham Bang supplied a patch for the lib/Makefile.vc6
  9156. file. We still need some fixes for the config-win32.h since it appears that
  9157. VC++ and mingw32 have different opinions about (at least) unistd.h's
  9158. existence.
  9159. Daniel (15 March 2000):
  9160. - I modified the -D/--dump-header workings so that it doesn't write anything
  9161. to the file until it needs to. This way, you can actually use -b and -D
  9162. on the same file if you want repeated invokes to store and read the cookies
  9163. in that one single file.
  9164. - Poked around in lots of texts. Added the BUGS file for bug reporting stuff.
  9165. Added the classic HTTP POST question to the FAQ, removed some #ifdef WIN32
  9166. stuff from the sources (they're covered by the config-win32.h now).
  9167. - Pascal Gaudette fixed a missing ldap.c problem in the
  9168. Makefile.vc6 file. He also addressed a problem in src/config-win32.h.
  9169. Daniel (14 March 2000):
  9170. - Paul Harrington pointed out that the 'http_code' variable in the -w output
  9171. was never written. I fixed it now.
  9172. - Janne Johansson reported the complaints that OpenBSD does
  9173. when getdate.c #includes malloc.h. It claims stdlib.h should be included
  9174. instead. I added #ifdef HAVE_MALLOC_H code in getdate.y and two checks in
  9175. the configure.in for malloc.h and stdlib.h.
  9176. Version 6.5
  9177. Daniel (13 March 2000):
  9178. - <curl at spam.wolvesbane.net> pointed out that the way curl sent cookies in a
  9179. single line wasn't enjoyed by IIS4.0 servers. In my view, that is not what
  9180. the standards say, but I added a white space between the name/value pairs to
  9181. perhaps make them work better.
  9182. - Added the perl check back in the configure.in again since the mkhelp.pl
  9183. script needs it!
  9184. - Made some beautifications in the curl man page.
  9185. Daniel (3 March 2000):
  9186. - Jörn helped me update the config-win32.h files with HAVE_SETVBUF and
  9187. HAVE_STRDUP.
  9188. Daniel (3 March 2000):
  9189. - Uploaded the 6.5pre2 package.
  9190. Daniel (2 March 2000):
  9191. - Removed the perl-programs from the distribution, they never made many people
  9192. happy and I'll still keep them available on the web.
  9193. - Added the -w and -N stuff to the man page. Documented the new progress meter
  9194. display in README.curl.
  9195. - Jörn Hartroth, Chris <cbayliss at csc.come> and Ulf
  9196. Möller from the openssl development team helped bringing me the details for
  9197. fixing an OpenSSL usage flaw. It became apparent when they released openssl
  9198. 0.9.5 since that barfed on curl's bad behavior (not seeding a random number
  9199. thing).
  9200. - Yet another option: -N/--no-buffer disables buffering in the output stream.
  9201. Probably most useful for very slow transfers when you really want to get
  9202. every byte curl receives within some preferred time. Andrew <tmr at gci.net>
  9203. suggested this.
  9204. - Damien Adant mailed me his fixes for making curl compile on Ultrix.
  9205. Daniel (24 February 2000):
  9206. - Applied Jörn Hartroth's fixes for config-win32.h and lib/Makefile.w32.
  9207. I should also make a note here, if nothing else to myself, that when using
  9208. the %-syntax for variables in DOS command prompts, you must use two %-
  9209. letters for each one since that is an escape letter there! Maybe I should
  9210. use another letter instead!
  9211. - Added more variables to -w:
  9212. 'http_code'
  9213. 'time_namelookup'
  9214. 'time_connect'
  9215. 'time_pretransfer'
  9216. 'url_effective'
  9217. - Made -w@filename read the syntax from a file and -w@- reads the syntax from
  9218. stdin in the good old "standard" curl way.
  9219. Daniel (22 February 2000):
  9220. - Released a 6.5pre1 version to get some test and user feedback.
  9221. Daniel (21 February 2000):
  9222. - I added the -w/--write-out flag and some variables to go with it. -w is a
  9223. single string, whatever you enter there will be written out when curl has
  9224. completed a successful request. There are some variable substitutions and
  9225. they are specified as '%{variable}' (without the quotes). Variables that
  9226. exist as of this moment are:
  9227. total_time - total transfer time in seconds (with 2 decimals)
  9228. size_download - total downloaded amount of bytes
  9229. size_upload - total uploaded amount of bytes
  9230. speed_download - the average speed of the entire download
  9231. speed_upload - the average speed of the entire upload
  9232. I will of course add more variables, but I need input on these and others.
  9233. - It struck me that the -# progress bar will be hard to just apply on the new
  9234. progress bar concept. I need some feedback on this before that'll get re-
  9235. introduced! :-/
  9236. Daniel (16 February 2000):
  9237. - Jörn Hartroth brought me some fixes for the progress meter and I continued
  9238. working on it. It seems to work for http download, http post, ftp download
  9239. and ftp upload. It should be a pretty good test it works generally good.
  9240. - Still need to add the -# progress bar into the new style progress interface.
  9241. - Gonna have a go at my new output option parameter next.
  9242. Daniel (15 February 2000):
  9243. - The progress meter stuff is slowly taking place. There's more left before it
  9244. is working ok and everything is tested, but we're reaching there. Slowly!
  9245. Daniel (11 February 2000):
  9246. - Paul Marquis fixed the config file parsing of curl to
  9247. deal with any-length lines, removing the previous limit of 4K.
  9248. - Eetu Ojanen's suggestion of supporting the @-style for -b
  9249. is implemented. Now -b@<filename> works as well as the old style. -b@- also
  9250. similarly reads the cookies from stdin.
  9251. - Reminder: -D should not write to the file until it needs to, in the same way
  9252. -o does. That would enable curl to use -b and -D on the same file...
  9253. - Ellis Pritchard made getdate.y work for MacOS X.
  9254. - Paul Harrington helped me out finding the crash in the
  9255. cookie parser. He also pointed out curl's habit of sending empty cookies to
  9256. the server.
  9257. Daniel (8 February 2000):
  9258. - Ron Zapp corrected a problem in src/urlglob.c that
  9259. prevented curl from getting compiled on sunos 4. The problem had to do
  9260. with the difference in sprintf() return code types.
  9261. - Transfer() should now be able to download and upload simultaneously. Let's
  9262. do some progress meter fixes later this week.
  9263. Daniel (31 January 2000):
  9264. - Paul Harrington found another core dump in the cookie
  9265. parser. Curl doesn't properly recognize the 'version' keyword and I think
  9266. that is what caused this. I need to refresh some specs on cookies and see
  9267. what else curl lacks to improve this a bit more once and for all.
  9268. RFC 2109 clearly specifies how cookies should be dealt with when they are
  9269. compliant with that spec. I don't think many servers are though...
  9270. - Mark W. Eichin found that while curl is uploading a form
  9271. to a web site, it doesn't read incoming data why it'll hang after a while
  9272. since the socket "pipe" becomes full.
  9273. It took me two hours to rewrite Download() and Upload() into the new
  9274. single function Transfer(). It even seems to work! More testing is required
  9275. of course... I should get the header-sending together in a kind of queue
  9276. and let them get "uploaded" in Transfer() as well.
  9277. - Zhibiao Wu pointed out a curl bug in the location: area,
  9278. although I did not get a reproducible way to do this why I have to wait
  9279. with fixing anything.
  9280. - Bob Schader suggested I should implement resume
  9281. support for the HTTP PUT operation, and as I think it is a valid suggestion
  9282. I'll work on it.
  9283. Daniel (25 January 2000):
  9284. - M Travis Obenhaus pointed out a manual mixup with -y and -Y that was
  9285. corrected.
  9286. - Jens Schleusener pointed out a problem to compile
  9287. curl on AIX 4.1.4 and gave me a solution. This problem was already fixed
  9288. by Jörn's recent #include modifications!
  9289. Daniel (19 January 2000):
  9290. - Oskar Liljeblad pointed out and corrected a problem
  9291. in the Location: following system that made curl following a location: to a
  9292. different protocol to fail.
  9293. At January 31st I re-considered this fix and the surrounding source code. I
  9294. could not really see that the patch did any difference, why I removed it
  9295. again for further research and debugging. (It disabled location: following
  9296. on server not running on default ports.)
  9297. - Jörn Hartroth brought a fix that once again
  9298. made it possible to select progress bar.
  9299. - Jörn also fixed a few include problems.
  9300. Version 6.4
  9301. Daniel (17 January 2000):
  9302. - Based on suggestions from Björn Stenberg, I made the
  9303. progress deal better with larger files and added a "Time" field which shows
  9304. the time spent on the download so far.
  9305. - I'm now using the CVS repository on sourceforge.net, which also allows web
  9306. browsing. See http://curl.haxx.nu.
  9307. Daniel (10 January 2000):
  9308. - Renumbered some enums in curl/curl.h since tag number 35 was used twice!
  9309. - Added "postquote" support to the ftp section that enables post-ftp-transfer
  9310. quote commands.
  9311. - Now made the -Q/--quote parameter recognize '-' as a prefix, which means
  9312. that command will be issued AFTER a successful ftp transfer. This can of
  9313. course be used to delete or rename a file after it has been uploaded or
  9314. downloaded. Use your imagination! ;-)
  9315. - Since I do the main development on solaris 2.6 now, I had to download and
  9316. install GNU groff to generate the hugehelp.c file. The solaris nroff cores
  9317. on the man page! So, in order to make the solaris configure script find a
  9318. better result I made gnroff get checked prior to the regular nroff.
  9319. - Added all the curl exit codes to the man page.
  9320. - Jim Gallagher properly tracked down a bug in autoconf
  9321. 2.13. The AC_CHECK_LIB() macro wrongfully uses the -l flag before the -L
  9322. flag to 'ld' which causes the HP-UX 10.20 flavour to fail on all libchecks
  9323. and therefore you can't make the configure script find the openssl libs!
  9324. Daniel (28 December 1999):
  9325. - Tim Verhoeven correctly identified that curl
  9326. doesn't support URL formatted file names when getting ftp. Now, there's a
  9327. problem with getting very weird file names off FTP servers. RFC 959 defines
  9328. that the file name syntax to use should be the same as in the native OS of
  9329. the server. Since we don't know the peer server system we currently just
  9330. translate the URL syntax into plain letters. It is still better and with
  9331. the solaris 2.6-supplied ftp server it works with spaces in the file names.
  9332. Daniel (27 December 1999):
  9333. - When curl parsed cookies straight off a remote site, it corrupted the input
  9334. data, which, if the downloaded headers were stored made very odd characters
  9335. in the saved data. Correctly identified and reported by Paul Harrington.
  9336. Daniel (13 December 1999):
  9337. - General cleanups in the library interface. There had been some bad kludges
  9338. added during times of stress and I did my best to clean them off. It was
  9339. both regarding the lib API as well as include file confusions.
  9340. Daniel (3 December 1999):
  9341. - A small --stderr bug was reported by Eetu Ojanen...
  9342. - who also brought the suggestion of extending the -X flag to ftp list as
  9343. well. So, now it is and the long option is now --request instead. It is
  9344. only for ftp list for now (and the former http stuff too of course).
  9345. Lars J. Aas (24 November 1999):
  9346. - Patched curl to compile and build under BeOS. Doesn't work yet though!
  9347. - Corrected the Makefile.am files to allow putting object files in
  9348. different directories than the sources.
  9349. Version 6.3.1
  9350. Daniel (23 November 1999):
  9351. - I've had this major disk crash. My good old trust-worthy source disk died
  9352. along with the machine that hosted it. Thank goodness most of all the
  9353. things I've done are either backed up elsewhere or stored in this CVS
  9354. server!
  9355. - Michael S. Steuer pointed out a bug in the -F handling
  9356. that made curl hang if you posted an empty variable such as '-F name='. It
  9357. was one of those old bugs that never have worked properly...
  9358. - Jason Baietto pointed out a general flaw in the HTTP
  9359. download. Curl didn't complain if it was prematurely aborted before the
  9360. entire download was completed. It does now.
  9361. Daniel (19 November 1999):
  9362. - Chris Maltby very accurately criticized the lack of
  9363. return code checks on the fwrite() calls. I did a thorough check for all
  9364. occurrences and corrected this.
  9365. Daniel (17 November 1999):
  9366. - Paul Harrington pointed out that the -m/--max-time option
  9367. doesn't work for the slow system calls like gethostbyname()... I don't have
  9368. any good fix yet, just a slightly less bad one that makes curl exit hard
  9369. when the timeout is reached.
  9370. - Bjorn Reese helped me point out a possible problem that might be the reason
  9371. why Thomas Hurst experience problems in his Amiga version.
  9372. Daniel (12 November 1999):
  9373. - I found a crash in the new cookie file parser. It crashed when you gave
  9374. a plain http header file as input...
  9375. Version 6.3
  9376. Daniel (10 November 1999):
  9377. - I kind of found out that the HTTP time-conditional GETs (-z) aren't always
  9378. respected by the web server and the document is therefore sent in whole
  9379. again, even though it doesn't match the requested condition. After reading
  9380. section 13.3.4 of RFC 2616, I think I'm doing the right thing now when I do
  9381. my own check as well. If curl thinks the condition isn't met, the transfer
  9382. is aborted prematurely (after all the headers have been received).
  9383. - After comments from Robert Linden I also rewrote some parts of the man page
  9384. to better describe how the -F works.
  9385. - Michael Anti put up a new curl download mirror in
  9386. China: http://www.pshowing.com/curl/
  9387. - I added the list of download mirrors to the README file
  9388. - I did add more explanations to the man page
  9389. Daniel (8 November 1999):
  9390. - I made the -b/--cookie option capable of reading netscape formatted cookie
  9391. files as well as normal http-header files. It should be able to
  9392. transparently figure out what kind of file it got as input.
  9393. Daniel (29 October 1999):
  9394. - Another one of Sebastiaan van Erk's ideas (that has been requested before
  9395. but I seem to have forgotten who it was), is to add support for ranges in
  9396. FTP downloads. As usual, one request is just a request, when they're two
  9397. it is a demand. I've added simple support for X-Y style fetches. X has to
  9398. be the lower number, though you may omit one of the numbers. Use the -r/
  9399. --range switch (previously HTTP-only).
  9400. - Sebastiaan van Erk suggested that curl should be
  9401. able to show the file size of a specified file. I think this is a splendid
  9402. idea and the -I flag is now working for FTP. It displays the file size in
  9403. this manner:
  9404. Content-Length: XXXX
  9405. As it resembles normal headers, and leaves us the opportunity to add more
  9406. info in that display if we can come up with more in the future! It also
  9407. makes sense since if you access ftp through a HTTP proxy, you'd get the
  9408. file size the same way.
  9409. I changed the order of the QUOTE command executions. They're now executed
  9410. just after the login and before any other command. I made this to enable
  9411. quote commands to run before the -I stuff is done too.
  9412. - I found out that -D/--dump-header and -V/--version weren't documented in
  9413. the man page.
  9414. - Many HTTP/1.1 servers do not support ranges. Don't ask me why. I did add
  9415. some text about this in the man page for the range option. The thread in
  9416. the mailing list that started this was initiated by Michael Anti.
  9417. - I get reports about nroff crashes on solaris 2.6+ when displaying the curl
  9418. man page. Switch to gnroff instead, it is reported to work(!). Adam Barclay
  9419. reported and brought the suggestion.
  9420. - In a dialogue with Johannes G. Kristinsson we came
  9421. up with the idea to let -H/--header specified headers replace the
  9422. internally generated headers, if you happened to select to add a header
  9423. that curl normally uses by itself. The advantage with this is not entirely
  9424. obvious, but in Johannes' case it means that he can use another Host: than
  9425. the one curl would set.
  9426. Daniel (27 October 1999):
  9427. - Jongki Suwandi brought a nice patch for (yet another) crash when following
  9428. a location:. This time you had to follow a https:// server's redirect to
  9429. get the core.
  9430. Version 6.2
  9431. Daniel (21 October 1999):
  9432. - I think I managed to remove the suspicious (nil) that has been seen just
  9433. before the "Host:" in HTTP requests when -v was used.
  9434. - I found out that if you followed a location: when using a proxy, without
  9435. having specified http:// in the URL, the protocol part was added once again
  9436. when moving to the next URL! (The protocol part has to be added to the
  9437. URL when going through a proxy since it has no protocol-guessing system
  9438. such as curl has.)
  9439. - Benjamin Ritcey reported a core dump under solaris 2.6
  9440. with OpenSSL 0.9.4. It turned out this was due to a bad free() in main.c
  9441. that occurred after the download was done and completed.
  9442. - Benjamin found ftp downloads to show the first line of the download meter
  9443. to get written twice, and I removed that problem. It was introduced with
  9444. the multiple URL support.
  9445. - Dan Zitter correctly pointed out that curl 6.1 and earlier versions didn't
  9446. honor RFC 2616 chapter 4 section 2, "Message Headers": "...Field names are
  9447. case-insensitive..." HTTP header parsing assumed a certain casing. Dan
  9448. also provided me with a patch that corrected this, which I took the liberty
  9449. of editing slightly.
  9450. - Dan Zitter also provided a nice patch for config.guess to better recognize
  9451. the Mac OS X
  9452. - Dan also corrected a minor problem in the lib/Makefile that caused linking
  9453. to fail on OS X.
  9454. Daniel (19 October 1999):
  9455. - Len Marinaccio came up with some problems with curl. Since Windows has a
  9456. crippled shell, it can't redirect stderr and that causes trouble. I added
  9457. --stderr today which allows the user to redirect the stderr stream to a
  9458. file or stdout.
  9459. Daniel (18 October 1999):
  9460. - The configure script now understands the '--without-ssl' flag, which now
  9461. totally disable SSL/https support. Previously it wasn't possible to force
  9462. the configure script to leave SSL alone. The previous functionality has
  9463. been retained. Troy Engel helped test this new one.
  9464. Version 6.1 (October 17 1999)
  9465. Daniel (17 October 1999):
  9466. - I ifdef'ed or commented all the zlib stuff in the sources and configure
  9467. script. It turned out we needed to mock more with zlib than I initially
  9468. thought, to make it capable of downloading compressed HTTP documents and
  9469. uncompress them on the fly. I didn't mean the zlib parts of curl to become
  9470. more than minor so this means I halt the zlib expedition for now and wait
  9471. until someone either writes the code or zlib gets updated and better
  9472. adjusted for this kind of usage. I won't get into details here, but a
  9473. short a summary is suitable:
  9474. - zlib can't automatically detect whether to use zlib or gzip
  9475. decompression methods.
  9476. - zlib is very neat for reading gzipped files from a file descriptor,
  9477. although not as nice for reading buffer-based data such as we would
  9478. want it.
  9479. - there are still some problems with the win32 version when reading from
  9480. a file descriptor if that is a socket
  9481. Daniel (14 October 1999):
  9482. - Moved the (external) include files for libcurl into a subdirectory named
  9483. curl and adjusted all #include lines to use <curl/XXXX> to maintain a
  9484. better name space and control of the headers. This has been requested.
  9485. Daniel (12 October 1999):
  9486. - I modified the 'maketgz' script to perform a 'make' too before a release
  9487. archive is put together in an attempt to make the time stamps better and
  9488. hopefully avoid the double configure-running that use to occur.
  9489. Daniel (11 October 1999):
  9490. - Applied Jörn's patches that fixes zlib for mingw32 compiles as well as
  9491. some other missing zlib #ifdef and more text on the multiple URL docs in
  9492. the man page.
  9493. Version 6.1beta
  9494. Daniel (6 October 1999):
  9495. - Douglas E. Wegscheid sent me a patch that made the exact same thing as I
  9496. just made: the -d switch is now capable of reading post data from a named
  9497. file or stdin. Use it similarly to the -F. To read the post data from a
  9498. given file:
  9499. curl -d @path/to/filename www.postsite.com
  9500. or let curl read it out from stdin:
  9501. curl -d @- www.postit.com
  9502. Jörn Hartroth (3 October 1999):
  9503. - Brought some more patches for multiple URL functionality. The MIME
  9504. separation ideas are almost scrapped now, and a custom separator is being
  9505. used instead. This is still compile-time "flagged".
  9506. Daniel
  9507. - Updated curl.1 with multiple URL info.
  9508. Daniel (30 September 1999):
  9509. - Felix von Leitner brought openssl-check fixes for configure.in to work
  9510. out-of-the-box when the openssl files are installed in the system default
  9511. dirs.
  9512. Daniel (28 September 1999)
  9513. - Added libz functionality. This should enable decompressing gzip, compress
  9514. or deflate encoding HTTP documents. It also makes curl send an accept that
  9515. it accepts that kind of encoding. Compressed contents usually shortens
  9516. download time. I *need* someone to tell me a site that uses compressed HTTP
  9517. documents so that I can test this out properly.
  9518. - As a result of the adding of zlib awareness, I changed the version string
  9519. a little. I plan to add openldap version reporting in there too.
  9520. Daniel (17 September 1999)
  9521. - Made the -F option allow stdin when specifying files. By using '-' instead
  9522. of file name, the data will be read from stdin.
  9523. Version 6.0 (September 14 1999)
  9524. Daniel (13 September 1999)
  9525. - Added -X/--http-request <request> to enable any HTTP command to be sent.
  9526. Do not that your server has to support the exact string you enter. This
  9527. should possibly a string like DELETE or TRACE.
  9528. - Applied Douglas' mingw32-fixes for the makefiles.
  9529. Daniel (10 September 1999)
  9530. - Douglas E. Wegscheid pointed out a problem. Curl didn't check the FTP
  9531. servers return code properly after the --quote commands were issued. It
  9532. took anything non 200 as an error, when all 2XX codes should be accepted as
  9533. OK.
  9534. - Sending cookies to the same site in multiple lines like curl used to do
  9535. turned out to be bad and breaking the cookie specs. Curl now sends all
  9536. cookies on a single Cookie: line. Curl is not yet RFC 2109 compliant, but I
  9537. doubt that many servers do use that syntax (yet).
  9538. Daniel (8 September 1999)
  9539. - Jörn helped me make sure it still compiles nicely with mingw32 under win32.
  9540. Daniel (7 September 1999)
  9541. - FTP upload through proxy is now turned into a HTTP PUT. Requested by
  9542. Stefan Kanthak.
  9543. - Added the ldap files to the .m32 makefile.
  9544. Daniel (3 September 1999)
  9545. - Made cookie matching work while using HTTP proxy.
  9546. Bjorn Reese (31 August 1999)
  9547. - Passed his ldap:// patch. Note that this requires the openldap shared
  9548. library to be installed and that LD_LIBRARY_PATH points to the
  9549. directory where the lib will be found when curl is run with a
  9550. ldap:// URL.
  9551. Jörn Hartroth (31 August 1999)
  9552. - Made the Mingw32 makefiles into single files.
  9553. - Made file:// work for Win32. The same code is now used for unix as well for
  9554. performance reasons.
  9555. Douglas E. Wegscheid (30 August 1999)
  9556. - Patched the Mingw32 makefiles for SSL builds.
  9557. Matthew Clarke (30 August 1999)
  9558. - Made a cool patch for configure.in to allow --with-ssl to specify the
  9559. root dir of the openssl installation, as in
  9560. ./configure --with-ssl=/usr/ssl_here
  9561. - Corrected the 'reconf' script to work better with some shells.
  9562. Jörn Hartroth (26 August 1999)
  9563. - Fixed the Mingw32 makefiles in lib/ and corrected the file.c for win32
  9564. compiles.
  9565. Version 5.11
  9566. Daniel (25 August 1999)
  9567. - John Weismiller pointed out a bug in the header-line
  9568. realloc() system in download.c.
  9569. - I added lib/file.[ch] to offer a first, simple, file:// support. It
  9570. probably won't do much good on win32 system at this point, but I see it
  9571. as a start.
  9572. - Made the release archives get a Makefile in the root dir, which can be
  9573. used to start the compiling/building process easier. I haven't really
  9574. changed any INSTALL text yet, I wanted to get some feed-back on this
  9575. first.
  9576. Daniel (17 August 1999)
  9577. - Another Location: bug. Curl didn't do proper relative locations if the
  9578. original URL had cgi-parameters that contained a slash. Nusu's page
  9579. again.
  9580. - Corrected the NO_PROXY usage. It is a list of substrings that if one of
  9581. them matches the tail of the host name it should connect to, curl should
  9582. not use a proxy to connect there. Pointed out to me by Douglas
  9583. E. Wegscheid. I also changed the README text a little regarding this.
  9584. Daniel (16 August 1999)
  9585. - Fixed a memory bug with http-servers that sent Location: to a Location:
  9586. page. Nusu's page showed this too.
  9587. - Made cookies work a lot better. Setting the same cookie name several times
  9588. used to add more cookies instead of replacing the former one which it
  9589. should've. Nusu <nus at intergorj.ro> brought me an URL that made this
  9590. painfully visible...
  9591. Troy (15 August 1999)
  9592. - Brought new .spec files as well as a patch for configure.in that lets the
  9593. configure script find the openssl files better, even when the include
  9594. files are in /usr/include/openssl
  9595. Version 5.10
  9596. Daniel (13 August 1999)
  9597. - SSL_CTX_set_default_passwd_cb() has been modified in the 0.9.4 version of
  9598. OpenSSL. Now why couldn't they simply add a *new* function instead of
  9599. modifying the parameters of an already existing function? This way, we get
  9600. a compiler warning if compiling with 0.9.4 but not with earlier. So, I had
  9601. to come up with a #if construction that deals with this...
  9602. - Made curl output the SSL version number get displayed properly with 0.9.4.
  9603. Troy (12 August 1999)
  9604. - Added MingW32 (GCC-2.95) support under Win32. The INSTALL file was also
  9605. a bit rearranged.
  9606. Daniel (12 August 1999)
  9607. - I had to copy a good <arpa/telnet.h> include file into the curl source
  9608. tree to enable the silly win32 systems to compile. The distribution rights
  9609. allows us to do that as long as the file remains unmodified.
  9610. - I corrected a few minor things that made the compiler complain when
  9611. -Wall -pedantic was used.
  9612. - I'm moving the official curl web page to http://curl.haxx.nu. I think it
  9613. will make it easier to remember as it is a lot shorter and less cryptic.
  9614. The old one still works and shows the same info.
  9615. Daniel (11 August 1999)
  9616. - Albert Chin-A-Young mailed me another correction for NROFF in the
  9617. configure.in that is supposed to be better for IRIX users.
  9618. Daniel (10 August 1999)
  9619. - Albert Chin-A-Young helped me with some stupid Makefile things, as well as
  9620. some fiddling with the getdate.c stuff that he had problems with under
  9621. HP-UX v10. getdate.y will now be compiled into getdate.c if the appropriate
  9622. yacc or bison is found by the configure script. Since this is slightly new,
  9623. we need to test the output getdate.c with win32 systems to make sure it
  9624. still compiles there.
  9625. Daniel (5 August 1999)
  9626. - I've just setup a new mailing list with the intention to keep discussions
  9627. around libcurl development in it. I mainly expect it to be for thoughts and
  9628. brainstorming around a "next generation" library, rather than nitpicking
  9629. about the current implementation or details in the current libcurl.
  9630. To join our happy bunch of future-looking geeks, enter 'subscribe
  9631. <address>' in the body of a mail and send it to
  9632. libcurl-request@listserv.fts.frontec.se. Curl bug reports, the usual curl
  9633. talk and everything else should still be kept in this mailing list. I've
  9634. started to archive this mailing list and have put the libcurl web page at
  9635. www.fts.frontec.se/~dast/libcurl/.
  9636. - Stefan Kanthak contacted me regarding a few problems in the configure
  9637. script which he discovered when trying to make curl compile and build under
  9638. Siemens SINIX-Z V5.42B2004!
  9639. - Marcus Klein very accurately informed me that src/version.h was not present
  9640. in the CVS repository. Oh, how silly...
  9641. - Linus Nielsen rewrote the telnet:// part and now curl offers limited telnet
  9642. support. If you run curl like 'curl telnet://host' you'll get all output on
  9643. the screen and curl will read input from stdin. You'll be able to login and
  9644. run commands etc, but since the output is buffered, expect to get a little
  9645. weird output.
  9646. This is still in its infancy and it might get changed. We need your
  9647. feed-back and input in how this is best done.
  9648. WIN32 NOTE: I bet we'll get problems when trying to compile the current
  9649. lib/telnet.c on win32, but I think we can sort them out in time.
  9650. - David Sanderson reported that FORCE_ALLOCA_H or HAVE_ALLOCA_H must be
  9651. defined for getdate.c to compile properly on HP-UX 11.0. I updated the
  9652. configure script to check for alloca.h which should make it.
  9653. Daniel (4 August 1999)
  9654. - I finally got to understand Marcus Klein's ftp download resume problem,
  9655. which turns out to be due to different outputs from different ftp
  9656. servers. It makes ftp download resuming a little trickier, but I've made
  9657. some modifications I really believe will work for most ftp servers and I do
  9658. hope you report if you have problems with this!
  9659. - Added text about file transfer resuming to README.curl.
  9660. Daniel (2 August 1999)
  9661. - Applied a progress-bar patch from Lars J. Aas. It offers
  9662. a new styled progress bar enabled with -#/--progress-bar.
  9663. T. Yamada <tai at imasy.or.jp> (30 July 1999)
  9664. - It breaks with segfault when 1) curl is using .netrc to obtain
  9665. username/password (option '-n'), and 2) is automatically redirected to
  9666. another location (option '-L').
  9667. There is a small bug in lib/url.c (block starting from line 641), which
  9668. tries to take out username/password from user- supplied command-line
  9669. argument ('-u' option). This block is never executed on first attempt since
  9670. CONF_USERPWD bit isn't set at first, but curl later turns it on when it
  9671. checks for CONF_NETRC bit. So when curl tries to redo everything due to
  9672. redirection, it segfaults trying to access *data->userpwd.
  9673. Version 5.9.1
  9674. Daniel (30 July 1999)
  9675. - Steve Walch pointed out that there is a memory leak in the formdata
  9676. functions. I added a FormFree() function that is now used and supposed to
  9677. correct this flaw.
  9678. - Mark Wotton reported:
  9679. 'curl -L https://www.cwa.com.au/' core dumps. I managed to cure this by
  9680. correcting the cleanup procedure. The bug seems to be gone with my OpenSSL
  9681. 0.9.2b, although still occurs when I run the ~100 years old SSLeay 0.8.0. I
  9682. don't know whether it is curl or SSLeay that is to blame for that.
  9683. - Marcus Klein:
  9684. Reported an FTP upload resume bug that I really can't repeat nor understand.
  9685. I leave it here so that it won't be forgotten.
  9686. Daniel (29 July 1999)
  9687. - Costya Shulyupin suggested support for longer URLs when following Location:
  9688. and I could only agree and fix it!
  9689. - Leigh Purdie found a problem in the upload/POST department. It turned out
  9690. that http.c accidentaly cleared the pointer instead of the byte counter
  9691. when supposed to.
  9692. - Costya Shulyupin pointed out a problem with port numbers and Location:. If
  9693. you had a server at a non-standard port that redirected to an URL using a
  9694. standard port number, curl still used that first port number.
  9695. - Ralph Beckmann pointed out a problem when using both CONF_FOLLOWLOCATION
  9696. and CONF_FAILONERROR simultaneously. Since the CONF_FAILONERROR exits on
  9697. the 302-code that the follow location header outputs it will never show any
  9698. html on location: pages. I have now made it look for >=400 codes if
  9699. CONF_FOLLOWLOCATION is set.
  9700. - 'struct slist' is now renamed to 'struct curl_slist' (as suggested by Ralph
  9701. Beckmann).
  9702. - Joshua Swink and Rick Welykochy were the first to point out to me that the
  9703. latest OpenSSL package now have moved the standard include path. It is now
  9704. in /usr/local/ssl/include/openssl and I have now modified the --enable-ssl
  9705. option for the configure script to use that as the primary path, and I
  9706. leave the former path too to work with older packages of OpenSSL too.
  9707. Daniel (9 June 1999)
  9708. - I finally understood the IRIX problem and now it seem to compile on it!
  9709. I am gonna remove those #define strcasecmp() things once and for all now.
  9710. Daniel (4 June 1999)
  9711. - I adjusted the FTP reply 227 parser to make the PASV command work better
  9712. with more ftp servers. Appearantly the Roxen Challanger server replied
  9713. something curl 5.9 could deal with! :-( Reported by Ashley Reid-Montanaro
  9714. and Mark Butler brought a solution for it.
  9715. Daniel (26 May 1999)
  9716. - Rearranged. README is new, the old one is now README.curl and I added a
  9717. README.libcurl with text I got from Ralph Beckmann.
  9718. - I also updated the INSTALL text.
  9719. Daniel (25 May 1999)
  9720. - David Jonathan Lowsky correctly pointed out that curl didn't properly deal
  9721. with form posting where the variable shouldn't have any content, as in curl
  9722. -F "form=" www.site.com. It was now fixed.
  9723. Version 5.9 (May 22 1999)
  9724. Daniel (22 May 1999)
  9725. - I've got a bug report from Aaron Scarisbrick in which he states he has some
  9726. problems with -L under FreeBSD 3.0. I have previously got another bug
  9727. report from Stefan Grether which points at an error with similar sympthoms
  9728. when using win32. I made the allocation of the new url string a bit faster
  9729. and different, don't know if it actually improves anything though...
  9730. Daniel (20 May 1999)
  9731. - Made the cookie parser deal with CRLF newlines too.
  9732. Daniel (19 May 1999)
  9733. - Download() didn't properly deal with failing return codes from the sread()
  9734. function. Adam Coyne found the problem in the win32 version, and Troy Engel
  9735. helped me out isolating it.
  9736. Daniel (16 May 1999)
  9737. - Richard Adams pointed out a bug I introduced in 5.8. --dump-header doesn't
  9738. work anymore! :-/ I fixed it now.
  9739. - After a suggestion by Joshua Swink I added -S / --show-error to force curl
  9740. to display the error message in case of an error, even if -s/--silent was
  9741. used.
  9742. Daniel (10 May 1999)
  9743. - I moved the stuff concerning HTTP, DICT and TELNET it their own source
  9744. files now. It is a beginning on my clean-up of the sources to make them
  9745. layer all those protocols better to enable more to be added easier in the
  9746. future!
  9747. - Leon Breedt sent me some files I've not put into the main curl
  9748. archive. They're for creating the Debian package thingie. He also sent me a
  9749. debian package that I've made available for download at the web page
  9750. Daniel (9 May 1999)
  9751. - Made it compile on cygwin too.
  9752. Troy Engel (7 May 1999)
  9753. - Brought a series of patches to allow curl to compile smoothly on MSVC++ 6
  9754. again!
  9755. Daniel (6 May 1999)
  9756. - I changed the #ifdef HAVE_STRFTIME placement for the -z code so that it
  9757. will be easier to discover systems that don't have that function and thus
  9758. can't use -z successfully. Made the strftime() get used if WIN32 is defined
  9759. too.
  9760. Version 5.8
  9761. Daniel (5 May 1999)
  9762. - I've had it with this autoconf/automake mess. It seems to work allright
  9763. for most people who don't have automake installed, but for those who have
  9764. there are problems all over.
  9765. I've got like five different bug reports on this only the last
  9766. week... Claudio Neves and Federico Bianchi and root <duggerj001 at
  9767. hawaii.rr.com> are some of them reporting this.
  9768. Currently, I have no really good fix since I want to use automake myself to
  9769. generate the Makefile.in files. I've found out that the @SHELL@-problems
  9770. can often be fixed by manually invoking 'automake' in the archive root
  9771. before you run ./configure... I've hacked my maketgz script now to fiddle
  9772. a bit with this and my tests seem to work better than before at least!
  9773. Daniel (4 May 1999)
  9774. - mkhelp.pl has been doing badly lately. I corrected a case problem in
  9775. the regexes.
  9776. - I've now remade the -o option to not touch the file unless it needs to.
  9777. I had to do this to make -z option really fine, since now you can make a
  9778. curl fetch and use a local copy's time when downloading to that file, as
  9779. in:
  9780. curl -z dump -o dump remote.site.com/file.html
  9781. This will only get the file if the remote one is newer than the local.
  9782. I'm aware that this alters previous behaviour a little. Some scripts out
  9783. there may depend on that the file is always touched...
  9784. - Corrected a bug in the SSLv2/v3 selection.
  9785. - Felix von Leitner requested that curl should be able to send
  9786. "If-Modified-Since" headers, which indeed is a fair idea. I implemented it
  9787. right away! Try -z <expression> where expression is a full GNU date
  9788. expression or a file name to get the date from!
  9789. Stephan Lagerholm (30 Apr 1999)
  9790. - Pointed out a problem with the src/Makefile for FreeBSD. The RM variable
  9791. isn't set and causes the make to fail.
  9792. Daniel (26 April 1999)
  9793. - Am I silly or what? Irving Wolfe pointed out to me that the curl version
  9794. number was not set properly. Hasn't been since 5.6. This was due to a bug
  9795. in my maketgz script!
  9796. David Eriksson (25 Apr 1999)
  9797. - Found a bug in cookies.c that made it crash at times.
  9798. Version 5.7.1
  9799. Doug Kaufman (23 Apr 1999)
  9800. - Brought two sunos 4 fixes. One of them being the hostip.c fix mentioned
  9801. below and the other one a correction in include/stdcheaders.h
  9802. - Added a paragraph about compiling with the US-version of openssl to the
  9803. INSTALL file.
  9804. Daniel
  9805. - New mailing list address. Info updated on the web page as well as in the
  9806. README file
  9807. Greg Onufer (20 Apr 1999)
  9808. - hostip.c didn't compile properly on SunOS 5.5.1.
  9809. It needs an #include <sys/types.h>
  9810. Version 5.7
  9811. Daniel (Apr 20 1999)
  9812. - Decided to upload a non-beta version right now!
  9813. - Made curl support any-length HTTP headers. The destination buffer is now
  9814. simply enlarged every time it turns out to be too small!
  9815. - Added the FAQ file to the archive. Still a bit smallish, but it is a
  9816. start.
  9817. Eric Thelin (15 Apr 1999)
  9818. - Made -D accept '-' instead of filename to write to stdout.
  9819. Version 5.6.3beta
  9820. Daniel (Apr 12 1999)
  9821. - Changed two #ifdef WIN32 to better #ifdef <errorcode> when connect()ing
  9822. in url.c and ftp.c. Makes cygwin32 deal with them better too. We should
  9823. try to get some decent win32-replacement there. Anyone?
  9824. - The old -3/--crlf option is now ONLY --crlf!
  9825. - I changed the "SSL fix" to a more lame one, but that doesn't remove as
  9826. much functionality. Now I've enabled the lib to select what SSL version it
  9827. should try first. Appearantly some older SSL-servers don't like when you
  9828. talk v3 with them so you need to be able to force curl to talk v2 from the
  9829. start. The fix dated April 6 and posted on the mailing list forced curl to
  9830. use v2 at all times using a modern OpenSSL version, but we don't really
  9831. want such a crippled solution.
  9832. - Marc Boucher sent me a patch that corrected a math error for the
  9833. "Curr.Speed" progress meter.
  9834. - Eric Thelin sent me a patch that enables '-K -' to read a config file from
  9835. stdin.
  9836. - I found out we didn't close the file properly before so I added it!
  9837. Daniel (Apr 9 1999)
  9838. - Yu Xin pointed out a problem with ftp download resume. It didn't work at
  9839. all! ;-O
  9840. Daniel (Apr 6 1999)
  9841. - Corrected the version string part generated for the SSL version.
  9842. - I found a way to make some other SSL page work with openssl 0.9.1+ that
  9843. previously didn't (ssleay 0.8.0 works with it though!). Trying to get
  9844. some real info from the OpenSSL guys to see how I should do to behave the
  9845. best way. SSLeay 0.8.0 shouldn't be that much in use anyway these days!
  9846. Version 5.6.2beta
  9847. Daniel (Apr 4 1999)
  9848. - Finally have curl more cookie "aware". Now read carefully. This is how
  9849. it works.
  9850. To make curl read cookies from an already existing file, in plain header-
  9851. format (like from the headers of a previous fetch) invoke curl with the
  9852. -b flag like:
  9853. curl -b file http://site/foo.html
  9854. Curl will then use all cookies it finds matching. The old style that sets
  9855. a single cookie with -b is still supported and is used if the string
  9856. following -b includes a '=' letter, as in "-b name=daniel".
  9857. To make curl read the cookies sent in combination with a location: (which
  9858. sites often do) point curl to read a non-existing file at first (i.e
  9859. to start with no existing cookies), like:
  9860. curl -b nowhere http://site/setcookieandrelocate.html
  9861. - Added a paragraph in the TODO file about the SSL problems recently
  9862. reported. Evidently, some kind of SSL-problem curl may need to address.
  9863. - Better "Location:" following.
  9864. Douglas E. Wegscheid (Tue, 30 Mar 1999)
  9865. - A subsecond display patch.
  9866. Daniel (Mar 14 1999)
  9867. - I've separated the version number of libcurl and curl now. To make
  9868. things a little easier, I decided to start the curl numbering from
  9869. 5.6 and the former version number known as "curl" is now the one
  9870. set for libcurl.
  9871. - Removed the 'enable-no-pass' from configure, I doubt anyone wanted
  9872. that.
  9873. - Made lots of tiny adjustments to compile smoothly with cygwin under
  9874. win32. It's a killer for porting this to win32, bye bye VC++! ;-)
  9875. Compiles and builds out-of-the-box now. See the new wordings in
  9876. INSTALL for details.
  9877. - Beginning experiments with downloading multiple document from a http
  9878. server while remaining connected.
  9879. Version 5.6beta
  9880. Daniel (Mar 13 1999)
  9881. - Since I've changed so much, I thought I'd just go ahead and implement the
  9882. suggestion from Douglas E. Wegscheid. -D or --dump-header is now storing
  9883. HTTP headers separately in the specified file.
  9884. - Added new text to INSTALL on what to do to build this on win32 now.
  9885. - Aaargh. I had to take a step back and prefix the shared #include files
  9886. in the sources with "../include/" to please VC++...
  9887. Daniel (Mar 12 1999)
  9888. - Split the url.c source into many tiny sources for better readability
  9889. and smaller size.
  9890. Daniel (Mar 11 1999)
  9891. - Started to change stuff for a move to make libcurl and a more separate
  9892. curl application that uses the libcurl. Made the libcurl sources into
  9893. the new lib directory while the curl application will remain in src as
  9894. before. New makefiles, adjusted configure script and so.
  9895. libcurl.a built quickly and easily. I better make a better interface to
  9896. the lib functions though.
  9897. The new root dir include/ is supposed to contain the public information
  9898. about the new libcurl. It is a little ugly so far :-)
  9899. Daniel (Mar 1 1999)
  9900. - Todd Kaufmann sent me a good link to Netscape's cookie spec as well as the
  9901. info that RFC 2109 specifies how to use them. The link is now in the
  9902. README and the RFC in the RESOURCES.
  9903. Daniel (Feb 23 1999)
  9904. - Finally made configure accept --with-ssl to look for SSL libs and includes
  9905. in the "standard" place /usr/local/ssl...
  9906. Daniel (Feb 22 1999)
  9907. - Verified that curl linked fine with OpenSSL 0.9.1c which seems to be
  9908. the most recent.
  9909. Henri Gomez (Fri Feb 5 1999)
  9910. - Sent in an updated curl-ssl.spec. I still miss the script that builds an
  9911. RPM automatically...
  9912. Version 5.5.1
  9913. Mark Butler (27 Jan 1999)
  9914. - Corrected problems in Download().
  9915. Danitel Stenberg (25 Jan 1999)
  9916. - Jeremie Petit pointed out a few flaws in the source that prevented it from
  9917. compile warning free with the native compiler under Digital Unix v4.0d.
  9918. Version 5.5
  9919. Daniel Stenberg (15 Jan 1999)
  9920. - Added Bjorns small text to the README about the DICT protocol.
  9921. Daniel Stenberg (11 Jan 1999)
  9922. - <jswink at softcom.net> reported about the win32-versioin: "Doesn't use
  9923. ALL_PROXY environment variable". Turned out to be because of the static-
  9924. buffer nature of the win32 environment variable calls!
  9925. Bjorn Reese (10 Jan 1999)
  9926. - I have attached a simple addition for the DICT protocol (RFC 2229).
  9927. It performs dictionary lookups. The output still needs to be better
  9928. formatted.
  9929. To test it try (the exact format, and more examples are described in
  9930. the RFC)
  9931. dict://dict.org/m:hello
  9932. dict://dict.org/m:hello::soundex
  9933. Vicente Garcia (10 Jan 1999)
  9934. - Corrected the progress meter for files larger than 20MB.
  9935. Daniel Stenberg (7 Jan 1999)
  9936. - Corrected the -t and -T help texts. They claimed to be FTP only.
  9937. Version 5.4
  9938. Daniel Stenberg
  9939. (7 Jan 1999)
  9940. - Irving Wolfe reported that curl -s didn't always supress the progress
  9941. reporting. It was the form post that autoamtically always switched it on
  9942. again. This is now corrected!
  9943. (4 Jan 1999)
  9944. - Andreas Kostyrka suggested I'd add PUT and he helped me out to test it. If
  9945. you use -t or -T now on a http or https server, PUT will be used for file
  9946. upload.
  9947. I removed the former use of -T with HTTP. I doubt anyone ever really used
  9948. that.
  9949. (4 Jan 1999)
  9950. - Erik Jacobsen found a width bug in the mprintf() function. I corrected it
  9951. now.
  9952. (4 Jan 1999)
  9953. - As John V. Chow pointed out to me, curl accepted very limited URL sizes. It
  9954. should now accept path parts that are up to at least 4096 bytes.
  9955. - Somehow I screwed up when applying the AIX fix from Gilbert Ramirez, so
  9956. I redid that now.
  9957. Version 5.3a (win32 only)
  9958. Troy Engel
  9959. - Corrected a win32 bug in the environment variable part.
  9960. Version 5.3
  9961. Gilbert Ramirez Jr. (21 Dec 1998)
  9962. - I have implemented the "quote" function of FTP clients. It allows you to
  9963. send arbitrary commands to the remote FTP server. I chose the -Q/--quote
  9964. command-line arguments.
  9965. You can have more than one quoted string, and curl will apply them in
  9966. order. This is what I use for my MVS upload:
  9967. curl -B --crlf -Q "site lrecl=80" -Q "site blk=8000" -T file ftp://os390/test
  9968. Curl will send the two quoted "site" commands in the proper order.
  9969. - Made it compile smoothly on AIX.
  9970. Gilbert Ramirez Jr. (18 Dec 1998)
  9971. - Brought an MVS patch: -3/--mvs, for ftp upload to the MVS ftp server.
  9972. Troy Engel (17 Dec 1998)
  9973. - Brought a correction that fixes the win32 curl bug.
  9974. Daniel Stenberg
  9975. - A bug, pointed out to me by Dr H. T. Leung, caused curl to crash on the -A
  9976. flag on certain systems. Actually, all systems should've!
  9977. - Added a few defines to make directories/file names get build nicer (with _
  9978. instead of . and \ instead of / in win32).
  9979. - steve <fisk at polar.bowdoin.edu> reported a weird bug that occured if the
  9980. ftp server response line had a parenthesis on the line before the (size)
  9981. info. I hope it works better now!
  9982. Version 5.2.1
  9983. Steven G. Johnson (Dec 14, 1998)
  9984. - Brought a fix that corrected a crash in 5.2 due to bad treatment of the
  9985. environment variables.
  9986. Version 5.2
  9987. Daniel Stenberg (Dec 14, 1998)
  9988. - Rewrote the mkhelp script and now, the mkhelp.pl script generates the
  9989. hugehelp.c file from the README *and* the man page file curl.1. By using
  9990. both files, I no longer need to have double information in both the man
  9991. page and the README as well. So, win32-users will only have the hugehelp.c
  9992. file for all info, but then, they download the plain binary most times
  9993. anyway.
  9994. - gcc2.8.1 with the -Wall flag complaints a lot on subscript has type `char'
  9995. if I don't explicitly typecast the argument to isdigit() or isspace() to
  9996. int. So I did to compile warning free with that too.
  9997. - Added checks for 'long double' and 'long long' in the configure script. I
  9998. need those for the mprintf.c source to compile well on non long long
  9999. comforming systems!
  10000. Version 5.1 (not publicly released)
  10001. Daniel Stenberg (Dec 10, 1998)
  10002. - I got a request for a pre-compiled NT Alpha version. Anyone?
  10003. - Added Lynx/CERN www lib proxy environment variable support. That means curl
  10004. now reads and understands the following environment variables:
  10005. HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
  10006. They should be set for protocol-specific proxies. General proxy should be
  10007. set with
  10008. ALL_PROXY
  10009. And a comma-separated list of host names that shouldn't go through any
  10010. proxy is set in (only an asterisk, '*' matches all hosts).
  10011. NO_PROXY
  10012. The usage of the -x/--proxy flag overrides the environment variables.
  10013. - Proxy can now be specified with a procotol:// prefix.
  10014. - Wrote the curl.1 man page.
  10015. - Introduced a whole new dynamic buffer system for all sprintf()s. It is
  10016. based on the *printf() package by yours truly and Bjorn Reese. Hopefully,
  10017. there aren't that many buffer overflow risks left now.
  10018. - Ah, I should mention I've compiled and built curl successfully under
  10019. solaris 2.6 with gcc now, gcc 2.7.2 won't work but 2.8.1 did ok.
  10020. Oren Tirosh (Dec 3, 1998)
  10021. - Brought two .spec files, to use when creating (Linux) Redhat style RPM
  10022. packages. They're named curl.spec and curl-ssl.spec.
  10023. Troy Engel
  10024. - Supplied the src/Makefile.vc6 for easy compiling with VC++ under Win32.
  10025. Version 5.0
  10026. Daniel Stenberg (Dec 1, 1998)
  10027. - Not a single bug report in ages.
  10028. - Corrected getpass.c and main.c to compile warning and error free with the
  10029. Win32 VC++ crap.
  10030. Version 5.0 beta 24
  10031. Daniel Stenberg (Nov 20, 1998)
  10032. HOW TO BUILD A RELEASE ARCHIVE:
  10033. * Pre-requisite software:
  10034. What To build what Reads data from
  10035. ==== ============= ===============
  10036. GNU automake Makefile.in, aclocal.m4 configure.in
  10037. GNU make(1) - " -
  10038. GNU gcc(1) - " -
  10039. GNU autoconf configure configure.in
  10040. GNU autoheader(2) config.h.in configure.in, acconfig.h
  10041. * Make sure all files that should be part of the archive are put in FILES.
  10042. * Run './maketgz' and enter version number of the new to become archive.
  10043. maketgz does:
  10044. - Enters the newly created version number in url.h.
  10045. - (If you don't have automake, this script will warn about that, but unless
  10046. you have changed the Makefile.am files, that is nothing to care about.)
  10047. If you have it, it'll run it.
  10048. - If you have autoconf, the configure.in will be edited to get the newly
  10049. created version number and autoconf will be run.
  10050. - Creates a new directory named curl-<version>. (Actually, it uses the base
  10051. name of the current directory up to the first '-'.)
  10052. - Copies all files mentioned in FILES to the new directory. Saving
  10053. permissions and directory structure.
  10054. - Uses tar to create an archive of it all, named curl-<version>.tar.gz
  10055. - gzips the archive
  10056. - Removes the new directory and all its contents.
  10057. * When done, you have an archive stored in your directory named
  10058. curl-<version>.tar.gz.
  10059. Done!
  10060. (1) They're required to make automake run properly.
  10061. (2) It is distributed as a part of the GNU autoconf archive.
  10062. Daniel Stenberg (Nov 18, 1998)
  10063. - I changed the TAG-system. If you ever used urlget() from this package in
  10064. another product, you need to recompile with the new headers. I did this
  10065. new stuff to better deal with different compilers and system with different
  10066. variable sizes. I think it makes it a little more portable. This proves
  10067. to compile warning free with the problematic IRIX compiler!
  10068. - Win32 compiled with a silly error. Corrected now.
  10069. - Brian Chaplin reported yet another problem in
  10070. multiline FTP responses. I've tried to correct it. I mailed him a new
  10071. version and I hope he gets back soon with positive feedback!
  10072. - Improved the 'maketgz' to create a temporary directory tree which it makes
  10073. an archive from instead of the previous renaming of the current one.
  10074. - Mailing list opened (see README).
  10075. - Made -v more verbose on the PASV section of ftp transfers. Now it tells
  10076. host name and IP of the new host (and port number). I also added a section
  10077. about PORT vs PASV in the README.
  10078. Version 5.0 beta 21
  10079. Angus Mackay (Nov 15, 1998)
  10080. - Introduced automake stuff.
  10081. Daniel Stenberg (Nov 13, 1998)
  10082. - Just made a successful GET of a document from an SSL-server using my own
  10083. private certificate for authentication! The certificate has to be in PEM
  10084. format. You do that the easiest way (although not *that* easy) by
  10085. downloading the SSLyeay PKCS#12-patch by Dr Stephen N. Henson from his site
  10086. at: http://www.drh-consultancy.demon.co.uk/. Using his tool, you can
  10087. convert any modern Netscape or (even) MSIE certificate to PEM-format. Use
  10088. it with 'curl -E <certificate:password> https://site.com'. If this isn't a
  10089. cool feature, then I don't know what cool features look like! ;-)
  10090. - Working slowly on telnet connections. #define TRY_TELNET to try it out.
  10091. (curl -u user:passwd "telnet://host.com/cat .login" is one example) I do
  10092. have problem to define how it should work. The prime purpose for this must
  10093. be to get (8bit clean) files via telnet, and it really isn't that easy to
  10094. get files this way. Still having problems with \n being converted to \r\n.
  10095. Angus Mackay (Nov 12, 1998)
  10096. - Corrected another bug in the long parameter name parser.
  10097. - Modified getpass.c (NOTE: see the special licensing in the top of that
  10098. source file).
  10099. Daniel Stenberg (Nov 12, 1998)
  10100. - We may have removed the silly warnings from url.c when compiled under IRIX.
  10101. Thanks again to Bjorn Reese and Martin Staael.
  10102. - Wrote formfind.pl which is a new perl script intended to help you find out
  10103. how a FORM submission should be done. This needs a little more work to get
  10104. really good.
  10105. Daniel Stenberg (Nov 11, 1998)
  10106. - Made the HTTP header-checker accept white spaces before the HTTP/1.? line.
  10107. Appearantly some proxies/sites add such at times (my test proxy did when I
  10108. downloaded a gopher page with it)!
  10109. - Moved the former -h to -M and made -h show the short help text instead. I
  10110. had to enable a forced help text option. Now an even shorter help text will
  10111. be presented when an unknown option and similar, is used.
  10112. - stdcheaders.h didn't work with IRIX 6.4 native cc compiler. I hope my
  10113. changes don't make other versions go nuts instead.
  10114. Daniel Stenberg (Nov 10, 1998)
  10115. - Added a weird check in the configure script to check for the silly AIX
  10116. warnings about my #define strcasecmp() stuff. I do that define to prevent
  10117. me and other contributors to accidentaly use that function name instead
  10118. of strequal()...
  10119. - I bugfixed Angus's getpass.c very little.
  10120. - Fixed the verbose flag names to getopt-style, i.e 'curl --loc' will be
  10121. sufficient instead of --location as "loc" is a unique prefix. Also, anything
  10122. after a '--' is treated as an URL. So if you do have a host with a weeeird
  10123. name you can do 'curl -- -host.com'.
  10124. - Another getopt-adjust; curl now accepts flags after the URL on the command
  10125. line. 'curl www.foo.com -O' is perfectly valid.
  10126. - Corrected the .curlrc parser so that strtok() is no longer used and I
  10127. believe it works better. Even URLs can be specified in it now.
  10128. Angus Mackay (Nov 9, 1998)
  10129. - Replaced getpass.c with a newly written one, not under GPL license
  10130. - Changed OS to a #define in config.h instead of compiler flag
  10131. - Makefile now uses -DHAVE_CONFIG_H
  10132. Daniel Stenberg (Nov 9, 1998)
  10133. - Ok, I expanded the tgz-target to update the version string on each occation
  10134. I build a release archive!
  10135. - I reacted on Angus Mackay's initiative and remade the parameter parser to
  10136. be more getopt compliant. Curl now supports "merged" flags as in
  10137. curl -lsv ftp.site.com
  10138. Do note that I had to move three short-names of the options. Parameters
  10139. that needs an additional string such as -x must be stand-alone or the
  10140. last in a merged sequence:
  10141. curl -lsx my-proxy ftp.site.com
  10142. is ok, but using the flags in a different order like '-lxs' would cause
  10143. unexpected results (as the 's' option would be skipped).
  10144. - I've changed the headers in all files that are subject to the MozPL
  10145. license, as they are supposed to look like when conforming.
  10146. - Made the configure script make the config.h. The former config.h is now
  10147. setup.h.
  10148. - The RESOURCES and TODO files have been added to the archive.
  10149. Angus Mackay (Nov 5, 1998)
  10150. - Fixed getpass.c and various configure stuff
  10151. Daniel Stenberg (Nov 3, 1998)
  10152. - Use -H/--header for custom HTTP-headers. Lets you pass on your own
  10153. specified headers to the remote server. I wouldn't recommend trying to use
  10154. a header with a defined usage according to standards. Use this flag once
  10155. for every custom header you want to add.
  10156. - Use -B/--ftp-ascii to force ftp to use ASCII mode when transfering files.
  10157. - Corrected the 'getlinks.pl' script, I accidentally left my silly proxy
  10158. usage in there! Since the introduction of the .curlrc file, it is easier to
  10159. write scripts that use curl since proxies and stuff should be in the
  10160. .curlrc file anyway.
  10161. - Introducing the new -F flag for HTTP POST. It supports multipart/form-data
  10162. which means it is gonna be possible to upload files etc through HTTP POST.
  10163. Shiraz Kanga asked for the feature and my brother,
  10164. Björn Stenberg helped me design the user
  10165. interface for this beast. This feature requires quite some docs,
  10166. since it has turned out not only quite capable, but also complicated! :-)
  10167. - A note here, since I've received mail about it. SSLeay versions prior to
  10168. 0.8 will *not* work with curl!
  10169. - Wil Langford reported a bug that occurred since curl
  10170. did not properly use CRLF when issuing ftp commands. I fixed it.
  10171. - Rearranged the order config files are read. .curlrc is now *always* read
  10172. first and before the command line flags. -K config files then act as
  10173. additional config items.
  10174. - Use -q AS THE FIRST OPTION specified to prevent .curlrc from being read.
  10175. - You can now disable a proxy by using -x "". Useful if the .curlrc file
  10176. specifies a proxy and you wanna fetch something without going through
  10177. that.
  10178. - I'm thinking of dropping the -p support. Its really not useful since ports
  10179. could (and should?) be specified as :<port> appended on the host name
  10180. instead, both in URLs and to proxy host names.
  10181. - Martin Staael reports curl -L bugs under Windows NT
  10182. (test with URL http://come.to/scsde). This bug is not present in this
  10183. version anymore.
  10184. - Added support for the weird FTP URL type= thing. You can download a file
  10185. using ASCII transfer by appending ";type=A" to the right of it. Other
  10186. available types are type=D for dir-list (NLST) and type=I for binary
  10187. transfer. I can't say I've ever seen anyone use this kind of URL though!
  10188. :-)
  10189. - Troy Engel pointed out a bug in my getenv("HOME")
  10190. usage for win32 systems. I introduce getenv.c to better cope with
  10191. this. Mr Engel helps me with the details around that...
  10192. - A little note to myself and others, I should make the win32-binary built
  10193. with SSL support...
  10194. - Ryan Nelson sent me comments about building curl
  10195. with SSL under FreeBSD. See the Makefile for details. Using the configure
  10196. script, it should work better and automatically now...
  10197. - Cleaned up in the port number mess in the source. No longer stores and uses
  10198. proxy port number separate from normal port number.
  10199. - 'configure' script working. Confirmed compiles on:
  10200. Host SSL Compiler
  10201. SunOS 5.5 no gcc
  10202. SunOS 5.5.1 yes gcc
  10203. SunOS 5.6 no cc (with gcc, it has the "gcc include files" problem)
  10204. SunOS 4.1.3 no gcc (without ANSI C headers)
  10205. SunOS 4.1.2 no gcc (native compiler failed)
  10206. Linux 2.0.18 no gcc
  10207. Linux 2.0.32 yes gcc
  10208. Linux 2.0.35 no gcc (with glibc)
  10209. IRIX 6.2 no gcc (cc compiles generate a few warnings)
  10210. IRIX 6.4 no cc (generated warnings though)
  10211. Win32 no Borland
  10212. OSF4.0 no ?
  10213. - Ooops. The 5beta (and 4.10) under win32 failed if the HOME variable wasn't
  10214. set.
  10215. - When using a proxy, curl now guesses and uses the protocol part in cases
  10216. like:
  10217. curl -x proxy:80 www.site.com
  10218. Proxies normally go nuts unless http:// is prepended to the host name, so
  10219. if curl is used like this, it guesses protocol and appends the protocol
  10220. string before passing it to the proxy. It already did this when used
  10221. without proxy.
  10222. - Better port usage with SSL through proxy now. If you specified a different
  10223. https-port when accessing through a proxy, it didn't use that number
  10224. correctly. I also rewrote the code that parses the stuff read from the
  10225. proxy when you wanna connect through it with SSL.
  10226. - Bjorn Reese helped me work around one of the compiler
  10227. warnings on IRIX native cc compiles.
  10228. Version 4.10 (Oct 26, 1998)
  10229. Daniel Stenberg
  10230. - John A. Bristor suggested a config file switch,
  10231. and since I've been having that idea kind of in the background for a long
  10232. time I rewrote the parameter parsing function a little and now I introduce
  10233. the -K/--config flag. I also made curl *always* (unless -K is used) try to
  10234. load the .curlrc file for command line parameters. The syntax for the
  10235. config file is the standard command line argument style. Details in 'curl
  10236. -h' or the README.
  10237. - I removed the -k option. Keep-alive isn't really anything anyone would
  10238. want to enable with curl anyway.
  10239. - Martin Staael helped me add the 'irix' target. Now
  10240. "make irix" should build curl successfully on non-gcc SGI machines.
  10241. - Single switches now toggle behaviours. I.e if you use -v -v the second
  10242. will switch off the verbose mode the first one enabled. This is so that
  10243. you can disable a default setting a .curlrc file enables etc.
  10244. Version 4.9 (Oct 7, 1998)
  10245. Daniel Stenberg
  10246. - Martin Staael suggested curl would support cookies.
  10247. I added -b/--cookie to enable free-text cookie data to be passed. There's
  10248. also a little blurb about general cookie stuff in the README/help text.
  10249. - dmh <dmh at jet.es> suggested HTTP resume capabilities. Although you could
  10250. manually get curl to resume HTTP documents, I made the -c resume flag work
  10251. for HTTP too (unless -r is used too, which would be very odd anyway).
  10252. - Added checklinks.pl to the archive. It is a still experimental perl script
  10253. that checks all links of a web page by using curl.
  10254. - Rearranged the archive hierarchy a little. Build the executable in the
  10255. src/ dir from now on!
  10256. - Version 4.9 and hereafter, is no longer released under the GPL license.
  10257. I have now updated the LEGAL file etc and now this is released using the
  10258. Mozilla Public License to avoid the plague known as "the GPL virus". You
  10259. must make the source available if you decide to change and/or redistribute
  10260. curl, but if you decide to use curl within something else you do not need
  10261. to offer the world the source to that too.
  10262. - Curl did not like HTTP servers that sent no headers at all on a GET
  10263. request. It is a violation of RFC2068 but appearantly some servers do
  10264. that anyway. Thanks to Gordon Beaton for the report!
  10265. - -L/--location was added after a suggestion from Martin Staael. This makes
  10266. curl ATTEMPT to follow the Location: redirect if one is present in the HTTP
  10267. headers. If -i or -I is used with this flag, you will see headers from all
  10268. sites the Location: points to. Do note that the first server can point to a
  10269. second that points to a third etc. It seems the Location: parameter (said
  10270. to be an AbsoluteURI in RFC2068) isn't always absolute.. :-/ Anyway, I've
  10271. made curl ATTEMPT to do the best it can to deal with the reality.
  10272. - Added getlinks.pl to the archive. getlinks.pl selectively downloads
  10273. files that a web page links to.
  10274. Version 4.8.4
  10275. Daniel Stenberg
  10276. - As Julian Romero Nieto reported, curl reported wrong version number.
  10277. - As Teemu Yli-Elsila pointed out, the win32 version of 4.8 (and probably all
  10278. other versions for win32) didn't work with binary files since I'm too used
  10279. to the UNIX style fopen() where binary and text don't differ...
  10280. - Ralph Beckmann brought me some changes that lets curl compile error and
  10281. warning free with -Wall -pedantic with g++. I also took the opportunity to
  10282. clean off some unused variables and similar.
  10283. - Ralph Beckmann made me aware of a really odd bug now corrected. When curl
  10284. read a set of headers from a HTTP server, divided into more than one read
  10285. and the first read showed a full line *exactly* (i.e ending with a
  10286. newline), curl did not behave well.
  10287. Version 4.8.3
  10288. Daniel Stenberg
  10289. - I was too quick to release 4.8.2 with too little testing. One of the
  10290. changes is now reverted slightly to the 4.8.1 way since 4.8.2 couldn't
  10291. upload files. I still think both problems corrected in 4.8.2 remain
  10292. corrected. Reported by Julian Romero Nieto.
  10293. Version 4.8.2
  10294. Daniel Stenberg
  10295. - Bernhard Iselborn reported two FTP protocol errors curl did. They're now
  10296. corrected. Both appeared when getting files from a MS FTP server! :-)
  10297. Version 4.8.1
  10298. Daniel Stenberg
  10299. - Added a last update of the progress meter when the transfer is done. The
  10300. final output on the screen didn't have to be the final size transfered
  10301. which made it sometimes look odd.
  10302. - Thanks to David Long I got rid of a silly bug that happened if a HTTP-page
  10303. had nothing but header. Appearantly Solaris deals with negative sizes in
  10304. fwrite() calls a lot better than Linux does... =B-]
  10305. Version 4.8 (Aug 31, 1998)
  10306. Daniel Stenberg
  10307. - Continue FTP file transfer. -c is the switch. Note that you need to
  10308. specify a file name if you wanna resume a download (you can't resume a
  10309. download sent to stdout). Resuming upload may be limited by the server
  10310. since curl is then using the non-RFC959 command SIZE to get the size of
  10311. the target file before upload begins (to figure out which offset to
  10312. use). Use -C to specify the offset yourself! -C is handy if you're doing
  10313. the output to something else but a plain file or when you just want to get
  10314. the end of a file.
  10315. - recursiveftpget.pl now features a maximum recursive level argument.
  10316. Version 4.7
  10317. Daniel Stenberg
  10318. - Added support to abort a download if the speed is below a certain amount
  10319. (speed-limit) bytes per second for a certain (speed-time) time.
  10320. - Wrote a perl script 'recursiveftpget.pl' to recursively use curl to get a
  10321. whole ftp directory tree. It is meant as an example of how curl can be
  10322. used. I agree it isn't the wisest thing to do to make a separate new
  10323. connection for each file and directory for this.
  10324. Version 4.6
  10325. Daniel Stenberg
  10326. - Added a first attempt to optionally parse the .netrc file for login user
  10327. and password. If used with http, it enables user authentication. -n is
  10328. the new switch.
  10329. - Removed the extra newlines on the default user-agent string.
  10330. - Corrected the missing ftp upload error messages when it failed without the
  10331. verbose flag set. Gary W. Swearingen found it.
  10332. - Now using alarm() to enable second-precision timeout even on the name
  10333. resolving/connecting phase. The timeout is although reset after that first
  10334. sequence. (This should be corrected.) Gary W. Swearingen reported.
  10335. - Now spells "Unknown" properly, as in "Unknown option 'z'"... :-)
  10336. - Added bug report email address in the README.
  10337. - Added a "current speed" field to the progress meter. It shows the average
  10338. speed the last 5 seconds. The other speed field shows the average speed of
  10339. the entire transfer so far.
  10340. Version 4.5.1
  10341. Linas Vepstas
  10342. - SSL through proxy fix
  10343. - Added -A to allow User-Agent: changes
  10344. Daniel Stenberg
  10345. - Made the -A work when SSL-through-proxy.
  10346. Version 4.5
  10347. Linas Vepstas
  10348. - More SSL corrections
  10349. - I've added a port to AIX.
  10350. - running SSL through a proxy causes a chunk of code to be executred twice.
  10351. one of those blocks needs to be deleted.
  10352. Daniel Stenberg
  10353. - Made -i and -I work again
  10354. Version 4.4
  10355. Linas Vepstas
  10356. - -x can now also specify proxyport when used as in 'proxyhost:proxyport'
  10357. - SSL fixes
  10358. Version 4.3
  10359. Daniel Stenberg
  10360. - Adjusted to compile under win32 (VisualC++ 5). The -P switch does not
  10361. support network interface names in win32. I couldn't figure out how!
  10362. Version 4.2
  10363. Linas Vepstas / Sampo Kellomaki
  10364. - Added SSL / SSLeay support (https://)
  10365. - Added the -T usage for HTTP POST.
  10366. Daniel Stenberg
  10367. - Bugfixed the SSL implementation.
  10368. - Made -P a lot better to use other IP addresses. It now accepts a following
  10369. parameter that can be either
  10370. interface - i.e "eth0" to specify which interface's IP address you
  10371. want to use
  10372. IP address - i.e "192.168.10.1" to specify exact IP number
  10373. host name - i.e "my.host.domain" to specify machine
  10374. "-" - (any single-letter string) to make it pick the machine's
  10375. default
  10376. - The Makefile is now ready to compile for solaris, sunos4 and linux right
  10377. out of the box.
  10378. - Better generated version string seen with 'curl -V'
  10379. Version 4.1
  10380. Daniel Stenberg
  10381. - The IP number returned by the ftp server as a reply to PASV does no longer
  10382. have to DNS resolve. In fact, no IP-number-only addresses have to anymore.
  10383. - Binds better to available port when -P is used.
  10384. - Now LISTs ./ instead of / when used as in ftp://ftp.funet.fi/. The reason
  10385. for this is that exactly that site, ftp.funet.fi, does not allow LIST /
  10386. while LIST ./ is fine. Any objections?
  10387. Version 4 (1998-03-20)
  10388. Daniel Stenberg
  10389. - I took another huge step and changed both version number and project name!
  10390. The reason for the new name is that there are just one too many programs
  10391. named urlget already and this program already can a lot more than merely
  10392. getting URLs, and the reason for the version number is that I did add the
  10393. pretty big change in -P and since I changed name I wanted to start with
  10394. something fresh!
  10395. - The --style flags are working better now.
  10396. - Listing directories with FTP often reported that the file transfer was
  10397. incomplete. Wrong assumptions were too common for directories, why no
  10398. size will be attempted to get compared on them from now on.
  10399. - Implemented the -P flag that let's the ftp control issue a PORT command
  10400. instead of the standard PASV.
  10401. - -a for appending FTP uploads works.
  10402. ***************************************************************************
  10403. Version 3.12 (14 March 1998)
  10404. Daniel Stenberg
  10405. - End-of-header tracking still lacked support for \r\n or just \n at the
  10406. end of the last header line.
  10407. Sergio Barresi
  10408. - Added PROXY authentication.
  10409. Rafael Sagula
  10410. - Fixed some little bugs.
  10411. Version 3.11
  10412. Daniel Stenberg
  10413. - The header parsing was still not correct since the 3.2 modification...
  10414. Version 3.10
  10415. Daniel Stenberg
  10416. - 3.7 and 3.9 were simultaneously developed and merged into this version.
  10417. - FTP upload did not work correctly since 3.2.
  10418. Version 3.9
  10419. Rafael Sagula
  10420. - Added the "-e <url> / --referer <url>" option where we can specify
  10421. the referer page. Obviously, this is necessary only to fool the
  10422. server, but...
  10423. Version 3.7
  10424. Daniel Stenberg
  10425. - Now checks the last error code sent from the ftp server after a file has
  10426. been received or uploaded. Wasn't done previously.
  10427. - When 'urlget <host>' is used without a 'protocol://' first in the host part,
  10428. it now checks for host names starting with ftp or gopher and if it does,
  10429. it uses that protocol by default instead of http.
  10430. Version 3.6
  10431. Daniel Stenberg
  10432. - Silly mistake made the POST bug. This has now also been tested to work with
  10433. proxy.
  10434. Version 3.5
  10435. Daniel Stenberg
  10436. - Highly inspired by Rafael Sagula's changes to the 3.1 that added an almost
  10437. functional POST, I applied his changes into this version and made them work.
  10438. (It seems POST requires the Content-Type and Content-Length headers.) It is
  10439. now usable with the -d switch.
  10440. Version 3.3 - 3.4
  10441. Passed to avoid confusions
  10442. Version 3.2
  10443. Daniel Stenberg
  10444. - Major rewrite of two crucial parts of this code: upload and download.
  10445. They are both now using a select() switch, that allows much better
  10446. progress meter and time control.
  10447. - alarm() usage removed completely
  10448. - FTP get can now list directory contents if the path ends with a slash '/'.
  10449. Urlget on a ftp-path that doesn't end with a slash means urlget will
  10450. attempt getting it as a file name.
  10451. - FTP directory view supports -l for "list-only" which lists the file names
  10452. only.
  10453. - All operations support -m for max time usage in seconds allowed.
  10454. - FTP upload now allows the size of the uploaded file to be provided, and
  10455. thus it can better check it actually uploaded the whole file. It also
  10456. makes the progress meter for uploads much better!
  10457. - Made the parameter parsing fail in cases like 'urlget -r 900' which
  10458. previously tried to connect to the host named '900'.
  10459. Version 3.1
  10460. Kjell Ericson
  10461. - Pointed out how to correct the 3 warnings in win32-compiles.
  10462. Daniel Stenberg
  10463. - Removed all calls to exit().
  10464. - Made the short help text get written to stdout instead of stderr.
  10465. - Made this file instead of keeping these comments in the source.
  10466. - Made two callback hooks, that enable external programs to use urlget()
  10467. easier and to grab the output/offer the input easier.
  10468. - It is evident that Win32-compiles are painful. I watched the output from
  10469. the Borland C++ v5 and it was awful. Just ignore all those warnings.
  10470. Version 3.0
  10471. Daniel Stenberg
  10472. - Added FTP upload capabilities. The name urlget gets a bit silly now
  10473. when we can put too... =)
  10474. - Restructured the source quite a lot.
  10475. Changed the urlget() interface. This way, we will survive changes much
  10476. better. New features can come and old can be removed without us needing
  10477. to change the interface. I've written a small explanation in urlget.h
  10478. that explains it.
  10479. - New flags include -t, -T, -O and -h. The -h text is generated by the new
  10480. mkhelp script.
  10481. Version 2.9
  10482. Remco van Hooff
  10483. - Added a fix to make it compile smoothly on Amiga using the SAS/C
  10484. compiler.
  10485. Daniel Stenberg
  10486. - Believe it or not, but the STUPID Novell web server seems to require
  10487. that the Host: keyword is used, so well I use it and I (re-introduce) the
  10488. urlget User-Agent:. I still have to check that this Host: usage works with
  10489. proxies... 'Host:' is required for HTTP/1.1 GET according to RFC2068.
  10490. Version 2.8
  10491. Rafael Sagula
  10492. - some little modifications
  10493. Version 2.7
  10494. Daniel Stenberg
  10495. - Removed the -l option and introduced the -f option instead. Now I'll
  10496. rewrite the former -l kludge in an external script that'll use urlget to
  10497. fetch multipart files like that.
  10498. - '-f' is introduced, it means Fail without output in case of HTTP server
  10499. errors (return code >=300).
  10500. - Added support for -r, ranges. Specify which part of a document you
  10501. want, and only that part is returned. Only with HTTP/1.1-servers.
  10502. - Split up the source in 3 parts. Now all pure URL functions are in
  10503. urlget.c and stuff that deals with the stand-alone program is in main.c.
  10504. - I took a few minutes and wrote an embryo of a README file to explain
  10505. a few things.
  10506. Version 2.6
  10507. Daniel Stenberg
  10508. - Made the -l (loop) thing use the new CONF_FAILONERROR which makes
  10509. urlget() return error code if non-successful. It also won't output anything
  10510. then. Now finally removed the HTTP 1.0 and error 404 dependencies.
  10511. - Added -I which uses the HEAD request to get the header only from a
  10512. http-server.
  10513. Version 2.5
  10514. Rafael Sagula
  10515. - Made the progress meter use HHH:MM:SS instead of only seconds.
  10516. Version 2.4
  10517. Daniel Stenberg
  10518. - Added progress meter. It appears when downloading > BUFFER SIZE and
  10519. mute is not selected. I found out that when downloading large files from
  10520. really really slow sites, it is desirable to know the status of the
  10521. download. Do note that some downloads are done unawaring of the size, which
  10522. makes the progress meter less thrilling ;) If the output is sent to a tty,
  10523. the progress meter is shut off.
  10524. - Increased buffer size used for reading.
  10525. - Added length checks in the user+passwd parsing.
  10526. - Made it grok user+passwd for HTTP fetches. The trick is to base64
  10527. encode the user+passwd and send an extra header line. Read chapter 11.1 in
  10528. RFC2068 for details. I added it to be used just like the ftp one. To get a
  10529. http document from a place that requires user and password, use an URL
  10530. like:
  10531. http://user:passwd@www.site.to.leach/doc.html
  10532. I also added the -u flag, since WHEN USING A PROXY YOU CAN'T SPECIFY THE
  10533. USER AND PASSWORD WITH HTTP LIKE THAT. The -u flag works for ftp too, but
  10534. not if used with proxy. To do the same as the above one, you can invoke:
  10535. urlget -u user:passwd http://www.site.to.leach/doc.html
  10536. Version 2.3
  10537. Rafael Sagula
  10538. - Added "-o" option (output file)
  10539. - Added URG_HTTP_NOT_FOUND return code.
  10540. (Daniel's note:)
  10541. Perhaps we should detect all kinds of errors and instead of writing that
  10542. custom string for the particular 404-error, use the error text we actually
  10543. get from the server. See further details in RFC2068 (HTTP 1.1
  10544. definition). The current way also relies on a HTTP/1.0 reply, which newer
  10545. servers might not do.
  10546. - Looping mode ("-l" option). It's easier to get various split files.
  10547. (Daniel's note:)
  10548. Use it like 'urlget -l 1 http://from.this.site/file%d.html', which will
  10549. make urlget to attempt to fetch all files named file1.html, file2.html etc
  10550. until no more files are found. This is only a modification of the
  10551. STAND_ALONE part, nothing in the urlget() function was modfified for this.
  10552. Daniel Stenberg
  10553. - Changed the -h to be -i instead. -h should be preserved to help use.
  10554. - Bjorn Reese indicated that Borland _might_ use '_WIN32' instead of the
  10555. VC++ WIN32 define and therefore I added a little fix for that.
  10556. Version 2.2
  10557. Johan Andersson
  10558. - The urlget function didn't set the path to url when using proxy.
  10559. - Fixed bug with IMC proxy. Now using (almost) complete GET command.
  10560. Daniel Stenberg
  10561. - Made it compile on Solaris. Had to reorganize the includes a bit.
  10562. (so Win32, Linux, SunOS 4 and Solaris 2 compile fine.)
  10563. - Made Johan's keepalive keyword optional with the -k flag (since it
  10564. makes a lot of urlgets take a lot longer time).
  10565. - Made a '-h' switch in case you want the HTTP-header in the output.
  10566. Version 2.1
  10567. Daniel Stenberg and Kjell Ericson
  10568. - Win32-compilable
  10569. - No more global variables
  10570. - Mute option (no output at all to stderr)
  10571. - Full range of return codes from urlget(), which is now written to be a
  10572. function for easy-to-use in [other] programs.
  10573. - Define STAND_ALONE to compile the stand alone urlget program
  10574. - Now compiles with gcc options -ansi -Wall -pedantic ;)
  10575. Version 2.0
  10576. - Introducing ftp GET support. The FTP URL type is recognized and used.
  10577. - Renamed the project to 'urlget'.
  10578. - Supports the user+passwd in the FTP URL (otherwise it tries anonymous
  10579. login with a weird email address as password).
  10580. Version 1.5
  10581. Daniel Stenberg
  10582. - The skip_header() crap messed it up big-time. By simply removing that
  10583. one we can all of a sudden download anything ;)
  10584. - No longer requires a trailing slash on the URLs.
  10585. - If the given URL isn't prefixed with 'http://', HTTP is assumed and
  10586. given a try!
  10587. - 'void main()' is history.
  10588. Version 1.4
  10589. Daniel Stenberg
  10590. - The gopher source used the ppath variable instead of path which could
  10591. lead to disaster.
  10592. Version 1.3
  10593. Daniel Stenberg
  10594. - Well, I added a lame text about the time it took to get the data. I also
  10595. fought against Johan to prevent his -f option (to specify a file name
  10596. that should be written instead of stdout)! =)
  10597. - Made it write 'connection refused' for that particular connect()
  10598. problem.
  10599. - Renumbered the version. Let's not make silly 1.0.X versions, this is
  10600. a plain 1.3 instead.
  10601. Version 1.2
  10602. Johan Andersson
  10603. - Discovered and fixed the problem with getting binary files. puts() is
  10604. now replaced with fwrite(). (Daniel's note: this also fixed the buffer
  10605. overwrite problem I found in the previous version.)
  10606. Rafael Sagula
  10607. - Let "-p" before "-x".
  10608. Daniel Stenberg
  10609. - Bugfixed the proxy usage. It should *NOT* use nor strip the port number
  10610. from the URL but simply pass that information to the proxy. This also
  10611. made the user/password fields possible to use in proxy [ftp-] URLs.
  10612. (like in ftp://user:password@ftp.my.site:8021/README)
  10613. Johan Andersson
  10614. - Implemented HTTP proxy support.
  10615. - Receive byte counter added.
  10616. Bjorn Reese
  10617. - Implemented URLs (and skipped the old syntax).
  10618. - Output is written to stdout, so to achieve the above example, do:
  10619. httpget http://143.54.10.6/info_logo.gif > test.gif
  10620. Version 1.1
  10621. Daniel Stenberg
  10622. - Adjusted it slightly to accept named hosts on the command line. We
  10623. wouldn't wanna use IP numbers for the rest of our lifes, would we?
  10624. Version 1.0
  10625. Rafael Sagula
  10626. - Wrote the initial httpget, which started all this!