| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137 | 
							- 2006-07-30  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/TorrentMan.h:
 
- 	(advertisePiece): Updated doc.
 
- 	(getAdvertisedPieceIndexes): Updated doc.
 
- 	(removeAdvertisedPiece); New function.
 
- 	
 
- 	* src/TorrentMan.cc
 
- 	(FindElapsedHave): New function object.
 
- 	(removeAdvertisedPiece): New function.
 
- 	* src/HaveEraseCommand.h: New class.
 
- 	* src/HaveEraseCommand.cc: New class.
 
- 	* src/FeatureConfig.h: New class.
 
- 	* src/FeatureConfig.cc: New class.
 
- 	
 
- 	* src/Request.h
 
- 	(defaultPorts): Removed.
 
- 	* src/Request.cc
 
- 	(FeatureConfig.h): Included.
 
- 	(Request): Removed the statements related to defaultPorts.
 
- 	(parseUrl): Removed metalinkEnabled. Use FeatureConfig instead.
 
- 	A default port number is now retrieved from FeatureConfig.
 
- 	
 
- 	* src/main.cc
 
- 	(HaveEraseCommand.h): Included.
 
- 	(showVersion): Added the output of feature list.
 
- 	(main): Added HaveEraseCommand to command queue in BitTorrent
 
- 	downloading.
 
- 	
 
- 	* src/PeerInteractionCommand.h
 
- 	(chokeCheckPoint): Commented out.
 
- 	(periodicExecPoint): New variable.
 
- 	* src/PeerInteractionCommand.cc
 
- 	(executeInternal): Following methods are now called in at least every
 
- 	0.5 seconds to reduce CPU usage:
 
- 	detectMessageFlooding(), peerInteraction->checkRequestSlot(),
 
- 	checkHave(), sendKeepAlive().
 
- 	(checkLongTimePeerChoking): Commented out.
 
- 	* src/BitfieldMan.h
 
- 	(getNthBitIndex): Changed the method signature.
 
- 	(getMissingIndexRandomly): Changed the method signature.
 
- 	* src/BitfieldMan.cc
 
- 	(getNthBitIndex): Rewritten
 
- 	(getMissingIndexRandomly): Rewritten.
 
- 	(hasMissingPiece): Rewritten.
 
- 	(getMissingIndex): Refactored.
 
- 	(getMissingUnusedIndex); Refactored.
 
- 	(getMissingIndex): Refactored.
 
- 	
 
- 2006-07-27  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/PeerMessage.h
 
- 	(Piece.h): Included.
 
- 	(SharedHandle.h): Included.
 
- 	(invalidate): New variable.
 
- 	(uploading): New variable.
 
- 	(isInvalidate): New function.
 
- 	(isUploading): New function.
 
- 	(onPush): New function.
 
- 	(onChoked): New function.
 
- 	(onCanceled): New function.
 
- 	(onAbortPiece): New function.
 
- 	(PeerMessageHandle): New type definition.
 
- 	
 
- 	* src/PeerMessage.cc
 
- 	(PeerMessage): Added the initialization for invalidate and uploading.
 
- 	
 
- 	* src/CancelMessage.h
 
- 	(CancelMessage): Rewritten.
 
- 	* src/RejectMessage.h
 
- 	(RejectMessage): Rewritten.
 
- 	* src/Metalinker.h
 
- 	(operator=): Defined.
 
- 	
 
- 	* src/MetaEntry.h
 
- 	(operator=): Defined.
 
- 	* src/MetalinkResource.h
 
- 	(operator=): Defined.
 
- 	
 
- 	* src/AllowedFastMessage.h
 
- 	(AllowedFastMessage): Rewritten.
 
- 	* src/HandshakeMessage.h
 
- 	(HandshakeMessage): New function(overload).
 
- 	
 
- 	* src/HandshakeMessage.cc
 
- 	(HandshakeMessage): Rewritten.
 
- 	(init): New function.
 
- 	* src/HaveMessage.h
 
- 	(HaveMessage): Rewritten.
 
- 	
 
- 	* src/Time.h
 
- 	(operator=): Defined the function body here.
 
- 	* src/Time.cc
 
- 	(operator=): Removed.
 
- 	
 
- 	* src/SocketCore.h
 
- 	(operator==): Defined here.
 
- 	(operator!=): Defined here.
 
- 	(operator<): Defined here.
 
- 	* src/SocketCore.cc
 
- 	(operator==): Removed.
 
- 	(operator<): Removed.
 
- 	* src/BitfieldMan.h
 
- 	(operator=): Defined the function body here.
 
- 	* src/BitfieldMan.cc
 
- 	(operator=): Removed.
 
- 	* src/TorrentMan.h
 
- 	(deleteErrorPeer): Removed.
 
- 	(deleteUnusedPeer); New function.
 
- 	* src/TorrentMan.cc
 
- 	(addPeer): Call deleteUnusedPeer.
 
- 	(deleteErrorPeer): Removed.
 
- 	(deleteUnusedPeer): New function.
 
- 	* src/PeerAbstractCommand.h
 
- 	(setNoCheck): New function.
 
- 	(noCheck): New variable.
 
- 	* src/PeerAbstractCommand.cc
 
- 	(PeerAbstractCommand): Added the initialization of noCheck.
 
- 	(execute): Added a check for noCheck.
 
- 	(setNoCheck): New function.
 
- 	* src/Util.h
 
- 	(stdio.h): Included.
 
- 	* src/Util.cc
 
- 	(unistd.h): Included.
 
- 	* src/DefaultDiskWriter.cc
 
- 	(unistd.h): Included.
 
- 	* src/Peer.h
 
- 	(operator==): Defined the function body here.
 
- 	(operator!=): Defined the function body here.
 
- 	* src/Peer.cc
 
- 	(operator==): Removed.
 
- 	(operator!=): Removed.
 
- 	* src/Piece.h
 
- 	(Piece): Defined the function body here(copy constructor).
 
- 	(operator=): Defined the function body here.
 
- 	(operator==): Defined the function body here.
 
- 	* src/Piece.cc
 
- 	(Piece): Removed(copy constructor).
 
- 	(operator=): Removed.
 
- 	(operator==): Removed.
 
- 	
 
- 	* src/PeerMessageUtil.h
 
- 	(ChokeMessage.h): Removed.
 
- 	(UnchokeMessage.h): Removed.
 
- 	(InterestedMessage.h): Removed.
 
- 	(NotInterestedMessage.h): Removed.
 
- 	(HaveMessage.h): Removed.
 
- 	(BitfieldMessage.h): Removed.
 
- 	(RequestMessage.h): Removed.
 
- 	(CancelMessage.h): Removed.
 
- 	(PieceMessage.h): Removed.
 
- 	(HandshakeMessage.h): Removed.
 
- 	(KeepAliveMessage.h): Removed.
 
- 	(PortMessage.h): Removed.
 
- 	(HaveAllMessage.h): Removed.
 
- 	(HaveNoneMessage.h): Removed.
 
- 	(PeerConnection.h): Removed.
 
- 	(HandshakeMessage.h): Included.
 
- 	* src/BitfieldMessage.h
 
- 	(init): New function.
 
- 	(BitfieldMessage): Rewritten.
 
- 	(BitfieldMessage): New function(overload).
 
- 	* src/RequestSlot.h
 
- 	(operator=): Defined the function body here.
 
- 	(operator==): Defined the function body here.
 
- 	* src/RequestSlot.cc
 
- 	(operator=): Removed.
 
- 	(operator==): Removed.
 
- 	
 
- 	To remove the dependency on the PeerMessage subclass from
 
- 	PeerInteraction:
 
- 	* src/PeerMessageFactory.h: New class.
 
- 	* src/PeerMessageFactory.cc: New class.
 
- 	* src/SimplePeerMessage.cc
 
- 	(send): If invalidate is true then do nothing.
 
- 	* src/PeerInteractionCommand.cc
 
- 	(HandshakeMessage.h): Included.
 
- 	(KeepAliveMessage.h): Included.
 
- 	(ChokeMessage.h): Included.
 
- 	(UnchokeMessage.h): Included.
 
- 	(HaveMessage.h): Included.
 
- 	(executeInternal): Call setNoCheck().
 
- 	Removed setWriteCheckSocket(socket).
 
- 	* src/PeerInteraction.h
 
- 	(ChokeMessage.h): Removed.
 
- 	(UnchokeMessage.h): Removed.
 
- 	(InterestedMessage.h): Removed.
 
- 	(NotInterestedMessage.h): Removed.
 
- 	(HaveMessage.h): Removed.
 
- 	(BitfieldMessage.h): Removed.
 
- 	(RequestMessage.h): Removed.
 
- 	(CancelMessage.h): Removed.
 
- 	(PieceMessage.h): Removed.
 
- 	(HandshakeMessage.h): Removed.
 
- 	(KeepAliveMessage.h): Removed.
 
- 	(PortMessage.h): Removed.
 
- 	(HaveAllMessage.h): Removed.
 
- 	(HaveNoneMessage.h): Removed.
 
- 	(RejectMessage.h): Removed.
 
- 	(AllowedFastMessage.h): Removed.
 
- 	(SuggestPieceMessage.h): Removed.
 
- 	(PeerMessageFactory.h): Included.
 
- 	(PeerMessageHandle): Removed typedef of PeerMessageHandle.
 
- 	(HandshakeMessageHandle): Removed typedef of HandshakeMessageHandle.
 
- 	(PeerMessageFactory): New variable.
 
- 	(createPeerMessage): Removed.
 
- 	(createHandshakeMessage): Removed.
 
- 	(setPeerMessageCommonProperty): Removed.
 
- 	(addRequestSlot): New function.
 
- 	(receiveHandshake): Changed the return value type to PeerMessageHandle.
 
- 	(getPeerMessageFactory): New function.
 
- 	(createRequestMessage): Removed.
 
- 	(createCancelMessage): Removed.
 
- 	(createPieceMessage): Removed.
 
- 	(createHaveMessage): Removed.
 
- 	(createChokeMessage): Removed.
 
- 	(createUnchokeMessage): Removed.
 
- 	(createInterestedMessage): Removed.
 
- 	(createNotInterestedMessage): Removed.
 
- 	(createBitfieldMessage): Removed.
 
- 	(createKeepAliveMessage): Removed.
 
- 	(createHaveAllMessage): Removed.
 
- 	(createHaveNoneMessage): Removed.
 
- 	(createRejectMessage): Removed.
 
- 	(createAllowedFastMessage): Removed.	
 
- 	* src/PeerInteraction.cc
 
- 	(PeerInteraction): Allocate PeerMessageFactory here.
 
- 	(~PeerInteraction): Deallocate PeerMessageFactory here.
 
- 	(sendMessages): Use msg->isUploading() instead of msg->getId() ==
 
- 	PieceMessage::ID.
 
- 	(addMessage): Simplified by using PeerMessage::onPush().
 
- 	(addRequestSlot): New function.
 
- 	(rejectAllPieceMessageInQueue): Simplified by using
 
- 	PeerMessage::onChoked().
 
- 	(rejectPieceMessageInQueue): Simplified by using
 
- 	PeerMessage::onCanceled().
 
- 	(abortPiece): Simplified by using PeerMessage::abortPiece().
 
- 	(receiveHandshake): Changed the return value type to PeerMessageHandle.
 
- 	(createHandshakeMessage): Removed.
 
- 	(createPeerMessage): Removed.
 
- 	(sendHandshake): Call PeerMessageFactory::createHandshakeMessage().
 
- 	(setPeerMessageCommonProperty): Removed.
 
- 	(createRequestMessage): Removed.
 
- 	(createCancelMessage): Removed.
 
- 	(createPieceMessage): Removed.
 
- 	(createHaveMessage): Removed.
 
- 	(createChokeMessage): Removed.
 
- 	(createUnchokeMessage): Removed.
 
- 	(createInterestedMessage): Removed.
 
- 	(createNotInterestedMessage): Removed.
 
- 	(createBitfieldMessage): Removed.
 
- 	(createKeepAliveMessage): Removed.
 
- 	(createHaveAllMessage): Removed.
 
- 	(createHaveNoneMessage): Removed.
 
- 	(createRejectMessage): Removed.
 
- 	(createAllowedFastMessage): Removed.
 
- 	* src/PieceMessage.h
 
- 	(createRejectMessage): New function.
 
- 	(PieceMessage): Rewritten.
 
- 	(onChoked): New function.
 
- 	(onCanceled): New function.
 
- 	* src/PieceMessage.cc
 
- 	(send): If invalidate is true then do nothing, just return.
 
- 	(createRejectMessage): New function.
 
- 	(onChoked): New function.
 
- 	(onCanceled): New function.
 
- 	* src/RequestMessage.h
 
- 	(RequestMessage): Rewritten.
 
- 	(onPush): New function.
 
- 	(onAbortPiece): New function.
 
- 	* src/RequestMessage.cc
 
- 	(onPush): New function.
 
- 	(onAbortPiece): New function.
 
- 	
 
- 	Update fd_set when a socket is added or deleted in order to improve
 
- 	performance:
 
- 	* src/DownloadEngine.h
 
- 	(rfdset): New variable.
 
- 	(wfdset): New variable.
 
- 	(updateFdSet): New function.
 
- 	* src/DownloadEngine.cc
 
- 	(SetDescriptor::operator()): Use SockCmdMap::value_type.
 
- 	(AccumulateActiveCommandUuid::operator()): Use SockCmdMap::value_type.
 
- 	(waitData): Copy rfdset and wfdset.
 
- 	(updateFdSet): New function.
 
- 	(addSocket): Call updateFdSet.
 
- 	(deleteSocket): Call updateFdSet.
 
- 	
 
- 2006-07-21  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
-         To add the support for Metalink3.0 backward compatible links:
 
- 	
 
- 	* src/Request.h
 
- 	(SAFE_CHARS): Added '#'.
 
- 	(METALINK_MARK): New definition.
 
- 	* src/Request.cc
 
- 	(parseUrl): Added the support for Metalink3.0 backward compatible
 
- 	links.
 
- 	etc
 
- 	* src/PeerInteraction.cc
 
- 	(MsgPushBack): Removed.
 
- 	(sendMessages): Use STL copy and back_inserter.
 
- 	(rejectAllPieceMessageInQueue): Use STL copy and back_inserter.
 
- 	(rejectPieceMessageInQueue): Use STL copy and back_inserter.
 
- 	* src/TorrentMan.h
 
- 	(MAX_PEER_LIST_SIZE): Changed to 100 from 250.
 
- 	
 
- 2006-07-19  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/SharedHandle.h: New class.
 
- 	To wrap Socket, Command, PeerMessage and Peer with SharedHandle:
 
- 	* src/HttpResponseCommand.h
 
- 	(HttpResponseCommand): Wrapped Socket.
 
- 	* src/SocketCore.h
 
- 	(operator==): New function.
 
- 	(operator!=): New function.
 
- 	(operator<): New function.
 
- 	(getSockfd): New function.
 
- 	(isOpen): New function.
 
- 	(writeData): New function.
 
- 	* src/SocketCore.cc
 
- 	(operator==): New function.
 
- 	(operator!=): New function.
 
- 	(operator<): New function.
 
- 	* src/AbstractCommand.h
 
- 	(socket): Changed its type to SocketHandle.
 
- 	(setReadCheckSocket): Replaced Socket with SocketHandle.
 
- 	(setWriteCheckSocket): Replaced Socket with SocketHandle.
 
- 	(disableReadCheckSocket): New function.
 
- 	(disableWriteCheckSocket): New function.
 
- 	(readCheckTarget): Changed its type to SocketHandle.
 
- 	(writeCheckTarget): Changed its type to SocketHandle.
 
- 	(AbstractCommand): Replaced Socket with SocketHandle.
 
- 	* src/AbstractCommand.cc
 
- 	(AbstractCommand): Replaced Socket with SocketHandle.
 
- 	(~AbstractCommand): Removed the deallocation for Socket object.
 
- 	(disableReadCheckSocket): New function.
 
- 	(setReadCheckSocket): Replaced Socket with SocketHandle.
 
- 	(disableWriteCheckSocket): New function.
 
- 	(setWriteCheckSocket): Replaced Socket with SocketHandle.
 
- 	* src/HttpDownloadCommand.cc
 
- 	(DownloadCommand): Replaced Socket with SocketHandle.
 
- 	* src/PeerAbstractCommand.h
 
- 	(socket): Changed its type to SocketHandle.
 
- 	(peer): Changed its type to PeerHandle.
 
- 	(setReadCheckSocket): Replaced Socket with SocketHandle.
 
- 	(setWriteCheckSocket): Replaced Socket with SocketHandle.
 
- 	(disableReadCheckSocket): New function.
 
- 	(disableWriteCheckSocket): New function.
 
- 	(readCheckTarget): Changed its type to SocketHandle.
 
- 	(writeCheckTarget): Changed its type to SocketHandle.
 
- 	(PeerAbstractCommand): Replaced Socket with SocketHandle.
 
- 	Replaced Peer with PeerHandle.
 
- 	* src/HttpRequestCommand.cc
 
- 	(HttpRequestCommand): Replaced Socket with SocketHandle.
 
- 	Use disableReadCheckSocket.
 
- 	* src/PeerInitiateConnectionCommand.h
 
- 	(PeerInitiateConnectionCommand): Replaced Peer with PeerHandle.
 
- 	* src/PeerChokeCommand.cc
 
- 	(UploadFaster::operator()): Replaced Peer with PeerHandle.
 
- 	(DownloadFaster::operator()): Replaced Peer with PeerHandle.
 
- 	(execute): Use PeerHandle.
 
- 	* src/PeerConnection.h
 
- 	(HandshakeMessage.h): Removed include of HandshakeMessage.h.
 
- 	(socket): Changed its type to SocketHandle.
 
- 	(PeerConnection): Replaced Socket with SocketHandle.	
 
- 	* src/PeerConnection.cc
 
- 	(PeerConnection): Replaced Socket with SocketHandle.
 
- 	* src/PeerInteractionCommand.h
 
- 	(PeerInteractionCommand): Replaced socket with SocketHandle.
 
- 	Replaced Peer with PeerHandle.	
 
- 	* src/PeerInteractionCommand.cc
 
- 	(PeerInteractionCommand): Replaced Socket with SocketHandle.
 
- 	Replaced Peer with PeerHandle.
 
- 	(executeInternal): Use disableWriteCheckSocket.
 
- 	Use HandshakeMessageHandle.
 
- 	(receiveMessages): Use PeerMessageHandle.
 
- 	(prepareForNextPeer): Use PeerHandle.
 
- 	* src/HttpProxyRequestCommand.h
 
- 	(HttpProxyRequestCommand): Replaced Socket with SocketHandle.
 
- 	* src/HttpResponseCommand.cc
 
- 	(HttpResponseCommand): Replaced Socket with SocketHandle.
 
- 	* src/TorrentMan.cc
 
- 	(nullPeer): Added external reference.
 
