Viewing File: /opt/alt/python35/lib64/python3.5/site-packages/aiohttp/__pycache__/web_protocol.cpython-35.pyc



ZCF@sddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZddl
Z
ddlmZmZddlmZddlmZmZmZdd	lmZmZdd
lmZddlmZmZmZddlmZdd
lm Z ddl!m"Z"dZ#ej$ddej%iidddde
j&d
Z'Gddde(Z)Gdddejj*ej+Z,dS)N)deque)suppress)escape)helpershttp)CeilTimeout)HttpProcessingErrorHttpRequestParserStreamWriter)
access_logger
server_logger)
EMPTY_PAYLOAD)tcp_cork
tcp_keepalivetcp_nodelay)
HTTPException)BaseRequest)ResponseRequestHandlerRequestPayloadErrorZUNKNOWN/TFc@seZdZdZdS)rzPayload parsing error.N)__name__
__module____qualname____doc__rr/web_protocol.pyrscseZdZdZdZdZdZddddd	d
dedej	d
e
dej	jddddddddddfddZddZ
eddZdddZfd d!Zfd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zdd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zd<d=Zd>ddd?d@Z dddAdBZ!S)CraHTTP protocol implementation.

    RequestHandler handles incoming HTTP request. It reads request line,
    request headers and request payload and calls handle_request() method.
    By default it always returns with 404 response.

    RequestHandler handles errors in incoming request, like bad
    status line, bad headers or incomplete payload. If any error occurs,
    connection gets closed.

    :param keepalive_timeout: number of seconds before closing
                              keep-alive connection
    :type keepalive_timeout: int or None

    :param bool tcp_keepalive: TCP keep-alive is on, default is on

    :param bool debug: enable debug mode

    :param logger: custom logger object
    :type logger: aiohttp.log.server_logger

    :param access_log_class: custom class for access_logger
    :type access_log_class: aiohttp.abc.AbstractAccessLogger

    :param access_log: custom logging object
    :type access_log: aiohttp.log.server_logger

    :param str access_log_format: access log format string

    :param loop: Optional event loop

    :param int max_line_size: Optional maximum header line size

    :param int max_field_size: Optional maximum header field size

    :param int max_headers: Optional maximum header size

    rFrloopNkeepalive_timeoutKrTloggeraccess_log_class
access_logaccess_log_formatdebug
max_line_sizeimax_headersimax_field_sizelingering_timeg$@csmtjd||dk	r%|n	tj|_||_|j|_|j|_	||_
d|_d|_||_
t|
|_t|_d|_d|_d|_|jj|j|_d|_d|_t||d|
d|d|dt|_d|_d|_||_|	|_ ||_!|rN||||_"n	d|_"d|_#d|_$dS)NrFr&r(r'Zpayload_exception)%super__init__asyncioZget_event_loop_loop_managerZrequest_handler_request_handlerZrequest_factory_request_factory_tcp_keepalive_keepalive_time_keepalive_handle_keepalive_timeoutfloat_lingering_timer	_messages
_message_tail_waiter_error_handlercreate_taskstart
_task_handler_upgrade_payload_parserr
r_request_parser	transport_reading_pausedr!r%r#r_close_force_close)selfmanagerrrrr!r"r#r$r%r&r'r(r))	__class__rrr,MsD
!																		zRequestHandler.__init__cCs+dj|jj|jdk	r$dndS)Nz<{} {}>Z	connectedZdisconnected)formatrHrrB)rFrrr__repr__s	zRequestHandler.__repr__cCs|jS)N)r5)rFrrrrsz RequestHandler.keepalive_timeoutg.@csd|_|jdk	r%|jj|jr;|jjttjtjlt|d|j	O|j
r|j
jr|j
IdH|jr|jjr|jIdHWdQRXWdQRX|jr|jj|j
dk	r|j
jd|_
dS)zWorker process is about to exit, we need cleanup everything and
        stop accepting requests. It is especially important for keep-alive
        connections.TNr)rEr4cancelr:rr-CancelledErrorTimeoutErrorrr.r;doner>rBclose)rFtimeoutrrrshutdowns 	
	
	

zRequestHandler.shutdowncs]tj|||_|jr,t|t|dt|d|jj||dS)NFT)r+connection_maderBr2rrrr/)rFrB)rHrrrRs		


zRequestHandler.connection_madecs|jj||tj|d|_d|_d|_d|_d|_d|_|jdk	ru|jj	|j
r|j
j	|jdk	r|jj	d|_
|jdk	r|jj
d|_dS)NT)r/connection_lostr+rEr1r0rArBr4rKr>r;r@Zfeed_eof)rFexc)rHrrrSs$						
	

	
zRequestHandler.connection_lostcCsG|jdkst||_|jrC|jj|jd|_dS)Nr*)r@AssertionErrorr9	feed_data)rFparserrrr
set_parsers
		zRequestHandler.set_parsercCsdS)Nr)rFrrreof_receivedszRequestHandler.eof_receivedc
Cs|js|jrdS|jdkr|jry|jj|\}}}Wntk
r}zK|jj|j	t
||j|jd||j|_
|jWYdd}~Xqtk
r}zE|jj|j	t
||j|jd||_
|jWYdd}~XqX|rx9|D]1\}}|jd7_|jj||fq-W|j}|dk	r|js|jd||_|r|r||_n^|jdkr|jr|r|j|7_n.|r|jj|\}	}|	r|jdS)Niir)rErDr@r?rArVr	r.r<handle_parse_errorrrBmessager;rO	Exception_request_countr8appendr:rN
set_resultZ	_upgradedr9)
rFdataZmessagesZupgradedtailrTmsgpayloadwaitereofrrr
data_receivedsD			
	zRequestHandler.data_receivedcCs,||_|jr(|jjd|_dS)zMSet keep-alive connection mode.

        :param bool val: new state.
        N)
