ó
Pü½cc           @   s˜   d  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
 d d l m Z d	 e
 f d
 „  ƒ  YZ d S(   s   Incoming queue runner.iÿÿÿÿN(   t   StringIO(   t   mm_cfg(   t   Errors(   t   LockFile(   t   Runner(   t   syslogt   IncomingRunnerc           B   s,   e  Z e j Z d  „  Z d „  Z d „  Z RS(   c         C   sš   y | j  d t j ƒ Wn t j k
 r. d SXzY |  j | | | ƒ } | | d <|  j | | | | ƒ } | sy | d =n  | j ƒ  | SWd  | j ƒ  Xd  S(   Nt   timeouti   t   pipeline(	   t   LockR   t   LIST_LOCK_TIMEOUTR   t   TimeOutErrort   _get_pipelinet   _dopipelinet   Savet   Unlock(   t   selft   mlistt   msgt   msgdataR   t   more(    (    s;   /export/web/mailman/mailman/Mailman/Queue/IncomingRunner.pyt   _disposep   s    	


c         C   s    | j  d t | d t j ƒ ƒ S(   NR   (   t   gett   getattrR   t   GLOBAL_PIPELINE(   R   R   R   R   (    (    s;   /export/web/mailman/mailman/Mailman/Queue/IncomingRunner.pyR   ‹   s    		c   	      C   sq  xj| rl| j  d ƒ } d | } t | ƒ y\ t j ƒ  } t j | j | | | ƒ | t j ƒ  k r‡ t d d | ƒ t j d ƒ n  Wq t	 j
 k
 rÔ | j d | ƒ t d d | j d d	 ƒ | j | ƒ d St	 j k
 rè d St	 j k
 rO} | j d | ƒ t d d
 | j d d	 ƒ | j | | j ƒ  ƒ | j | | | ƒ d S| j d | ƒ ‚  q Xq Wd S(   Ni    s   Mailman.Handlers.t   errors   child process leaked thru: %si   t   vettesC   Message discarded, msgid: %s'
        list: %s,
        handler: %ss
   message-ids   n/asU   Message rejected, msgid: %s
        list: %s,
        handler: %s,
        reason: %s(   t   popt
   __import__t   ost   getpidt   syst   modulest   processR   t   _exitR   t   DiscardMessaget   insertR   t	   real_namet   HoldMessaget   RejectMessaget   noticet   BounceMessage(	   R   R   R   R   R   t   handlert   modnamet   pidt   e(    (    s;   /export/web/mailman/mailman/Mailman/Queue/IncomingRunner.pyR   ’   s>    	

(   t   __name__t
   __module__R   t   INQUEUE_DIRt   QDIRR   R   R   (    (    (    s;   /export/web/mailman/mailman/Mailman/Queue/IncomingRunner.pyR   m   s   			(   t   __doc__R   R   t	   cStringIOR    t   MailmanR   R   R   t   Mailman.Queue.RunnerR   t   Mailman.Logging.SyslogR   R   (    (    (    s;   /export/web/mailman/mailman/Mailman/Queue/IncomingRunner.pyt   <module>   s   P