- 	(~TorrentMan): Removed the deallocation of the elements of peers.
 
- 	(addPeer): Rewritten.
 
- 	(isPeerAvailable): Use nullPeer.
 
- 	(deleteOldpeers): Replaced with deleteErrorPeer.
 
- 	(deleteErrorPeer): New function.
 
- 	(getPeer): Use PeerHandle and nullPeer.
 
- 	(hasMissingPiece): Replaced Peer with PeerHandle.
 
- 	(getMissingPieceIndex): Replaced Peer with PeerHandle.
 
- 	(getMissingFastPieceIndex): Replaced Peer with PeerHandle.
 
- 	(getMissingFastPiece): Replaced Peer with PeerHandle.
 
- 	(getMissingPiece): Replaced Peer with PeerHandle.
 
- 	* src/FtpNegotiateCommand.cc
 
- 	(FtpNegotiationCommand): Replaced Peer with PeerHandle.
 
- 	(~FtpNegotiationCommand): Removed the deallocation of Sockets.
 
- 	(recvGreeting): Use disableWriteCheckSocket.
 
- 	(recvPasv): Removed the allocation of Socket.
 
- 	Use disableReadCheckSocket.
 
- 	(sendRestPasv): Use disableWriteCheckSocket.
 
- 	(recvRetr): Changed assertion.
 
- 	* src/PeerInteraction.h
 
- 	(SharedHandle.h): Included SharedHandle.h.
 
- 	(PeerMessageHandle): New type definition.
 
- 	(HandshakeMessageHandle): New type definition.
 
- 	(MessageQueue): Changed. Now its element is of type PeerMessageHandle.
 
- 	(peer): Changed its type to PeerHandle.
 
- 	(createHandshakeMessage): Replaced HandshakeMessage with
 
- 	HandshakeMessageHandle.
 
- 	(createPeerMessage): Replaced PeerMessageHandle with PeerMessage.
 
- 	(PeerInteraction): Replaced Peer with PeerHandle.
 
- 	Replaced Socket with SocketHandle.
 
- 	(addMessage): Replaced PeerMessage with PeerMessageHandle.
 
- 	(receiveMessage): Replaced PeerMessage with PeerMessageHandle.
 
- 	(receiveHandshake): Replaced HandshakeMessage with
 
- 	HandshakeMessageHandle.
 
- 	* src/PeerInteraction.cc
 
- 	(PeerInteraction): Replaced Peer with PeerHandle.
 
- 	Replaced Socket with SocketHandle.
 
- 	(~PeerInteraction): Removed the deallocation of the elements of
 
- 	messageQueue.
 
- 	(MsgPushBack::operator()): Replaced PeerMessage with PeerMessageHandle.
 
- 	(isSendingMessageInProgress): Replaced PeerMessage with
 
- 	PeerMessageHandle.
 
- 	(sendMessages): Use PeerMessageHandle. Removed try-catch block.
 
- 	(addMessage): Replaced PeerMessage with PeerMessageHandle.
 
- 	(rejectAllPieceMessageInQueue): Use PeerMessageHandle.
 
- 	(rejectPieceMessageInQueue): Use PeerMessageHandle.
 
- 	(abortPiece): Use PeerMessageHandle.
 
- 	(receiveHandshake): Replaced HandshakeMessage with
 
- 	HandshakeMessageHandle. Removed try-catch block.
 
- 	(createHandshakeMessage): Replaced HandshakeMessage with
 
- 	HandshakeMessageHandle.
 
- 	(receiveMessage): Replaced PeerMessage with PeerMessageHandle.
 
- 	Removed try-catch block.
 
- 	(createPeerMessage): Replaced PeerMessage with PeerMessageHandle.
 
- 	* src/HttpProxyResponseCommand.cc
 
- 	(HttpProxyRequestCommand): Replaced Socket with SocketHandle.
 
- 	* src/FtpTunnelResponseCommand.h
 
- 	(FtpTunnelResponseCommand): Replaced Socket with SocketHandle.
 
- 	* src/HttpConnection.cc
 
- 	(HttpConnection): Replaced Socket with SocketHandle.
 
- 	* src/PeerAbstractCommand.cc
 
- 	(PeerAbstractCommand): Replaced Socket with SocketHandle.
 
- 	(~PeerAbstractCommand): Removed the deallocation of socket.
 
- 	Use disableReadCheckSocket, disableWriteCheckSocket.
 
- 	(disableReadCheckSocket): New function.
 
- 	(setReadCheckSocket): Replaced Socket with SocketHandle.
 
- 	(disableWriteCheckSocket): New function.
 
- 	(setWriteCheckSocket): Replaced Socket with SocketHandle.
 
- 	* src/InitiateConnectionCommandFactory.h: Corrected indentation.
 
- 	* src/FtpTunnelRequestCommand.cc
 
- 	(FtpTunnelRequestCommand): Replaced Socket with SocketHandle.
 
- 	(~FtpTunnelRequestCommand): Corrected indentation.
 
- 	* src/DownloadCommand.h
 
- 	(DownloadCommand): Replaced Socket with SocketHandle.
 
- 	* src/PeerListenCommand.cc
 
- 	(PeerListenCommand): Removed the initialization of socket.
 
- 	(~PeerListenCommand): Removed the deallocation of socket.
 
- 	(bindPort): Use SocketHandle.
 
- 	(execute): Use SocketHandle and PeerHandle.
 
- 	* src/FtpDowndloadCommand.cc
 
- 	(FtpDownloadCommand): Replaced Socket with SocketHandle.
 
- 	(~FtpDownloadCommand): Removed the deallocation of ctrlSocket.
 
- 	* src/main.cc
 
- 	(main): Corrected indentation.
 
- 	* src/HttpInitiateConnectionCommand.cc
 
- 	(HttpInitiateConnectionCommand): Replaced Socket with SocketHandle.
 
- 	(executeInternal): Removed the allocation of socket.
 
- 	* src/HttpRequestCommand.h
 
- 	(HttpRequestCommand): Replaced Socket with SocketHandle.
 
- 	* src/FtpNegotiationCommand.h
 
- 	(dataSocket): Changed its type to SocketHandle.
 
- 	(serverSocket): Changed its type to SocketHandle.
 
- 	(FtpNegotiationCommand): Replaced Socket with SocketHandle.
 
- 	* src/TorrentMan.h
 
- 	(MAX_PEER_UPDATE): Removed.
 
- 	(MAX_PEERS): New definition.
 
- 	(Peers): The element is now of type PeerHandle.
 
- 	(addPeer): Replaced Peer with PeerHandle. Removed 'duplicate' argument.
 
- 	(getPeer): Replaced Peer with PeerHandle.
 
- 	(deleteOldErrorPeers): Removed.
 
- 	(deleteErrorPeer): New function.
 
- 	(hasMissingPiece): Replaced Peer with PeerHandle.
 
- 	(getMissingPieceIndex): Replaced Peer with PeerHandle.
 
- 	(getMissingPiece): Replaced Peer with PeerHandle.
 
- 	(getMissingFastPieceIndex): Replaced Peer with PeerHandle.
 
- 	(getMissingFastPiece): Replaced Peer with PeerHandle.
 
- 	(addActivePeer): Replaced Peer with PeerHandle.
 
- 	(deleteActivePeer): Replaced Peer with PeerHandle.
 
- 	Added a check for the return value of find.
 
- 	* src/FtpTunnelResponseCommand.cc
 
- 	(FtpTunnelResponseCommand): Replaced Socket with SocketHandle.
 
- 	* src/FtpInitiateConnectionCommand.cc
 
- 	(executeInternal): Removed the allocation of socket.
 
- 	* src/DownloadEngine.h
 
- 	(Sockets): An element is now of type SocketHandle.
 
- 	(SockCmdMap): A key is of type SocketHandle, a value is of type int.
 
- 	(CommandUuids): New type definition.
 
- 	(rsockets): Changed its type to SockCmdMap.
 
- 	(wsockets): Changed its type to SockCmdMap.
 
- 	(addSocket): Rewritten.
 
- 	(deleteSocket): Rewritten.
 
- 	(addSocketForReadCheck): Rewritten.
 
- 	(deleteSocketForReadCheck): Rewritten.
 
- 	(addSocketForWriteCheck): Rewritten.
 
- 	(deleteSocketForWriteCheck): Rewritten.
 
- 	(PairFind): New template class.
 
- 	* src/HttpDownloadCommand.h
 
- 	(HttpDownloadCommand): Replaced Socket with SocketHandle.
 
- 	* src/FtpConnection.cc
 
- 	(FtpConnection): Replaced Socket with SocketHandle.
 
- 	(sendPort): Removed the allocation of serverSocket. Removed try-catch
 
- 	block.
 
- 	* src/InitiateConnectionCommandFactory.cc
 
- 	(DlAbortEx.h): Included DlAbortEx.h.
 
- 	(createInitiateConnectionCommand): Throw exception if the protocol of
 
- 	requested URI is not supported.
 
- 	* src/Peer.cc
 
- 	(nullPeer): Changed its type to PeerHandle.
 
- 	(operator==): New function.
 
- 	(operator!=): New function.
 
- 	* src/Peer.h
 
- 	(SharedHandle.h): Included SharedHandle.h.
 
- 	(operator==): New function.
 
- 	(operator!=): New function.
 
- 	(Peer): Added the default constructor.
 
- 	Use resetStatus() to initialize member variables.
 
- 	(nullPeer): Removed.
 
- 	* src/TrackerUpdateCommand.cc
 
- 	(execute): Brushed up using SharedHandle. Replaced MAX_PEER_UPDATE
 
- 	with MIN_PEERS.
 
- 	* src/PeerListenCommand.h
 
- 	(socket): Changed its type to SocketHandle.
 
- 	* src/Command.h
 
- 	(CommandUuid): New type definition.
 
- 	(uuid): New variable.
 
- 	(uuidGen): New variable.
 
- 	(Command): Added the initialization of uuid.
 
- 	(getUuid): New function.
 
- 	* src/Socket.h
 
- 	(Socket): Removed.
 
- 	(SocketHandle): New type definition.
 
- 	* src/DownloadEngine.h
 
- 	(FindCommand): New function object.
 
- 	(run): The portion of socket check was rewritten.
 
- 	(SetDescriptor): New function object.
 
- 	(AccumulateActiveCommandUuid): New function object.
 
- 	(waitData): Rewritten.
 
- 	(addSocket): Rewritten.
 
- 	(deleteSocket): Rewritten.
 
- 	(addSocketForReadCheck): Rewritten.
 
- 	(addSocketForWriteCheck): Rewritten.
 
- 	(deleteSocketForReadCheck): Rewritten.
 
- 	(deleteSocketForWriteCheck): Rewritten.
 
- 	* src/HttpProxyResponseCommand.h
 
- 	(HttpProxyResponseCommand): Replaced Socket with SocketHandle.
 
- 	* src/HttpConnection.h
 
- 	(socket): Changed its type to SocketHandle.
 
- 	(HttpConnection): Replaced Socket with SocketHandle.
 
- 	* src/PeerInitiateConnectionCommand.cc
 
- 	(PeerInitiateConnectionCommand): Replaced Peer with PeerHandle.
 
- 	(executeInternal): Removed the allocation of socket.
 
- 	(prepareForNextPeer): Use PeerHandle.
 
- 	* src/PeerMessage.h
 
- 	(peer): Changed its type to PeerHandle.
 
- 	(getPeer): Replaced Peer with PeerHandle.
 
- 	(setPeer): Replaced Peer with PeerHandle.
 
- 	* src/DownloadCommand.cc
 
- 	(DownloadCommand): Replaced Socket with SocketHandle.
 
- 	* src/FtpConnection.h
 
- 	(socket): Changed its type to SocketHandle.
 
- 	(FtpConnection): Replaced Socket with SocketHandle.
 
- 	(sendPort); Replaced Socket with SocketHandle.
 
- 	* src/FtpDowndloadCommand.h
 
- 	(ctrlSocket): Changed its type to SocketHandle.
 
- 	(FtpDownloadCommand): Replaced Socket with SocketHandle.
 
- 	* src/HttpProxyRequestCommand.cc
 
- 	(HttpProxyRequestCommand): Replaced Socket with SocketHandle.
 
- 	* src/FtpTunnelRequestCommand.h
 
- 	(FtpTunnelRequestCommand): Replaced Socket with SocketHandle.
 
- 	
 
- 	etc
 
- 	
 
- 	* src/PeerChokeCommand.h
 
- 	(setAllPeerChoked): Removed.
 
- 	(setAllPeerResetDelta): Removed.
 
- 	* src/PeerChokeCommand.cc
 
- 	(setAllPeerChoked): Removed.
 
- 	(ChokePeer): New function object.
 
- 	(setAllPeerResetDelta): Removed.
 
- 	(ResetDelta): New function object.
 
- 	(orderByDownloadRate): Fixed a bug: use DowloadFaster, not UploadFaster
 
- 	(execute): Show download speed when the local node is a seeder.
 
- 	setAllPeerChoked and setAllPeerResetDelta were rewritten
 
- 	using STL.
 
- 	* src/TrackerWatcherCommand.h
 
- 	(MIN_PEERS): Removed.
 
- 	* src/TorrentMan.cc
 
- 	(getPeer): Replaced MAX_PEER_UPDATE with MIN_PEERS.
 
- 	
 
- 2006-07-07  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To fix the bug that .aria2 file is not saved if downloading is stopped
 
- 	by the errors:it results that aria2 can not resume downloading:
 
- 	
 
- 	* src/main.cc
 
- 	(normalDownload): Added the call to save().
 
- 	(main): Added the deletion of the elements in 'reserved'.
 
- 	To fix log:
 
- 	* src/PeerInteraction.cc
 
- 	(receiveHandshake): Fixed log.
 
- 2006-07-05  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To improve download performance in BitTorrent:
 
- 	
 
- 	* src/TorrentMan.cc
 
- 	(getPeer): Check the number of connections. Return nullPeer if
 
- 	it is greater than MAX_PEER_UPDATE.
 
- 	This code was originally here, but was removed in 0.5.1.
 
- 2006-07-04  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
-         To improve the conditional compilation:
 
- 	* src/MultiDiskWriter.h:
 
- 	Replaced ENABLE_SHA1DIGEST with ENABLE_MESSAGE_DIGEST.	
 
- 	* src/MultiDiskWriter.cc:
 
- 	Replaced ENABLE_SHA1DIGEST with ENABLE_MESSAGE_DIGEST.
 
- 	* src/Util.h:
 
- 	Replaced ENABLE_SHA1DIGEST with ENABLE_MESSAGE_DIGEST.
 
- 	Added ENABLE_BITTORRENT around computeFastSet().
 
- 	* src/Util.cc:
 
- 	Replaced ENABLE_SHA1DIGEST with ENABLE_MESSAGE_DIGEST.
 
- 	Added ENABLE_BITTORRENT around computeFastSet().	
 
- 	* src/messageDigest.h:
 
- 	Replaced ENABLE_BITTORRENT with ENABLE_SSL.
 
- 	* src/ShaVisitor.h:
 
- 	Replaced ENABLE_SHA1DIGEST with ENABLE_MESSAGE_DIGEST.
 
- 	* src/ShaVisitor.cc:
 
- 	Replaced ENABLE_SHA1DIGEST with ENABLE_MESSAGE_DIGEST.
 
- 	* src/main.cc:
 
- 	Added ENABLE_BITTORRENT around includes and blocks related to
 
- 	BitTorrent.
 
- 	Added ENABLE_MESSAGE_DIGEST to skip checksum checking when the message
 
- 	digest support is not available.
 
- 	* src/AbstractDiskWriter.h:
 
- 	Replaced ENABLE_SHA1DIGEST with ENABLE_MESSAGE_DIGEST.
 
- 	* src/AbstractDiskWriter.cc:
 
- 	Replaced ENABLE_SHA1DIGEST with ENABLE_MESSAGE_DIGEST.
 
- 	* src/MetalinkEntry.cc
 
- 	(check): Added ENABLE_MESSAGE_DIGEST. Return true if the message digest
 
- 	support is not available.
 
- 	
 
- 	To add command-line options for Metalink:
 
- 	* src/main.cc:
 
- 	Added metalink-version, metalink-language, metalink-os,
 
- 	follow-metalink.
 
- 	To use EXIT_SUCCESS and EXIT_FAILURE with exit():
 
- 	* src/main.cc: Use these definition.
 
- 	* Release 0.6.0
 
- 	
 
- 2006-07-03  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To add Metalink support(http/ftp only):
 
- 	* src/AbstractCommand.h
 
- 	(tryReserved): New function.
 
- 	* src/AbstractCommand.cc
 
- 	(execute): Call tryReserved().
 
- 	(tryReserved): New function.
 
- 	* src/Request.h
 
- 	(Requests): New type definition.
 
- 	* src/SegmentMan.h
 
- 	(reserved): New variable.
 
- 	* src/Util.h
 
- 	(fileChecksum): New function.
 
- 	(toUpper): New function.
 
- 	(toLower): New function.
 
- 	* src/Util.cc
 
- 	(messageDigest.h): Included.
 
- 	(trim): Trim \r\n\t.
 
- 	(fileChecksum): New function.
 
- 	(toUpper): New function.
 
- 	(toLower): New function.
 
- 	* src/main.cc
 
- 	(normalDownload): New function.
 
- 	(main): Added 2 command-line options: metalink-file,
 
- 	metalink-connection. Their usage has not been written yet.
 
- 	* src/MetalinkProcessor.h: New class.
 
- 	* src/Xml2MetalinkProcessor.h: New class.
 
- 	* src/Xml2MetalinkProcessor.cc: New class.
 
- 	* src/MetalinkEntry.h: New class.
 
- 	* src/MetalinkEntry.cc: New class.
 
- 	* src/MetalinkResource.h: New class.
 
- 	* src/MetalinkResource.cc: New class.
 
- 	
 
- 	To add md5 message digest checking:
 
- 	* src/messageDigest.h: Rewritten.
 
- 	* src/MultiDiskWriter.cc: Updated according to the changes in
 
- 	messageDigest.h.
 
- 	* src/ShaVisitor.cc: Updated according to the changes in
 
- 	messageDigest.h.
 
- 	* src/Util.cc: Updated according to the changes in messageDigest.h.
 
- 	* src/AbstractDiskWriter.cc: Updated according to the changes in
 
- 	messageDigest.h.
 
- 	
 
- 	To fix a bug that causes segfault when the payload length in peer
 
- 	message is less than 0:
 
- 	* src/PeerConnection.cc:
 
- 	(receiveMessage): Fixed the bug.
 
- 	* src/PeerMessageUtil.cc
 
- 	(checkLength): Throw an exception if length is less than or equals to
 
- 	0.
 
- 	
 
- 	To add new interfaces to Base64 encoding/decoding:
 
- 	* src/Base64.h
 
- 	(part_encode): Changed the method signature.
 
- 	(encode): New function(overload).
 
- 	(decode): New function(overload).
 
