
    Tfl                         d dl m 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 d dl	m
Z
 d dlmZ d dlmZ d dlmZ  G d d	e          Z G d
 dej                  ZdS )    )datetimeN)http)wsgi)sock)util)basec                       e Zd ZdZdS )StopWaitingz3 exception raised to stop waiting for a connection N)__name__
__module____qualname____doc__     G/var/www/html/env/lib/python3.11/site-packages/gunicorn/workers/sync.pyr
   r
      s        ====r   r
   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )

SyncWorkerc                     |                                 \  }}|                    d           t          j        |           |                     |||           d S )N   )acceptsetblockingr   close_on_exechandle)selflistenerclientaddrs       r   r   zSyncWorker.accept   sV    ((16"""Hfd+++++r   c                    	 |                                   t          j        | j        g g |          }|d         r=| j        d         |d         v r t	          j        | j        d         d           |d         S d S # t          j        $ rf}|j        d         t          j	        k    r| j
        cY d }~S |j        d         t          j        k    r| j        dk     r| j
        cY d }~S t           d }~ww xY w)Nr   r   )notifyselectwait_fdsPIPEosreaderrorargserrnoEINTRsocketsEBADFnrr
   )r   timeoutretes       r   waitzSyncWorker.wait"   s   	KKMMM-r2w??C1v 9Q<3q6))GDIaL!,,,1v 
 | 	 	 	vayEK''|######vayEK''7Q;;<''''''%%	s0   A4A9 9C.!C))C./,C)C.!C))C.c                 x    | j         t          j                    k    r| j                            d|            dS dS )Nz!Parent changed, shutting down: %sFT)ppidr#   getppidloginfo)r   s    r   is_parent_alivezSyncWorker.is_parent_alive5   s6    9
$$HMM=tDDD5tr   c                    | j         d         }| j        r|                                  	 |                     |           2# t          $ r5}|j        t
          j        t
          j        t
          j        fvr Y d }~nd }~ww xY w| 	                                sd S 	 | 
                    |           n# t          $ r Y d S w xY w| j        d S d S Nr   )r)   aliver   r   EnvironmentErrorr'   EAGAINECONNABORTEDEWOULDBLOCKr5   r/   r
   )r   r,   r   r.   s       r   run_for_onezSyncWorker.run_for_one<   s   <?j 	KKMMM
H%%% #   75<1C#(#4#6 6 66 6 6 6 6
 '')) 		'""""   1 j 	 	 	 	 	s)   A   
A?
+A::A?B/ /
B=<B=c                    | j         r|                                  	 |                     |          }n# t          $ r Y d S w xY w|o|D ]l}|| j        d         k    r	 |                     |           +# t          $ r5}|j        t          j        t          j	        t          j
        fvr Y d }~ed }~ww xY w|                                 sd S | j         d S d S r7   )r8   r   r/   r
   r"   r   r9   r'   r:   r;   r<   r5   )r   r,   readyr   r.   s        r   run_for_multiplezSyncWorker.run_for_multipleY   s1   j 	KKMMM		'**      % 	" 	"H49Q<// "H----+ " " "75<9K+0+<+> > >!> > > > >"
 '')) + j 	 	 	 	 	s'   3 
