
    2Bh$                         S SK J 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K	J
r
  S SKJr  S SKJr  S SKJr   " S S	\5      r " S
 S\R"                  5      rg)    )datetimeN)http)wsgi)sock)util)basec                       \ rS rSrSrSrg)StopWaiting   z2exception raised to stop waiting for a connection  N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       G/var/www/html/env/lib/python3.13/site-packages/gunicorn/workers/sync.pyr
   r
      s    =r   r
   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)
SyncWorker   c                     UR                  5       u  p#UR                  S5        [        R                  " U5        U R	                  XU5        g )N   )acceptsetblockingr   close_on_exechandle)selflistenerclientaddrs       r   r   SyncWorker.accept   s:    (16"Hd+r   c                     U R                  5         [        R                  " U R                  / / U5      nUS   (       a?  U R                  S   US   ;   a$  [        R
                  " U R                  S   S5        US   $ g ! [         a  nUR                  S   [        R                  :X  a  U R                  s S nA$ UR                  S   [        R                  :X  a'  U R                  S:  a  U R                  s S nA$ [        ee S nAff = f)Nr   r   )notifyselectwait_fdsPIPEosreadOSErrorargserrnoEINTRsocketsEBADFnrr
   )r   timeoutretes       r   waitSyncWorker.wait!   s    	KKM--r2w?C1v99Q<3q6)GGDIIaL!,1v 
  	vvayEKK'||#vvayEKK'77Q;<<'%%	s0   A;A? ?