- 	* src/Base64.cc
 
- 	(part_encode): Rewritten.
 
- 	(encode): Rewritten.
 
- 	(encode): New function(overload).
 
- 	To prevent a peer to download same piece if there is an error in
 
- 	checksum:
 
- 	* src/PieceMessage.cc
 
- 	(receivedAction): Call peerInteraction->abortPiece().
 
- 	
 
- 2006-06-25  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
-         To fix the bug that causes same have message is sent many times to
 
- 	a single peer.
 
- 	* src/Time.cc
 
- 	(isNewer): Use Util::difftv().
 
- 	* src/Util.cc
 
- 	(difftv): Added a cast to (long long int).
 
- 	* src/TorrentMan.cc
 
- 	(advertisePiece): Use push_front.
 
- 	(getAdvertisedPieceIndexes): A performance improvement was made.
 
- 	
 
- 	To fix the bug that sends tracker requests without a sleep interval
 
- 	when the number of connections is less than 15.
 
- 	* src/TrackerWatcherCommand.cc
 
- 	(execute): Now the number of connections is not a factor to decide
 
- 	whether or not a tracker request should be sent or not.
 
- 	* src/Time.h
 
- 	(setTimeInSec): New function.
 
- 	* src/Time.cc
 
- 	(setTimeInSec): New function.
 
- 	etc.
 
- 	
 
- 	* src/ChokeMessage.cc
 
- 	(receivedAction): Removed peer->snubbing = false
 
- 	* src/PeerConnection.h
 
- 	(receiveHandshake): Updated doc.
 
- 	* src/TorrentMan.h
 
- 	(getAdvertisedPieceIndexes): Updated the method signature.
 
- 	* src/TorrentMan.cc
 
- 	(getAdvertisedPieceIndexes): Updated the method signature.
 
- 	* src/Time.h
 
- 	(getTimeInMicros): Added a cast to (long long int).
 
- 	(getTimeInMillis): Added a cast to (long long int).
 
- 	
 
- 	* Release 0.5.2
 
- 	
 
- 2006-06-22  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To make a listening socket non-block:
 
- 	
 
- 	* src/SocketCore.h
 
- 	(setNonBlockingMode): New function.
 
- 	* src/SocketCore.cc
 
- 	(setNonBlockingMode): New function.
 
- 	(beginListen): Added a call to setNonBlockingMode().
 
- 	(acceptConnection): Call setNonBlockingMode().
 
- 	(setBlockingMode): Updated.
 
- 	To handle tracker's NAT-checking:
 
- 	
 
- 	* src/PeerConnection.cc
 
- 	(receiveHandshake): 'msg' param is filled with received data and
 
- 	its length is assigned to 'length' param, even if all handshake
 
- 	message is not yet received.
 
- 	* src/PeerInteractionCommand.cc
 
- 	(executeInternal): Use peerInteraction->receiveHandshake(true) when
 
- 	a new peer connects to localhost.
 
- 	A call to peerInteraction->sendHandshake() was removed because 
 
- 	it is called from peerInteraction->receiveHandshake(true).
 
- 	* src/PeerInteraction.h
 
- 	(quickReplied): New variable.
 
- 	(receiveHandshake): Added an argument.
 
- 	* src/PeerInteraction.cc
 
- 	(PeerInteraction): Added the initialization of quickReplied.
 
- 	(receiveHandshake): Send handshake message as soon as the info hash
 
- 	in a handshake message from a peer is correct.
 
- 	
 
- 	To change the random part of peer id and key parameter:
 
- 	* src/TorrentMan.h
 
- 	(key): New variable.
 
- 	* src/TorrentMan.cc
 
- 	(setupInternal1): Use Util::randomAlpha() to generate random part
 
- 	of peer id, which is now "-aria2-"+13 alphabet characters([A-Za-z]).
 
- 	key is also generated by Util::randomAlpha() and it is now 8 character
 
- 	long.
 
- 	* src/Util.h
 
- 	(randomAlpha): New function.
 
- 	* src/Util.cc
 
- 	(randomAlpha): New function.
 
- 	* src/TrackerWatcherCommand.cc
 
- 	(execute): In a tracker request: Use torrentMan->key as key parameter.
 
- 	Added no_peer_id=1.
 
- 	
 
- 	Set snubbing flag to false when a choke message is received from a
 
- 	snubbed peer.
 
- 	* src/ChokeMessage.cc
 
- 	(receivedAction): Set snubbing flag to false.
 
- 	
 
- 2006-06-18  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/TorrentMan.cc (setupInternal1): Fixed peerId generation bug.
 
- 	* src/SimpleLogger.h (writeHeader): New function.
 
- 	* src/SimpleLogger.cc (writeHeader): New function.
 
- 	(writeLog): Fixed the bug that causes segfaults if exception message
 
- 	contains an unescaped "%" character.
 
- 	* src/TrackerWatcherCommand.cc (execute): Added a short sleep
 
- 	when a tracker request fails.
 
- 	* src/Request.cc (parseUrl): Query string is now handled properly.
 
- 	* Release 0.5.1
 
- 	
 
- 2006-06-12  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	
 
- 	To add Time class which represents a specific instant in time and
 
- 	its precision is microseconds. Time checking procedures were rewritten
 
- 	using this object.
 
- 	* src/Time.h: New class.
 
- 	* src/Time.cc: New class.
 
- 	* src/AbstractCommand.h
 
- 	(updateCheckPoint): Removed.
 
- 	(isTimeoutDetected): Removed.
 
- 	(checkPoint): Changed the type to Time.
 
- 	(timeout): New variable.
 
- 	(setTimeout): New function.
 
- 	* src/AbstractCommand.cc
 
- 	(AbstractCommand): Removed the initialization of checkPoint.
 
- 	Added the initialization of timeout.
 
- 	(updateCheckPoint): Removed.
 
- 	(isTimeoutDetected): Removed.
 
- 	(execute): Use checkPoint.reset() and checkPoint.elapsed().
 
- 	* src/PeerChokeCommand.h
 
- 	(checkPoint): Changed the type to Time.
 
- 	* src/PeerChokeCommand.cc
 
- 	(PeerChokeCommand): Removed the initialization of checkPoint.
 
- 	(execute): Rewritten using Time object.
 
- 	* src/TrackerWatcherCommand.h
 
- 	(checkPoint): Changed the type to Time.
 
- 	* src/TrackerWatcherCommand.cc
 
- 	(TrackerWatcherCommand): Removed the initialization of checkPoint.
 
- 	(execute): Rewritten.
 
- 	* src/ConsoleDownloadEngine.h
 
- 	(cp): Changed the type to Time.
 
- 	(startup): Changed the type to Time.
 
- 	* src/ConsoleDownloadEngine.cc
 
- 	(initStatistics): Use cp.reset(), startup.reset().
 
- 	(calculateStatistics): Rewritten using Time object.
 
- 	* src/PeerAbstractCommand.h
 
- 	(updateCheckPoint): Removed.
 
- 	(isTimeoutDetected): Removed.
 
- 	(checkPoint): Changed the type to Time.
 
- 	* src/PeerAbstractCommand.cc
 
- 	(PeerAbstractCommand): Removed the initialization of checkPoint.
 
- 	(updateCheckPoint): Removed.
 
- 	(isTimeoutDetected): Removed.
 
- 	(execute): Use checkPoint.reset() and checkPoint.elapsed().
 
- 	* src/PeerInteractionCommand.cc
 
- 	(PeerInteractionCommand): Removed the initializations of struct
 
- 	timeval variables.
 
- 	* src/PeerInteractionCommand.h
 
- 	(keepAliveCheckPoint): Changed the type to Time.
 
- 	(chokeCheckPoint): Changed the type to Time.
 
- 	(freqCheckPoint): Changed the type to Time.
 
- 	(haveCheckTime): Changed the type to Time.
 
- 	* src/PeerInteractionCommand.cc
 
- 	(executeInternal): Rewritten using Time object.
 
- 	(detectMessageFlooding): Rewritten using Time object.
 
- 	(checkLongTimePeerChoking): Rewritten using Time object.
 
- 	(sendKeepAlive): Rewritten using Time object.
 
- 	(checkHave): Rewritten using Time object.
 
- 	* src/SleepCommand.h
 
- 	(checkPoint): Changed the type to Time.
 
- 	* src/SleepCommand.cc
 
- 	(SleepCommand): Removed the initialization of checkPoint.
 
- 	(execute): Rewritten using Time object.
 
- 	* src/TorrentAutoSaveCommand.h
 
- 	(checkPoint): Changed the type to Time.
 
- 	* src/TorrentAutoSaveCommand.cc
 
- 	(TorrentAutoSaveCommand): Removed the initialization of checkPoint.
 
- 	(execute): Rewritten.
 
- 	* src/DownloadCommand.h
 
- 	(sw): Changed the type to Time.
 
- 	* src/DownloadCommand.cc
 
- 	(DownloadCommand): Removed the initialization of sw.
 
- 	(executeInternal): Rewritten.
 
- 	* src/RequestSlot.h
 
- 	(dispatchedTime): Changed the type to Time.
 
- 	* src/RequestSlot.cc
 
- 	(RequestSlot): Removed the call to setDispatchedTime().
 
- 	(setDispatchedTime): Rewirtten.
 
- 	(isTimeout): Rewritten.
 
- 	(getLatencyInMillis): Rewritten.
 
- 	* src/TorrentDownloadEngine.h
 
- 	(cp): Changed the type to Time[2].
 
- 	(startup): Changed the type to Time.
 
- 	* src/TorrentDownloadEngine.cc
 
- 	(initStatistics): Rewritten.
 
- 	(calculateStatistics): Rewritten.
 
- 	* src/DownloadEngine.cc
 
- 	(run): Rewritten.
 
- 	
 
- 	To detect all attempts to connect to the tracker are failed:
 
- 	* src/AbstractCommand.cc
 
- 	(execute): Increment e->segmentMan->errors if a command aborted.
 
- 	* src/SegmentMan.h
 
- 	(errors): New variable.
 
- 	* src/SegmentMan.cc
 
- 	(SegmentMan): Added the initialization of errors.
 
- 	(init): Added the initialization of errors.
 
- 	* src/TrackerWatcherCommand.cc
 
- 	(execute): If e->segmentMan->errors > 0 then assume that the tracker
 
- 	request was failed.
 
- 	
 
- 	To handle snubbed peers:
 
- 	
 
- 	* src/PeerChokeCommand.cc
 
- 	(optUnchokingPeer): Snubbed peers don't get unchoked.
 
- 	(execute): Snubbed peers don't get unchoked.
 
- 	* src/PeerInteraction.h
 
- 	(REQUEST_TIME_OUT): Changed the value from 120 to 60.
 
- 	* src/PeerInteraction.cc
 
- 	(checkRequestSlot): A peer get marked as "snubbed" if it doesn't send
 
- 	back the requested 16k block in 60 seconds.
 
- 	* src/PieceMessage.cc
 
- 	(receivedAction): A peer's snubbed state is cleard if it sends
 
- 	the requested 16k block in 60 seconds.
 
- 	* src/Peer.h
 
- 	(snubbing): New variable.
 
- 	* src/Peer.cc
 
- 	(resetStatus): Added snubbed = false.
 
- 	
 
- 	To fix the bug that causes have message is not sent:
 
- 	* src/PeerInteractionCommand.cc
 
- 	(~PeerInteractionCommand): Removed e->torrentMan->unadvertisePiece().
 
- 	(FLOODING_CHECK_INTERVAL): New definition(temporal).
 
- 	(detectMessageFlooding): Use FLOODING_CHECK_INTERVAL.
 
- 	* src/TorrentMan.h
 
- 	(HaveEntry): New class.
 
- 	(advertisePiece): Rewritten.
 
- 	(getAdvertisedPieceIndexes): Rewritten.
 
- 	(Haves): Changed the type.
 
- 	(getAdvertisedPieceIndexes): Added an argument.
 
- 	
 
- 	Others:
 
- 	
 
- 	* src/TorrentMan.h
 
- 	(DEFAULT_ANNOUNCE_INTERVAL): Changed the value to 1800.
 
- 	(DEFAULT_ANNOUNCE_MIN_INTERVAL): Changed the value to 1800.
 
- 	* src/TorrentMan.cc
 
- 	(getPeer): Don't check the number of connections here.
 
- 	(setupInternal1): Changed peerId.
 
- 	* src/PeerInteractionCommand.h
 
- 	(KEEP_ALIVE_INTERVAL): New definition.
 
- 	(sendKeepAlive): Use KEEP_ALIVE_INTERVAL.
 
- 	* src/main.cc
 
- 	(main): SA_ONESHOT was replaced with SA_RESETHAND.
 
- 	* src/DownloadEngine.h: Removed unnecessary header includes.
 
- 	
 
- 2006-05-29  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To fix the bug that causes segfaults if a tracker returns a zero-length
 
- 	list as "peers":
 
- 	
 
- 	* src/TrackerUpdateCommand.cc
 
- 	(execute): Added a check to see wether the type of peers is Data*.
 
- 2006-05-27  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* Release 0.5.0
 
- 	To fix compile issue with gcc3:
 
- 	* src/CancelMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/RejectMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/SuggestPieceMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/AllowedFastMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/PortMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/HaveNoneMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/KeepAliveMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/HaveAllMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/UnchokeMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/BitfieldMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/PieceMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/RequestMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/NotInterestedMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/ChokeMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/InterestedMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	* src/HaveMessage.h
 
- 	(ID): Renamed as ID_t
 
- 	(ID_t): New enum.
 
- 	
 
- 2006-05-26  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/PeerAbstractCommand.h
 
- 	(beforeSocketCheck): Removed.
 
- 	* src/PeerAbstractCommand.cc
 
- 	Modified in order to call executeInternal() even if socket check
 
- 	and upload limit check fail.
 
- 	* src/PeerInteractionCommand.h
 
- 	(keepAlive): Removed.
 
- 	(sendKeepAlive): New function.
 
- 	(checkHave): New function.
 
- 	(beforeSocketCheck): Removed.
 
- 	* src/PeerInteractionCommand.cc
 
- 	(executeInternal): Use peerInteraction->checkRequestSlot(). Added
 
- 	calls to checkHave() and sendKeepAlive().
 
- 	(keepAlive): Renamed to sendKeepAlive().
 
- 	(sendKeepAlive): New function.
 
- 	(beforeSocketCheck): Removed.
 
- 	(checkHave): New function.
 
- 	* src/BitfieldMan.cc
 
- 	(getMissingIndex): Don't call getMissingIndexRandomly() if max is 0.
 
- 	(getMissingUnusedIndex): Don't call getMissingIndexRandomly() if max is
 
- 	0.
 
- 	(getMissingIndex): Dont't call getMissingIndexRandomly() if max is 0.
 
- 	* src/TorrentMan.h
 
- 	(UsedPieces): Removed.
 
- 	(Pieces): New type definition.
 
- 	* src/Piece.h: Updated doc.
 
- 	* src/Peer.h
 
- 	(totalLength): Removed.
 
- 	* src/Peer.cc
 
- 	(updateLatency): Fixed the latency calculation.
 
- 	* src/TorrentMan.cc
 
- 	(addPeer): Call deleteOldErrorPeers() only if peers.size() is higher
 
- 	than or equal to MAX_PEER_LIST_SIZE.
 
- 	If duplicate is false and peer.size() >= MAX_PEER_LIST_SIZE,
 
- 	then return false.
 
- 	(deleteOldErrorPeers): Rewritten.
 
- 	(deleteUsedPiece): Fixed the miss use of STL remove.
 
- 	* src/PeerInteraction.h
 
- 	(Pieces): Removed.
 
- 	(deleteTimeoutRequestSlot): Removed.
 
- 	(deleteCompletedRequestSlot): Removed.
 
- 	(checkRequestSlot): New function.
 
- 	* src/PeerInteraction.cc
 
- 	(deleteTimeoutRequestSlot): Merged to checkRequestSlot().
 
- 	(deleteCompletedRequestSlot): Merged to checkRequestSlot().
 
- 	(checkRequestSlot): New function.
 
- 	* src/DownloadEngine.cc
 
- 	(run): Clear activeSockets before calling waitData().
 
- 	(waitData): Removed a call to activeSockets.clear().
 
- 	
 
- 2006-05-24  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To attempt to handle EINTR:
 
- 	
 
- 	* src/SocketCore.cc
 
- 	(isReadable): Added EINTR handling.
 
- 	(isWritable): Added EINTR handling.
 
- 	To improve the performance:
 
- 	
 
- 	* src/AbstractCommand.cc
 
- 	(isTimeoutDetected): Use Util::difftvsec() instead of Util::difftv().
 
- 	* src/PeerInteractionCommand.h
 
- 	(receiveMessage): Renamed as receiveMessages().
 
- 	(receiveMessages): New function.
 
- 	* src/PeerInteractionCommand.cc
 
- 	(executeInternal): receiveMessage loop is moved to new receiveMessages
 
- 	() function. detectMessageFlooding() is moved here.
 
- 	(detectMessageFlooding): Use Util::difftvsec() instead of Util::difftv
 
- 	(). The flooding detection for have message is comment out.
 
- 	(checkLongTimePeerChoking): Use Util::difftvsec() instead of
 
- 	Util::difftv().
 
- 	(receiveMessage): Renamed as receiveMessages().
 
- 	(receiveMessages): New function.
 
- 	(keepAlive): Use Util::difftvsec() instead of Util::difftv().
 
- 	(beforeSocketCheck): Commented out checkLongTimePeerChoking().
 
- 	* src/SleepCommand.cc
 
- 	(execute): Use Util::difftvsec() instead of Util::difftv().
 
- 	* src/BitfieldMan.h
 
- 	(getNthBitIndex): New function.
 
- 	(hasMissingPiece): New function.
 
- 	(getAllMissingIndexes): New function.
 
- 	* src/BitfieldMan.cc
 
- 	(countSetBit): Rewritten.
 
- 	(getNthBitIndex): New function.
 
- 	(getMissingIndexRandomly): Rewritten.
 
- 	(hasMissingPiece): New function.
 
- 	(getAllMissingIndexes): New function.
 
- 	* src/TorrentMan.cc
 
- 	(hasMissingPiece): New function.
 
- 	(deleteUsedPiece): Rewritten using STL.
 
- 	* src/PeerInteraction.cc
 
- 	(getNewPieceAndSendInterest): Use TorrentMan::hasMissingPiece(), which
 
- 	is a little bit faster then TorrentMan::getMissingPieceIndex().
 
- 	(addRequests): Updated the number of pending requests.
 
- 	* src/PeerAbstractCommand.cc
 
- 	(isTimeoutDetected): Use Util::difftvsec() instead of Util::difftv().
 
- 	(execute): Returns true if TorrentMan::isHalt() is true.
 
- 	Corrected the condition of upload limit checking.
 
- 	* src/Util.h
 
- 	(countBit): New function.
 
- 	* src/Util.cc
 
- 	(nbits): New variable.
 
