grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a àMÒerã@sÌddlZddlZddlZddlZddlZddlmZmZddlZ ddl Z ddl Z dZ dZedZGdd„deƒZGdd „d ƒZGd d „d ƒZGd d „d ƒZGdd„deƒZGdd„dƒZGdd„deƒZdS)éN)ÚAnyÚOptionaliééc@s eZdZdS)Ú UnexpectedEOFN)Ú__name__Ú __module__Ú __qualname__©r r ú4/usr/lib/python3.9/site-packages/dns/quic/_common.pyrsrc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚBuffercCsd|_d|_dS)NóF)Ú_bufferÚ _seen_end©Úselfr r r Ú__init__szBuffer.__init__cCs&|jr dS|j|7_|r"d|_dS)NT)rr©rÚdataZis_endr r r Úputs z Buffer.putcCs t|jƒ|krdS|jrt‚dS)NTF)Úlenrrr)rÚamountr r r Úhave&s z Buffer.havecCs|jS©N)rrr r r Úseen_end-szBuffer.seen_endcCs0| |¡sJ‚|jd|…}|j|d…|_|Sr)rr)rrrr r r Úget0sz Buffer.getN)rrr rrrrrr r r r r s r c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚBaseQuicStreamcCs||_||_tƒ|_d|_dS©Nr)Ú _connectionÚ _stream_idr rÚ _expecting)rÚ connectionÚ stream_idr r r r8szBaseQuicStream.__init__cCs|jSr)rrr r r Úid>szBaseQuicStream.idcCs|durt ¡|}nd}|Sr)Útime)rÚtimeoutÚ expirationr r r Ú_expiration_from_timeoutAsz'BaseQuicStream._expiration_from_timeoutcCs$|durt|t ¡dƒ}nd}|S)Ng)Úmaxr$)rr&r%r r r Ú_timeout_from_expirationHsz'BaseQuicStream._timeout_from_expirationcCst|ƒ}t d|¡|S)Nz!H)rÚstructÚpack)rZdatagramÚlr r r Ú _encapsulateRszBaseQuicStream._encapsulatecCsB|j ||¡z|jdko&|j |j¡WSty<YdS0dS)NrT)rrr rrrr r r Ú_common_add_inputVs  z BaseQuicStream._common_add_inputcCs |j |j¡|j dd¡dS)Nr T)rÚ close_streamrrrrr r r Ú_close]szBaseQuicStream._closeN) rrr rr#r'r)r-r.r0r r r r r7s rc@s0eZdZd dd„Zdd„Zd dd „Zd d „ZdS)ÚBaseQuicConnectionNrcCsœd|_||_||_||_d|_||_i|_tj  |¡|_ tj  ||f¡|_ |dur‚|dkr‚|j t jkrld}n|j t jkr~d}nt‚|r’||f|_nd|_dS)NFrz0.0.0.0z::)Z_donerZ_addressZ_portÚ_closedZ_managerÚ_streamsÚdnsÚinetZaf_for_addressZ_afÚlow_level_address_tupleZ_peerÚsocketZAF_INETZAF_INET6ÚNotImplementedErrorÚ_source)rr!ÚaddressÚportÚsourceÚ source_portZmanagerr r r rcs$   zBaseQuicConnection.__init__cCs |j|=dSr)r3)rr"r r r r/{szBaseQuicConnection.close_streamTcCsLt ¡}|j ¡}|dur"|d}t||dƒ}|jrD|rDt|dƒ}||fS)Nirgš™™™™™©?)r$rZ get_timerr(r2Úmin)rZclosed_is_specialÚnowr&Úintervalr r r Ú_get_timer_values~s   z$BaseQuicConnection._get_timer_valuescCs t ¡}||kr|j |¡dSr)r$rZ handle_timer)rr&r?r r r Ú _handle_timer‹sz BaseQuicConnection._handle_timer)NrN)T)rrr rr/rArBr r r r r1bs ÿ  r1c@s"eZdZdeeedœdd„ZdS)ÚAsyncQuicConnectionN)r%ÚreturncÃsdSrr )rr%r r r Ú make_stream’szAsyncQuicConnection.make_stream)N)rrr rÚfloatrrEr r r r rC‘srCc@s0eZdZd dd„Zddd„Zd d „Zd d „ZdS)ÚBaseQuicManagerNcCsdi|_||_i|_|durZd}t|tƒr0|}d}tjjjddg||d�}|durZ|  |¡||_ dS)NTZdoqzdoq-i03)Zalpn_protocolsÚ verify_modeÚ server_name) Ú _connectionsÚ_connection_factoryÚ_session_ticketsÚ isinstanceÚstrÚaioquicÚquicÚ configurationZQuicConfigurationZload_verify_locationsÚ_conf)rÚconfrHZconnection_factoryrIZ verify_pathr r r r—s  ý zBaseQuicManager.__init__éUrTc CsÔ|j ||f¡}|dur |dfS|j}|rtz$|j ||f¡}t |¡}||_Wnty`Yn0t  |j ||¡} nd} t j j j|| d�} tj ||f¡} |  | t ¡¡| | |||||¡}||j||f<|dfS)NF)rQÚsession_ticket_handlerT)rJrrRrLÚpopÚcopyÚsession_ticketÚKeyErrorÚ functoolsÚpartialÚsave_session_ticketrOrPr!ZQuicConnectionr4r5r6Úconnectr$rK) rr:r;r<r=Zwant_session_ticketr!rSrXrUZqconnZ lladdressr r r Ú_connect©s4   ÿþ ÿzBaseQuicManager._connectcCs(z|j||f=Wnty"Yn0dSr)rJrY)rr:r;r r r ÚclosedÌs zBaseQuicManager.closedcCsLt|jƒ}|tkr:t|j ¡ƒdt…}|D] }|j|=q,||j||f<dSr)rrLÚMAX_SESSION_TICKETSÚlistÚkeysÚSESSIONS_TO_DELETE)rr:r;Zticketr,Zkeys_to_deleteÚkeyr r r r\Òs   z#BaseQuicManager.save_session_ticket)N)rTNrT)rrr rr^r_r\r r r r rG–s  ÿ #rGc@seZdZddd„ZdS)ÚAsyncQuicManagerrTNrcCst‚dSr)r8)rr:r;r<r=r r r r]ßszAsyncQuicManager.connect)rTNr)rrr r]r r r r reÞsre)rWrZr7r*r$ÚtypingrrZaioquic.quic.configurationrOZaioquic.quic.connectionZdns.inetr4ZQUIC_MAX_DATAGRAMr`rcÚ Exceptionrr rr1rCrGrer r r r Ús$+/H