A AA33
B2=+B--B2c                     | j         pd}| j        D ]}|                    d           t          | j                  dk    r|                     |           d S |                     |           d S )Ng      ?r   r   )r,   r)   r   lenr@   r=   )r   r,   ss      r   runzSyncWorker.runq   s     ,%#  	 	AMM!t|q  !!'*****W%%%%%r   c                 .   d }	 | j         j        rt          j        || j                   }t	          j        | j         ||          }t          |          }|                     ||||           n# t          j        j	        $ r&}| j
                            d|           Y d }~nd }~wt          $ r&}| j
                            d|           Y d }~nd }~wt          j        $ r}|j        d         t          j        k    r/| j
                            d           |                                 n2| j
                            d           |                     ||||           Y d }~nd }~wt&          $ r}|j        t(          j        t(          j        t(          j        fvr| j
                            d           nz|j        t(          j        k    r| j
                            d           nJ|j        t(          j        k    r| j
                            d           n| j
                            d	           Y d }~n2d }~wt2          $ r"}|                     ||||           Y d }~nd }~ww xY wt5          j        |           d S # t5          j        |           w xY w)
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
NoMoreDatar3   debugStopIterationsslSSLErrorr&   SSL_ERROR_EOFclosehandle_errorr9   r'   EPIPE
ECONNRESETENOTCONN	exceptionBaseExceptionr   )r   r   r   r   reqparserr.   s          r   r   zSyncWorker.handle   s   	x @-fdh??'&$??Fv,,C#vt<<<<{% 	L 	L 	LHNNGKKKKKKKK 	8 	8 	8HNN3Q77777777| 	8 	8 	8vayC---6777>???!!#vtQ777 		5 		5 		5wu{E,<enMMM""#EFFFF7e...HNN#>????W..HNN#BCCCCHNN#3444 	4 	4 	4c6433333333	4 JvDJvsz   A(A. ,I> .I%B#I> #I%0CI> I%#A<E%I> %I%2B?H61I> 6I%I I>  I%%I> >Jc                 \   i }d }	 | j                             | |           t          j                    }t	          j        ||||                                | j                   \  }}|                                 | xj        dz  c_        | j        | j	        k    r!| j
                            d           d| _        |                     ||j                  }	 t          ||d                   r|                    |           n|D ]}	|                    |	           |                                 t          j                    |z
  }
| j
                            ||||
           t'          |d          r|                                 n]# t          j                    |z
  }
| j
                            ||||
           t'          |d          r|                                 w w xY wn# t(          $ r" t+          j        t/          j                      Y nt2          $ rx |rt|j        rm| j
                            d           	 |                    t:          j                   |                                 n# t(          $ r Y nw xY wt?                       w xY w	 | j                              | |||           d S # t2          $ r | j
                            d           Y d S w xY w# 	 | j                              | |||           w # t2          $ r | j
                            d           Y w w xY wxY w)Nr   z,Autorestarting worker after current request.Fzwsgi.file_wrapperrS   zError handling requestzException in post_request hook)!rF   pre_requestr   nowr   creategetsocknameforce_closer+   max_requestsr3   r4   r8   start_response
isinstance
write_filewriterS   accesshasattrr9   r   reraisesysexc_info	Exceptionheaders_sentrX   shutdownsocket	SHUT_RDWRrO   post_request)r   r   rZ   r   r   environresprequest_startrespiteritemrequest_times              r   rK   zSyncWorker.handle_request   sh   -	EH  s+++$LNNM KVT(0(<(<(>(>J JMD'
 GGqLGGw$+++LMMM"
yy$*=>>H%h0C(DEE )OOH---- ( ) )

4((((

'|~~=c7LAAA8W-- %NN$$$  (|~~=c7LAAA8W-- %NN$$$$% 	* 	* 	*L#,..)))) 	 	 	 	&) 	& ""#;<<<OOF$4555LLNNNN'   D#oo%	E%%dC$????? E E E""#CDDDDDDEE%%dC$???? E E E""#CDDDDDEs   CG' AF	 1AG' 	AG##G' &K! ')JK! ,J?3I32J3
J =J?J  JK! J6 6$KK!L+#L L+$L(%L+'L((L+N)r   r   r   r   r/   r5   r=   r@   rD   r   rK   r   r   r   r   r      s        , , ,  &    :  0& & &     D0E 0E 0E 0E 0Er   r   )r   r'   r#   r    ro   rP   rj   gunicornr   gunicorn.httpr   r   r   gunicorn.workersr   rl   r
   Workerr   r   r   r   <module>r|      s          				   



 



                         ! ! ! ! ! !> > > > >) > > >xE xE xE xE xE xE xE xE xE xEr   