Ë
    qûàg²  ã                   óÀ   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ  G d„ d«      Z	 G d„ de	«      Z
 G d„ de
«      Z G d	„ d
e	«      Zd„ Zdd„Zdd„Zd„ Zd„ Zy)é    N)Úutilc                   ó4   — e Zd Zdd„Zd„ Zd„ Zd	d„Zd„ Zd„ Zy)
Ú
BaseSocketNc                 óP  — || _         || _        || _        |€1t        j                  | j                  t        j
                  «      }d}nFt        j                  || j                  t        j
                  «      }t        j                  |«       d}| j                  ||¬«      | _
        y )NFT©Úbound)ÚlogÚconfÚcfg_addrÚsocketÚFAMILYÚSOCK_STREAMÚfromfdÚosÚcloseÚset_optionsÚsock)ÚselfÚaddressr
   r	   Úfdr   r   s          úK/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/gunicorn/sock.pyÚ__init__zBaseSocket.__init__   s~   € ØˆŒØˆŒ	àˆŒØˆ:Ü—=‘= §¡¬f×.@Ñ.@ÓAˆDØ‰Eä—=‘=  T§[¡[´&×2DÑ2DÓEˆDÜ�H‰H�RŒLØˆEà×$Ñ$ T°Ð$Ó7ˆ�	ó    c                 ó<   — d| j                   j                  «       z  S )Nz<socket %d>)r   Úfileno©r   s    r   Ú__str__zBaseSocket.__str__!   s   € Ø˜tŸy™y×/Ñ/Ó1Ñ1Ð1r   c                 ó.   — t        | j                  |«      S ©N)Úgetattrr   )r   Únames     r   Ú__getattr__zBaseSocket.__getattr__$   s   € Ü�t—y‘y $Ó'Ð'r   c                 ób  — |j                  t        j                  t        j                  d«       | j                  j
                  r@t        t        d«      r0	 |j                  t        j                  t        j                  d«       |s| j                  |«       |j                  d«       t        |d«      r|j                  d«       |j                  | j                  j                   «       |S # t        $ r7}|j                  t        j                  t        j                  fvr‚ Y d }~Œ£d }~ww xY w)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   zBaseSocket.set_options'   sà   € Ø�‰œ×)Ñ)¬6×+>Ñ+>ÀÔBØ�I‰I× Ò ÜœF NÔ3ðØ—‘¤× 1Ñ 1´6×3FÑ3FÈÔJñ Ø�I‰I�dŒOØ×Ñ˜Ôô �4Ð*Ô+Ø× Ñ  Ô&à�‰�D—I‘I×%Ñ%Ô&Øˆøô ò Ø—9‘9¤U×%6Ñ%6¼¿¹Ð$EÑEØô Fûðús   Á/C. Ã.	D.Ã7-D)Ä)D.c                 ó:   — |j                  | j                  «       y r   )r0   r   )r   r   s     r   r0   zBaseSocket.bind;   s   € Ø�	‰	�$—-‘-Õ r   c                 óæ   — | j                   €y 	 | j                   j                  «        d | _         y # t        $ r6}| j                  j	                  dt        |«      «       Y d }~d | _         y d }~ww xY w)NzError while closing socket %s)r   r   r,   r	   ÚinfoÚstr)r   Úes     r   r   zBaseSocket.close>   sa   € Ø�9‰9ÐØð	CØ�I‰I�O‰OÔð ˆ�	øô ò 	CØ�H‰H�M‰MÐ9¼3¸q»6×BÐBàˆ�	ûð	Cús   �1 ±	A0º%A+Á+A0r   ©F)	Ú__name__Ú
__module__Ú__qualname__r   r   r"   r   r0   r   © r   r   r   r      s    „ ó8ò2ò(óò(!ó	r   r   c                   ó>   ‡ — e Zd Zej                  Zd„ Zdˆ fd„	Zˆ xZS )Ú	TCPSocketc                 óˆ   — | j                   j                  rd}nd}| j                  j                  «       }d||d   |d   fz  S )NÚhttpsÚhttpz
%s://%s:%dr   r$   )r
   Úis_sslr   Úgetsockname)r   ÚschemeÚaddrs      r   r   zTCPSocket.__str__N   sE   € Ø�9‰9×ÒØ‰FàˆFà�y‰y×$Ñ$Ó&ˆØ˜v t¨A¡w°°Q±Ð8Ñ8Ð8r   c                 ó„   •— |j                  t        j                  t        j                  d«       t        ‰| �  ||¬«      S )Nr$   r   )r'   r   ÚIPPROTO_TCPÚTCP_NODELAYÚsuperr   )r   r   r   Ú	__class__s      €r   r   zTCPSocket.set_optionsW   s4   ø€ Ø�‰œ×*Ñ*¬F×,>Ñ,>ÀÔBÜ‰wÑ" 4¨uÐ"Ó5Ð5r   r:   )	r;   r<   r=   r   ÚAF_INETr   r   r   Ú__classcell__©rL   s   @r   r@   r@   J   s   ø„ à�^‰^€Fò9÷6ñ 6r   r@   c                   ó*   — e Zd Zej                  Zd„ Zy)Ú
