HEX
Server: LiteSpeed
System: Linux s787.bom1.mysecurecloudhost.com 4.18.0-477.13.1.lve.el8.x86_64 #1 SMP Thu Jun 1 16:40:47 EDT 2023 x86_64
User: mobilech (5348)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/aiohttp/__pycache__/http_writer.cpython-310.pyc
o

;j:1�@s�dZddlZddlZddlZddlmZmZmZmZm	Z	m
Z
mZmZddl
mZddlmZddlmZddlmZdd	lmZdd
lmZdZejdkrTdd
lmZnddlmZeeeddfZdZ dejkondknZ!ejdkZ"e!pye"Z#Gdd�de�Z$e$dd�Z%e$dd�Z&eeegedfZ'eedgedfZ(Gdd�de�Z)e�*d�Z+de,de,fdd�Z-de,d ddefd!d"�Z.e.Z/zddl0m1Z1e1j/Z2es�e2Z/WdSWdSe3y�YdSw)#z"Http related parsers and protocol.�N)�
TYPE_CHECKING�Any�	Awaitable�Callable�Iterable�List�
NamedTuple�Optional)�CIMultiDict�)�AbstractStreamWriter)�BaseProtocol)�ClientConnectionResetError)�ZLibCompressor)�
NO_EXTENSIONS)�StreamWriter�HttpVersion�
HttpVersion10�
HttpVersion11)��)�Buffer)�Unionzmemoryview[int]zmemoryview[bytes]i)r�
r)rr�)rr�	c@seZdZUeed<eed<dS)r�major�minorN)�__name__�
__module__�__qualname__�int�__annotations__�r#r#�G/opt/saltstack/salt/lib/python3.10/site-packages/aiohttp/http_writer.pyr.s
r�CIMultiDict[str]c@sxeZdZUdZedBed<dZeed<dZeed<dZ	e
dBed<		d9dedej
d	ed
eddf
dd
�ZedejdBfdd��Zedefdd��Zd:dd�Z	d;dededBddfdd�Zdeddfdd�Zdeeddfdd�Zdeddfdd �Zded!eddfd"d#�Zd$d%d&�ded'ed(eddfd)d*�Zd+ed,d-ddfd.d/�Zd:d0d1�Z d:d2d3�Z!d<de"ddfd5d6�Z#d:d7d8�Z$dS)=rN�lengthF�chunked�_eof�	_compress�protocol�loop�
on_chunk_sent�on_headers_sent�returncCs(||_||_||_||_d|_d|_dS)NF)�	_protocolr+�_on_chunk_sent�_on_headers_sent�_headers_buf�_headers_written)�selfr*r+r,r-r#r#r$�__init__Bs
zStreamWriter.__init__cCs|jjS�N)r/�	transport�r4r#r#r$r7PszStreamWriter.transportcCs|jSr6)r/r8r#r#r$r*TszStreamWriter.protocolcCs
d|_dS)NT)r'r8r#r#r$�enable_chunkingXs
zStreamWriter.enable_chunking�deflate�encoding�strategycCst||d�|_dS)N)r;r<)rr))r4r;r<r#r#r$�enable_compression[szStreamWriter.enable_compression�chunkcCsRt|�}|j|7_|j|7_|jj}|dus|��r"td��|�|�dS)N�!Cannot write to closing transport)�len�buffer_size�output_sizer/r7�
is_closingr�write)r4r>�sizer7r#r#r$�_write`szStreamWriter._write�chunkscCs�d}|D]}|t|�7}q|j|7_|j|7_|jj}|dus'|��r+td��ts1|tkr;|�	d�
|��dS|�|�dS)Nrr?�)r@rArBr/r7rCr�SKIP_WRITELINES�MIN_PAYLOAD_FOR_WRITELINESrD�join�
writelines)r4rGrEr>r7r#r#r$�_writelinesiszStreamWriter._writelinescCs*t|�d�d��d�}|�||df�dS)z+Write a chunk with proper chunked encoding.�x�
�ascii�
N)r@�encoderM)r4r>�
chunk_len_prer#r#r$�_write_chunked_payloadwsz#StreamWriter._write_chunked_payload�is_eofcCs�d|_|j}d|_tr|dusJ�|js&|r|�||f�dS|�|�dS|rKt|�d�d��d�}|r@|�|||df�dS|�|||df�dS|rV|�|df�dS|�|�dS)	zASend buffered headers with payload, coalescing into single write.TNrNrOrP�
0

