fkt dZddlZddlZddlZddlZddlZddlmZddlm ZgdZ e edre gde edre gd e ed rej ZnejZGd d ZGd deZGddeZe edr GddZGddeZGddZGddZe edrGddeeZGddeeZGddeeZGdd eeZe edr:Gd!d"eZGd#d$eZGd%d&eeZGd'd(eeZGd)d*Z Gd+d,e Z!Gd-d.eZ"Gd/d0e Z#dS)1z0.4N)BufferedIOBase) monotonic) BaseServer TCPServer UDPServerThreadingUDPServerThreadingTCPServerBaseRequestHandlerStreamRequestHandlerDatagramRequestHandlerThreadingMixInfork)ForkingUDPServerForkingTCPServer ForkingMixInAF_UNIX)UnixStreamServerUnixDatagramServerThreadingUnixStreamServerThreadingUnixDatagramServer PollSelectorc|eZdZ dZdZdZddZdZdZdZ d Z d Z d Z d Z d ZdZdZdZdZdZdZdS)rNcb ||_||_tj|_d|_dSNF)server_addressRequestHandlerClass threadingEvent_BaseServer__is_shut_down_BaseServer__shutdown_request)selfrrs 3/opt/alt/python311/lib64/python3.11/socketserver.py__init__zBaseServer.__init__s3=,#6 'o//"'c dSNr!s r"server_activatezBaseServer.server_activate r$?c |j t5}||tj|jsN||}|jrn1|r|| |jNdddn #1swxYwYd|_|j dS#d|_|j wxYwr) rclear_ServerSelectorregister selectors EVENT_READr select_handle_request_noblockservice_actionsset)r! poll_intervalselectorreadys r" serve_foreverzBaseServer.serve_foreversJ !!### & !"" +h!!$ (<===1+$OOM::E.744666((***1+ + + + + + + + + + + + + + + +',D #   # # % % % % %',D #   # # % % % %s/CA6B, C,B00C3B04C"C;cH d|_|jdSNT)r rwaitr(s r"shutdownzBaseServer.shutdowns, #'   """""r$c dSr&r'r(s r"r4zBaseServer.service_actionsr*r$c |j}||j}n|jt||j}|t |z}t 5}||tj | |}|r | cdddS|7|t z }|dkr | cdddSq#1swxYwYdS)NTr) socket gettimeouttimeoutmintimer.r/r0r1r2r3handle_timeout)r!rBdeadliner7r8s r"handle_requestzBaseServer.handle_requestsg +((** ?lGG \ %'4<00G  vv'H   9(   dI$8 9 9 9 9 0097799 9 9 9 9 9 9 9 9*"*TVV"3"Q;;#'#6#6#8#8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s"A C5;,C54C55C9<C9c |\}}n#t$rYdSwxYw|||rk |||dS#t$r/|||||YdS||xYw||dSr&) get_requestOSErrorverify_requestprocess_request Exception handle_errorshutdown_requestr!requestclient_addresss r"r3z"BaseServer._handle_request_noblock0s  &*&6&6&8&8 #G^^    FF    w 7 7 + $$Wn===== / / /!!'>:::%%g...... %%g...  ! !' * * * * *s ))A5B*B*c dSr&r'r(s r"rEzBaseServer.handle_timeoutGs  r$c dSr;r'rPs r"rKzBaseServer.verify_requestNs tr$c^ |||||dSr&)finish_requestrOrPs r"rLzBaseServer.process_requestVs9 G^444 g&&&&&r$c dSr&r'r(s r" server_closezBaseServer.server_close_r*r$c6 ||||dSr&)rrPs r"rVzBaseServer.finish_requestgs#F   .$?????r$c2 ||dSr& close_requestr!rQs r"rOzBaseServer.shutdown_requestksA 7#####r$c dSr&r'r]s r"r\zBaseServer.close_requestos 7 r$c tdtjtd|tjddl}|tdtjdS)Nz(----------------------------------------)filez4Exception occurred during processing of request fromr)printsysstderr traceback print_exc)r!rQrRrds r"rNzBaseServer.handle_errorssx f3:&&&& D  - - - - f3:&&&&&&r$c|Sr&r'r(s r" __enter__zBaseServer.__enter__s r$c.|dSr&)rX)r!argss r"__exit__zBaseServer.__exit__s r$)r+)__name__ __module__ __qualname__rBr#r)r9r=r4rGr3rErKrLrXrVrOr\rNrgrjr'r$r"rrs(*XG(((   &&&&:###   &999<+++.   '''   @@@$$$    ' ' 'r$rcjeZdZ ejZejZdZdZ dZ d dZ dZ dZ dZdZd Zd Zd Zd S)rFTc t|||tj|j|j|_|rE ||dS#|xYwdSr&)rr#r@address_family socket_type server_bindr)rX)r!rrbind_and_activates r"r#zTCPServer.__init__s=D.2EFFFmD$7$($466     """$$&&&&& !!###   s (A//Bc |jrEttdr0|jtjtjd|jrEttdr0|jtjtjd|j|j |j |_ dS)N SO_REUSEADDR SO_REUSEPORT) allow_reuse_addresshasattrr@ setsockopt SOL_SOCKETrvallow_reuse_portrxbindr getsocknamer(s r"rszTCPServer.server_binds  # N(G(G N K " "6#4f6I1 M M M   NWV^%D%D N K " "6#4f6I1 M M M ,---"k5577r$cF |j|jdSr&)r@listenrequest_queue_sizer(s r"r)zTCPServer.server_activates( 4233333r$c: |jdSr&)r@closer(s r"rXzTCPServer.server_closes# r$c6 |jSr&)r@filenor(s r"rzTCPServer.fileno {!!###r$c6 |jSr&)r@acceptr(s r"rIzTCPServer.get_requestrr$c |tjn#t$rYnwxYw||dSr&)r=r@SHUT_WRrJr\r]s r"rOzTCPServer.shutdown_requests_A    V^ , , , ,    D  7#####s # 00c0 |dSr&)rr]s r"r\zTCPServer.close_requests7 r$N)T)rkrlrmr@AF_INETrq SOCK_STREAMrrrryr}r#rsr)rXrrIrOr\r'r$r"rrs,\^N$K     8 8 8444$$$$$$$$$r$rcBeZdZ dZdZejZdZdZ dZ dZ dZ dS)rFi c\|j|j\}}||jf|fSr&)r@recvfrommax_packet_size)r!data client_addrs r"rIzUDPServer.get_requests1 K001EFFkdk"K//r$cdSr&r'r(s r"r)zUDPServer.server_activate r$c0||dSr&r[r]s r"rOzUDPServer.shutdown_requests 7#####r$cdSr&r'r]s r"r\zUDPServer.close_request"rr$N) rkrlrmryr}r@ SOCK_DGRAMrrrrIr)rOr\r'r$r"rr sl#KO000   $$$     r$rcNeZdZ dZdZdZdZdddZdZd Z d Z fd Z xZ S) ri,N(TFblockingc |jdSt|j|jkr tjdd\}}|j|n4#t $r|jYnt$rYn!wxYwt|j|jk|j D]z} |rdn tj }tj||\}}|j|F#t $r|j|Ylt$rYwwxYwdS)Nr) active_childrenlen max_childrenoswaitpiddiscardChildProcessErrorr-rJcopyWNOHANG)r!rpid_flagss r"collect_childrenzForkingMixIn.collect_children0s I#+d*++t/@@@ZA..FC(005555(111(..00000Ed*++t/@@@+0022   !)9AArzEZU33FC(005555(666(0055555D  s02A#B  B  B  AD  $D>2 D>=D>c0 |dSr&rr(s r"rEzForkingMixIn.handle_timeoutS!   ! ! # # # # #r$c0 |dSr&rr(s r"r4zForkingMixIn.service_actionsZrr$cb tj}|rK|jt|_|j|||dSd} |||d}n&#t$r|||YnwxYw | |tj |dS#tj |wxYw# | |tj |w#tj |wxYwxYw)Nrwr) rrrr5addr\rVrMrNrO_exit)r!rQrRrstatuss r"rLzForkingMixIn.process_requestasH ?'))C )'/+.55D($((---""7+++ )''@@@FF ???%%g~>>>>>?)--g666((((((((()--g666((((((((sN%A>=C)> B!C) B!!C)%CC&)D.+DD.D++D.c~t||jdS)Nr)superrXrblock_on_closer! __class__s r"rXzForkingMixIn.server_closezs9 GG " " "  ! !4+> ! ? ? ? ? ?r$) rkrlrmrBrrrrrEr4rLrX __classcell__rs@r"rr'sC /4! ! ! ! ! F $ $ $ $ $ $ ) ) )2 @ @ @ @ @ @ @ @ @r$rc2eZdZ fdZdZdZdZxZS)_Threadsc||jrdSt|dSr&)reapdaemonrappend)r!threadrs r"rz_Threads.appends; =  F vr$c*g|ddc|dd<}|Sr&r')r!results r"pop_allz_Threads.pop_alls"d111gQQQ r$c\|D]}|dSr&)rjoinr!rs r"rz _Threads.joins2llnn  F KKMMMM  r$c(d|D|dd<dS)Nc3BK|]}||VdSr&)is_alive).0rs r" z _Threads.reap..s1BBf0A0AB6BBBBBBr$r'r(s r"rz _Threads.reaps!BBBBBQQQr$)rkrlrmrrrrrrs@r"rrsq CCCCCCCr$rceZdZ dZdZdS) _NoThreadscdSr&r'rs r"rz_NoThreads.append r$cdSr&r'r(s r"rz_NoThreads.joinrr$N)rkrlrmrrr'r$r"rrs7        r$rcHeZdZ dZdZeZdZdZfdZ xZ S)r FTc |||n&#t$r|||YnwxYw||dS#||wxYwr&)rVrMrNrOrPs r"process_request_threadz%ThreadingMixIn.process_request_threads  +    8 8 8 8 7 7 7   g~ 6 6 6 6 6 7  ! !' * * * * *D ! !' * * * *s!A =A=AA.c" |jr/t|dtt j|j||f}|j|_|j || dS)N_threads)targetri) rvars setdefaultrrThreadrdaemon_threadsrrrstart)r!rQrRts r"rLzThreadingMixIn.process_requests8   : JJ ! !*hjj 9 9 9  d&A%,n$= ? ? ?& Q  r$czt|jdSr&)rrXrrrs r"rXzThreadingMixIn.server_closes3  r$) rkrlrmrrrrrrLrXrrs@r"r r sr>NNz||H + + +r$r ceZdZdS)rNrkrlrmr'r$r"rrr$rceZdZdS)rNrr'r$r"rrrr$rceZdZdS)rNrr'r$r"rrrr$rceZdZdS)r Nrr'r$r"r r rr$r ceZdZejZdS)rNrkrlrmr@rrqr'r$r"rrr$rceZdZejZdS)rNrr'r$r"rrrr$rceZdZdS)rNrr'r$r"rrrr$rceZdZdS)rNrr'r$r"rrrr$rc(eZdZ dZdZdZdZdS)r c||_||_||_| ||dS#|wxYwr&)rQrRserversetuphandlefinish)r!rQrRrs r"r#zBaseRequestHandler.__init__sZ ,    KKMMM KKMMMMMDKKMMMMs AA+cdSr&r'r(s r"rzBaseRequestHandler.setuprr$cdSr&r'r(s r"rzBaseRequestHandler.handlerr$cdSr&r'r(s r"rzBaseRequestHandler.finishrr$N)rkrlrmr#rrrr'r$r"r r sU            r$r c,eZdZ dZdZdZdZdZdZdS)r rrNFc|j|_|j|j|j|jr0|jt jt jd|j d|j |_ |j dkrt|j|_dS|j d|j |_dS)NTrbrwb)rQ connectionrB settimeoutdisable_nagle_algorithmr{r@ IPPROTO_TCP TCP_NODELAYmakefilerbufsizerfilewbufsize _SocketWriterwfiler(s r"rzStreamRequestHandler.setups, < # O & &t| 4 4 4  ' A O & &v'9'-'94 A A A_--dDMBB =A  &t77DJJJ11$ FFDJJJr$c|jjs0 |jn#tj$rYnwxYw|j|jdSr&)rclosedflushr@errorrrr(s r"rzStreamRequestHandler.finish+sz      """"<      s (::) rkrlrmrrrBrrrr'r$r"r r sS>HHG$ G G G     r$r c(eZdZ dZdZdZdZdS)rc||_dSr&)_sock)r!socks r"r#z_SocketWriter.__init__;s  r$cdSr;r'r(s r"writablez_SocketWriter.writable>str$c|j|t|5}|jcdddS#1swxYwYdSr&)r sendall memoryviewnbytes)r!bviews r"writez_SocketWriter.writeAs 1 ]] d;                  s>AAc4|jSr&)r rr(s r"rz_SocketWriter.filenoFsz  """r$N)rkrlrmr#r rrr'r$r"rr6sVJ #####r$rceZdZ dZdZdS)r cddlm}|j\|_|_||j|_||_dS)Nr)BytesIO)iorrQpacketr@rr)r!rs r"rzDatagramRequestHandler.setupMsH#'<  T[WT[)) WYY r$ct|j|j|jdSr&)r@sendtorgetvaluerRr(s r"rzDatagramRequestHandler.finishSs1 4:..00$2EFFFFFr$N)rkrlrmrrr'r$r"r r Is:@ GGGGGr$r )$ __version__r@r0rrbrrrrDr__all__rzextendrr.SelectSelectorrrrrlistrrr rrrr rrrrr r rr r'r$r"r#sZvt   """""" 7 7 7 72vL NNJJJKKK 7694 NN333444  79n%%/,OO.Okkkkkkkk\@@@@@ @@@F        8 72vV@U@U@U@U@U@U@U@U@pCCCCCtCCC,        %%%%%%%%P 72v:99999<99999999<9999999999999999999 769 P(((((9((((((((Y(((LKKKKN4DKKKOOOOOn6HOOO# # # # # # # # \+++++-+++Z#####N###& G G G G G/ G G G G Gr$