TCP6Socketc                 óN   — | j                   j                  «       \  }}}}d||fz  S )Nzhttp://[%s]:%d)r   rE   )r   ÚhostÚportÚ_s       r   r   zTCP6Socket.__str__`   s,   € Ø!ŸY™Y×2Ñ2Ó4Ñˆˆt�Q˜Ø 4¨ ,Ñ.Ð.r   N)r;   r<   r=   r   ÚAF_INET6r   r   r>   r   r   rQ   rQ   \   s   „ à�_‰_€Fó/r   rQ   c                   óD   ‡ — e Zd Zej                  Zdˆ fd„	Zd„ Zd„ Zˆ xZ	S )Ú
UnixSocketc                 óP  •— |€Y	 t        j                  |«      }t        j                  |j                  «      rt        j                  |«       nt        d|z  «      ‚t        ‰| �-  ||||¬«       y # t        $ r+}|j                  d   t        j                  k7  r‚ Y d }~ŒCd }~ww xY w)Nz%r is not a socketr   ©r   )r   ÚstatÚS_ISSOCKÚst_modeÚremoveÚ
ValueErrorr,   Úargsr-   ÚENOENTrK   r   )r   rG   r
   r	   r   Ústr9   rL   s          €r   r   zUnixSocket.__init__i   s�   ø€ Øˆ:ð	BÜ—W‘W˜T“]�ô
 —=‘= §¡Ô,Ü—I‘I˜d•Oä$Ð%9¸DÑ%@ÓAÐAÜ‰Ñ˜˜t S¨RÐÕ0øô ò Ø—6‘6˜!‘9¤§¡Ò,Øô -ûðús   …A1 Á1	B%Á:!B Â B%c                 ó    — d| j                   z  S )Nzunix:%s)r   r   s    r   r   zUnixSocket.__str__w   s   € Ø˜4Ÿ=™=Ñ(Ð(r   c                 óH  — t        j                  | j                  j                  «      }|j                  | j                  «       t        j                  | j                  | j                  j                  | j                  j                  «       t        j                  |«       y r   )	r   Úumaskr
   r0   r   r   ÚchownÚuidÚgid)r   r   Ú	old_umasks      r   r0   zUnixSocket.bindz   sX   € Ü—H‘H˜TŸY™YŸ_™_Ó-ˆ	Ø�	‰	�$—-‘-Ô Ü�
‰
�4—=‘= $§)¡)§-¡-°·±·±Ô?Ü
�‰�Õr   r   )
r;   r<   r=   r   ÚAF_UNIXr   r   r   r0   rN   rO   s   @r   rX   rX   e   s   ø„ à�^‰^€Fõ1ò)ör   rX   c                 óÊ   — t        | t        «      r(t        j                  | d   «      rt        }|S t
        }|S t        | t        t        f«      rt        }|S t        d| z  «      ‚)Nr   z Unable to create socket from: %r)
Ú
isinstanceÚtupler   Úis_ipv6rQ   r@   r8   ÚbytesrX   Ú	TypeError)rG   Ú	sock_types     r   Ú
_sock_typerr   �   sh   € Ü�$œÔÜ�<‰<˜˜Q™Ô Ü"ˆIð Ðô "ˆIð
 Ðô	 
�Dœ3¤˜,Ô	'Üˆ	ð Ðô Ð:¸TÑAÓBÐBr   c                 ó¸  — g }| j                   }|D �cg c]  }t        |t        «      sŒ|‘Œ }}|r|t        |«      z  }|D �cg c]  }t        |t        «      rŒ|‘Œ }}| j                  rAt
        j                  j                  | j                  «      st        d| j                  z  «      ‚| j                  rAt
        j                  j                  | j                  «      st        d| j                  z  «      ‚|rt|D ]m  }t        j                  |t        j                  t        j                  «      }	|	j                  «       }
