
    q&f                     2    d dl mZmZ d dlmZ ddl mZ d Zy)   )encodingpycompat)procutil   )commonc                 X  	
 t        j                  t         j                         t        j                  t         j                         t        j
                  j                         D ci c]&  \  }}|j                  d      |j                  d      ( }}}|j                  dd       |j                  dd      j                  d      r-|d   }|d   j                  |      r|d   t        |      d  |d<   t         j                  }|j                  dd      j                         dk(  r.t        j                  |t         j                  j                        }||d	<   t         j                   |d
<   d|d<   d|d<   d|d<   d|d<   |j                  dd      j                         dv rd|d<   nd|d<   g 
g 	t         j                  	
fdd	
fd	} | ||      }	 |D ]
  } |        	s d        t#        |dd               y c c}}w #  t#        |dd               w xY w)Nz	iso8859-1	PATH_INFO SERVER_SOFTWAREzMicrosoft-IISSCRIPT_NAMEHTTP_EXPECTz100-continuez
wsgi.inputzwsgi.errors)r       zwsgi.versionFzwsgi.multithreadTzwsgi.multiprocesszwsgi.run_onceHTTPSoff)on1yeshttpszwsgi.url_schemehttpc                 v   st        d      sx\  }}d d  j                  dt        j                  |      z         |D ]A  \  }}j                  dt        j                  |      t        j                  |      fz         C j                  d       j                  |        j	                          y )Ns   write() before start_response()s   Status: %s
s   %s: %s
s   
)AssertionErrorwriter   bytesurlflush)datastatusresponse_headershkhvheaders_sentheaders_setouts        9/usr/lib/python3/dist-packages/mercurial/hgweb/wsgicgi.pyr   zlaunch.<locals>.write6   s     !CDD9DD$F$|AII'(*;*;F*CCD* B		!((,h.?.?.CDE
 IIg		$		    c                 p    |r	 r |d   |d   |d         	 ~nrt        d      | |gd d  S # ~w xY w)Nr   r   r   s   Headers already set!)r   )r   r   exc_infor    r!   r   s      r#   start_responsezlaunch.<locals>.start_responseH   s]    %(1+hqk8A;??    !899 "23A s   2 5r$   closec                       y N r+   r$   r#   <lambda>zlaunch.<locals>.<lambda>]   s    r$   r*   )r   	setbinarystdinstdoutr   environitemsdecode
setdefaultget
startswithlenlowerr   continuereaderr   stderrgetattr)applicationkvr0   
scriptnamer.   r'   contentchunkr    r!   r"   r   s            @@@@r#   launchrA      s   x~~&x' $$**,Aq 	
qxx44G  {B'{{$b)44_E]+
;**:6#*;#7J8I#JGK NNE{{="%++-?%%eX__-B-BC!GL%__GM$GN"'G#'G #GO{{7E"((*.@@%,!"%+!"KL
//C$ '>2G2 	E%L	#J/,/1ML 	0,/1s   ,+H!H H)N)r
   r   r   utilsr   r   rA   r+   r$   r#   <module>rC      s    "  J2r$   