- 	(countBit): New function.
 
- 	* src/DownloadEngine.h
 
- 	(SockCmdMap): New type definition.
 
- 	(waitData): Added an argument.
 
- 	(addSocket): Added an argument.
 
- 	(addSocketForReadCheck): Added an argument.
 
- 	(addSocketForWriteCheck): Added an argument.
 
- 	* src/DownloadEngine.cc
 
- 	(run): Executes only commands whose sockets are ready to read or write.
 
- 	All commands are executed in every 1 second.
 
- 	(waitData): Calls select() again if it returned
 
- 	EINTR.
 
- 	(addSocket): Saves socket and command object pair to the map.
 
- 	(deleteSocket): Deletes socket and command object pair from the map.
 
- 	(addSocketForReadCheck): Added an argument.
 
- 	(addSocketForWriteCheck): Added an argument.
 
- 	* src/DownloadCommand.cc
 
- 	(executeInternal): Use Util::difftvsec() instead of Util::difftv().
 
- 	
 
- 	To send "event=stopped" to the tracker when the application finishes:
 
- 	
 
- 	* src/PeerChokeCommand.h
 
- 	(checkPoint): New variable.
 
- 	* src/PeerChokeCommand.cc
 
- 	(PeerChokeCommand): Added the initialization of checkPoint.
 
- 	(execute): The interval check is now done by checkPoint, not
 
- 	SleepCommand. Return true if TorrentMan::isHalt() is true.
 
- 	* src/TorrentMan.h
 
- 	(halt): New function.
 
- 	(hasMissingPiece): New function.
 
- 	(isHalt): New function.
 
- 	(setHalt): New function.
 
- 	* src/TorrentMan.cc
 
- 	(TorrentMan): Added the initialization of halt.
 
- 	* src/TorrentAutoSaveCommand.h
 
- 	(checkPoint): New variable.
 
- 	* src/PeerListenCommand.cc
 
- 	(execute): Returns true if TorrentMan::isHalt() is true.
 
- 	* src/main.cc
 
- 	(setSignalHander): Added flags argument.
 
- 	(torrentHandler): Just calls TorrentMan::setHalt(true) and returns.
 
- 	(main): Set SA_ONESHOT flag of the signal hander of SIGINT and SIGTERM.
 
- 	Removed printDownloadAbortMessage() after torrent downloading loop.
 
- 	* src/TorrentAutoSaveCommand.cc
 
- 	(TorrentAutoSaveCommand): Added the initialization of checkPoint.
 
- 	(execute): Returns true if TorrentMan::isHalt() is true.
 
- 	The interval check is now done by checkPoint, not SleepCommand.
 
- 	* src/TrackerWatcherCommand.cc
 
- 	(execute): If TorrentMan::isHalt(), then create a tracker request with
 
- 	event=stopped.
 
- 	* src/TrackerUpdateCommand.cc
 
- 	(prepareForRetry): Do not use SleepCommand here.
 
- 	(execute): Returns true if TorrentMan::isHalt() is true.
 
- 	
 
- 	Others:
 
- 	
 
- 	* src/TorrentMan.cc
 
- 	(getMissingPieceIndex): Updated log message.
 
- 	* src/PeerInteraction.cc
 
- 	(createPeerMessag): Updated log message.
 
- 	
 
- 2006-05-20  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To add the ability to download several pieces in mix in a command and
 
- 	increase the number of request slots according to request-cancel
 
- 	latency:
 
- 	
 
- 	* src/PeerInteractionCommand.cc
 
- 	(executeInternal): The number of messages to be received at a time
 
- 	is increased from 10 to 50.
 
- 	* src/LogFactory
 
- 	(getInstance): Added NullLogger.
 
- 	* src/NullLogger.h: New class.
 
- 	* src/BitfieldMan.h
 
- 	(getMissingIndex): New function.
 
- 	* src/BitfieldMan.cc
 
- 	(getMissingIndex): New function.
 
- 	* src/TorrentMan.h
 
- 	(checkOutPiece): New function.
 
- 	(getMissingPieceIndex): New function.
 
- 	(getMissingFastPieceIndex): New function.
 
- 	(getMissingFastPiece): New function.
 
- 	* src/TorrentMan.cc
 
- 	(updatePiece): Rewritten using STL.
 
- 	(syncPiece): Rewritten using STL.
 
- 	(getMissingPiece): Rewritten using getMissingPieceIndex() and
 
- 	checkOutPiece().
 
- 	(getMissingPieceIndex): New function.
 
- 	(getMissingFastPieceIndex): New function.
 
- 	(getMissingFastPiece): New function.
 
- 	(checkOutPiece): New function.
 
- 	* src/PeerInteraction.h
 
- 	(Pieces): New type definition.
 
- 	(piece): Removed.
 
- 	(pieces): New variable.
 
- 	(getNewPieceAndSendInterest): Added the "piece" argument.
 
- 	(abortPiece): Added the "piece" argument.
 
- 	(abortAllPieces): New function.
 
- 	(isInRequestSlot): New function.
 
- 	(hasDownloadPiece): Added the "index" argument.
 
- 	(setDownloadPiece): Removed.
 
- 	(getDownloadPiece): Added the "index" argument.
 
- 	(updatePiece): New function.
 
- 	(createRequestMessage): Added the "index" argument.
 
- 	* src/PeerInteraction.cc
 
- 	(onChoked): Rewritten.
 
- 	(abortPiece): Rewirtten.
 
- 	(abortAllPieces): New function.
 
- 	(deleteTimeoutRequestSlot): Rewritten.
 
- 	Clarified code a little bit.
 
- 	(deleteCompletedRequestSlot): Rewritten.
 
- 	(isInRequestSlot): New function.
 
- 	(syncPiece): Rewritten.
 
- 	(updatePiece): New function.
 
- 	(getNewPieceAndSendInterest): Rewritten.
 
- 	(addRequests):  Rewritten.
 
- 	(getDownloadPiece): Rewritten.
 
- 	(hasDownloadPiece): Rewritten.
 
- 	(createRequestMessage): Added the "index" argument.
 
- 	* src/common.h
 
- 	(BITFIELD_LEN_FROM_PIECES): Enclosed the variable in parentheses.
 
- 	(DIV_FLOOR): New definition.
 
- 	* src/PieceMessage.cc
 
- 	(receivedAction): Update request-piece latency here.
 
- 	* src/RequestSlot.h
 
- 	(getLatencyInMillis): New function.
 
- 	* src/RequestSlot.cc
 
- 	(isTimeout): Rewritten using getLatencyInMillis.
 
- 	(getLatencyInMillis): New function.
 
- 	* src/Piece.h
 
- 	(operator==): New function.
 
- 	(getMissingBlockIndex): New function.
 
- 	* src/Piece.cc
 
- 	(operator==): New function.
 
- 	(getMissingBlockIndex): New function.
 
- 	* src/Peer.h
 
- 	(DEFAULT_LATENCY): New definition.
 
- 	(latency): New variable.
 
- 	(updateLatency): New function.
 
- 	(getLatency): New function.
 
- 	* src/Peer.cc
 
- 	(resetStatus): Reset latecy.
 
- 	(updateLatency): New function.
 
- 	
 
- 2006-05-20  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/SocketCore.cc
 
- 	(isReadable): Added secure to the condition.
 
- 	* src/HttpConnection.cc
 
- 	(receiveResponse): Fixed a bug that causes no response header
 
- 	exception.
 
- 	* src/Peer.h
 
- 	(getFastSet): Fixed the return value type.
 
- 	
 
- 2006-05-18  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To remove a wait from download loop:
 
- 	* src/DownloadEngine.cc
 
- 	(run): Comment out shortSleep.
 
- 	
 
-         To rewrite the message handling:
 
- 	* src/SimplePeerMessage.h: New class.
 
- 	* src/SimplePeerMessage.cc: New class.
 
- 	* src/CancelMessage.h: Derived from SimplePeerMessage.
 
- 	(msg): New variable.
 
- 	(create): New function.
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/CancelMessage.cc
 
- 	(create): New function.
 
- 	(receivedAction): Replaced deleteRequestMessageInQueue with
 
- 	rejectPieceMessageInQueue.
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/BitfieldMessage.h: Derived from SimplePeerMessage.
 
- 	(msg): New variable.
 
- 	(msgLength): New variable.
 
- 	(~BitfieldMessage): Deleted msg.
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/BitfieldMessage.cc
 
- 	(create): New function.
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/ChokeMessage.h: Derived from SimplePeerMessage.
 
- 	(msg): New variable.
 
- 	(sendPredicate): New function.
 
- 	(onSendComplete): New function.
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	(create): New function.
 
- 	* src/ChokeMessage.cc
 
- 	(create): New function.
 
- 	(send): Removed.
 
- 	(sendPredicate): New function.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	(onSendComplete): New function.
 
- 	* src/KeepAliveMessage.h: Derived from SimplePeerMessage.
 
- 	(msg): New variable.
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.	
 
- 	* src/KeepAliveMessage.cc
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/PortMessage.h
 
- 	(create): New function.
 
- 	(receivedAction): Updated log message.
 
- 	* src/PortMessage.cc: New file.
 
- 	* src/UnchokeMessage.h: Derived from SimplePeerMessage.
 
- 	(msg): New variable.
 
- 	(sendPredicate): New function.
 
- 	(onSendComplete): New function.
 
- 	(create): New function.
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/UnchokeMessage.cc
 
- 	(create): New function.
 
- 	(send): Removed.
 
- 	(sendPredicate): New function.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	(onSendComplete): New function.
 
- 	* src/PieceMessage.h
 
- 	(leftPieceDataLength): Removed.
 
- 	(leftDataLength): New variable.
 
- 	(headerSend): New variable.
 
- 	(pendingCount): New variable.
 
- 	(msgHeader): New variable.
 
- 	(sendPieceData): New function.
 
- 	(incrementPendingCount): New function.
 
- 	(isPendingCountMax): New function.
 
- 	(create): New function.
 
- 	(getMessageHeader): New function.
 
- 	(getMessageHeaderLength): New function.
 
- 	* src/PieceMessage.cc
 
- 	(create): New function.
 
- 	(getMessageHeader): New function.
 
- 	(getMessageHeaderLength): New function.
 
- 	(send): Rewritten.
 
- 	(sendPieceData): New function.
 
- 	* src/HaveMessage.h: Derived from SimplePeerMessage.
 
- 	(msg): New variable.
 
- 	(create): New function.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/HaveMessage.cc
 
- 	(create): New function.
 
- 	(send): Removed.
 
- 	(sendPieceData): New function.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/RequestMessage.h: Derived from SimplePeerMessage.
 
- 	(msg): New variable.
 
- 	(create): New function.
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/RequestMessage.cc
 
- 	(create): New function.
 
- 	(receivedAction): Added the handling of fast extension.
 
- 	Deleted torrentMan->addUploadLength, torrentMan->addDeltaUploadLength.
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/InterestedMessage.h: Derived from SimplePeerMessage.
 
- 	(msg): New variable.
 
- 	(sendPredicate): New function.
 
- 	(onSendComplete): New function.
 
- 	(create): New function.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/InterestedMessage.cc
 
- 	(create): New function.
 
- 	(send): Removed.
 
- 	(sendPieceData): New function.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	(onSendComplete): New function.
 
- 	* src/NotInterestedMessage.h: Derived from SimplePeerMessage.
 
- 	(msg): New variable.
 
- 	(sendPieceData): New function.
 
- 	(onSendComplete): New function.
 
- 	(create): New function.
 
- 	(send): Removed.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	* src/NotInterestedMessage.cc
 
- 	(create): New function.
 
- 	(send): Removed.
 
- 	(sendPredicate): New function.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	(onSendComplete): New function.
 
- 	* src/AllowedFastMessage.h: New class.
 
- 	* src/AllowedFastMessage.cc: New class.
 
- 	* src/RejectMessage.h: New class.
 
- 	* src/RejectMessage.cc: New class.
 
- 	* src/SuggestPieceMessage.h: New class.
 
- 	* src/SuggestPieceMessage.cc: New class.
 
- 	* src/HaveAllMessage.h: New class.
 
- 	* src/HaveAllMessage.cc: New class.
 
- 	* src/HaveNoneMessage.h: New class.
 
- 	* src/HaveNoneMessage.cc: New class.
 
- 	* src/HandshakeMessage.h: Derived from SimplePeerMessage.
 
- 	(msg): New variable.
 
- 	(reserved): New variable.
 
- 	(create): New function.
 
- 	(getId): New function.
 
- 	(receivedAction): New function.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	(isFastExtensionSupported): New function.
 
- 	* src/HandshakeMessage.cc
 
- 	(HandshakeMessage): Moved here from HandshakeMessage.h.
 
- 	(create): New function.
 
- 	(getMessage): New function.
 
- 	(getMessageLength): New function.
 
- 	(toString): Added the output of reserved field.
 
- 	(check): Added const qualifier.
 
- 	(isFastExtensionSupported): New function.
 
- 	* src/PeerMessageUtil.h
 
- 	(createChokeMessage): Removed.
 
- 	(createUnchokeMessage): Removed.
 
- 	(createInterestedMessage): Removed.
 
- 	(createNotInterestedMessage): Removed.
 
- 	(createHaveMessage): Removed.
 
- 	(createBitfieldMessage): Removed.
 
- 	(createRequestMessage): Removed.
 
- 	(createCancelMessage): Removed.
 
- 	(createPieceMessage): Removed.
 
- 	(createPortMessage): Removed.
 
- 	(createChokeMessage): Removed.
 
- 	(createUnchokeMessage): Removed.
 
- 	(createInterestedMessage): Removed.
 
- 	(createNotInterestedMessage): Removed.
 
- 	(createHaveMessage): Removed.
 
- 	(createBitfieldMessage): Removed.
 
- 	(createRequestMessage): Removed.
 
- 	(createCancelMessage): Removed.
 
- 	(createPieceMessage): Removed.
 
- 	(createKeepAliveMessage): Removed.
 
- 	(createHandshakeMessage): Removed.
 
- 	(setIntParam): New function.
 
- 	(createPeerMessageString): New function.
 
- 	* src/PeerMessageUtil.cc
 
- 	(createChokeMessage): Removed.
 
- 	(createUnchokeMessage): Removed.
 
- 	(createInterestedMessage): Removed.
 
- 	(createNotInterestedMessage): Removed.
 
- 	(createHaveMessage): Removed.
 
- 	(createBitfieldMessage): Removed.
 
- 	(createRequestMessage): Removed.
 
- 	(createCancelMessage): Removed.
 
- 	(createPieceMessage): Removed.
 
- 	(createPortMessage): Removed.
 
- 	(createRequestMessage): Removed.
 
- 	(createCancelMessage): Removed.
 
- 	(createPieceMessage): Removed.
 
- 	(createHaveMessage): Removed.
 
- 	(createChokeMessage): Removed.
 
- 	(createUnchokeMessage): Removed.
 
- 	(createInterestedMessage): Removed.
 
- 	(createNotInterestedMessage): Removed.
 
- 	(createBitfieldMessage): Removed.
 
- 	(createKeepAliveMessage): Removed.
 
- 	(createHandshakeMessage): Removed.
 
- 	(setIntParam): New function.
 
- 	(createPeerMessageString): New function.
 
- 	* src/PeerConnection.h
 
- 	(peer): Removed.
 
- 	(torrentMan): Removed.
 
- 	(createNLengthMessage): Removed.
 
- 	(setIntParam): Removed.
 
- 	(writeOutgoingMessageLog): Removed all overloaded functions.
 
- 	(PeerConnection): Deleted peer and torrentMan from its arguments.
 
- 	(sendMessage): New function.
 
- 	(sendHandshake): Removed.
 
- 	(sendKeepAlive): Removed.
 
- 	(sendChoke): Removed.
 
- 	(sendUnchoke): Removed.
 
- 	(sendInterested): Removed.
 
- 	(sendNotInterested): Removed.
 
- 	(sendHave): Removed.
 
- 	(sendBitfield): Removed.
 
- 	(sendRequest): Removed.
 
- 	(sendPiece): Removed.
 
- 	(sendPieceHeader): Removed.
 
- 	(sendPieceData): Removed.
 
- 	(sendCancel): Removed.
 
- 	(getPeer): Removed.
 
- 	* src/PeerConnection.cc
 
- 	(PeerConnection): Deleted peer and torrentMan from its arguments.
 
- 	(sendHandshake): Removed.
 
- 	(sendKeepAlive): Removed.
 
- 	(createNLengthMessage): Removed.
 
- 	(setIntParam): Removed.
 
- 	(writeOutgoingMessageLog): Removed all overloaded functions.
 
- 	(sendChoke): Removed.
 
- 	(sendUnchoke): Removed.
 
- 	(sendInterested): Removed.
 
- 	(sendNotInterested): Removed.
 
- 	(sendHave): Removed.
 
- 	(sendBitfield): Removed.
 
- 	(sendRequest): Removed.
 
- 	(sendPiece): Removed.
 
- 	(sendPieceHeader): Removed.
 
- 	(sendPieceData): Removed.
 
- 	(sendMessage): New function.
 
- 	(sendCancel): Removed.
 
- 	* src/PeerInteractionCommand.cc
 
- 	(PeerInteractionCommand): Call setUploadLimit.
 
- 	(executeInternal): Call setUploadLimit.
 
- 	Added the handling of "inProgress" state of handshake message.
 
- 	Call sendBitfield() or sendAllowdFast() instead of deprecated
 
- 	sendNow().
 
- 	(keepAlive): Call addMessage and sendMessage instead of deprecated
 
- 	sendNow().
 
- 	(beforeSocketCheck): Call addMessage instead of deprecated trySendNow()
 
- 	* src/TorrentMan.h
 
- 	(PEER_ID_LENGTH): New definition.
 
- 	(hasAllPieces): New function.
 
- 	* src/TorrentMan.cc
 
- 	(getMissingPiece): Added the handling of fast extension.
 
- 	(cancelPiece): Call updatePiece().
 
- 	(hasAllPieces): New function.
 
- 	* src/PeerInteraction.h
 
- 	(fastSet): New variable.
 
- 	(getNewPieceAndSendInterest): Changed the return type to void.
 
- 	(send): Renamed as sendMessages.
 
- 	(deleteAllRequestSlot): Removed.
 
- 	(deleteRequestMessageInQueue): Renamed as rejectPieceMessageInQueue.
 
- 	(cancelAllRequest): Removed all overloaded functions.
 
- 	(deleteAllRequestSlot): Removed.
 
- 	(deletePieceMessageInQueue): Renamed as rejectAllPieceMessageInQueue.
 
- 	(rejectPieceMessageInQueue): New function.
 
- 	(rejectAllPieceMessageInQueue): New function.
 
- 	(onChoked): New function.
 
- 	(isSendingMessageInProgress): New function.
 
- 	(getCorrespondingRequestSlot): Changed its arguments.
 
- 	(isInFastSet): New function.
 
- 	(addFastSetIndex): New function.
 