D		,D5D	;<D7D	=DD	c                     U R                   [        R                  " 5       :w  a  U R                  R	                  SU 5        gg)Nz!Parent changed, shutting down: %sFT)ppidr(   getppidloginfo)r   s    r   is_parent_aliveSyncWorker.is_parent_alive4   s-    99

$HHMM=tDr   c                    U R                   S   nU R                  (       a$  U R                  5          U R                  U5        M5  g ! [         aH  nUR
                  [
        R                  [
        R                  [
        R                  4;  a  e  S nAOS nAff = fU R                  5       (       d  g  U R                  U5        O! [         a     g f = fU R                  (       a  M  g Nr   )r.   aliver$   r   r*   r,   EAGAINECONNABORTEDEWOULDBLOCKr;   r4   r
   )r   r1   r   r3   s       r   run_for_oneSyncWorker.run_for_one;   s    <<?jjKKM
H%    775<<1C1C#(#4#4#6 66
 ''))		'" 1 jjjs)   A 
B>BB2C 
CCc                    U R                   (       a~  U R                  5          U R                  U5      nUb/  U H)  nX0R                  S   :X  a  M   U R                  U5        M+     U R                  5       (       d  g U R                   (       a  M}  g g ! [         a     g f = f! [         aI  nUR                  [        R                  [        R                  [        R                  4;  a  e  S nAM  S nAff = fr>   )r?   r$   r4   r
   r'   r   r*   r,   r@   rA   rB   r;   )r   r1   readyr   r3   s        r   run_for_multipleSyncWorker.run_for_multipleX   s    jjKKM		'*   %H99Q</ "H- !& ''))+ jjj
   # "775<<9K9K+0+<+<+> >!>"s)   B B!
BB!
C4+>C//C4c                     U R                   =(       d    SnU R                   H  nUR                  S5        M     [        U R                  5      S:  a  U R	                  U5        g U R                  U5        g )Ng      ?r   r   )r1   r.   r   lenrG   rC   )r   r1   ss      r   runSyncWorker.runp   s]     ,,%# AMM!  t||q !!'*W%r   c                    S n U R                   R                  (       a   [        R                  " X R                   5      n[        R
                  " U R                   X#5      n[        U5      nU R                  XX#5        [4        R"                  " U5        g ! [        R                  R                   a&  nU R                  R                  SU5         S nANVS nAf[         a&  nU R                  R                  SU5         S nANS nAf[        R                   a  nUR                  S   [        R                   :X  a0  U R                  R                  S5        UR#                  5          S nANU R                  R                  S5        U R%                  XBX65         S nAGNS nAf[&         Ga  nUR(                  [(        R*                  [(        R,                  [(        R.                  4;  a!  U R                  R1                  S5         S nAGNUR(                  [(        R,                  :X  a!  U R                  R                  S5         S nAGNUR(                  [(        R.                  :X  a!  U R                  R                  S5         S nAGN	U R                  R                  S	5         S nAGN*S nAf[2         a  nU R%                  XBX65         S nAGNOS nAff = f! [4        R"                  " U5        f = f)
Nz*Ignored premature client disconnection. %szClosing connection. %sr   zssl connection closedzError processing SSL request.z Socket error processing request.zIgnoring connection resetzIgnoring socket not connectedzIgnoring EPIPE)cfgis_sslr   ssl_wrap_socketr   RequestParsernexthandle_requesterrors
NoMoreDatar9   debugStopIterationsslSSLErrorr+   SSL_ERROR_EOFclosehandle_errorr*   r,   EPIPE
ECONNRESETENOTCONN	exceptionBaseExceptionr   )r   r   r    r!   reqparserr3   s          r   r   SyncWorker.handle   s   	xx--fhh?''&?Fv,Cv<2 JJv1 {{%% 	LHHNNGKK 	8HHNN3Q77|| 	8vvayC---67>?!!#t77 		5wwu{{E,<,<ennMM""#EFF77e...HHNN#>??WW.HHNN#BCCHHNN#344 	4c433	4 JJvs   A9B K2CK K D<K KAF$K )-FK K*AJ'K 9J'K 9J' K J'!K 'K4KK KK K,c                    0 nS n U R                   R                  X5        [        R                  " 5       n[        R
                  " X#UUR                  5       U R                   5      u  peUR                  5         U =R                  S-  sl        U R                  U R                  :  a"  U R                  R                  S5        SU l        U R	                  XVR                  5      n [        XS   5      (       a  UR                  U5        OU H  n	UR!                  U	5        M     UR#                  5         [        R                  " 5       U-
  n
U R                  R%                  XbXZ5        ['        US5      (       a  UR#                  5          U R                   RA                  XXV5        g ! [        R                  " 5       U-
  n
U R                  R%                  XbXZ5        ['        US5      (       a  UR#                  5         f f = f! [(         a)    [*        R,                  " [.        R0                  " 5       6    N[2         a    U(       a  UR4                  (       an  U R                  R7                  S5         UR9                  [:        R<                  5        UR#                  5         [?        5       e! [(         a     [?        5       ef = fe f = f! [2         a    U R                  R7                  S5         g f = f!  U R                   RA                  XXV5        f ! [2         a    U R                  R7                  S5         f f = f= f)Nr   z,Autorestarting worker after current request.Fzwsgi.file_wrapperr\   zError handling requestzException in post_request hook)!rO   pre_requestr   nowr   creategetsocknameforce_closer0   max_requestsr9   r:   r?   start_response
isinstance
write_filewriter\   accesshasattrr*   r   reraisesysexc_info	Exceptionheaders_sentra   shutdownsocket	SHUT_RDWRrX   post_request)r   r   rc   r    r!   environresprequest_startrespiteritemrequest_times              r   rT   SyncWorker.handle_request   s{   -	EHH  +$LLNM KKT(0(<(<(>JMD
 GGqLGww$+++LM"
yy*=*=>H%h0C(DEEOOH- (

4( !)

'||~=7A8W--NN$"E%%d?+  (||~=7A8W--NN$ . 	*LL#,,.) 	)) ""#;<OOF$4$45LLN $o%  #o% 	  E""#CDEE%%d? E""#CDEs   CH &AF( 5AH K	 (AH  H 0K3K4 5<K2/J+!
K+
K5K KKK4 	%K10K14L>6LL>%L;8L>:L;;L>)r?   N)r   r   r   r   r   r4   r;   rC   rG   rL   r   rT   r   r   r   r   r   r      s,    ,&:0& D0Er   r   )r   r,   r(   r%   ry   rY   rt   gunicornr   gunicorn.httpr   r   r   gunicorn.workersr   rv   r
   Workerr   r   r   r   <module>r      sK      	   
 
     !>) >xE xEr   