t        |
«      } ||
| ||¬«      }|j!                  |«       Œo |S |D ]n  }t        |«      }d}	t#        d«      D ]  }	  ||| |«      }	 n |	€0|j-                  dt/        |«      «       t;        j<                  d«       |j!                  |	«       Œp |S c c}w c c}w # t$        $ râ}|j&                  d   t(        j*                  k(  r|j-                  dt/        |«      «       |j&                  d   t(        j0                  k(  r|j-                  dt/        |«      «       d	}|j-                  |j3                  t/        |«      t/        |«      ¬
«      «       |dk  r&|j5                  d«       t7        j8                  d«       Y d}~�ŒHd}~ww xY w)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 existrZ   Né   r   zConnection in use: %szInvalid address: %sz$connection to {addr} failed: {error})rG   ÚerrorzRetrying in 1 second.r$   zCan't connect to %s)r   rl   ÚintÚlistÚcertfiler   ÚpathÚexistsr_   Úkeyfiler   r   rj   r   rE   rr   ÚappendÚranger,   r`   r-   Ú
EADDRINUSEru   r8   ÚEADDRNOTAVAILÚformatÚdebugÚtimeÚsleepÚsysÚexit)r
   r	   ÚfdsÚ	listenersrG   r0   ÚfdaddrÚladdrr   r   Ú	sock_namerq   ÚlistenerÚir9   Úmsgs                   r   Úcreate_socketsrŽ   Ž   sg  € ð €Ið �<‰<€DØ#Ö=�t¤z°$¼Õ'<ŠdÐ=€FÐ=Ù
Ø”$�s“)ÑˆØ"Ö@�d¬*°T¼3Õ*?ŠTÐ@€EÐ@ð ‡}‚}œRŸW™WŸ^™^¨D¯M©MÔ:ÜÐ7¸$¿-¹-ÑGÓHÐHà‡|‚|œBŸG™GŸN™N¨4¯<©<Ô8ÜÐ6¸¿¹ÑEÓFÐFñ Øò 	'ˆBÜ—=‘= ¤V§^¡^´V×5GÑ5GÓHˆDØ×(Ñ(Ó*ˆIÜ" 9Ó-ˆIÙ  ¨D°#¸"Ô=ˆHØ×Ñ˜XÕ&ð	'ð Ðð ò ˆÜ˜tÓ$ˆ	ØˆÜ�q“ò 	ˆAðÙ   t¨SÓ1�ñ ð	ð  ˆ<Ø�I‰IÐ+¬S°«YÔ7Ü�H‰H�QŒKà×Ñ˜Õð/ð2 Ðùòe >ùò Aøô8 ò 	"Ø—6‘6˜!‘9¤× 0Ñ 0Ò0Ø—I‘IÐ5´s¸4³yÔAØ—6‘6˜!‘9¤× 3Ñ 3Ò3Ø—I‘IÐ3´S¸³YÔ?Ø<�Ø—	‘	˜#Ÿ*™*¬#¨d«)¼3¸q»6˜*ÓBÔCØ�q’5Ø—I‘IÐ5Ô6Ü—J‘J˜q”Mÿùð	"ús/   “G$©G$ÁG)ÁG)Æ
G.Ç.	KÇ7CKËKc                 ó¦   — | D ]L  }|j                  «       }|j                  «        |sŒ&t        |«      t        u sŒ8t	        j
                  |«       ŒN y r   )rE   r   rr   rX   r   Úunlink)r‡   r�   r   rŠ   s       r   Úclose_socketsr‘   Ï   sC   € Øò !ˆØ×$Ñ$Ó&ˆ	Ø�
‰
ŒÚ”j Ó+¬zÒ9Ü�I‰I�iÕ ñ	!r   c                 ó2   ‡ — ˆ fd„}‰ j                  ‰ |«      S )Nc                  ó8  •— t        j                  t         j                  j                  ‰j                  ¬«      } | j                  ‰j                  ‰j                  ¬«       ‰j                  | _	        ‰j                  r| j                  ‰j                  «       | S )N)Úcafile)rx   r{   )ÚsslÚcreate_default_contextÚPurposeÚCLIENT_AUTHÚca_certsÚload_cert_chainrx   r{   Ú	cert_reqsÚverify_modeÚciphersÚset_ciphers)Úcontextr
   s    €r   Údefault_ssl_context_factoryz0ssl_context.<locals>.default_ssl_context_factoryØ   sh   ø€ Ü×,Ñ,¬S¯[©[×-DÑ-DÈTÏ]É]Ô[ˆØ×Ñ¨¯©ÀÇÁÐÔMØ"Ÿn™nˆÔØ�<Š<Ø×Ñ §¡Ô-Øˆr   )Ússl_context)r
   r    s   ` r   r¡   r¡   ×   s   ø€ ôð ×Ñ˜DÐ"=Ó>Ð>r   c                 óf   — t        |«      j                  | d|j                  |j                  ¬«      S )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Ñ>WØAE×A]ÑA]ð )ó _ð _r   r   )T)r-   r   r   r•   r[   r„   r‚   Úgunicornr   r   r@   rQ   rX   rr   rŽ   r‘   r¡   r§   r>   r   r   ú<module>r©      si   ðó
 Û 	Û Û 
Û Û 
Û å ÷7ñ 7ôt6�
ô 6ô$/�ô /ô�ô ò8
ó>óB!ò	?ó_r   