- 	(addRequests): New function.
 
- 	(sendNow): Removed.
 
- 	(trySendNow): Removed.
 
- 	(sendBitfield): New function.
 
- 	(sendAllowdFast): New function.
 
- 	(createHaveAllMessage): New function.
 
- 	(createHaveNoneMessage): New function.
 
- 	(createRejectMessage): New function.
 
- 	(createAllowedFastMessage): New function.
 
- 	* src/PeerInteraction.cc
 
- 	(send): Renamed as sendMessages.
 
- 	(sendMessages): New function.
 
- 	(MsgPushBack): New class.
 
- 	(isSendingMessageInProgress): New function.
 
- 	(deletePieceMessageInQueue): Renamed as rejectAllPieceMessageInQueue.
 
- 	(rejectAllPieceMessageInQueue): New function.
 
- 	Added the handling of fast extension.
 
- 	(deleteRequestMessageInQueue): Renamed as rejectPieceMessageInQueue.
 
- 	(rejectPieceMessageInQueue): New function.
 
- 	Added the handling of fast extension.
 
- 	(deleteRequestSlot): Replaced for loop with  std::find.
 
- 	(onChoked): New function.
 
- 	(deleteAllRequestSlot): Removed.
 
- 	(abortPiece): Rewirtten.
 
- 	(deleteTimeoutRequestSlot): Updated log messages.
 
- 	(getCorrespondingRequestSlot): Changed its arguments.
 
- 	(cancelAllRequest): Removed all overloaded functions.
 
- 	(receiveHandshake): Added the check to see whether an incoming peer
 
- 	supports fast extension.
 
- 	(createHandshakeMessage): Use HandshakeMessage::create instead of
 
- 	PeerMessageUtil.
 
- 	(createPeerMessage): Use create() of each message class instead of
 
- 	PeerMessageUtil.
 
- 	HaveAllMessage, HaveNoneMessage, RejectMessage, SuggestPieceMessage,
 
- 	AllowedFastMessage were added.
 
- 	(getNewPieceAndSendInterest): Changed its return value type to void.
 
- 	Added the handling of fast extension.
 
- 	(addRequests): New function.
 
- 	(sendNow): Removed.
 
- 	(sendHandshake): Rewritten.
 
- 	(trySendNow): Removed.
 
- 	(sendBitfield): New function.
 
- 	(sendAllowdFast): New function.
 
- 	(isInFastSet): New function.
 
- 	(addFastSetIndex): New function.
 
- 	(createRequestMessage): Use RequestMessage::create instead of
 
- 	PeerMessageUtil.
 
- 	(createCancelMessage): Use CancelMessage::create instead of
 
- 	PeerMessageUtil.
 
- 	(createPieceMessage): Use PieceMessage::create instead of
 
- 	PeerMessageUtil.
 
- 	(createHaveMessage): Use HaveMessage::create instead of
 
- 	PeerMessageUtil.
 
- 	(createChokeMessage): Use ChokeMessage::create instead of
 
- 	PeerMessageUtil.
 
- 	(createUnchokeMessage): Use UnchokeMessage::create instead of
 
- 	PeerMessageUtil.
 
- 	(createInterestedMessage): Use InterestedMessage::create instead of
 
- 	PeerMessageUtil.
 
- 	(createNotInterestedMessage): Use NotInterestedMessage::create instead
 
- 	of PeerMessageUtil.
 
- 	(createBitfieldMessage): Use BitfieldMessage::create instead of
 
- 	PeerMessageUtil.
 
- 	(createKeepAliveMessage): Use KeepAliveMessage::create instead of
 
- 	PeerMessageUtil.
 
- 	(createHaveAllMessage): New function.
 
- 	(createHaveNoneMessage): New function.
 
- 	(createRejectMessage): New function.
 
