Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
ó
 ‹EYc@sddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddlm
Z
ddlmZddlm
Z
ddlmZddlmZddlmZd	Zd
ZdZdZdZd
ZdZeZddgZdddddddgZeddddddddd d!d"d#g
Zd$„Z d%„Z!e"ej#d&fƒZ$e"ej%ej&fƒZ'd'e(fd(„ƒYZ)d)e*fd*„ƒYZ+e+ƒZ,d+e*fd,„ƒYZ-d-e.fd.„ƒYZ/d/e.fd0„ƒYZ0d1„Z1d2e*fd3„ƒYZ2d4e2fd5„ƒYZ3d6e*fd7„ƒYZ4d8e
j5fd9„ƒYZ6d:e
j7fd;„ƒYZ8y
ej9Z:Wne;k
r°d<„Z:nXyLddl<Z<ej=e<j>fZ?e"ej%ej#ej&e<j@e<jAfƒZBWn;eCk
r:ej=fZ?e"ej%ej#ej&fƒZBnXd=„ZDeeeee6eeeeeeeeeeed>„ZEdS(?iÿÿÿÿN(tgreenio(t	greenpool(tsupport(tBaseHTTPServer(tsocket(tsix(turllibisHTTP/1.1i iisg%(client_ip)s - - [%(date_time)s] "%(request_line)s" %(status_code)s %(body_length)s %(wall_seconds).6ftservertformat_date_timetMontTuetWedtThutFritSattSuntJantFebtMartAprtMaytJuntJultAugtSeptOcttNovtDecc
	CsOtj|ƒ\	}}}}}}}}}	dt||t|||||fS(s6Formats a unix timestamp into an HTTP standard string.s#%s, %02d %3s %4d %02d:%02d:%02d GMT(ttimetgmtimet_weekdaynamet
_monthname(
t	timestamptyeartmonthtdaythhtmmtsstwdt_yt_z((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR's*cCs<d}d}t|tƒr2|d}|d}n||fS(Ntunixtii(t
isinstancettuple(taddrthosttport((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pytaddr_to_host_port/s

iE'tChunkReadErrorcBseZRS((t__name__t
__module__(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR2>st_AlreadyHandledcBs eZd„Zd„ZeZRS(cCs|S(N((tself((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyt__iter__EscCs
t‚dS(N(t
StopIteration(R6((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pytnextHs(R3R4R7R9t__next__(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR5Cs		tInputcBsŒeZd
d
ed„Zd„Zd
d„Zd
ed„Zd
d„Zd
d„Z	d
d„Z
d„Zd„Ze
d	„Zdd„ZRS(cCsy||_||_|dk	r-t|ƒ}n||_||_||_d|_||_d|_	d|_
t|_dS(Niiÿÿÿÿ(
trfilet_socktNonetinttcontent_lengthtwfilet
wfile_linetpositiont
chunked_inputtchunk_lengththundred_continue_headerstFalset!is_hundred_continue_response_sent(R6R<R@tsockRARBRD((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyt__init__Ss									cCsg}|j|jƒ|jdk	rVx.|jD] }|jtjd|ƒƒq/Wn|jdƒ|jj|ƒ|jjƒd|_	dS(Ns%s: %s
s
iÿÿÿÿ(
tappendRBRFR>RtbRAt
writelinestflushRE(R6ttowritetheader((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pytsend_hundred_continue_responsems!

cCsÆ|jdk	r/|jr/|jƒt|_n|jdk	rs|dks`||j|jkrs|j|j}n|s}dSy||ƒ}Wntjj	k
r¬d}nX|jt
|ƒ7_|S(NR+(RAR>RHRQtTrueR@RCRtSSLtZeroReturnErrortlen(R6treadertlengthtread((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyt_do_read‚s
"
c
Cs)|jdk	r/|jr/|jƒt|_nyÓ|dkrBdS|r]|dkr]d}n|rr|jj}n|jj}g}xz|jdkr|j|j	}|dk	rÇ||krÇ|}n|dkrŠ||ƒ}|sýd|_t
dƒ‚nt|ƒ}|j|ƒ|j	|7_	|j|j	krD|jƒn|dk	rm||8}|dkrmPqmn|rý|ddkrýPqýq‡y,t
|jƒjddƒddƒ|_Wntk
r×}	t|	ƒ‚nXd|_	|jdkr‡|jƒq‡q‡WWntjjk
rnXdj|ƒS(	NiR+s1unexpected end of file while parsing chunked dataiÿÿÿÿs
t;ii(RAR>RHRQRRR<treadlineRXRERCtIOErrorRURKR?tsplitt
ValueErrorR2RRSRTtjoin(
R6R<RWtuse_readlineRVtresponset
maxreadlentdatatdatalenterr((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyt
_chunked_read“sT
			


,	cCs2|jr|j|j|ƒS|j|jj|ƒS(N(RDRfR<RYRX(R6RW((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRXÉs	cCs9|jr|j|j|tƒS|j|jj|ƒSdS(N(RDRfR<RRRYR[(R6tsize((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR[Îs	cCs|j|jj|ƒS(N(RYR<t	readlines(R6thint((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRhÔscCst|jdƒS(NR+(titerRX(R6((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR7×scCs|jS(N(R=(R6((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyt
get_socketÚscCsf|rYg|D]C\}}djg|jdƒD]}|jƒ^q/ƒ|f^q
}n||_dS(Nt-(R_R]t
capitalizeRF(R6theaderstcapitalize_response_headerstkeytvaluetx((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyt%set_hundred_continue_response_headersÝsPii
cCsx|j|ƒrqWdS(N(RX(R6tbuffer_size((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pytdiscardésNi@(R3R4R>RGRJRQRYRfRXR[RhR7RkRRRsRu(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR;Qs	6		tHeaderLineTooLongcBseZRS((R3R4(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRvîstHeadersTooLargecBseZRS((R3R4(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRwòscCsNtt|ddƒƒr4tt|ddƒƒr4|St|pCtj|ƒSdS(Ntinfotdebug(tcallabletgetattrR>tLoggerFileWrappertsyststderr(tlogRy((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyt
get_loggeröst
LoggerNullcBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCsdS(N((R6((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRJÿscOsdS(N((R6tmsgtargstkwargs((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyterrorscOsdS(N((R6R‚RƒR„((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRxscOsdS(N((R6R‚RƒR„((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRyscGsdS(N((R6R‚Rƒ((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pytwrites(R3R4RJR…RxRyR†(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRþs
				R|cBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs||_||_dS(N(Rt_debug(R6RRy((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRJs	cOs|j||ŒdS(N(R†(R6R‚RƒR„((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR…scOs|j||ŒdS(N(R†(R6R‚RƒR„((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRxscOs |jr|j||ŒndS(N(R‡R†(R6R‚RƒR„((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRys	cGs1|d}|r||}n|jj|ƒdS(Ns
(RR†(R6R‚Rƒ((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR†s

(R3R4RJR…RxRyR†(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR|s
				tFileObjectForHeaderscBseZd„Zdd„ZRS(cCs||_d|_dS(Ni(tfpttotal_header_size(R6R‰((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRJ's	iÿÿÿÿcCs|}|dkrt}n|jj|ƒ}t|ƒtkrKtƒ‚n|jt|ƒ7_|jtkr{tƒ‚n|S(Ni(tMAX_HEADER_LINER‰R[RURvRŠtMAX_TOTAL_HEADER_SIZERw(R6Rgtsztrv((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR[+s	(R3R4RJR[(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRˆ%s	tHttpProtocolcBs_eZdZeZeZd
Zd„Zd„Z	d„Z
d„Zd„Zd„Z
d	„ZRS(sHTTP/1.1ii
cCs|j}|_ttddƒrYy|jtjtjtƒWqYtj	k
rUqYXny4|j
d|jƒ|_|j
d|j
ƒ|_Wn„ttfk
rt|dƒrút|dƒrútj|d|jƒ|_tj|d|j
ƒ|_qtdt|ƒƒ‚nXdS(NtTCP_QUICKACKtrbtwbtsendtrecvs*wsgi.py doesn't support sockets of type %s(trequestt
connectionR{RR>t
setsockopttIPPROTO_TCPRRRR…tmakefiletrbufsizeR<twbufsizeRAtAttributeErrortNotImplementedErrorthasattrt_fileobjectttype(R6tconn((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pytsetupBscCs…|jjr|jj|_n|jjr7d|_dSyW|jj|jjƒ|_t	|jƒ|jjkr|j
jdƒd|_dSWnYtj
jk
r°d|_n:tjk
ré}tj|ƒtkr݂nd|_nX|jsd|_dS|j}z‚y&t|jƒ|_|jƒs1dSWnUtk
r_|j
jdƒd|_dStk
r‰|j
jdƒd|_dSXWd||_X|jjdƒ}|dk	rõyt|ƒWqõtk
rñ|j
jdƒd|_dSXn|jƒ|_|jj|_ zX|jj!d7_!y|j"ƒWn1tjk
ri}tj|ƒt#krj‚qjnXWd|jj!d8_!XdS(NisKHTTP/1.0 414 Request URI Too Long
Connection: close
Content-length: 0

R+sKHTTP/1.0 400 Header Line Too Long
Connection: close
Content-length: 0

sHHTTP/1.0 400 Headers Too Large
Connection: close
Content-length: 0

scontent-lengthsBHTTP/1.0 400 Bad Request
Connection: close
Content-length: 0

($Rtmax_http_versiontprotocol_versionR<tclosedtclose_connectionR[turl_length_limittraw_requestlineRURAR†RRSRTRR…Rt	get_errnotBAD_SOCKRˆt
parse_requestRvRwRntgetR>R?R^tget_environtenvirontapptapplicationtoutstanding_requeststhandle_one_responsetBROKEN_SOCK(R6tet
orig_rfileR@((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pythandle_one_request[sr			
			
		
			

		csxtjƒ}g‰g‰ˆj‰d}tg‰dg‰dg‰‡‡‡‡‡‡fd†‰d‡‡‡‡‡fd†}zeyÒˆjˆj|ƒ}t|tƒsÃtt|ddƒtƒrÐdˆ_	dSˆr>t
|dƒr>dgˆdD]\}}|^qôkr>ˆdjdtt
tt|ƒƒƒfƒng}d}d}tˆjjd	ˆjƒƒ}	x›|D]“}
t|
ƒdkr“qunt|
tjƒr·|
jd
ƒ}
n|j|
ƒ|t|
ƒ7}||	kruˆdj|ƒƒg}|}d}ququW|r.|}ˆdj|ƒƒnˆsEˆdrR|rRˆdƒnWnŒtk
rádˆ_	tjƒ}ˆjjj|ƒˆsâˆjjr¬tj|ƒnd}|dddt|ƒfgƒˆ|ƒqânXWdt
|dƒr|jƒnˆjd}
|
j s0|
j!|
j"p*dkr¯|
jr¯ˆj	dkr¯y|
j#ƒWq¬t$k
r¨}dˆ_	ˆjjj%ddj&ˆj'ƒdˆj(|ƒƒq¬Xq¯ntjƒ}x1ˆjdD]"\}}}|ˆj||ŽqÉWˆjj)rsˆj'ƒ\}}ˆjjjˆjj*i|d6|d6ˆj+ƒd6ˆj(d6ˆdd6ˆdd6||d6ƒnXdS(NiiÈc	s|g}ˆstdƒ‚n܈s÷ˆ\}}ˆjdƒg|D]}|djƒ^qA}|jtjdˆj|fƒƒx(|D] }|jtjd|ƒƒq‡Wd|krã|jtjdttjƒƒfƒƒnˆjj	dd	ƒjƒ}t
}ˆjdkr_ˆjj
r_|d
ksGˆjdkr_|dkr_|d
k}dˆ_n	dˆ_d
|kr¸ˆjdkrtˆd<|jdƒq¸d
|kr¸dˆ_q¸nˆjrÑ|jdƒn|rç|jdƒn|jdƒnˆdr3|jtjdt|ƒfƒd|dƒn
|j|ƒˆj|ƒˆjƒˆdttt|ƒƒˆd<dS(Nswrite() before start_response()iis%s %s
s%s: %s
tdates
Date: %s
t
ConnectionR+s
keep-alivesHTTP/1.1tclosescontent-lengthsTransfer-Encoding: chunked
sConnection: close
sConnection: keep-alive
s
s%x(tAssertionErrorRKtlowerRRLR¤RRRnR¬RGR¦Rt	keepalivetrequest_versionRRRURMRNtsumtmap(RcROtstatustresponse_headersRPtheader_listtclient_conntsend_keep_alive(theaders_senttheaders_setRWR6tuse_chunkedRA(sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR†­sL
##
,
	
	
2


csÀ|jƒdˆd<|rSz,ˆrEtj|d|d|dƒnWdd}Xnˆjr¯g|D]C\}}djg|jdƒD]}|jƒ^q…ƒ|f^qc}n||gˆ(ˆS(NiiiRl(R]RtreraiseR>RoR_Rm(RÀRÁtexc_infoRpRqRr(RÅRÆR6tstatus_codeR†(sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pytstart_responseâs&
	P
t_objit__len__sContent-Lengths!eventlet.minimum_write_chunk_sizetasciiR+s500 Internal Server ErrorsContent-types
text/plainsContent-lengthR¹seventlet.inputs5chunked encoding error while discarding request body.s% client={0} request="{1}" error="{2}"seventlet.posthookst	client_iptclient_portt	date_timetrequest_lineRÊtbody_lengthtwall_seconds(sContent-types
text/plain(,RRAR>RGR°R®R,R5R{R¦RžRKtstrR¾R¿RUR?R¬tminimum_chunk_sizeRt	text_typetencodeR_t	Exceptiont	tracebackt
format_excRRRxRyRLR¹RDRCR@RuR2R…tformattget_client_addresstrequestlinet
log_outputt
log_formattlog_date_time_string(R6tstarttresultRËtht_vROttowrite_sizetjust_written_sizetminimum_write_chunk_sizeRcttbterr_bodyt
request_inputR´tfinishthookRƒR„tclient_hostRÐ((RÅRÆRWR6RÊRÇRAR†sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR²¢sž				5	)/



	!

		'

cCsft|jƒ\}}|jjr\|jjddƒjddƒ}|r\|d|}q\n||fS(NsX-Forwarded-ForR+t t,(R1tclient_addressRtlog_x_forwarded_forRnR¬treplace(R6R/R0tforward((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRÝJs!c
Cs|jjƒ}|j|d<d|d<|jjddƒ}|d|d<tjj|dƒ|d<t|ƒdkr†|d|d	<n|j	j
d
ƒ}|dkrÚy|j	j}WqÚt
k
rÖ|j	jƒ}qÚXn||d<|j	j
dƒ}|r	||d
<nd|d<|jjƒ}t|ƒ}|d|d<t|dƒ|d<t|jƒ}|d|d<t|dƒ|d<d|d<y|j	j	}Wnt
k
rº|j	j}n&Xg|D]}	|	jddƒ^qÂ}td„|Dƒƒ|d<}
xu|
D]m\}}|jddƒjƒ}|d(kr;qnd|}
|
|krh||
cd|7<q|||
<qW|j
dƒdkr|j}d}nd}d}|j
d dƒjƒd!k}t|j||jd"|d#|d$|ƒ|d%<|d&<g|d'<|S()NtREQUEST_METHODR+tSCRIPT_NAMEt?iit
RAW_PATH_INFOt	PATH_INFOtQUERY_STRINGscontent-typetCONTENT_TYPEscontent-lengthtCONTENT_LENGTHsHTTP/1.0tSERVER_PROTOCOLtSERVER_NAMEtSERVER_PORTtREMOTE_ADDRtREMOTE_PORTsCGI/1.1tGATEWAY_INTERFACEt:css'|]\}}||jƒfVqdS(N(tstrip(t.0tktv((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pys	<genexpr>{stheaders_rawRlt_tHTTP_RðtHTTP_EXPECTs100-continuesHTTP/1.1 100 Continue
tHTTP_TRANSFER_ENCODINGtchunkedRARBRDs
wsgi.inputseventlet.inputseventlet.posthooks(sCONTENT_TYPEsCONTENT_LENGTH(RR­tcommandtpathR]RtparsetunquoteRURnR¬R>R Rœtget_content_typeR•tgetsocknameR1RÕRñt_headersR-RótupperRAR»R;R<R–(R6tenvtpqtctRWtsocknametserver_addrtclient_addrRnRäRRRtenvkRARBR
((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR­Ssh







%
		
cCsiytjj|ƒWn1tjk
rG}tj|ƒtkrH‚qHnXtj	|j
ƒ|j
jƒdS(N(RtBaseHTTPRequestHandlerRìRR…RR©R³Rt
shutdown_safeR–R¹(R6R´((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRì•s
cCstS(N(RR(R6((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pythandle_expect_100Ÿsi@(R3R4R¤tMINIMUM_CHUNK_SIZERÖRRRoR›R¢R¶R²RÝR­RìR(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR8s		G	¨			B	
tServercBsSeZdddedeeeeeeded„
Zd„Zd„Z	d„Z
RS(cCsìd|_||_||_tƒ|_|rBt||ƒ|_n||_|
|_||_||_	||_
tjƒ|_
||_|	|_||_||_|
|_||_||_||_|jsètjdtddƒndS(Nis×capitalize_response_headers is disabled.
 Please, make sure you know what you are doing.
 HTTP headers names are case-insensitive per RFC standard.
 Most likely, you need to fix HTTP parsing in your client software.t
stackleveli(R±RtaddressRRR€R¯R¼R®R£tprotocoltostgetpidtpidRÖRòRßRàR§Rytsocket_timeoutRotwarningstwarntDeprecationWarning(R6RR#R¯RR®R£R$RÖRòR¼RßRàR§RyR(Ro((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRJ¥s0																	cCs‚itjd6dd6td6td6td6dd	6}t|jd
ƒr\d|d	<d|d
<n|jdk	r~|j|jƒn|S(Nswsgi.errorsiiswsgi.versionswsgi.multithreadswsgi.multiprocesss
wsgi.run_oncethttpswsgi.url_schemetdo_handshakethttpstontHTTPS(ii(	R}R~RRRGRžRR®R>tupdate(R6td((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR­Ós



cCsž|\}}t|jƒ}|jdk	r9|j|_n|j|_y|j|||ƒWn;tjk
r™|jƒ|j	j
d|j|fƒnXdS(Ns(%s) timed out %r(tnewR$RÖR>RoRJRttimeoutR¹RRyR'(R6tsock_paramsRIR#tproto((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pytprocess_requestäs
cCs!tjdƒ|jj|ƒdS(NsEserver.log_message is deprecated.  Please use server.log.info instead(R)R*RRx(R6tmessage((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pytlog_messageõs
N(R3R4R>RRRtDEFAULT_LOG_FORMATtMAX_REQUEST_LINERJR­R7R9(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyR!£s 		cCs
|j|ƒS(N(t__new__(tcls((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyt<lambda>ýscCs©d}t|dƒrd}n|jƒ}|jtjkrNdj|Œ}nO|jtjkrvdj|d Œ}n'|jtjkr‘|}nt|ƒ}|d|S(NR,R-R.s	//{0}:{1}s//[{0}]:{1}iR(	RžRtfamilyRtAF_INETRÜtAF_INET6tAF_UNIXtrepr(RItschemetnamet	hier_part((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pytsocket_repr
s		cCs_t||jƒ||d|d|d|d|d|	d|d|d|
d	|d
|d|d|ƒ}|dk	r|j|ƒn|dkr”t}n|
dk	r©|
}ntj|ƒ}z/|jjd
|j	t
|ƒfƒxtråy£|jƒ}|dj
|jƒ|jjd|j	|dfƒy|j|j|ƒWnDtk
rˆtjdt|ƒtddƒ|j|j|ƒnXWqátk
rº}tj|ƒtkrâ‚qâqáttfk
rá|jjdƒPqáXqáWWd|jƒ|jjd|j	tfƒy|jƒWn8t j!k
rY}tj|ƒt"krZt#j$ƒqZnXXdS(s˜Start up a WSGI server handling requests from the supplied server
    socket.  This function loops forever.  The *sock* object will be
    closed after server exits, but the underlying file descriptor will
    remain open, so if you have a dup() of *sock*, it will remain usable.

    .. warning::

        At the moment :func:`server` will always wait for active connections to finish before
        exiting, even if there's an exception raised inside it
        (*all* exceptions are handled the same way, including :class:`greenlet.GreenletExit`
        and those inheriting from `BaseException`).

        While this may not be an issue normally, when it comes to long running HTTP connections
        (like :mod:`eventlet.websocket`) it will become problematic and calling
        :meth:`~eventlet.greenthread.GreenThread.wait` on a thread that runs the server may hang,
        even after using :meth:`~eventlet.greenthread.GreenThread.kill`, as long
        as there are active connections.

    :param sock: Server socket, must be already bound to a port and listening.
    :param site: WSGI application function.
    :param log: logging.Logger instance or file-like object that logs should be written to.
                If a Logger instance is supplied, messages are sent to the INFO log level.
                If not specified, sys.stderr is used.
    :param environ: Additional parameters that go into the environ dictionary of every request.
    :param max_size: Maximum number of client connections opened at any time by this server.
                Default is 1024.
    :param max_http_version: Set to "HTTP/1.0" to make the server pretend it only supports HTTP 1.0.
                This can help with applications or clients that don't behave properly using HTTP 1.1.
    :param protocol: Protocol class.  Deprecated.
    :param server_event: Used to collect the Server object.  Deprecated.
    :param minimum_chunk_size: Minimum size in bytes for http chunks.  This can be used to improve
                performance of applications which yield many small strings, though
                using it technically violates the WSGI spec. This can be overridden
                on a per request basis by setting environ['eventlet.minimum_write_chunk_size'].
    :param log_x_forwarded_for: If True (the default), logs the contents of the x-forwarded-for
                header in addition to the actual client ip address in the 'client_ip' field of the
                log line.
    :param custom_pool: A custom GreenPool instance which is used to spawn client green threads.
                If this is supplied, max_size is ignored.
    :param keepalive: If set to False, disables keepalives on the server; all connections will be
                closed after serving one request.
    :param log_output: A Boolean indicating if the server will log data or not.
    :param log_format: A python format string that is used as the template to generate log lines.
                The following values can be formatted into it: client_ip, date_time, request_line,
                status_code, body_length, wall_seconds.  The default is a good example of how to
                use it.
    :param url_length_limit: A maximum allowed length of the request url. If exceeded, 414 error
                is returned.
    :param debug: True if the server should send exception tracebacks to the clients on 500 errors.
                If False, the server will respond with empty bodies.
    :param socket_timeout: Timeout for client connections' socket operations. Default None means
                wait forever.
    :param capitalize_response_headers: Normalize response headers' names to Foo-Bar.
                Default is True.
    R®R£R$RÖRòR¼RßRàR§RyR(Ros(%s) wsgi starting up on %sis(%s) accepted %ris€wsgi's pool should be an instance of eventlet.greenpool.GreenPool, is %s. Please convert your call site to use GreenPool insteadR"iswsgi exitingNs!(%s) wsgi exited, is_accepting=%s(%R!RR>R“t!DEFAULT_MAX_SIMULTANEOUS_REQUESTSRt	GreenPoolRRxR'RGtis_acceptingtacceptt
settimeoutR(Rytspawn_nR7RœR)R*R R+t
execute_asynctACCEPT_EXCEPTIONSRR©tACCEPT_ERRNOtKeyboardInterruptt
SystemExittwaitallR¹RR…R³RÚt	print_exc(RItsiteRR®tmax_sizeR£R$tserver_eventRÖRòtcustom_poolR¼RßRàR§RyR(Rotservtpoolt
client_socketR´((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyRsfH					
	

	

(Fterrnot	functoolsR%R}RRÚttypesR)teventletRRRteventlet.greenRRteventlet.supportRteventlet.support.six.movesRRHtDEFAULT_MAX_HTTP_VERSIONR;R‹RŒR R:RRRJt__all__RR>RRR1tsettEBADFRªtEPIPEt
ECONNRESETR³R^R2tobjectR5tALREADY_HANDLEDR;RÙRvRwR€RR|RˆRRt
HTTPServerR!tInstanceTypeR3RœtsslR…tSSLErrorROt
SSL_ERROR_EOFt
SSL_ERROR_SSLRPtImportErrorRGR(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/wsgi.pyt<module>s’				ÿlW



"