
    2Bh                         S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJr   " S S5      r	 " S S\	5      r
 " S S\
5      r " S	 S
\	5      rS rSS jrSS jrS rS rg)    N)utilc                   @    \ rS rSrS
S jrS rS rSS jrS rS r	S	r
g)
BaseSocket   Nc                 H   X0l         X l        Xl        Uc2  [        R                  " U R                  [        R
                  5      nSnOG[        R                  " X@R                  [        R
                  5      n[        R                  " U5        SnU R                  XVS9U l
        g )NFTbound)logconfcfg_addrsocketFAMILYSOCK_STREAMfromfdoscloseset_optionssock)selfaddressr   r
   fdr   r	   s          ?/var/www/html/env/lib/python3.13/site-packages/gunicorn/sock.py__init__BaseSocket.__init__   st    	:==f.@.@ADE==[[&2D2DEDHHRLE$$T$7	    c                 <    SU R                   R                  5       -  $ )Nz<socket %d>)r   filenor   s    r   __str__BaseSocket.__str__!   s    tyy//111r   c                 .    [        U R                  U5      $ N)getattrr   )r   names     r   __getattr__BaseSocket.__getattr__$   s    tyy$''r   c                    UR                  [        R                  [        R                  S5        U R                  R
                  (       aE  [        [        S5      (       a0   UR                  [        R                  [        R                  S5        U(       d  U R                  U5        UR                  S5        [        US5      (       a  UR                  S5        UR                  U R                  R                   5        U$ ! [         a9  nUR                  [        R                  [        R                  4;  a  e  S nANS nAff = f)N   SO_REUSEPORTr   set_inheritableT)
setsockoptr   
SOL_SOCKETSO_REUSEADDRr   
reuse_porthasattrr)   OSErrorerrnoENOPROTOOPTEINVALbindsetblockingr*   listenbacklog)r   r   r	   errs       r   r   BaseSocket.set_options'   s    ))6+>+>BII  FN33 1 163F3FJ IIdO 4*++  &DII%%&  99U%6%6$EE Fs   !/D 
E/E  Ec                 :    UR                  U R                  5        g r"   )r4   r   )r   r   s     r   r4   BaseSocket.bind;   s    		$-- r   c                     U R                   c  g  U R                   R                  5         S U l         g ! [         a/  nU R                  R	                  S[        U5      5         S nAN<S nAff = f)NzError while closing socket %s)r   r   r0   r
   infostr)r   es     r   r   BaseSocket.close>   sZ    99	CIIOO 	  	CHHMM93q6BB	Cs   2 
A+%A&&A+)r   r   r
   r   r"   F)__name__
__module____qualname____firstlineno__r   r   r%   r   r4   r   __static_attributes__ r   r   r   r      s     82((!	r   r   c                   J   ^  \ rS rSr\R
                  rS rSU 4S jjrSr	U =r
$ )	TCPSocketJ   c                     U R                   R                  (       a  SnOSnU R                  R                  5       nSXS   US   4-  $ )Nhttpshttpz
%s://%s:%dr   r(   )r   is_sslr   getsockname)r   schemeaddrs      r   r   TCPSocket.__str__N   sC    99FFyy$$&vAwQ888r   c                 |   > UR                  [        R                  [        R                  S5        [        TU ]  XS9$ )Nr(   r   )r+   r   IPPROTO_TCPTCP_NODELAYsuperr   )r   r   r	   	__class__s      r   r   TCPSocket.set_optionsW   s2    **F,>,>Bw"4"55r   rG   rA   )rB   rC   rD   rE   r   AF_INETr   r   r   rF   __classcell__rW   s   @r   rI   rI   J   s    ^^F96 6r   rI   c                   2    \ rS rSr\R
                  rS rSrg)
TCP6Socket\   c                 J    U R                   R                  5       u  p  nSX4-  $ )Nzhttp://[%s]:%d)r   rO   )r   hostport_s       r   r   TCP6Socket.__str__`   s(    !YY224Q4,..r   rG   N)	rB   rC   rD   rE   r   AF_INET6r   r   rF   rG   r   r   r]   r]   \   s    __F/r   r]   c                   P   ^  \ rS rSr\R
                  rSU 4S jjrS rS r	Sr
U =r$ )
UnixSockete   c                 \  > Uca   [         R                  " U5      n[        R                  " UR                  5      (       a  [         R                  " U5        O[        SU-  5      e[        TU ]-  XX4S9  g ! [         a,  nUR                  S   [        R                  :w  a  e  S nAN@S nAff = f)Nz%r is not a socketr   r   )r   statS_ISSOCKst_moderemove
ValueErrorr0   argsr1   ENOENTrV   r   )r   rQ   r   r
   r   str?   rW   s          r   r   UnixSocket.__init__i   s    :	BWWT]
 ==,,IIdO$%9D%@AAS0  66!9, -s   A5 5
B+?"B&&B+c                      SU R                   -  $ )Nzunix:%s)r   r   s    r   r   UnixSocket.__str__w   s    4==((r   c                 N   [         R                  " U R                  R                  5      nUR                  U R                  5        [
        R                  " U R                  U R                  R                  U R                  R                  5        [         R                  " U5        g r"   )	r   umaskr   r4   r   r   chownuidgid)r   r   	old_umasks      r   r4   UnixSocket.bindz   sX    HHTYY__-			$-- 

4==$))--?
r   rG   r"   )rB   rC   rD   rE   r   AF_UNIXr   r   r   r4   rF   rZ   r[   s   @r   rf   rf   e   s     ^^F1) r   rf   c                     [        U [        5      (       a/  [        R                  " U S   5      (       a  [        nU$ [
        n U$ [        U [        [        45      (       a  [        nU$ [        SU -  5      e)Nr   z Unable to create socket from: %r)

isinstancetupler   is_ipv6r]   rI   r>   bytesrf   	TypeError)rQ   	sock_types     r   
_sock_typer      sq    $<<Q  "I  "I
 	 
D3,	'	'	  :TABBr   c                 0   / nU R                   nU Vs/ s H  n[        U[        5      (       d  M  UPM     nnU(       a  U[        U5      -  nU Vs/ s H  n[        U[        5      (       a  M  UPM     nnU R                  (       aF  [
        R                  R                  U R                  5      (       d  [        SU R                  -  5      eU R                  (       aF  [
        R                  R                  U R                  5      (       d  [        SU R                  -  5      eU(       ar  U Hj  n[        R                  " U[        R                  [        R                  5      n	U	R                  5       n
[        U
5      nU" XXS9nUR!                  U5        Ml     U$ U Hq  n[        U5      nSn	[#        S5       H  n U" X@U5      n	  O   U	c1  UR-                  S[/        U5      5        [:        R<                  " S5        UR!                  U	5        Ms     U$ s  snf s  snf ! [$         a  nUR&                  S   [(        R*                  :X  a  UR-                  S[/        U5      5        UR&                  S   [(        R0                  :X  a  UR-                  S[/        U5      5        S	nUR-                  UR3                  [/        U5      [/        U5      S
95        US:  a.  UR5                  S5        [6        R8                  " S5         SnAGMO   SnAGMV  SnAff = f)z
Create a new socket for the configured addresses or file descriptors.

If a configured address is a tuple then a TCP socket is created.
If it is a string, a Unix socket is created. Otherwise, a TypeError is
raised.
zcertfile "%s" does not existzkeyfile "%s" does not existri   N   r   zConnection in use: %szInvalid address: %sz$connection to {addr} failed: {error})rQ   errorzRetrying in 1 second.r(   zCan't connect to %s)r   r~   intlistcertfiler   pathexistsrn   keyfiler   r   r|   r   rO   r   appendranger0   ro   r1   
EADDRINUSEr   r>   EADDRNOTAVAILformatdebugtimesleepsysexit)r   r
   fds	listenersrQ   r4   fdaddrladdrr   r   	sock_namer   listenerir?   msgs                   r   create_socketsr      s`    I <<D#=ttz$'<dtF=
$s)"@dd*T3*?TdE@ }}RWW^^DMM::7$--GHH||BGGNN4<<886EFF B==V^^V5G5GHD((*I"9-I #=HX&   t$	qA S1    <II+SY7HHQK/ 2 e > A8  	"66!9 0 00II5s4yA66!9 3 33II3SY?<		#**#d)3q6*BCq5II56JJqMM 	"s/   HHH.H>	H  
L*CLLc                     U  HV  nUR                  5       nUR                  5         U(       d  M,  [        U5      [        L d  M@  [        R
                  " U5        MX     g r"   )rO   r   r   rf   r   unlink)r   r   r   r   s       r   close_socketsr      s@    $$&	

6j+z9IIi 	 r   c                 4   ^  U 4S jnT R                  T U5      $ )Nc                  8  > [         R                  " [         R                  R                  TR                  S9n U R                  TR                  TR                  S9  TR                  U l	        TR                  (       a  U R                  TR                  5        U $ )N)cafile)r   r   )sslcreate_default_contextPurposeCLIENT_AUTHca_certsload_cert_chainr   r   	cert_reqsverify_modeciphersset_ciphers)contextr   s    r   default_ssl_context_factory0ssl_context.<locals>.default_ssl_context_factory   sh    ,,S[[-D-DT]][M"nn<<-r   )ssl_context)r   r   s   ` r   r   r      s     D"=>>r   c                 `    [        U5      R                  U SUR                  UR                  S9$ )NT)server_sidesuppress_ragged_eofsdo_handshake_on_connect)r   wrap_socketr   r   )r   r   s     r   ssl_wrap_socketr      s8    t((59>B>W>WAEA]A] ) _ _r   r"   )T)r1   r   r   r   rj   r   r   gunicornr   r   rI   r]   rf   r   r   r   r   r   rG   r   r   <module>r      si   
  	  
  
  7 7t6
 6$/ / 8
>B!	?_r   