- 	(createAllowedFastMessage: New function.
 
- 	* src/Util.h
 
- 	(sha1Sum): New function.
 
- 	(computeFastSet): New function.
 
- 	* src/Util.cc
 
- 	(sha1Sum): New function.
 
- 	(computeFastSet): New function.
 
- 	* src/Peer.h
 
- 	(fastExtensionEnabled): New variable.
 
- 	(fastSet): New variable.
 
- 	(setAllBitfield): New function.
 
- 	(setFastExtensionEnabled): New function.
 
- 	(isFastExtensionEnabled): New function.
 
- 	(addFastSetIndex): New function.
 
- 	(getFastSet): New function.
 
- 	(isInFastSet): New function.
 
- 	(countFastSet): New function.
 
- 	* src/Peer.cc
 
- 	(isInFastSet): New function.
 
- 	(addFastSetIndex): New function.
 
- 	(setAllBitfield): New function.
 
- 	
 
- 	* src/AbstractCommand.cc (execute): Changed the procedure of checking
 
- 	sockets.
 
- 	* src/PeerAbstractCommand.cc
 
- 	(PeerAbstractCommand): Added the initialization for uploadLimitCheck
 
- 	and uploadLimit.
 
- 	(execute): Changed the procedure of checking sockets. The upload speed
 
- 	checking were added.
 
- 	(setUploadLimit): New function.
 
- 	(setUploadLimitCheck): New function.
 
- 	* src/PeerAbstractCommand.h
 
- 	(setUploadLimit): New function.
 
- 	(setUploadLimitCheck): New function.
 
- 	(uploadLimit): New variable.
 
- 	(uploadLimitCheck): New variable.
 
- 	To contact a tracker regularly:
 
- 	
 
- 	* src/TrackerWatcherCommand.h (interval): New variable.
 
- 	(checkPoint): New variable.
 
- 	(TrackerWatcherCommand): Added interval argument.
 
- 	* src/TrackerWatcherCommand.cc
 
- 	(TrackerWatcherCommand): Initialized checkPoint.
 
- 	(execute): Now a tracker is contacted in every specified period.
 
- 	If peer list is not needed, send request with numwant=0.
 
- 	* src/TrackerUpdateCommand.cc
 
- 	(execute): Updated log messages.
 
- 	* src/DownloadEngine.cc
 
- 	(~DownloadEngine): Removed two asserts.
 
- 	(waitData): Uncommented wfds. May be a bug fix.
 
- 	
 
- 2006-05-10  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/PeerInteractionCommand.h
 
- 	(checkInactiveConnection): Removed.
 
- 	* src/PeerInteractionCommand.cc
 
- 	(executeInternal): Removed following function calls:
 
- 	detectMessageFlooding(), checkLongTimePeerChoking and
 
- 	checkInactiveConnection().
 
- 	(checkInactiveConnection): Removed.
 
- 	(detectMessageFlooding): Removed function call to
 
- 	checkInactiveConnection().
 
- 	* src/PeerMessageUtil.h
 
- 	(createChokeMessage): New function. Overload.
 
- 	(createUnchokeMessage): New function. Overload.
 
- 	(createInterestedMessage): New function. Overload.
 
- 	(createNotInterestedMessage): New function. Overload.
 
- 	(createHaveMessage): New function. Overload.
 
- 	(createBitfieldMessage): New function. Overload.
 
- 	(createRequestMessage): New function. Overload.
 
- 	(createCancelMessage): New function. Overload.
 
- 	(createPieceMessage): New function. Overload.
 
- 	(createKeepAliveMessage): New function. Overload.
 
- 	* src/PeerMessageUtil.cc
 
- 	(createChokeMessage): New function. Overload.
 
- 	(createUnchokeMessage): New function. Overload.
 
- 	(createInterestedMessage): New function. Overload.
 
- 	(createNotInterestedMessage): New function. Overload.
 
- 	(createHaveMessage): New function. Overload.
 
- 	(createBitfieldMessage): New function. Overload.
 
- 	(createRequestMessage): New function. Overload.
 
- 	(createCancelMessage): New function. Overload.
 
- 	(createPieceMessage): New function. Overload.
 
- 	(createKeepAliveMessage): New function. Overload.
 
- 	* src/SendMessageQueue.cc
 
- 	(createRequestMessage): Use PeerMessageUtil.
 
- 	(createCancelMessage): Use PeerMessageUtil.
 
- 	(createPieceMessage): Use PeerMessageUtil.
 
- 	(createHaveMessage): Use PeerMessageUtil.
 
- 	(createChokeMessage): Use PeerMessageUtil.
 
- 	(createUnchokeMessage): Use PeerMessageUtil.
 
- 	(createInterestedMessage): Use PeerMessageUtil.
 
- 	(createNotInterestedMessage): Use PeerMessageUtil.
 
- 	(createBitfieldMessage): Use PeerMessageUtil.
 
- 	(createKeepAliveMessage): Use PeerMessageUtil.
 
- 	* src/SendMessageQueue.h: Renamed to PeerInteraction.h
 
- 	* src/SendMessageQueue.cc: Renamed to PeerInteraction.cc
 
- 	* src/PeerInteraction.h: New class.
 
- 	* src/PeerInteraction.cc: New class.
 
- 	
 
- 2006-05-09  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	Each peer message has its own class.
 
- 	
 
- 	* src/PendingMessages.h: Removed.
 
- 	* src/PendingMessages.cc: Removed. The sending process was moved to
 
- 	each message class.
 
- 	* src/RequestSlotMan.h: Removed.
 
- 	* src/RequestSlotMan.cc: Removed. All functionarities were moved to
 
- 	SendMessageQueue.
 
- 	* src/RequestMessage.h: New class.
 
- 	* src/RequestMessage.cc: New class.
 
- 	* src/CancelMessage.h: New class.
 
- 	* src/CancelMessage.cc: New class.
 
- 	* src/BitfieldMessage.h: New class.
 
- 	* src/BitfieldMessage.cc: New class.
 
- 	* src/ChokeMessage.h: New class.
 
- 	* src/ChokeMessage.cc: New class.
 
- 	* src/KeepAliveMessage.h: New class.
 
- 	* src/KeepAliveMessage.cc: New class.
 
- 	* src/PortMessage.h: New class.
 
- 	* src/UnchokeMessage.h: New class.
 
- 	* src/UnchokeMessage.cc: New class.
 
- 	* src/PieceMessage.h: New class.
 
- 	* src/PieceMessage.cc: New class.
 
- 	* src/HaveMessage.h: New class.
 
- 	* src/HaveMessage.cc: New class.
 
- 	* src/BitfieldMessage.h: New class.
 
- 	* src/BitfieldMessage.cc: New class.
 
- 	* src/NotInterestedMessage.h: New class.
 
- 	* src/NotInterestedMessage.cc: New class.
 
- 	* src/InterestedMessage.h: New class.
 
- 	* src/InterestedMessage.cc: New class.
 
- 	* src/HandshakeMessage.h (sendMessageQueue): New variable.
 
- 	(getSendMessageQueue): New function.
 
- 	(setSendMessageQueue): New function.
 
- 	* src/HandshakeMessage.cc: New class.
 
- 	* src/PeerConnection.h (receiveMessage): Changed return value and
 
- 	arguments.
 
- 	(receiveHandshake): Changed return value and arguments.
 
- 	* src/PeerConnection.cc (receiveMessage): Do not create message class
 
- 	here.
 
- 	(receiveHandshake): Do not create handshake class here.
 
- 	* src/PeerInteractionCommand.h (peerConnection): Removed.
 
- 	(piece): Removed.
 
- 	(syncPiece): Removed.
 
- 	(sendInterest): Removed.
 
- 	(sendMessages): Removed.
 
- 	(createRequestPendingMessage): Removed.
 
- 	(checkPieceHash): Removed.
 
- 	(erasePieceOnDisk): Removed.
 
- 	(getNewPieceAndSendInterest): Removed.
 
- 	(onGotNewPice): Removed.
 
- 	(onGotWrongPiece): Removed.
 
- 	* src/PeerInteractionCommand.cc (PeerInteractionCommand):
 
- 	Removed peerConnection, piece.
 
- 	(~PeerInteractionCommand): Removed peerConnection.
 
- 	(executeInternal): Use sendMessageQueue instead of peerConnection.
 
- 	(syncPiece): Moved to SendMessageQueue.
 
- 	(decideChoking): Removed PendingMessage.
 
- 	(receiveMessage): Use sendMessageQueue instead of peerConnection.
 
- 	The action after receiving peer message was moved to each message
 
- 	class.
 
- 	(onGotNewPice): Moved to SendMessageQueue.
 
- 	(onGotWrongPiece): Moved to SendMessageQueue.
 
- 	(getNewPieceAndSendInterest): Moved to SendMessageQueue.
 
- 	(sendInterest): Moved to SendMessageQueue.
 
- 	(createRequestPendingMessage): Removed.
 
- 	(sendMessages): Moved to SendMessageQueue.
 
- 	(onAbort): Use SendMessageQueue::abortPiece()
 
- 	(keepAlive): Use sendMessageQueue instead of peerConnection.
 
- 	(beforeSocketCheck): Use sendMessageQueue instead of peerConnection.
 
- 	(checkPieceHash): Moved to SendMessageQueue.
 
- 	(erasePieceOnDisk): Moved to SendMessageQueue.
 
- 	* src/PeerMessageUtil.h
 
- 	(createBitfieldMessage): Removed.
 
- 	(createHaveMessage): Changed return value and arguments.
 
- 	(createBitfieldMessage): Changed return value and arguments.
 
- 	(createRequestCancelMessage): Removed.
 
- 	(createPieceMessage): Changed return value and arguments.
 
- 	(getShortIntParam): New function.
 
- 	(checkIndex): Changed arguments.
 
- 	(checkBegin): Changed arguments.
 
- 	(checkLength): Changed arguments.
 
- 	(checkPieceOffset): Removed.
 
- 	(checkRange): New function.
 
- 	(checkBitfield): Changed arguments.
 
- 	(createPeerMessage): Removed.
 
- 	(checkIntegrity): Removed.
 
- 	(createHandshakeMessage): Changed arguments.
 
- 	(createChokeMessage): New function.
 
- 	(createUnchokeMessage): New function.
 
- 	(createInterestedMessage): New function.
 
- 	(createNotInterestedMessage): New function.
 
- 	(createRequestMessage): New function.
 
- 	(createCancelMessage): New function.
 
- 	(createPortMessage): New function.
 
- 	* src/PeerMessageUtil.cc
 
- 	(createBitfieldMessage): Removed.
 
- 	(createHaveMessage): Changed return value and arguments.
 
- 	(createBitfieldMessage): Changed return value and arguments.
 
- 	(createRequestCancelMessage): Removed.
 
- 	(createPieceMessage): Changed return value and arguments.
 
- 	(getShortIntParam): New function.
 
- 	(checkIndex): Changed arguments.
 
- 	(checkBegin): Changed arguments.
 
- 	(checkLength): Changed arguments.
 
- 	(checkPieceOffset): Removed.
 
- 	(checkRange): New function.
 
- 	(checkBitfield): Changed arguments.
 
- 	(createPeerMessage): Removed.
 
- 	(checkIntegrity): Removed.
 
- 	(createHandshakeMessage): Changed arguments.
 
- 	(createChokeMessage): New function.
 
- 	(createUnchokeMessage): New function.
 
- 	(createInterestedMessage): New function.
 
- 	(createNotInterestedMessage): New function.
 
- 	(createRequestMessage): New function.
 
- 	(createCancelMessage): New function.
 
- 	(createPortMessage): New function.
 
- 	* src/PeerMessage.h
 
- 	(id): Removed.
 
- 	(index): Removed.
 
- 	(begin): Removed.
 
- 	(length): Removed.
 
- 	(bitfield): Removed.
 
- 	(bitfieldLength): Removed.
 
- 	(block): Removed.
 
- 	(blockLength): Removed.
 
- 	(inProgress): New variable.
 
- 	(cuid): New variable.
 
- 	(peer): New variable.
 
- 	(sendMessageQueue): New variable.
 
- 	(logger): New variable.
 
- 	(setBitfield): Removed.
 
- 	(getBitfield): Removed.
 
- 	(setBlock): Removed.
 
- 	(getBlock): Removed.
 
- 	(getBitfieldLength): Removed.
 
- 	(getBlockLength): Removed.
 
- 	(isInProgress): New function.
 
- 	(toString): Made pure virtual.
 
- 	(check): New function.
 
- 	(send): New function.
 
- 	(receivedAction): New function.
 
- 	(getId): Made pure virtual.
 
- 	(setId): Removed.
 
- 	(getIndex): Removed.
 
- 	(setIndex): Removed.
 
- 	(getBegin): Removed.
 
- 	(setBegin): Removed.
 
- 	(getLength): Removed.
 
- 	(setLength): Removed.
 
- 	(getCuid): New function.
 
- 	(setCuid): New function.
 
- 	(getPeer): New function.
 
- 	(setPeer): New function.
 
- 	(getSendMessageQueue): New function.
 
- 	(setSendMessageQueue): New function.
 
- 	(ID): Removed.
 
- 	* src/PeerMessage.cc
 
- 	(setBitfield): Removed.
 
- 	(setBlock): Removed.
 
- 	(toString): Removed.
 
- 	* src/TorrentMan.h
 
- 	(getPieceLength): New function.
 
- 	(getPieceLength): New function.
 
- 	* src/SendMessageQueue.h
 
- 	(REQUEST_TIME_OUT): New definition.
 
- 	(RequestSlots): New definition.
 
- 	(MessageQueue): New definition.
 
- 	(requestSlotMan): Removed.
 
- 	(pendingMessages): Removed.
 
- 	(requestSlots): New variable.
 
- 	(messageQueue): New variable.
 
- 	(torrentMan): New variable.
 
- 	(peerConnection): New variable.
 
- 	(peer): New variable.
 
- 	(piece): New variable.
 
- 	(getNewPieceAndSendInterest): New function.
 
- 	(createPeerMessage): New function.
 
- 	(createHandshakeMessage): New function.
 
- 	(send): Made private.
 
- 	(setPeerMessageCommonProperty): New function.
 
- 	(deleteAllRequestSlot): New function.
 
- 	(deleteRequestMessageInQueue): New function.
 
- 	(cancelAllRequest): Made private.
 
- 	(cancelAllRequest): Made private.
 
- 	(countRequestSlot): Made private.
 
- 	(addPendingMessage): Removed.
 
- 	(deletePendingPieceMessage): Removed.
 
- 	(deletePendingRequestMessage): Removed.
 
- 	(addMessage): New function.
 
- 	(deletePieceMessageInQueue): New function.
 
- 	(deleteTimeoutRequestSlot): Changed argument.
 
- 	(deleteCompletedRequestSlot): Changed argument.
 
- 	(getCorrespoindingRequestSlot): Renamed to getCorrespondingRequestSlot.
 
- 	(getCorrespondingRequestSlot): New function.
 
- 	(countPendingMessage): Removed.
 
- 	(countMessageInQueue): New function.
 
- 	(getTorrentMan): New function.
 
- 	(getPeerConnection): New function.
 
- 	(hasDownloadPiece): New function.
 
- 	(getDownloadPiece): New function.
 
- 	(setDownloadPiece): New function.
 
- 	(syncPiece): New function.
 
- 	(sendMessages): New function.
 
- 	(sendNow): New function.
 
- 	(trySendNow): New function.
 
- 	(abortPiece): New function.
 
- 	(sendHandshake): New function.
 
- 	(receiveMessage): New function.
 
- 	(receiveHandshake): New function.
 
- 	(createRequestMessage): New function.
 
- 	(createCancelMessage): New function.
 
- 	(createPieceMessage): New function.
 
- 	(createHaveMessage): New function.
 
- 	(createChokeMessage): New function.
 
- 	(createUnchokeMessage): New function.
 
- 	(createInterestedMessage): New function.
 
- 	(createNotInterestedMessage): New function.
 
- 	(createBitfieldMessage): New function.
 
- 	(createKeepAliveMessage): New function.
 
- 	* src/SendMessageQueue.cc
 
- 	(SendMessageQueue): Removed requestSlotMan.
 
- 	Instantiated peerConnection here.
 
- 	(~SendMessageQueue): Removed requestSlotMan.
 
- 	Added deletion of peerConnection and the contents of messageQueue.
 
- 	(send): Updated according to the change of messageQueue.
 
- 	(addPendingMessage): Renamed to addMessage.
 
- 	(addMessage): New function.
 
- 	(deletePendingPieceMessage): Renamed to deletePieceMessageInQueue.
 
- 	(deletePieceMessageInQueue): New function.
 
- 	(deletePendingRequestMessage): Renamed to deleteRequestMessageInQueue.
 
- 	(deleteRequestMessageInQueue): New function.
 
- 	(deleteRequestSlot): RequestSlotMan::deleteRequestSlot(...) was moved
 
- 	here.
 
- 	(deleteTimeoutRequestSlot): RequestSlotMan::deleteTimeoutRequestSlot
 
- 	(...) was moved here.
 
- 	(deleteAllRequestSlot): RequestSlotMan::deleteAllRequestSlot(...) was
 
- 	moved here.
 
- 	(deleteCompletedRequestSlot):
 
- 	RequestSlotMan::deleteCompletedRequestSlot(...) was moved here.
 
- 	(getCorrespondingRequestSlot):
 
- 	RequestSlotMan::getCorrespoindingRequestSlot(...) was moved here.
 
- 	And renamed to getCorrespondingRequestSlot, correcting a typo.
 
- 	(countPendingMessage): Renamed to countMessageInQueue.
 
- 	(countMessageInQueue): New function.
 
- 	(countRequestSlot): RequestSlotMan::countRequestSlot() was moved here.
 
- 	(receiveHandshake): New function.
 
- 	(createHandshakeMessage): New function.
 
- 	(receiveMessage): New function.
 
- 	(createPeerMessage): New function.
 
- 	(syncPiece): New function.
 
- 	(getNewPieceAndSendInterest): New function.
 
- 	(sendMessages): New function.
 
- 	(sendNow): New function.
 
- 	(trySendNow): New function.
 
- 	(sendHandshake): New function.
 
- 	(abortPiece): New function.
 
- 	(getDownloadPiece): New function.
 
- 	(getPeerMessageCommonProperty): New function.
 
- 	(createRequestMessage): New function.
 
- 	(createCancelMessage): New function.
 
- 	(createPieceMessage): New function.
 
- 	(createHaveMessage): New function.
 
- 	(createChokeMessage): New function.
 
- 	(createUnchokeMessage): New function.
 
- 	(createInterestedMessage): New function.
 
- 	(createNotInterestedMessage): New function.
 
- 	(createBitfieldMessage): New function.
 
- 	(createKeepAliveMessage): New function.
 
- 	
 
- 	
 
- 	To add simple Content-Disposition support:
 
- 	* src/HttpResponseCommand.h (determinFilename): New function.
 
- 	* src/HttpResponseCommand.cc (executeInternal):
 
- 	Use determinFilename(headers) instead of req->getFile() when comparing
 
- 	filename.
 
- 	(determinFilename): New function.
 
- 	(handleDefaultEncoding): Use determinFilename(headers) instead of
 
- 	req->getFile().
 
- 	(handleOtherEncoding): Use determinFilename(headers) instead of
 
- 	req->getFile().
 
- 	* src/Util.h (getContentDispositionFilename): New function.
 
- 	* src/Util.cc (getContentDispositionFilename): New function.
 
- 	
 
- 	* src/LogFactory.h (release): New function.
 
- 	* src/LogFactory.cc (release): New function.
 
- 	To fix a bug that causes out-of-bound exception when HTTP status
 
- 	line is wrong:
 
- 	
 
- 	* src/HttpConnection.cc (receiveResponse): Added a check for header
 
- 	size.
 
- 	* src/common.h (Deleter): New class.
 
- 	* src/SegmentMan.cc
 
- 	(~SegmentMan): Added deletion of splitter and diskWriter.
 
- 	* src/DownloadEngine.h
 
- 	(Commands): Use deque.
 
- 	(clearQueue): New function.
 
- 	* src/DownloadEngine.cc
 
- 	(~DownloadEngine): Added deletion of segmentMan.
 
- 	(cleanQueue): New function.
 
- 	* src/TorrentDownloadEngine.h
 
- 	(TorrentDownloadEngine): The implementation was moved to
 
- 	TorrentDownloadEngine.cc.
 
- 	(~TorrentDownloadEngine): The implementation was moved to
 
- 	TorrentDownloadEngine.cc.
 
- 	* src/TorrentDownloadEngine.cc
 
- 	(~TorrentDownloadEngine): Added deletion of torrentMan.
 
- 	* src/main.cc
 
- 	(clearRequest): Removed.
 
- 	(handler): Added deletion of e.
 
- 	(torrentHandler): Added deletion of te.
 
- 	(main): Do not share splitter.
 
- 	Use Deleter instead of clearRequest.
 
- 	Deletion of classes were updated.
 
- 	
 
- 2006-05-06  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/main.cc (main): Fixed typo.
 
- 	* src/message.h: Fixed typo.
 
- 	* po/de.po: Added German translation, thanks to Hermann J. Beckers.
 
- 	
 
- 2006-04-29  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To add --select-file command-line option:
 
- 	
 
- 	* src/Util.cc
 
- 	(unfoldRange): New function.
 
- 	(getNum): New function.
 
- 	(unfoldSubRange): New function
 
- 	* src/main.cc
 
- 	(showUsage): Added help message.
 
- 	(main): Added --select-file command-line option. Updated the layout of
 
- 	file listing.
 
- 	* src/common.h
 
- 	(Integers): New definition.
 
- 	* src/SocketCore.cc
 
- 	(writeData): Removed timeout argument.
 
- 	(readData): Removed timeout argument.
 
- 	(peekData): Removed timeout argument.
 
- 	* src/Socket.cc
 
- 	(writeData): Removed timeout argument.
 
- 	(readData): Removed timeout argument.
 
- 	(peekData): Removed timeout argument.
 
- 	
 
- 	* Release 0.4.1
 
- 	
 
- 2006-04-28  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To deploy upload rate based choking algorithm:
 
- 	
 
- 	* src/PeerInteractionCommand.cc
 
- 	(PeerInteractionCommand): Add peer to TorrentMan::activePeers to track
 
- 	peer currently used.
 
- 	(decideChoking): Deleted the choke/unchoke decision algorithm when
 
- 	download completes. Simplified.
 
- 	(receiveMessage): Updated.
 
- 	* src/TorrentMan.h
 
- 	(activePeers): New variable.
 
- 	(addActivePeer): New function.
 
- 	(getActivePeers): New function.
 
- 	(deleteActivePeer): New function.
 
- 	* src/TorrentMan.cc
 
- 	(addPeer): deleteOldErrorPeers is moved to the begining of the function
 
- 	* src/PeerAbstractCommand.cc
 
- 	(onAbort): Use peer->resetStatus().
 
- 	* src/main.cc
 
- 	(PeerChokeCommand.h): Included.
 
- 	(main): Added the instance of ChokingCommand to the command queue.
 
- 	* src/Peer.h
 
- 	(amChoking): Renamed from amChocking
 
- 	(chokingRequired): New variable.
 
- 	(optUnchoking): New variable.
 
- 	(deltaUpload): New variable.
 
- 	(deltaDownload): New variable.
 
- 	(addDeltaUpload): New function.
 
- 	(resetDeltaUpload): New function.
 
- 	(addDeltaDownload): New function.
 
- 	(resetDeltaDownload): New function.
 
- 	(addPeerUpload): Added a call to addDeltaUpload.
 
- 	(addPeerDownload): Added a call to addDeltaDownload.
 
- 	* src/Peer.cc
 
- 	(shouldBeChoking): Renamed from shouldChoke.
 
- 	(resetStatus): New function.
 
- 	* src/PeerChokeCommand.h: New class.
 
- 	* src/PeerChokeCommand.cc: New class.
 
- 	
 
- 	To add lazy upload speed limiter:
 
- 	* src/TorrentConsoleDownloadEngine.h: Moved the variables for
 
- 	statistics calculation to TorrentDownloadEngine.
 
- 	* src/TorrentConsoleDownloadEngine.cc
 
- 	(sendStatistics): Renamed from printStatistics.
 
- 	(initStatistics): Removed. Moved to TorrentDownloadEngine.
 
- 	(calculateSpeed): Removed. Moved to TorrentDownloadEngine.
 
- 	(calculateStatistics): Removed. Moved to TorrentDownloadEngine.
 
- 	* src/TorrentDownloadEngine.h: Added the variables for statistics
 
- 	calculation.
 
- 	(sendStatistics): New function as pure virtual function.
 
- 	(getUploadSpeed): New function.
 
- 	* src/TorrentDownloadEngine.cc
 
- 	(initStatistics): New function.
 
- 	(calculateSpeed): New function.
 
- 	(calculateStatistics): New function.
 
- 	* src/SendMessageQueue.h
 
- 	(uploadLength): New variable.
 
- 	(send): Added an argument.
 
- 	(setUploadLimit): New function.
 
- 	(getUploadLimit): New function.
 
- 	* src/SendMessageQueue.cc
 
- 	(send): Added upload speed limiter.
 
- 	* src/prefs.h
 
- 	(PREF_UPLOAD_LIMIT): New definition.
 
- 	* src/PeerInteractionCommand.cc
 
- 	(PeerInteractionCommand): Set upload speed limit to sendMessageQueue.
 
- 	* src/main.cc
 
- 	(main): Added --upload-limit option
 
- 	For bug fixes:
 
- 	
 
- 	* src/main.cc
 
- 	(showUsage): Corrected --listen-port help
 
- 	Other changes:
 
- 	
 
- 	* src/TorrentMan.cc
 
- 	(getPeer): Return nullPeer if connection is grather than
 
- 	MAX_PEER_UPDATE(15) in order to leave space for incoming peers.
 
- 2006-04-21  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To add some useful information to the exception message:
 
- 	* src/SocketCore.cc : Updated messages.
 
- 	* src/SegmentMan.cc : 
 
- 	* src/TorrentMan.cc : Updated messages.
 
- 	* src/MultiDiskWriter.cc : Updated messages.
 
- 	* src/Util.cc : Updated messages.
 
- 	* src/AbstractDiskWriter.cc : Updated messages.
 
- 	* src/PreAllocationDiskWriter.cc : Updated messages.
 
- 	* src/message.cc : Added new messages. Updated some messages.
 
- 	* src/TrackerWatcherCommand.h (MIN_PEERS): New definition.
 
- 	* src/TrackerWatcherCommand.cc (execute): Use MIN_PEERS.
 
- 	Updated threshold from 30 to 15.
 
- 	* src/AbstractDiskWriter.h (filename): New variable.
 
- 	* src/AbstractDiskWriter.cc (openExistingFile): Assigned filename.
 
- 	(createFile): Assigned filename.
 
- 	
 
- 	* src/main.cc: Updated the help message for http-auth-scheme.
 
- 	* Release 0.4.0
 
- 	
 
- 2006-04-20  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To add TrackerUpdateCommand with which replaces
 
- 	CompactTrackerResponseProcessor:
 
- 	
 
- 	* src/TrackerWatcherCommand.h (req): Removed.
 
- 	* src/TrackerWatcherCommand.cc (execute): Send a request to tracker
 
- 	if the number of peer connections are less than 30.
 
- 	* src/ByteArrayDiskWriter.h (readData): Implemented.
 
- 	* src/SegmentMan.h (diskWriter): New function.
 
- 	* src/SegmentMan.cc (init): Added a call to diskWriter->closeFile()
 
- 	* src/main.cc : Removed #include "CompactTrackerResponseProcessor.h"
 
- 	(main): Use TrackerUpdateCommand.
 
- 	* src/TorrentMan.h (CompactTrackerResponseProcessor): Removed.
 
- 	(req): New variable.
 
- 	(setTrackerResponseProcessor): Removed.
 
- 	(getTrackerResponseProcessor): Removed.
 
- 	(processTrackerResponse): Removed.
 
- 	* src/DownloadEngine.h (diskWriter): Removed.
 
- 	* src/TorrentDownloadEngine.cc (afterEachIteration): Removed a call
 
- 	to torrentMan->processTrackerResponse().
 
- 	
 
- 	To add Util::expandBuffer:
 
- 	
 
- 	* src/ByteArrayDiskWriter.h (expandBuffer): Removed.
 
- 	* src/ByteArrayDiskWriter.cc (writeData): Use Util::expandBuffer().
 
- 	* src/Util.h (expandBuffer): New function.
 
- 	To fix the bug that causes segmentation fault when "-l ." is specified
 
- 	in command-line option:
 
- 	* src/SimpleLogger.h (SimpleLogger): Removed "filename" argument.
 
- 	(openFile): New function.
 
- 	(closeFile): New function.
 
- 	* src/SimpleLogger.cc (SimpleLogger): Removed fopen.
 
- 	(~SimpleLogger): Call closeFile();
 
- 	* src/LogFactory.cc (getInstance): Added a call to slogger->openFile().
 
- 	* src/main.cc (main): Added a check to see logger is configured
 
- 	properly.
 
- 	
 
- 	To enable HTTP authentication without specifying "--http-auth-scheme"
 
- 	
 
- 	* src/prefs.h (PREF_HTTP_AUTH_ENABLED): New definition.
 
- 	* src/HttpConnection.cc (createRequest): Send Authorization header
 
- 	if PREF_HTTP_AUTH_ENABLED == V_TRUE.
 
- 	* src/main.cc (main): Preset PREF_HTTP_AUTH_SCHEME to V_TRUE
 
- 	If "--http-user" is specified, set PREF_HTTP_AUTH_ENABLED to V_TRUE
 
- 	* src/Peer.cc (shouldChoke): Updated algorithm.
 
- 	
 
- 	* src/message.h (EX_AUTH_FAILED): New definition.
 
- 	(EX_FILE_OPEN): New definition.
 
- 	* src/HttpResponseCommand.cc (checkResponse): Throw DlAbortEx
 
- 	if status == 401.
 
- 	(handleDefaultEncoding): Added a call to diskWriter->initAndOpenFile()
 
- 	if req->isTorrent == true.
 
- 	* src/main.cc (handler): Removed the check to see e->diskWriter != NULL
 
- 	(torrentHandler): Removed the check to see diskAdaptor != NULL.
 
- 	* src/AbstractDiskWriter.cc (openExistingFile): Updated messsage.
 
- 	(createFile): Updated message.
 
- 	
 
- 2006-04-19  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To add a readout of estimated remaining time to normal HTTP/FTP
 
- 	downloads:
 
- 	
 
- 	* src/ConsoleDownloadEngine.h (startup): New variable.
 
- 	(startupLength): New variable.
 
- 	(isStartupLengthSet): New variable.
 
- 	(avgSpeed): New variable.
 
- 	(eta): New variable.
 
- 	* src/ConsoleDownloadEngine.cc (sendStatistics): Added a readout of
 
- 	estimated remaining time.
 
- 	(initStatistics): Initialized newly added variables.
 
- 	(calculateStatistics): Calculate average speed and estimated remaining
 
- 	time.
 
- 	To decouple TorrentDownloadEngine from HttpResponseCommand:
 
- 	* src/TrackerDownloadCommand.h: Removed.
 
- 	* src/TrackerDownloadCommand.cc: Removed.
 
- 	* src/TrackerInitCommand.h: Removed.
 
- 	* src/TrackerInitCommand.cc: Removed.
 
- 	* src/TrackerUpdateCommand.h: Removed.
 
- 	* src/TrackerUpdateCommand.cc: Removed.
 
- 	* src/TrackerWatcherCommand.cc (execute): The construction of request
 
- 	url written in TrackerInitCommand was moved here. Do not create
 
- 	tracker request command if torrentMan->trackers != 0.
 
- 	* src/CompactTrackerResponseProcessor.h: New class.
 
- 	* src/CompactTrackerResponseProcessor.cc: New class.
 
- 	* src/message.h (MSG_TRACKER_WARNING_MESSAGE): Updated.
 
- 	* src/HttpResponseCommand.cc (createHttpDownloadCommand):
 
- 	Decoupled TorrentDownloadEngine from this.
 
- 	* src/SegmentMan.h (init): New function.
 
- 	* src/SegmentMan.cc (init): New function.
 
- 	* src/TorrentMan.h (responseProcessor): New variable.
 
- 	(trackers): New variable.
 
- 	(setTrackerResponseProcessor): New function.
 
- 	(getTrackerResponseProcessor): New function.
 
- 	(processTrackerResponse): New function.
 
- 	* src/TorrentMan.cc (Constructor): Initialized new variable trackers.
 
- 	(processTrackerResponse): New function.
 
- 	* src/main.cc (main): Use ByteArrayDiskWriter and
 
- 	CompactTrackerResponseProcessor.
 
- 	* src/TorrentDownloadEngine.cc (afterEachIteration): Call torrentMan->
 
- 	processTrackerResponse().
 
- 	
 
- 	* src/TorrentConsoleDownloadEngine.cc (printStatistics): Updated a
 
- 	readout.
 
- 	* src/TorrentDownloadEngine.cc (afterEachIteration): Added log message
 
- 	which indicates download has completed.
 
- 	* src/AbstractDiskWriter.cc (Destructor): fd >= 0, not fd >0
 
- 	(closeFile): fd >= 0, not fd > 0
 
- 	* src/main.cc (main): Added short cut for show-files.
 
- 	Added short cut for torrent-file.
 
- 	Added new command-line option listen-port.
 
- 	Updated i18n messages.
 
- 	
 
- 2006-04-18  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To add LogFactory which creates singleton logger:
 
- 	
 
- 	* src/LogFactory.h: New class.
 
- 	* src/LogFactory.cc: New class.
 
- 	* src/Command.h (logger): New variable.
 
- 	(Constructor): Use LogFactory.
 
- 	* src/AbstractCommand.cc: Use Command::logger
 
- 	* src/PeerConnection.cc (Constructor): Deleted the argument logger.
 
- 	Use LogFactory.
 
- 	* src/SegmentSplitter.h : Made logger protected.
 
- 	* src/SegmentSplitter.cc (Constructor): Use LogFactory.
 
- 	* src/SegmentMan.cc (Constructor): Use LogFactory.
 
- 	* src/DownloadEngine.h : Made logger protected.
 
- 	* src/DownloadEngine.cc (Constructor): Use LogFactory.
 
- 	* src/PeerInteractionCommand.cc : Use Command::logger.
 
- 	* src/HttpResponseCommand.cc : Use Command::logger.
 
- 	* src/SegmentMan.h : Made logger private.
 
- 	* src/TorrentMan.h : Made logger private.
 
- 	* src/TorrentMan.cc : Use LogFactory.
 
- 	* src/FtpNegotiateCommand.cc : Use Command::logger.
 
- 	* src/HttpConnection.h (Constructor): Deleted the argument logger.
 
- 	* src/HttpConnection.cc (Constructor): Deleted the argument logger.
 
- 	Use LogFactory.
 
- 	* src/FtpConnection.h (Constructor): Deleted the argument logger.
 
- 	* src/FtpConnection.cc (Constructor): Deleted the argument logger.
 
- 	Use LogFactory.
 
- 	* src/DownloadCommand.cc : Use Command::logger.
 
- 	* src/PeerAbstractCommand.cc : Use Command::logger.
 
- 	* src/PeerListenCommand.cc : Use Command::logger.
 
- 	* src/PeerInitiateConnectionCommand.cc : Use Command::logger.
 
- 	* src/HttpInitiateConnectionCommand.cc : Use Command::logger.
 
- 	* src/FtpInitiateConnectionCommand.cc : Use Command::logger.
 
- 	* src/TrackerWatcherCommand.cc : Use Command::logger.
 
- 	* src/TrackerUpdateCommand.cc : Use Command::logger.
 
- 	* src/TrackerDownloadCommand.cc : Use Command::logger.
 
- 	* src/RequestSlotMan.cc (Constructor): Deleted the argument logger.
 
- 	Use LogFactory.
 
- 	* src/SendMessageQueue.h (Constructor): Deleted the argument logger.
 
- 	* src/SendMessageQueue.cc (Constructor): Deleted the argument logger.
 
- 	Use LogFactory.
 
- 	* src/main.cc (main): Use LogFactory.
 
- 	* src/DiskAdaptor.h (logger): New variable.
 
- 	* src/DiskAdaptor.cc (Constructor): Use LogFactory.
 
- 	* src/CopyDiskAdaptor.cc (fixFilename): Added a log message.
 
- 2006-04-17  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/TrackerInitCommand.cc (TrackerInitCommand): Added a "key"
 
- 	parameter to a tracker request.
 
- 	* src/TorrentMan.cc (readFileEntryFromMetaInfoFile): Bug fix.
 
- 	* src/TrackerWatcherCommand.cc (execute): Call req->resetTryCount().
 
- 	
 
- 	* src/main.cc (setSignalHander): New function.
 
- 	(main): Added a handler for SIGTERM.
 
- 	(handler): Updated message.
 
- 	(torrentHandler): Updated message.
 
- 	
 
- 2006-04-16  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/TorrentConsoleDownloadEngine.cc
 
- 	(onPartialDownloadingCompletes): Renamed as
 
- 	onSelectiveDownloadingCompletes.
 
- 	(onSelectiveDownloadingCompletes): Updated message.
 
- 	To add DiskAdaptor which abstract DiskWriter family:
 
- 	* src/PeerConnection.cc: Use diskAdaptor instead of diskWriter.
 
- 	* src/PeerInteractionCommand.cc: Use diskAdaptor instead of diskWriter.
 
- 	* src/BitfieldMan.cc (isAllBitSet): bug fix.
 
- 	* src/TorrentMan.cc : Included CopyDiskAdaptor.h, DirectDiskAdaptor.h,
 
- 	MultiDiskAdaptor.h.
 
- 	(readFileEntry): Changed its arguments.
 
- 	(setup): setupDiskWriter is merged into this function.
 
- 	(setupDiskWriter): Removed.
 
- 	(setFileFilter): New function.
 
- 	(readFileEntryFromMetaInfoFile): Updated according to the changes
 
- 	made in readFileEntry.
 
- 	(getFilePath): Removed.
 
- 	(getTempFilePath): Removed.
 
- 	(getSegmentFilePath): Updated due to the removal of getFilePath.
 
- 	(fixFilename): Removed.
 
- 	(copySingleFile): Removed.
 
- 	(splitMultiFile): Removed.
 
- 	(deleteTempFile): Removed.
 
- 	(setFileEntriesToDownload): Removed.
 
- 	(isPartialDownloadingMode): Renamed as isSelectiveDownloadingMode.
 
- 	(isSelectiveDownloadingMode): New function.
 
- 	(setAllMultiFileRequestedState): Removed.
 
- 	(finishPartialDownloadingMode): Renamed as
 
- 	finishSelectiveDownloadingMode.
 
- 	(finishSelectiveDownloadingMode): New function.
 
- 	(getPartialTotalLength): Renamed as getSelectedTotalLength.
 
- 	(getSelectedTotalLength): New function.
 
- 	(onDownloadComplete): Use diskAdaptor.
 
- 	* src/MultiDiskWriter.cc (Constructor): Added the argument pieceLength
 
- 	(Range): Removed.
 
- 	(setMultiFileEntries): Renamed as setFileEntries.
 
- 	(setFileEntries): New function.
 
- 	* src/MultiDiskWriter.h [DiskWriterEntry](enabled): Removed.
 
- 	(pieceLength): New variable.
 
- 	* src/main.cc (printDownloadCompeleteMessage): New function.
 
- 	(torrentHandler): Use diskAdaptor instead of diskWriter.
 
- 	(main): Renamed torrent-show-files to show-files.
 
- 	Rewritten file contents listing.
 
- 	* src/TorrentMan.h (FileEntry): Removed.
 
- 	(multiFileTopDir): Removed.
 
- 	(multiFileEntries): Removed.
 
- 	(diskWriter): Removed.
 
- 	(diskAdaptor): New variable.
 
- 	* src/DefaultDiskWriter.h (totalLength): New variable.
 
- 	* src/DefaultDiskWriter.cc (initAndOpenFile): Added ftruncate.
 
- 	* src/TorrentDownloadEngine.cc (onEndOfRun): Use diskAdaptor instead of
 
- 	diskWriter.
 
- 	* src/TorrentConsoleDownloadEngine.h
 
- 	(partialDownloadLengthDiff): Renamed as selectedDownloadLengthDiff.
 
- 	(partialTotalLength): Renamed as selectedTotalLength.
 
- 	* src/AbstractDiskWriter.cc (openFile): If file exists, call
 
- 	openExistingFile, otherwise call initAndOpenFile.
 
- 	(closeFile): fd > 0, not fd != 0.
 
- 	* src/DirectDiskAdaptor.h: New class.
 
- 	* src/DirectDiskAdaptor.cc: New class.
 
- 	* src/MultiDiskAdaptor.h: New class.
 
- 	* src/MultiDiskAdaptor.cc: New class.
 
- 	* src/CopyDiskAdaptor.h: New class.
 
- 	* src/CopyDiskAdaptor.cc: New class.
 
- 	* src/DiskAdaptor.h: New class.
 
- 	* src/DiskAdaptor.cc: New class.
 
- 	
 
- 	* src/prefs.h (PREF_TORRENT_SHOW_FILES): Renamed as PREF_SHOW_FILES
 
- 	(PREF_SHOW_FILES): New definition.
 
- 2006-04-12  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To add the ability to download multi torrent into respective files
 
- 	directly:
 
- 	
 
- 	* src/DiskWriter.h (openFile): New function.
 
- 	(seek): Removed.
 
- 	* src/MultiDiskWriter.h: New class.
 
- 	* src/MultiDiskWriter.cc: New class.
 
- 	* src/AbstractDiskWriter.h (seek): Changed its scope from public to
 
- 	protected.
 
- 	(openFile): New function.
 
- 	* src/AbstractDiskWriter.cc (openFile): New function.
 
- 	* src/prefs.h (V_FALSE): New definition.
 
- 	(PREF_DIRECT_FILE_MAPPING): New definition.
 
- 	* src/TorrentMan.h (setupDiskWriter): New function.
 
- 	(setAllMultiFileRequestedState): New function.
 
- 	(onDownloadComplete): New function.
 
- 	* src/TorrentMan.cc : Included MultiDiskWriter.h
 
- 	(setupDiskWriter): New function.
 
- 	(getFilePath): Updated.
 
- 	(getTempFilePath): Updated.
 
- 	(getSegmentFilePath): Updated.
 
- 	(fixFilename): Updated.
 
- 	(deleteTempFile): Updated.
 
- 	(setAllMultiFileRequestedState): New function.
 
- 	(setFileEntriesToDownload): Use setAllMultiFileRequestedState().
 
- 	(finishPartialDownloadingMode): Reset requested flags.
 
- 	(onDownloadComplete): New function.
 
- 	* src/main.cc: Added --direct-file-mapping option.
 
- 	Use TorrentMan::setupDiskWriter().
 
- 	* src/TorrentDownloadEngine.cc (afterEachIteration): Use TorrentMan::
 
- 	onDownloadComplete().
 
- 	
 
- 	
 
- 	To fix ETA bug:
 
- 	* src/Util.h (difftvsec): New function.
 
- 	* src/Util.cc (difftvsec): New function.
 
- 	* src/TorrentConsoleDownloadEngine.cc (calculateSpeed): Use int for the
 
- 	type of "elapsed" instead of long long int.
 
- 	(calculateStatistics): Use Util::difftvsec instead of Util::difftv.
 
- 	The updates of statistics takes place every 1 seconds.
 
- 	* src/TorrentConsoleDownloadEngine.h (lastElapsed): Changed its type.
 
- 	(calculateSpeed): Changed its argument signature.
 
- 	
 
- 	* src/PeerMessage.cc (toString): Fixed message.
 
- 	
 
- 2006-04-06  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To print ETA:
 
- 	* src/TorrentDownloadEngine.cc (afterEachIteration): Added download
 
- 	completion handling when dealing with
 
- 	TorrentMan::isPartialDownloadingMode() == true.
 
- 	* src/TorrentDownloadEngine.h (onPartialDownloadingCompletes):
 
- 	New function.
 
- 	* src/TorrentConsoleDownloadEngine.h (startup): New variable.
 
- 	(sessionDownloadLength): New variable.
 
- 	(avgSpeed): New variable.
 
- 	(eta): New variable.
 
- 	* src/TorrentConsoleDownloadEngine.cc (initStatistics): Initialized
 
- 	new variables: eta, avgSpeed, startup.
 
- 	(calculateSpeed): Calculate average speed and ETA.
 
- 	(printStatistics): Added ETA.
 
- 	* src/Util.h (secfmt): New function.
 
- 	* src/Util.cc (secfmt): New function.
 
- 	
 
- 2006-04-05  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	To detect "keep alive" flooding:
 
- 	* src/PeerInteractionCommand.h (keepAliveCount): New variable
 
- 	* src/PeerInteractionCommand.cc (Constructor): Initialized new
 
- 	variable: keepAliveCount.
 
- 	(detectMessageFlooding): Added "keep alive" flooding detection.
 
- 	(receiveMessage): Increase keepAliveCount when "keep alive" message
 
- 	received.
 
- 	
 
- 	To add the ability to download only specified files in multi-file
 
- 	torrent:
 
- 	* src/BitfieldMan.h (filterBitfield): New variable.
 
- 	(filterEnabled): New variable.
 
- 	(setFilterBit): New function.
 
- 	(enableFilter): New function.
 
- 	(disableFilter): New function.
 
- 	(isFilterEnabled): New function.
 
- 	(getFilteredTotalLength): New function.
 
- 	(getCompletedLength): New function.
 
- 	* src/BitfieldMan.cc (Constructor): Initialized new variable:
 
- 	filterBitfield, filterEnabled.
 
- 	(CopyConstructor): Added filterBitfield and filterEnabled.
 
- 	(operator==): Added filterBitfield and filterEnabled.
 
- 	(Destructor): Added filterBitfield.
 
- 	(getMissingIndex): Use filterBitfield.
 
- 	(getMissingUnusedIndex): Use filterBitfield.
 
- 	(getFirstMissingUnusedIndex): Use filterBitfield.
 
- 	(getFirstMissingUnusedIndex): Use filterBitfield.
 
- 	(getAllMissingIndexes): Use filterBitfield.
 
- 	(countMissingBlock): Use filterBitfield.
 
- 	(countBlock): Use filterBitfield.
 
- 	(setBitInternal): Added new argument on.
 
- 	(setUseBit): Use setBitInternal.
 
- 	(unsetUseBit): Use setBitInternal.
 
- 	(setBit): Use setBitInternal.
 
- 	(unsetBit): Use setBitInternal.
 
- 	(isAllBitSet): Use filterBitfield.
 
- 	(setFilterBit): New function.
 
- 	(addFilter): New function.
 
- 	(enableFilter): New function.
 
- 	(disableFilter): New function.
 
- 	(clearFilter): New function.
 
- 	(isFilterEnabled): New function.
 
- 	(getFilteredTotalLength): New function.
 
- 	(getCompletedLength): New function.
 
- 	* src/TorrentMan.h [FileEntry](Constructor): Updated signature.
 
- 	Initalized newly added variables.
 
- 	[FileEntry](offset): New variable.
 
- 	[FileEntry](extracted): New variable.
 
- 	[FileEntry](requested): New variable.
 
- 	(readFileEntry): New function.
 
- 	(option): New variable.
 
- 	(splitMultiFile): Removed const qualifier.
 
- 	(fixFilename): Removed const qualifier.
 
- 	(readFileEntryFromMetaInfoFile): New function.
 
- 	(finishPartialDownloadingMode): New function.
 
- 	(isPartialDownloadingMode): New function.
 
- 	(setFileEntriesToDownload): New function.
 
- 	(getCompletedLength): New function.
 
- 	(getPartialTotalLength): New function.
 
- 	* src/TorrentMan.cc (readFileEntry): New function.
 
- 	(setup): Use readFileEntry. If no-preallocation option is specified,
 
- 	use DefaultDiskWriter.
 
- 	(readFileEntryFromMetaInfoFile): New function.
 
- 	(fixFilename): Removed const qualifier.
 
- 	(splitMultiFile): Removed const qualifier.
 
- 	(setFileEntriesToDownload): New function.
 
- 	(isPartialDownloadingMode): New function.
 
- 	(finishPartialDownloadingMode): New function.
 
- 	(getCompletedLength): New function.
 
- 	(getPartialTotalLength): New function.
 
- 	
 
- 	* src/TorrentConsoleDownloadEngine.h (partialDownloadLengthDiff):
 
- 	New variable.
 
- 	(partialTotalLength): New variable.
 
- 	(downloadLength): New variable.
 
- 	(totalLength): New variable.
 
- 	* src/TorrentConsoleDownloadEngine.cc (onPartialDownloadingCompletes):
 
- 	Added log.
 
- 	(initStatistics): Initialized new variables: partialDownloadLengthDiff,
 
- 	partialTotalLength, downloadLength, totalLength.
 
- 	(calculate): Calculate downloadLength and totalLength.
 
- 	
 
- 	* src/prefs.h :New definition PREF_NO_PREALLOCATION
 
- 	* src/main.cc (addCommand): Changed argument signature.
 
- 	(main): Added new variable: args. Added new option "torrent-show-files"
 
- 	"no-preallocation". Usage is not updated yet.
 
- 	
 
- 2006-04-02  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/PeerMessage.cc (setBitfield): Fixed invalid memory de-allocation.
 
- 2006-04-01  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	Attempt to add the ability to listing file entries in a .torrent file.
 
- 	This feature is not yet complete.
 
- 	
 
- 	* src/prefs.h (PREF_TORRENT_SHOW_FILES): New definition
 
- 	* src/TorrentMan.cc (getMultiFileEntries): New function.
 
- 	(getName): New function.
 
- 	* src/TorrentMan.h (getMultiFileEntries): New function.
 
- 	(getName): New function.
 
- 	* src/main.cc (main): Use above 2 funtion. 
 
- 	
 
- 	* Release 0.3.2
 
- 	
 
- 2006-03-31  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* src/PeerInteractionCommand.cc (checkInactiveConnection): New function
 
- 	(detectMessageFlooding): Updated threshold value.
 
- 	(checkLongTimePeerChoking): Updated timeout value.
 
- 	(getNewPieceAndSendInterest): Added debug log.
 
- 	* src/PeerInteractionCommand.h (checkInactiveConnection): New function
 
- 	
 
- 	* src/TorrentMan.cc (deleteOldErrorPeers): Updated.
 
- 	(getPeer): Updated.
 
- 	* src/TorrentMan.h: Added MAX_PEER_ERROR.
 
- 	
 
- 	* src/PeerAbstractCommand.cc (onAbort): Increment error counter.
 
- 	* src/PeerListenCommand.cc (execute): Close connection if incoming peer
 
- 	is localhost.
 
- 	* src/main.cc (main): Updated PREF_PEER_CONNECTION_TIMEOUT to 60.
 
- 	* src/PendingMessage.cc (processMessage): Not to send piece message
 
- 	if peer is not interested in the pieces localhost has.
 
- 	* src/Peer.cc (shouldChoke): Updated.
 
- 	* src/SendMessageQueue.cc (cancelAllRequest): Fixed.
 
- 	* src/Util.cc (isPowerOf): New function.
 
- 	* src/Util.h (isPowerOf): New function.
 
- 	* src/PeerMessageUtil.cc (checkLength): Added a check for length
 
- 	whether or not it is power of 2.
 
- 	
 
- 2006-03-28  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	Added new class SendMessageQueue that includes PendingMessages and
 
- 	RequestSlotMan.
 
- 	* src/SendMessageQueue.h: New class.
 
- 	* src/SendMessageQueue.cc: New class.
 
- 	* src/PendingMessage.h: Added new member variable blockIndex and its
 
- 	accessors.
 
- 	(createRequestMessage): Updated.
 
- 	* src/PendingMessage.cc (createRequestMessage): Updated.
 
- 	* src/PeerInteractionCommand.cc (executeInternal): Updated with
 
- 	SendMessageQueue.
 
- 	(checkLongTimePeerChoking): Updated with SendMessageQueue.
 
- 	(receiveMessage): Updated with SendMessageQueue.
 
- 	(deletePendingPieceMessage): Removed.
 
- 	(getNewPieceAndSendInterest): Updated with SendMessageQueue.
 
- 	(sendInterest): Updated with SendMessageQueue.
 
- 	(createRequestPendingMessage): Updated with SendMessageQueue.
 
- 	(sendMessages): Updated with SendMessageQueue.
 
- 	(onAbort): Updated with SendMessageQueue.
 
- 	(keepAlive): Updated with SendMessageQueue.
 
- 	(beforeSocketCheck): Updated SendMessageQueue.
 
- 	* src/PeerInteractionCommand (sendMessages): Shuffle
 
- 	missingBLockIndexes before using it.
 
- 	
 
- 	Added its own timeout for peer connection.
 
- 	
 
- 	* src/PeerAbstractCommand.h: Added member variable timeout and its
 
- 	setter.
 
- 	* src/prefs.h: Added PREF_PEER_CONNECTION_TIMEOUT.
 
- 	* src/PeerInteractionCommand.cc (PeerInteractionCommand):
 
- 	Added setTimeout() call.
 
- 	(executeInternal): Added setTimeout() call.
 
- 	* src/PeerAbstractCommand.cc (PeerAbstractCommand):
 
- 	Added timeout.
 
- 	(isTimeoutDetected): Updated.
 
- 	* src/main.cc (main): Added PREF_PEER_CONNECTION_TIMEOUT entry to
 
- 	option.
 
- 	
 
- 	Added *simple* message flooding checker.
 
- 	
 
- 	* src/PeerInteractionCommand.cc (executeInternal):
 
- 	Added detectMessageFlooding() call.
 
- 	(detectMessageFlooding): New function.
 
- 	(receiveMessage): Count up CHOKE, UNCHOKE, HAVE message.
 
- 	(beforeSocketCheck): Added detectMessageFlooding() call.
 
- 	* src/PeerInteractionCommand.h: Added sendMessageQueue,
 
- 	chokeUnchokeCount, haveCount, detectMessageFlooding().
 
- 	Removed deletePendingPieceMessage(), getRequestSlot(),
 
- 	deleteRequestSlot(), deleteAllRequestSlot().
 
- 	
 
- 	* src/PeerInteractionCommand.cc (beforeSocketCheck):
 
- 	Added checkLongTimePeerChoking() call.
 
- 	* src/RequestSlotMan.h: Renamed deleteTimeoutRequestSlot().
 
- 	* src/TorrentMan.cc (addPeer): Delete at most MAX_PEER_LIST_SIZE peers
 
- 	if duplicate == false.
 
- 	The parameter "uploaded" and "downloaded" in the tracker request are
 
- 	the size since the client sent the "started" event to the tracker.
 
- 	
 
- 	* src/TorrentMan.cc (setup): Assigned saved downloaded Size and
 
- 	uploaded size to preDownloadedSize, preUploadedSize respectively.
 
- 	* src/TorrentMan.h: Added preDownloadedSize, preUploadedSize,
 
- 	getSessionDownloadedSize(), getSessionUploadedSize().
 
- 	* src/TrackerInitCommand.cc (execute): Use getSessionDownloadedSize(),
 
- 	getSessionUploadedSize() instead of getDownloadedSize(),
 
- 	getUploadedSize().
 
- 	
 
- 	* src/PendingMessage.cc (processMessage): Do not send request message
 
- 	if the peer is choking the client.
 
- 	* src/TrackerUpdateCommand.cc (execute): Check wtheher minInterval is
 
- 	less than interval.
 
- 	
 
- 2006-03-27  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* configure.in: Added gnutls support. Added several CPP macros.
 
- 	* m4/openssl.m4: Added.
 
- 	* src/SocketCore.{h,cc}: Drop const quarifier from writeData(),
 
- 	readData(), peekData(). Added gnutls support.
 
- 	* src/HttpDownloadCommand.cc: Removed SleepCommand.h
 
- 	* src/TrackerWatcherCommand.{h,cc}: Added. This command creates
 
- 	TrackerInitCommand periodicaly(TorrentMan::minInterval).
 
- 	* src/TorrentMan.cc: Remove downloadedSize == 0 check from save().
 
- 	Instead, added a check for whether setup method has executed
 
- 	successfully.
 
- 	* src/TorrentMan.h: Added member vaiable setupComplete. Updated
 
- 	DEFAULT_ANNOUNCE_INTERVAL and DEFAULT_ANNOUNCE_MIN_INTERVAL to 300.
 
- 	* src/Makefile.am: Updated.
 
- 	* src/messageDigest.h: Added. This is a macro calculating SHA1 digest
 
- 	using whether OpenSSL or gcrypt, depending on the result of configure
 
- 	script.
 
- 	* src/ShaVisitor.{h,cc}: Removed direct	dependency on OpenSSL by using
 
- 	messageDigest.h. 
 
- 	* src/TorrentAutoSaveCommand.h: Removed unused variable cuid.
 
- 	* src/PeerListenCommand.cc: Added log about port binded successfully.
 
- 	Fixed memory leak.
 
- 	* src/main.cc: Added gnutls support. Replaced LIB_SSL with
 
- 	ENABLE_BITTORRENT where they are not related to OpenSSL but BitTorrent.
 
- 	Removed instantiation of TrackerInitCommand. Instead,
 
- 	TrackerWatcherCommand is instantiated and pushed to the command queue.
 
- 	* src/InitiateConnectionCommandFactory.cc: Replaced HAVE_LIBSSL with
 
- 	ENABLE_SSL.
 
- 	* src/Request.cc: Replaced HAVE_LIBSSL with ENABLE_SSL.
 
- 	* src/RequestSlotMan.cc (deleteCompletedRequestSlot):
 
- 	If a piece is already acquired by another command, delete the request
 
- 	slots for the piece.
 
- 	* src/TrackerUpdateCommand.cc (execute):
 
- 	Changed log level of MSG_TRACKER_WARNING_MESSAGE from info to warn.
 
- 	Added a check whether peer list is null.
 
- 	Fixed the bug that causes sending completed event to the tracker
 
- 	several times.
 
- 	* src/TrackerInitCommand.cc (execute):
 
- 	Fixed the bug that causes sending completed event to the tracker
 
- 	several times.
 
- 	* src/AbstractDiskWriter.{h,cc}: Removed direct dependency on OpenSSL
 
- 	by using messageDigest.h.
 
- 	
 
- 2006-03-26  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* PeerConnection.cc: Replaced log message "keep-alive" with
 
- 	"keep alive".
 
- 	* PeerInteractionCommand.{h,cc}: Close connection if peer is choking
 
- 	localhost long time.
 
- 	* TorrentMan.cc: When adding new peer with duplicate = true, if the
 
- 	number of peer list is equal to or grater than MAX_PEER_LIST, delete
 
- 	at most 100 failure entry from the list. If with duplicate = false,
 
- 	MAX_PEER_LIST is not checked.
 
- 	* PeerListenCommand.cc: Fixed the argument order of log message.
 
- 2006-03-25  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* Logger.h: Moved enum LEVEL from SimpleLogger.h to here.
 
- 	Added warn().
 
- 	* SimpleLogger.h: Moved enum LEVEL to Logger.h.
 
- 	Implemented warn().
 
- 	Defined 2 macros(WRITE_LOG, WRITE_LOG_EX) to avoid duplicated code.
 
- 	
 
- 2006-03-24  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* Request.h: Added AFTER_COMPLETED event.
 
- 	* TorrentDownloadEngine.cc: Prints "Download complete" message
 
- 	instead of downloaded size and progress(%) after download completes.
 
- 	* PeerInteractionCommand.cc: After download completes, sends unchoke
 
- 	message to the peer if it is interested in what localhost has
 
- 	downloaded.
 
- 	* TorrentMan.cc: In single-file mode, copy temporary file to the final
 
- 	destination instead of just renaming it.
 
- 	* TorrentMan.cc: Added deleteTempFile().
 
- 	* PeerAbstractCommand.cc: do not stop execution after download
 
- 	completes. This makes localhost a seeder.
 
- 	* Util.{h,cc}: Added fileCopy().
 
- 	* PeerListenCommand.cc: do not stop execution after download completes.
 
- 	This makes localhost a seeder.
 
- 	* main.cc: Do not call TorrentMan::fixFilename() in torrentHandler.
 
- 	Added TorrentMan::deleteTempFile() to torrentHandler.
 
- 	Initialized the variable dir as ".".
 
- 	* TorrentMan.h: Changed DEFAULT_ANNOUNCE_INTERVAL to 120 seconds.
 
- 	Deleted renameSingleFile().
 
- 	Added copySingleFile(), deleteTempFile().
 
- 	* DownloadEngine.h: Added virtual function afterEachIteration().
 
- 	* TorrentDownloadEngine.cc: Move a call to TorrentMan::fixFilename()
 
- 	in onEndOfRun() to afterEachIteration().
 
- 	In onEndOfRun(), changed if condition to check whether filenameFixed is
 
- 	true.
 
- 	* Util.cc: Implemented fileCopy() using rangedFileCopy().
 
- 	In rangedFileCopy(), added try-catch block to properly close file
 
- 	descriptors.
 
- 	* TorrentDownloadEngine.cc: Added a member variable filenameFixed.
 
- 	Added afterEachIteration(), isFilenameFixed().
 
- 	* Peer.cc: Changed choking strategy.
 
- 	* PreAllocationDiskWriter.cc: Drop O_DIRECT flag.
 
- 	* TrackerInitCommand.cc: Send completed event only once.
 
- 	* DownloadEngine.cc: Added a call to afterEachIteration().
 
- 	* TrackerUpdateCommand.cc: Do not stop execution after download
 
- 	completes.
 
- 	* TorrentMan.h: Defined MAX_PEER_UPDATE as 15. aria2 attempts to
 
- 	connect the peers at most MAX_PEER_UPDATE when a peer list is
 
- 	received from a tracker.
 
- 	* TrackerUpdateCommand.cc: Implemented above mentioned behavior.
 
- 	Decreased the number of failure peers to delete to 0(just comment out
 
- 	the line).
 
- 	* Release 0.3.1
 
- 	
 
- 2006-03-23  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* PeerInteractionCommand.cc: added a call to 
 
- 	TorrentMan::unadvertisePiece in Destructor.
 
- 	* PeerInteractionCommand.cc: make have message sent immediately
 
- 	if the size of pending message queue is zero.
 
- 	* TorrentMan.cc: set the maximum size of peer list to 250.
 
- 	* TorrentMan.h: changed the container type of Peers and UsedPieces
 
- 	to deque.
 
- 	* Util.cc: fixed rangedFileCopy.
 
- 	* AbstractDiskWriter.{h,cc}: moved digest context initialization
 
- 	to Constructor. Also, moved digest cleanup to Destructor.
 
- 	* MetaFileUtil.cc: fixed memory leak
 
- 	* replaced std::vector with std::deque.
 
- 	* AbstractCommand.cc: casted timeout value to long long int.
 
- 	* ChunkedEncoding.cc: fixed memory leak.
 
- 	* PeerInteractionCommand.cc: casted timeout value to long long int.
 
- 	* SleepCommand.cc: casted timeout value to long long int.
 
- 	* Data.cc: fixed memory leak.
 
- 	* Data.cc: fixed toLLInt().
 
- 	* BitfieldMan.cc: fixed memory leak.
 
- 	* TorrentMan.cc: initialized storeDir to ".".
 
- 	* TorrentMan.cc: fixed memory leak.
 
- 	* TorrentMan.cc: corrected file paths of splitted files.
 
- 	* PeerAbstractCommand.cc: casted timeout to long long int.
 
- 	* main.cc: added delete(req) and delete(te->diskWriter).
 
- 	* RequestSlot.cc: casted timeout value to long long int.
 
- 	* Request.cc: fixed memory leak.
 
- 	* PendingMessage.cc: make HAVE messages sent only when peer does not
 
- 	have the piece.
 
- 	* Peer.{h,cc}: added hasPiece(int index).
 
- 	* main.cc: corrected addCommand.
 
- 	
 
- 2006-03-22  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* BitTorrent protocol support added.
 
- 	* Release 0.3.0
 
- 	
 
- 2006-03-17  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* SocketCore.cc: remove the assignment of addrinfo.ai_addr.
 
- 2006-03-09  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* ChunkedEncoding.{h,cc}: fixed the bug that if chunk data is binary,
 
- 	decoding did not work properly.
 
- 2006-03-07  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* DownloadEngine.h: included sys/time.h
 
- 	* DownloadEngine.cc: remove sys/time.h
 
- 	* Makefile.am (SUBDIRS): Add intl.
 
- 	* configure.in (AC_CONFIG_FILES): Add intl/Makefile.
 
- 2006-03-05  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* main.cc: correct help message for --http-auth-scheme.
 
- 	* main.cc: changed e-mail address for bug reports.
 
- 	* ja.po: added japanese translation.
 
- 2006-03-04  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* SimpleLogger.cc: flush log file instead of stdout.
 
- 2006-03-03  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* main.cc: Fixed command-line option: max-tries
 
- 	* HttpResponseCommand.cc: Make the request re-sent only if req->seg.sp
 
- 	does not equal to seg.sp.
 
- 	* DownloadCommand.cc: If EOF is got from the server and the total size
 
- 	of file is not zero, then throw DlRetryEx.
 
- 	* main.cc: Set the minium value of min-segment-size to 1024.
 
- 	* HttpResponseCommand.cc: Fixed the bug that http segmented downloading
 
- 	fails because of a regression since 0.2.0 release.
 
- 	
 
- 2006-03-02  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* HttpConnection.cc:
 
- 	* common.h: defined the user agent name as macro
 
- 	* DownloadEngine.{h, cc}:
 
- 	* ConsoleDownloadEngine.{h, cc}: Console output message(size, speed)
 
- 	is now generated by ConsoleDownloadEngine not by DownloadEngine.
 
- 	* main.cc: Download complete/abort message is now generated by main.
 
- 	* Makefile.am (SUBDIRS): Add m4.
 
- 	(ACLOCAL_AMFLAGS): New variable.
 
- 	(EXTRA_DIST): New variable.
 
- 	* configure.in (AC_CONFIG_FILES): Add po/Makefile.in,
 
- 	* gettext: added gettext functionality
 
- 	
 
- 2006-03-01  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* AbstractCommand.cc:
 
- 	* DownloadCommand.{h, cc}: Aborted downloading commands now properly
 
- 	unregister its cuid from SegmentMan.	
 
- 	* DownloadEngine.cc: .aria2 file was written when a downloading
 
- 	failed with errors.
 
- 	* HttpConnection.cc: Added "Proxy-Connection" header to proxy request.
 
- 	Added "User-Agent" header to CONNECT proxy request.
 
- 	Fixed "Proxy-Authorization" header. Now proxy authorization works
 
- 	properly.
 
- 	* Logger.h:
 
- 	* SimpleLogger.{h,cc}: Changed the type of msg to const char*.
 
- 	* ChunkedEncoding.cc: Added #include directive for strings.h
 
- 	* Release 0.2.1
 
- 	
 
- 2006-02-28  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* Util.{h,cc}: added startsWith().
 
- 	* CookieBox.cc: rewrited criteriaFind() using Util::startsWith() and
 
- 	Util::endsWith().
 
- 	* SocketCore.cc: struct addrinfo is now  zero-initialized.
 
- 	* common.h: added #include directive of limit.h.
 
- 	* DownloadEngine.cc: added #include directive of sys/time.h and
 
- 	algorithm.
 
- 	* Exception.h: added #include directive of stdio.h.
 
- 	* AbstractCommand.h: added #include directive of sys/time.h.
 
- 	* DownloadCommand.h: added #include directive of sys/time.h.
 
- 	* *.h: added #include directive of common.h to all base classes.
 
- 	subclasses' one was removed.
 
- 	* common.h: defined LONG_LONG_MAX and LONG_LONG_MIN if a compiler
 
- 	does not define these macros.
 
- 	
 
- 2006-02-23  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* Release 0.2.0
 
- 	* main.cc:
 
- 	* HttpInitiateConnectionCommand.{h,cc}:
 
- 	* prefs.h:
 
- 	* HttpConnection.{h,cc}: added --http-proxy-method option.
 
- 	We can now use GET command in http proxy.
 
- 2006-02-22  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	
 
- 	* SplitSlowestSegmentSplitter.{h,cc}: This class provies algorithm
 
- 	that splits slowest segment of SegmentMan::commands vector.
 
- 	This is the default split algorithm of aria2.
 
- 	* SplitFirstSegmentSplitter.{h,cc}: This class provides algorithm
 
- 	that splits first segment of SegmentMan::commands vector.
 
- 	* SegmentSplitter.{h,cc}: Added. This class provides split algorithm.
 
- 	* DownloadCommand.{h,cc}: Added downloading speed calculation.
 
- 	* Segment.h:
 
- 	* SegmentMan.cc: Added speed field to Segment.h
 
- 	* main.cc: -s option now affects all URLs in command-line arguemtns.
 
- 	* HttpResponseCommand.cc: Fixed bug that segment file is not loaded.
 
- 	* message.h: Change file size related %d to %lld.
 
- 2006-02-21  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* FtpInitiateConnectionCommand.{h,cc}:
 
- 	* FtpNegotiationCommand.{h,cc}:
 
- 	* FtpDownloadCommand.{h,cc}:
 
- 	* FtpConnection.{h,cc}: Added FTP support
 
- 	* SimpleLogger.cc: Log message now includes time information.
 
- 	* main.cc: The value of --http-auth-scheme option is chagned from
 
- 	'BASIC' to 'basic'
 
- 	* main.cc: Added --timeout command-line option.
 
- 	* main.cc: Added --min-segment-size command-line option.
 
- 	* main.cc: Added --max-retries command-line option.
 
- 	* prefs.h: option string constants are now defined in prefs.h
 
- 	
 
- 2006-02-19  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* AbstractCommand.cc: Fixed timeout bug in AbstractCommand
 
- 	* SegmentMan.cc: Added totalSize entry to .aria2 file. No compatibility
 
- 	with version 0.1.0's one.
 
- 	
 
- 2006-02-18  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
- 	* configure.in: Added --enable-ssl option to configure script.
 
- 	* HttpConnection.cc: Make Request-URI an absolute path. Some servers
 
- 	cannot permit absoluteURI as Request-URI.
 
- 	* HttpConnection.cc: Added Referer support.
 
- 	* main.cc: Added referer command-line option.
 
- 	* main.cc: Added rety-wait command-line option.
 
- 	* Exception.h: Fixed formating bug in Exception::setMsg()
 
- 	* SocketCore.{h,cc}:
 
- 	* Socket.{h, cc}:
 
- 	* Request.cc:
 
- 	* InitiateConnectionCommandFactory.cc:
 
- 	* HttpRequestCommand.cc: Added HTTPS support.
 
- 	* SocketCore.{h,cc}: Added SocketCore. Socket becomes a handle class
 
- 	for SocketCore.
 
- 	* ChunkedEncoding.cc: Fixed bug in ChunkedEncoding: expanding buffer
 
- 	size is wrong
 
- 	* DownloadCommand.cc: Fixed bug in DownloadCommand: In Chunked
 
- 	Encoding, it wrongly adds to Segment.ds buff length from the socket.
 
- 2006-02-17  Tatsuhiro Tsujikawa <tsujikawa at rednoah dot com>
 
- 	
 
- 	* Release 0.1.0
 
- 	
 
 
  |