;ò ß"„Gc@sÓdkZdkZdkZdkZdkZdfd„ƒYZd„Zd„Zedjopdk Z dk Z e e i ƒdjoe i dZ ndZ eiee ƒeie iƒeidƒndS( Ns http_clientcBs>tZd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCs1||_||_d|_g|_||_dS(Ns(sconnsselfsssaddrsbufferslinessdoc_root(sselfsconnsaddrsdoc_root((sB/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/corohttpd.pys__init__ s     cCs¦|io%|id}|id|_|Sntxf|i oZ|iidƒ}ti|dƒ}x"|d D]}|ii|ƒqlW|d|_q2W|i ƒSdS(Niii s iÿÿÿÿ( sselfslinesslsssrecvsbuffersstringssplitsappends read_line(sselfsbufferslinessl((sB/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/corohttpd.pys read_lines    cCsLg}x2no*|iƒ}| oPq |i|ƒqW||_|SdS(Ni(sheadersselfs read_lineslsappend(sselfsheadersl((sB/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/corohttpd.pys read_header!s  cCsCt|ƒ}}x(|o |ii|ƒ}||}qW|SdS(N(slensdatasolbslbsselfssssendsns(sselfsdatasolbslbsns((sB/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/corohttpd.pyssend,s cCs|iiƒdS(N(sselfsssclose(sself((sB/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/corohttpd.pysclose3sc Csn|id}ti|ƒ\} }}dk}|i i |i |dƒ}|i i |ƒo|i i |dƒ}n|i i|ƒ oD|idƒ|iƒtiidtitiƒƒ|fƒnt|dƒ}d}|i|ƒd}x;no3|idƒ} | oPqù||i| ƒ}qWtiid titiƒƒ||fƒ|iƒdS( Niis index.htmls,HTTP/1.0 404 Not Found Connection close s %s %s 404 srbs?HTTP/1.0 200 OK Content-Type: text/html Connection: close i s %s %s 200 %d (sselfsheadersrequestsstringssplitsmethodsurisversionsosspathsjoinsdoc_rootsfilenamesisdirsisfilessendsclosessyssstdoutswritestimesctimesopensfsbcsreadsblock( sselfsfsbcsrequestsurisfilenamesheadersversionsossmethodsblock((sB/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/corohttpd.pys send_response6s,    - ,(s__name__s __module__s__init__s read_lines read_headerssendscloses send_response(((sB/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/corohttpd.pys http_client s     cCs4t|||ƒ}|iƒ|iƒtiƒSdS(N( s http_clientsconnsaddrsdoc_rootshs read_headers send_responsescorosyield_(sconnsaddrsdoc_rootsh((sB/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/corohttpd.pysclientZs  cCs‡tiƒ}|ititiƒ|iƒ|iddfƒ|i dƒx4no,|i ƒ\}}ti t|||ƒqVWdS(Nsi‘i€i(scoroscoroutine_socketsss create_socketssocketsAF_INETs SOCK_STREAMsset_reuse_addrsbindslistensacceptsconnsaddrsspawnsclientsdoc_root(sdoc_rootsaddrsssconn((sB/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/corohttpd.pysserve`s   s__main__is/usr/share/doc/handbookf30.0(scoros coroutinessocketsstringstimes http_clientsclientsserves__name__sbackdoorssysslensargvsdoc_rootsspawns event_loop( ssockets coroutinescorosservesdoc_rootssyssbackdoorsclientstimes http_clientsstring((sB/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/corohttpd.pys?s     Q