+\hi*ddlZddlZddlZddlZddlZddlZddlZddlmZm Z ddl Z ddl Z ddl Z ddlZ ddlZdZdZedzZGddeZGdd ZGd d ZGd d ZGddeZGddZGddeZy)N)AnyOptionalic eZdZy) UnexpectedEOFN)__name__ __module__ __qualname__S/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/dns/quic/_common.pyrrsr rc0eZdZdZdZdZdZdZdZy)Bufferc d|_d|_y)Nr F)_buffer _seen_endselfs r__init__zBuffer.__init__s r c\|jry|xj|z c_|rd|_yy)NT)rrrdatais_ends rputz Buffer.put#s) >>   !DN r cZt|j|k\ry|jrty)NTF)lenrrr)ramounts rhavez Buffer.have*s& t||  & >> r c|jSN)rrs rseen_endzBuffer.seen_end1 ~~r cr|j|sJ|jd|}|j|d|_|Sr!)rr)rrrs rgetz Buffer.get4s;yy   ||GV$||FG,  r cP|jsJ|j}d|_|S)Nr )r"r)rrs rget_allzBuffer.get_all:s%}}||  r N) r r r rrrr"r%r'r r rrrs " r rcJeZdZdZdZdZdZdZdZd dZ dZ d Z d Z y ) BaseQuicStreamch||_||_t|_d|_d|_d|_yNr) _connection _stream_idrr _expecting_headers _trailers)r connection stream_ids rrzBaseQuicStream.__init__Bs/%#x  r c|jSr!)r-rs ridzBaseQuicStream.idJs r c|jSr!)r/rs rheaderszBaseQuicStream.headersMs }}r c|jSr!)r0rs rtrailerszBaseQuicStream.trailersPr#r c@|tj|z}|Sd}|Sr!)time)rtimeout expirations r_expiration_from_timeoutz'BaseQuicStream._expiration_from_timeoutSs-  w.JJr cT|#t|tjz d}|Sd}|S)Ng)maxr:)rr<r;s r_timeout_from_expirationz'BaseQuicStream._timeout_from_expirationZs2  !*tyy{2C8GGr c |jjs tdtjj |}|j j}|rd}n,d}|dtj|jdzz }d|fd|jjfd|jjfd |fd g}|r5|jd d tt|jfg|jj!|j"|| |r(|jj%|j"|d yy)Nz%cannot send H3 to a non-H3 connectionsPOSTsGETs?dns==s:methods:schemes :authoritys:path)sacceptapplication/dns-message)s content-typerCscontent-lengthT)r,is_h3 SyntaxErrorurllibparseurlparsepathencodebase64urlsafe_b64encoderstripschemenetlocextendstrr send_headersr- send_data)rurldatagrampost url_partsrImethodr6s rsend_h3zBaseQuicStream.send_h3gs7%%'EF FLL))#. ~~$$& FF Hv77AHHNN ND  ))002 3 I,,335 6 t  3    NNA&CM(:(A(A(CD  %%doowDI     & &t$ G r c|jjr|St|}tjd||zS)Nz!H)r,rDrstructpack)rrUls r _encapsulatezBaseQuicStream._encapsulates8    ! ! #O M{{4#h..r c|jj|| |jdkDxr%|jj|jxs|jjS#t $rYywxYw)NrT)rrr.rr"rrs r_common_add_inputz BaseQuicStream._common_add_inputsj v& !#J (9(9$//(J'&& '  sA A,, A87A8c|jj|j|jj ddy)Nr T)r, close_streamr-rrrs r_closezBaseQuicStream._closes. %%doo6 d#r NT) r r r rr4r6r8r=r@rYr^r`rcr r rr)r)As5H8/ $r r)cDeZdZ d dZdZdZd dZd dZd dZdZ y) BaseQuicConnectionNcHd|_||_||_||_d|_||_i|_|jr0tjjj|d|_ nd|_ tjj||_tjj#||f|_|K|dk7rF|j t&j(k(rd}n&|j t&j*k(rd}nt,|r ||f|_yd|_y)NFrz0.0.0.0z::)_doner,_address_port_closed_manager_streamsrDaioquich3r1 H3Connection_h3_conndnsinetaf_for_address_aflow_level_address_tuple_peersocketAF_INETAF_INET6NotImplementedError_source)rr1addressportsource source_portmanagers rrzBaseQuicConnection.__init__s %     ==?#JJ11>>z5QDM DM88**73XX55woF >kQ.xx6>>)"V__,)) "K0DLDLr c|jduSr!)rqrs rrDzBaseQuicConnection.is_h3s}}D((r c|j|=yr!)rm)rr2s rrbzBaseQuicConnection.close_streams MM) $r c>|jj|||yr!)rqrR)rr2r6rs rrRzBaseQuicConnection.send_headerss ""9gv>r c>|jj|||yr!)rqrS)rr2rrs rrSzBaseQuicConnection.send_datas  48r ctj}|jj}||dz}t||z d}|jr|r t |d}||fS)Nirg?)r:r, get_timerr?rkmin)rclosed_is_specialnowr<intervals r_get_timer_valuesz$BaseQuicConnection._get_timer_valuessdiik%%//1  tJzC'+ <<-8T*HH%%r cntj}||kr|jj|yyr!)r:r, handle_timer)rr<rs r _handle_timerz BaseQuicConnection._handle_timers.iik      ) )# . r )NrN)Frd) r r r rrDrbrRrSrrr r rrfrfs1   D)%?9 &/r rfc$eZdZddeedefdZy)AsyncQuicConnectionNr;returnc Kywr!r )rr;s r make_streamzAsyncQuicConnection.make_streams  sr!)r r r rfloatrrr r rrrs % C r rc@eZdZ ddZ d dZdZdZdZdZy) BaseQuicManagerNci|_||_i|_i|_||_|_d}t |t r|}d}|rdg}nddg}tjjj|||}||j|||_ y)NTrodoqzdoq-i03)alpn_protocols verify_mode server_name) _connections_connection_factory_session_tickets_tokens_h3 isinstancerQrnquic configurationQuicConfigurationload_verify_locations_conf)rconfrconnection_factoryrro verify_pathrs rrzBaseQuicManager.__init__s#5 "  <K+s+) " "&"'!3<<--??-''@D &**;7 r cV|jj||f}||dfS|j}|r\ |jj ||f} t j |}| |_tj|j||} nd} |r\ |jj ||f} t j |}| |_ tj|j||} nd} tjj j#|| | } t$j&j)||f}| j+|t-j,|j/| |||||}||j||f<|dfS#t$rY,wxYw#t$rYwxYw)NF)rsession_ticket_handler token_handlerT)rr%rrpopcopysession_ticketKeyError functoolspartialsave_session_ticketrtoken save_tokenrnrr1QuicConnectionrrrsrvconnectr:r)rr}r~rrwant_session_ticket want_tokenr1rrrrrqconn lladdresss r_connectzBaseQuicManager._connects&&**GT?;  !& &zz  !%!6!6!:!:GT?!Kyy&4# &/%6%6(('4& "&* "   (('49yy" &--doowMM M ''66#9'7  HH44gt_E  i--- 7D&+t .87D/*D!!G     s#9F 9F FF F('F(cB |j||f=y#t$rYywxYwr!)rr)rr}r~s rclosedzBaseQuicManager.closed1s+ !!7D/2   s  c|jSr!)rrs rrDzBaseQuicManager.is_h37s xxr ct|j}|tk\r>t|jj dt }|D]}|j|=||j||f<yr+)rrMAX_SESSION_TICKETSlistkeysSESSIONS_TO_DELETE)rr}r~ticketr]keys_to_deletekeys rrz#BaseQuicManager.save_session_ticket:so %% & # #!$"7"7"<"<">?BTUN% /))#. /17wo.r ct|j}|tk\r>t|jj dt }|D]}|j|=||j||f<yr+)rrrrrr)rr}r~rr]rrs rrzBaseQuicManager.save_tokenEsg   # #!$,,"3"3"56q9KLN% &LL% &(- gt_%r )NF)UNrTT) r r r rrrrDrrr r rrrs5JO: 6"p  8 .r rceZdZddZy)AsyncQuicManagerNctr!)r{)rr}r~rrs rrzAsyncQuicManager.connectRs!!r )rNr)r r r rr r rrrQs"r r)rKrrrxr[r:rFtypingrraioquic.h3.connectionrnaioquic.h3.eventsaioquic.quic.configurationaioquic.quic.connectiondns.inetrrQUIC_MAX_DATAGRAMrr Exceptionrrr)rfrrrr r rrs  !)A- I   FS$S$l?/?/D , p.p.f""r