rQ�0

)r3r2rr'rMrFr@rR)r4r>rU�headers_bufrSr#r#r$�_send_headers_with_payload|s&
�z'StreamWriter._send_headers_with_payloadTi)�drain�LIMITrZr[c�s8�|jdur|�|�IdHt|t�r|jt|�kr|�d�}|jdur1|j�|�IdH}|s1dS|jdurTt|�}|j|krF|j||_n|d|j�}d|_|sTdS|j	rs|j
ss|�|d�|rq|j|krqd|_|�
�IdHdS|r�|jr~|�|�n|�|�|r�|j|kr�d|_|�
�IdHdSdSdSdS)z�
        Writes chunk of data to a stream.

        write_eof() indicates end of stream.
        writer can't be used after write_eof() method being called.
        write() return drain future.
        N�crF)r0�
isinstance�
memoryview�nbytesr@�castr)�compressr&r2r3rYrArZr'rTrF)r4r>rZr[Z	chunk_lenr#r#r$rD�sB�







�zStreamWriter.write�status_line�headersr%c�s6�|jdur|�|�IdHt||�}d|_||_dS)zWrite headers to the stream.NF)r1�_serialize_headersr3r2)r4rbrc�bufr#r#r$�
write_headers�s�


zStreamWriter.write_headerscCs@|jr|jrdSd|_|j}d|_tr|dusJ�|�|�dS)z3Force sending buffered headers if not already sent.NT)r2r3rrF�r4rXr#r#r$�send_headers�szStreamWriter.send_headerscCsz|jrdS|jr-|js-d|_|j}d|_tr|dusJ�|jr'|�|df�n|�|�n|jr8|jr8|�d�d|_dS)z&Indicate that the message is complete.NTrW)r(r2r3rr'rMrFrgr#r#r$�set_eof�s

zStreamWriter.set_eofrHc�s�|jrdS|r|jdur|�|�IdH|jr�g}d}|r2|j�|�IdH}r2t|�}|�|�|j��}|t|�7}|�|�|sFJ�|jr�|js�d|_|j}d|_|j	rn|d�d��
d�}|�||g|�d�R�n	|�|g|�R�|��IdHd|_dS|j	r�|d�d��
d�}|�|g|�d�R�nt|�dkr�|�|�n|�
|d�|��IdHd|_dS|jr�|js�|�|d�|��IdHd|_dS|j	r�|r�|�t|�d�d��
d�|df�n|�
d�|��IdHd|_dS|�r	|�
|�|��IdHd|_dS)	NrTrNrOrPrVrrW)r(r0r)rar@�append�flushr2r3r'rRrMrZrFrY)r4r>rGZ
chunks_lenZcompressed_chunkZflush_chunkrXrSr#r#r$�	write_eofsn�


��


zStreamWriter.write_eofc�s2�|j}|jdur|jr|��IdHdSdSdS)zFlush the write buffer.

        The intended use is to write

          await w.write(data)
          await w.drain()
        N)r/r7Z_pausedZ
_drain_helper)r4r*r#r#r$rZRs
��zStreamWriter.drain)NN)r.N)r:N)rH)%rrr r&r!r"r'�boolr(r)rr
�asyncioZAbstractEventLoop�_T_OnChunkSent�_T_OnHeadersSentr5�propertyZ	Transportr7r*r9�strr=rrFrrMrTrYrDrfrhri�bytesrlrZr#r#r#r$r;sp
�����
�
���
�	!����
�3��
�

Nrz[\x00-\x08\x0a-\x1f\x7f]�stringr.cCst�|�durtd��|S)NzSForbidden control character detected in headers. Potential header injection attack.)�_FORBIDDEN_HEADER_CHARS_RE�search�
ValueError)rtr#r#r$�_safe_headerds
�rxrbrccCs:t|�dd�|��D�}|dd�|�d}|�d�S)Ncss(�|]\}}t|�dt|�VqdS)z: N)rx)�.0�k�vr#r#r$�	<genexpr>os�&z(_py_serialize_headers.<locals>.<genexpr>rOz

zutf-8)rx�itemsrKrR)rbrcZheaders_gen�liner#r#r$�_py_serialize_headersms
r)4�__doc__rn�re�sys�typingrrrrrrrr	Z	multidictr
�abcrZ
base_protocolr
Zclient_exceptionsrZcompression_utilsrZhelpersr�__all__�version_info�collections.abcrrrs�	bytearrayrJZIS_PY313_BEFORE_313_2ZIS_PY_BEFORE_312_9rIrrrrorpr�compilerurrrxrrdZaiohttp._http_writerZ_http_writerZ_c_serialize_headers�ImportErrorr#r#r#r$�<module>sR(




(	
��