_keepaliver4rK)rFvalrrr
keep_alives		
zRequestHandler.keep_alivecCs#d|_|jr|jjdS)ziStop accepting new pipelinig messages and close
        connection when handlers done processing messagesTN)rDr:rK)rFrrrrOs		zRequestHandler.closecCs^d|_|jr|jj|jdk	rZ|rD|jjd|jjd|_dS)zForce close connectionTNs
)rEr:rKrBwriterO)rFsend_last_heartbeatrrrforce_close"s		

zRequestHandler.force_closecCs)|jdk	r%|jj|||dS)N)rlog)rFrequestresponsetimerrr
log_access-szRequestHandler.log_accesscOs |jr|jj||dS)N)r%r!)rFargskwrrr	log_debug1s	zRequestHandler.log_debugcOs|jj||dS)N)r!	exception)rFrrrsrrr
log_exception5szRequestHandler.log_exceptioncCs{|js|jrdS|j|j}|jrY|jj|krY|jdddS|jj|j	|j
|_dS)NrkT)rErgr3r5r:r.rprlZ
call_laterKEEPALIVE_RESCHEDULE_DELAY_process_keepaliver4)rFnextrrrrx8s		z!RequestHandler._process_keepalivec
CsE|jsAy|jjWntttfk
r7YnXd|_dS)NT)rCrB
pause_readingAttributeErrorNotImplementedErrorRuntimeError)rFrrrrzIs	zRequestHandler.pause_readingc
CsE|jrAy|jjWntttfk
r7YnXd|_dS)NF)rCrBresume_readingr{r|r})rFrrrr~Qs	zRequestHandler.resume_readingc8s|j}|j}|j}|j}xW|js}|jsz<y|j|_|jIdHWntj	k
rsPYnXWdd|_X|jj
\}}|jr|j}|j
d7_
t||j|}|j|||||}	zyHy|j|	IdH}
Wntk
r6}z|}
WYdd}~Xntj	k
rX|jdPYntjk
r|jd|j|	d}
YnYtk
r}z|j|	d|}
WYdd}~Xn Xt|
trtjdt|
j|	IdH|
jIdH|
j|_|jr7|j|	|
|j||j s5|j!}|jr|r|jd||j}||}
t"tjtj	mxe|j r||
krt#|
||}t$|d	||j%IdHWdQRX|j}qWWdQRX|j r5|jr5|jd
|j&Wntj	k
r[|jdPYnt'k
r}z+|j(r|j)dd
||j*WYdd}~XnBtk
r}z"|j)dd
||j*WYdd}~XnXWd|jdkr
|jdno|jsy|jrx|j+rx|dk	ry|jj}||_,|j-dkry|j.|||j/|_-nPXq'W|jsd|_|jdk	r|j0dkr|jj&dS)a_Process incoming request.

        It reads request line, request headers and request payload, then
        calls handle_request() method. Subclass has to override
        handle_request(). start() handles various exceptions in request
        or response handling. Connection is being closed always unless
        keep_alive(True) specified.
        Nrz&Ignored premature client disconnectionzRequest handler timed out.iizlreturning HTTPException object is deprecated (#2415) and will be removed, please raise the exception insteadz'Start lingering close timer for %s sec.rzUncompleted request.z'Ignored premature client disconnection zUnhandled runtime exceptionexc_infozUnhandled exceptionz'Ignored premature client disconnection.)1r.r>r/r5rEr8Z
create_futurer:r-rLpopleftr#rpZrequests_countrrBr1r0rrtrMhandle_errorr\
isinstancewarningswarnDeprecationWarningprepare	write_eofrirgrqZis_eofr7rminrZreadanyrOr}r%rvrlrDr3r4Zcall_atrxr;)rFrhandlerrGrr[rcZnowwriterrnresprTr)Zend_trPrrrr=Ys						

	

(		


	
!				zRequestHandler.starticCs|jdd||dkrd}|jr{tt;tj}t|}|d7}||7}|d7}WdQRXq|d7}d	|d
}n|}td|d|d
d}|j|j	j
dks|jdkr|j|S)zHandle errors.

        Returns HTTP response with specific status code. Logs additional
        information. It always closes current connection.zError handling requestriz"<h1>500 Internal Server Error</h1>z<br><h2>Traceback:</h2>
<pre>z</pre>NzServer got itself in troublezA<html><head><title>500 Internal Server Error</title></head><body>z</body></html>statustextZcontent_typez	text/htmlr)rvr%rr\	traceback
format_exchtml_escaperrlrZoutput_sizerB)rFrnrrTr[rbtbrrrrrs$	




!
zRequestHandler.handle_errorcsttt||d|j}|j||||}|j|IdH|jIdH|jdk	rs|jjd|_	dS)N)
rERRORrr.rrrrBrOr;)rFrrrTr[rnrrrrrZs
z!RequestHandler.handle_parse_error)"rrrrr]rgrwr
rZAccessLoggerrZ
LOG_FORMATr,rJpropertyrrQrRrSrXrYrfrirOrlrqrtrvrxrzr~r=rrZrr)rHrr"sH&		/	1
| )rr)-r-Zasyncio.streamsZhttp.serverrrrcollectionsr
contextlibrZhtmlrrZyarlrrr	r
rrmrr
ZstreamsrZtcp_helpersrrrZweb_exceptionsrZweb_requestrZweb_responser__all__ZRawRequestMessageZ
HttpVersion10ZURLrr\rZFlowControlMixinZProtocolrrrrr<module>s.!
Back to Directory File Manager