exim4/4.69/memcache-support.patch
changeset 5 886f06655730
parent 4 5d6a10b5469c
child 6 0e17cffdaed0
equal deleted inserted replaced
4:5d6a10b5469c 5:886f06655730
     1 diff -r b4cc307a2719 .hgignore
       
     2 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
     3 +++ b/.hgignore	Thu Aug 13 13:46:31 2009 +0200
       
     4 @@ -0,0 +1,325 @@
       
     5 +syntax: regexp
       
     6 +^build-tree
       
     7 +^debian/patched
       
     8 +^EDITME\.
       
     9 +^build-arch-stamp
       
    10 +^build-indep-stamp
       
    11 +^configure-stamp
       
    12 +^debian/README.Debian
       
    13 +^debian/README.Debian.html
       
    14 +^debian/debconf/exim4.conf.template
       
    15 +^debian/exim4-base.debhelper.log
       
    16 +^debian/exim4-base.postinst.debhelper
       
    17 +^debian/exim4-base.postrm.debhelper
       
    18 +^debian/exim4-base.prerm.debhelper
       
    19 +^debian/exim4-base.substvars
       
    20 +^debian/exim4-base/DEBIAN/conffiles
       
    21 +^debian/exim4-base/DEBIAN/config
       
    22 +^debian/exim4-base/DEBIAN/control
       
    23 +^debian/exim4-base/DEBIAN/md5sums
       
    24 +^debian/exim4-base/DEBIAN/postinst
       
    25 +^debian/exim4-base/DEBIAN/postrm
       
    26 +^debian/exim4-base/DEBIAN/prerm
       
    27 +^debian/exim4-base/DEBIAN/templates
       
    28 +^debian/exim4-base/etc/cron.daily/exim4-base
       
    29 +^debian/exim4-base/etc/init.d/exim4
       
    30 +^debian/exim4-base/etc/logrotate.d/exim4-base
       
    31 +^debian/exim4-base/etc/logrotate.d/exim4-paniclog
       
    32 +^debian/exim4-base/usr/sbin/exicyclog
       
    33 +^debian/exim4-base/usr/sbin/exigrep
       
    34 +^debian/exim4-base/usr/sbin/exim_checkaccess
       
    35 +^debian/exim4-base/usr/sbin/exim_convert4r4
       
    36 +^debian/exim4-base/usr/sbin/exim_dbmbuild
       
    37 +^debian/exim4-base/usr/sbin/exim_dumpdb
       
    38 +^debian/exim4-base/usr/sbin/exim_fixdb
       
    39 +^debian/exim4-base/usr/sbin/exim_lock
       
    40 +^debian/exim4-base/usr/sbin/exim_tidydb
       
    41 +^debian/exim4-base/usr/sbin/eximstats
       
    42 +^debian/exim4-base/usr/sbin/exinext
       
    43 +^debian/exim4-base/usr/sbin/exipick
       
    44 +^debian/exim4-base/usr/sbin/exiqgrep
       
    45 +^debian/exim4-base/usr/sbin/exiqsumm
       
    46 +^debian/exim4-base/usr/sbin/exiwhat
       
    47 +^debian/exim4-base/usr/sbin/syslog2eximlog
       
    48 +^debian/exim4-base/usr/share/bug/exim4-base/script
       
    49 +^debian/exim4-base/usr/share/doc-base/exim4-filter-txt
       
    50 +^debian/exim4-base/usr/share/doc-base/exim4-readme-debian
       
    51 +^debian/exim4-base/usr/share/doc-base/exim4-spec-txt
       
    52 +^debian/exim4-base/usr/share/doc/exim4-base/ACKNOWLEDGMENTS.gz
       
    53 +^debian/exim4-base/usr/share/doc/exim4-base/Exim3.upgrade.gz
       
    54 +^debian/exim4-base/usr/share/doc/exim4-base/Exim4.upgrade.gz
       
    55 +^debian/exim4-base/usr/share/doc/exim4-base/NEWS.Debian.gz
       
    56 +^debian/exim4-base/usr/share/doc/exim4-base/NOTICE.gz
       
    57 +^debian/exim4-base/usr/share/doc/exim4-base/NewStuff.gz
       
    58 +^debian/exim4-base/usr/share/doc/exim4-base/OptionLists.txt.gz
       
    59 +^debian/exim4-base/usr/share/doc/exim4-base/README
       
    60 +^debian/exim4-base/usr/share/doc/exim4-base/README.Debian.gz
       
    61 +^debian/exim4-base/usr/share/doc/exim4-base/README.Debian.html
       
    62 +^debian/exim4-base/usr/share/doc/exim4-base/README.SIEVE.gz
       
    63 +^debian/exim4-base/usr/share/doc/exim4-base/README.UPDATING.gz
       
    64 +^debian/exim4-base/usr/share/doc/exim4-base/TODO.Debian
       
    65 +^debian/exim4-base/usr/share/doc/exim4-base/changelog.Debian.gz
       
    66 +^debian/exim4-base/usr/share/doc/exim4-base/changelog.Debian.old.gz
       
    67 +^debian/exim4-base/usr/share/doc/exim4-base/changelog.gz
       
    68 +^debian/exim4-base/usr/share/doc/exim4-base/copyright
       
    69 +^debian/exim4-base/usr/share/doc/exim4-base/dbm.discuss.txt.gz
       
    70 +^debian/exim4-base/usr/share/doc/exim4-base/examples/aliases
       
    71 +^debian/exim4-base/usr/share/doc/exim4-base/examples/cramtest.pl
       
    72 +^debian/exim4-base/usr/share/doc/exim4-base/examples/example.conf.gz
       
    73 +^debian/exim4-base/usr/share/doc/exim4-base/examples/exim-adduser
       
    74 +^debian/exim4-base/usr/share/doc/exim4-base/examples/exim-gencert
       
    75 +^debian/exim4-base/usr/share/doc/exim4-base/examples/logargs.sh
       
    76 +^debian/exim4-base/usr/share/doc/exim4-base/examples/unknownuser.sh
       
    77 +^debian/exim4-base/usr/share/doc/exim4-base/filter.txt.gz
       
    78 +^debian/exim4-base/usr/share/doc/exim4-base/pcrepattern.txt.gz
       
    79 +^debian/exim4-base/usr/share/doc/exim4-base/spec.txt.gz
       
    80 +^debian/exim4-base/usr/share/exim4/exim4_refresh_gnutls-params
       
    81 +^debian/exim4-base/usr/share/exim4/timeout.pl
       
    82 +^debian/exim4-base/usr/share/lintian/overrides/exim4-base
       
    83 +^debian/exim4-base/usr/share/man/man8/exicyclog.8.gz
       
    84 +^debian/exim4-base/usr/share/man/man8/exigrep.8.gz
       
    85 +^debian/exim4-base/usr/share/man/man8/exim.8.gz
       
    86 +^debian/exim4-base/usr/share/man/man8/exim_checkaccess.8.gz
       
    87 +^debian/exim4-base/usr/share/man/man8/exim_convert4r4.8.gz
       
    88 +^debian/exim4-base/usr/share/man/man8/exim_db.8.gz
       
    89 +^debian/exim4-base/usr/share/man/man8/exim_dbmbuild.8.gz
       
    90 +^debian/exim4-base/usr/share/man/man8/exim_dumpdb.8.gz
       
    91 +^debian/exim4-base/usr/share/man/man8/exim_fixdb.8.gz
       
    92 +^debian/exim4-base/usr/share/man/man8/exim_lock.8.gz
       
    93 +^debian/exim4-base/usr/share/man/man8/exim_tidydb.8.gz
       
    94 +^debian/exim4-base/usr/share/man/man8/eximstats.8.gz
       
    95 +^debian/exim4-base/usr/share/man/man8/exinext.8.gz
       
    96 +^debian/exim4-base/usr/share/man/man8/exipick.8.gz
       
    97 +^debian/exim4-base/usr/share/man/man8/exiqgrep.8.gz
       
    98 +^debian/exim4-base/usr/share/man/man8/exiqsumm.8.gz
       
    99 +^debian/exim4-base/usr/share/man/man8/exiwhat.8.gz
       
   100 +^debian/exim4-base/usr/share/man/man8/syslog2eximlog.8.gz
       
   101 +^debian/exim4-base/var/spool/exim4/gnutls-params
       
   102 +^debian/exim4-config.debhelper.log
       
   103 +^debian/exim4-config.postrm.debhelper
       
   104 +^debian/exim4-config.substvars
       
   105 +^debian/exim4-config/DEBIAN/conffiles
       
   106 +^debian/exim4-config/DEBIAN/config
       
   107 +^debian/exim4-config/DEBIAN/control
       
   108 +^debian/exim4-config/DEBIAN/md5sums
       
   109 +^debian/exim4-config/DEBIAN/postinst
       
   110 +^debian/exim4-config/DEBIAN/postrm
       
   111 +^debian/exim4-config/DEBIAN/preinst
       
   112 +^debian/exim4-config/DEBIAN/templates
       
   113 +^debian/exim4-config/etc/email-addresses
       
   114 +^debian/exim4-config/etc/exim4/conf.d/acl/00_exim4-config_header
       
   115 +^debian/exim4-config/etc/exim4/conf.d/acl/20_exim4-config_local_deny_exceptions
       
   116 +^debian/exim4-config/etc/exim4/conf.d/acl/30_exim4-config_check_mail
       
   117 +^debian/exim4-config/etc/exim4/conf.d/acl/30_exim4-config_check_rcpt
       
   118 +^debian/exim4-config/etc/exim4/conf.d/acl/40_exim4-config_check_data
       
   119 +^debian/exim4-config/etc/exim4/conf.d/auth/00_exim4-config_header
       
   120 +^debian/exim4-config/etc/exim4/conf.d/auth/30_exim4-config_examples
       
   121 +^debian/exim4-config/etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs
       
   122 +^debian/exim4-config/etc/exim4/conf.d/main/02_exim4-config_options
       
   123 +^debian/exim4-config/etc/exim4/conf.d/main/03_exim4-config_tlsoptions
       
   124 +^debian/exim4-config/etc/exim4/conf.d/main/90_exim4-config_log_selector
       
   125 +^debian/exim4-config/etc/exim4/conf.d/retry/00_exim4-config_header
       
   126 +^debian/exim4-config/etc/exim4/conf.d/retry/30_exim4-config
       
   127 +^debian/exim4-config/etc/exim4/conf.d/rewrite/00_exim4-config_header
       
   128 +^debian/exim4-config/etc/exim4/conf.d/rewrite/31_exim4-config_rewriting
       
   129 +^debian/exim4-config/etc/exim4/conf.d/router/00_exim4-config_header
       
   130 +^debian/exim4-config/etc/exim4/conf.d/router/100_exim4-config_domain_literal
       
   131 +^debian/exim4-config/etc/exim4/conf.d/router/150_exim4-config_hubbed_hosts
       
   132 +^debian/exim4-config/etc/exim4/conf.d/router/200_exim4-config_primary
       
   133 +^debian/exim4-config/etc/exim4/conf.d/router/300_exim4-config_real_local
       
   134 +^debian/exim4-config/etc/exim4/conf.d/router/400_exim4-config_system_aliases
       
   135 +^debian/exim4-config/etc/exim4/conf.d/router/500_exim4-config_hubuser
       
   136 +^debian/exim4-config/etc/exim4/conf.d/router/600_exim4-config_userforward
       
   137 +^debian/exim4-config/etc/exim4/conf.d/router/700_exim4-config_procmail
       
   138 +^debian/exim4-config/etc/exim4/conf.d/router/800_exim4-config_maildrop
       
   139 +^debian/exim4-config/etc/exim4/conf.d/router/850_exim4-config_lowuid
       
   140 +^debian/exim4-config/etc/exim4/conf.d/router/900_exim4-config_local_user
       
   141 +^debian/exim4-config/etc/exim4/conf.d/router/mmm_mail4root
       
   142 +^debian/exim4-config/etc/exim4/conf.d/transport/00_exim4-config_header
       
   143 +^debian/exim4-config/etc/exim4/conf.d/transport/10_exim4-config_transport-macros
       
   144 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_address_file
       
   145 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_address_pipe
       
   146 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_address_reply
       
   147 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_mail_spool
       
   148 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_maildir_home
       
   149 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_maildrop_pipe
       
   150 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_procmail_pipe
       
   151 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_remote_smtp
       
   152 +^debian/exim4-config/etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost
       
   153 +^debian/exim4-config/etc/exim4/conf.d/transport/35_exim4-config_address_directory
       
   154 +^debian/exim4-config/etc/exim4/exim4.conf.template
       
   155 +^debian/exim4-config/etc/exim4/passwd.client
       
   156 +^debian/exim4-config/etc/ppp/ip-up.d/exim4
       
   157 +^debian/exim4-config/usr/sbin/update-exim4.conf
       
   158 +^debian/exim4-config/usr/sbin/update-exim4.conf.template
       
   159 +^debian/exim4-config/usr/sbin/update-exim4defaults
       
   160 +^debian/exim4-config/usr/share/bug/exim4-config/script
       
   161 +^debian/exim4-config/usr/share/doc/exim4-config/NEWS.Debian.gz
       
   162 +^debian/exim4-config/usr/share/doc/exim4-config/README.Debian.gz
       
   163 +^debian/exim4-config/usr/share/doc/exim4-config/changelog.Debian.gz
       
   164 +^debian/exim4-config/usr/share/doc/exim4-config/copyright
       
   165 +^debian/exim4-config/usr/share/lintian/overrides/exim4-config
       
   166 +^debian/exim4-config/usr/share/man/man5/etc-aliases.5.gz
       
   167 +^debian/exim4-config/usr/share/man/man5/etc-email-addresses.5.gz
       
   168 +^debian/exim4-config/usr/share/man/man5/exim4-config_files.5.gz
       
   169 +^debian/exim4-config/usr/share/man/man5/exim4_exim_crt.5.gz
       
   170 +^debian/exim4-config/usr/share/man/man5/exim4_exim_key.5.gz
       
   171 +^debian/exim4-config/usr/share/man/man5/exim4_hubbed_hosts.5.gz
       
   172 +^debian/exim4-config/usr/share/man/man5/exim4_local_domain_dnsbl_whitelist.5.gz
       
   173 +^debian/exim4-config/usr/share/man/man5/exim4_local_host_blacklist.5.gz
       
   174 +^debian/exim4-config/usr/share/man/man5/exim4_local_host_whitelist.5.gz
       
   175 +^debian/exim4-config/usr/share/man/man5/exim4_local_rcpt_callout.5.gz
       
   176 +^debian/exim4-config/usr/share/man/man5/exim4_local_sender_blacklist.5.gz
       
   177 +^debian/exim4-config/usr/share/man/man5/exim4_local_sender_callout.5.gz
       
   178 +^debian/exim4-config/usr/share/man/man5/exim4_local_sender_whitelist.5.gz
       
   179 +^debian/exim4-config/usr/share/man/man5/exim4_passwd.5.gz
       
   180 +^debian/exim4-config/usr/share/man/man5/exim4_passwd_client.5.gz
       
   181 +^debian/exim4-config/usr/share/man/man5/update-exim4.conf.conf.5.gz
       
   182 +^debian/exim4-config/usr/share/man/man8/update-exim4.conf.8.gz
       
   183 +^debian/exim4-config/usr/share/man/man8/update-exim4.conf.template.8.gz
       
   184 +^debian/exim4-config/usr/share/man/man8/update-exim4defaults.8.gz
       
   185 +^debian/exim4-daemon-custom-dbg.debhelper.log
       
   186 +^debian/exim4-daemon-custom.debhelper.log
       
   187 +^debian/exim4-daemon-heavy-dbg.debhelper.log
       
   188 +^debian/exim4-daemon-heavy-dbg/DEBIAN/control
       
   189 +^debian/exim4-daemon-heavy-dbg/DEBIAN/md5sums
       
   190 +^debian/exim4-daemon-heavy-dbg/usr/lib/debug/usr/sbin/exim4
       
   191 +^debian/exim4-daemon-heavy-dbg/usr/share/doc/exim4-daemon-heavy-dbg/changelog.Debian.gz
       
   192 +^debian/exim4-daemon-heavy-dbg/usr/share/doc/exim4-daemon-heavy-dbg/copyright
       
   193 +^debian/exim4-daemon-heavy-dbg/usr/share/lintian/overrides/exim4-daemon-heavy-dbg
       
   194 +^debian/exim4-daemon-heavy.debhelper.log
       
   195 +^debian/exim4-daemon-heavy.postinst
       
   196 +^debian/exim4-daemon-heavy.postrm.debhelper
       
   197 +^debian/exim4-daemon-heavy.prerm
       
   198 +^debian/exim4-daemon-heavy.substvars
       
   199 +^debian/exim4-daemon-heavy/DEBIAN/config
       
   200 +^debian/exim4-daemon-heavy/DEBIAN/control
       
   201 +^debian/exim4-daemon-heavy/DEBIAN/md5sums
       
   202 +^debian/exim4-daemon-heavy/DEBIAN/postinst
       
   203 +^debian/exim4-daemon-heavy/DEBIAN/postrm
       
   204 +^debian/exim4-daemon-heavy/DEBIAN/prerm
       
   205 +^debian/exim4-daemon-heavy/DEBIAN/templates
       
   206 +^debian/exim4-daemon-heavy/usr/bin/mailq
       
   207 +^debian/exim4-daemon-heavy/usr/bin/newaliases
       
   208 +^debian/exim4-daemon-heavy/usr/lib/exim4/exim4
       
   209 +^debian/exim4-daemon-heavy/usr/lib/sendmail
       
   210 +^debian/exim4-daemon-heavy/usr/sbin/exim
       
   211 +^debian/exim4-daemon-heavy/usr/sbin/exim4
       
   212 +^debian/exim4-daemon-heavy/usr/sbin/rmail
       
   213 +^debian/exim4-daemon-heavy/usr/sbin/rsmtp
       
   214 +^debian/exim4-daemon-heavy/usr/sbin/runq
       
   215 +^debian/exim4-daemon-heavy/usr/sbin/sendmail
       
   216 +^debian/exim4-daemon-heavy/usr/share/bug/exim4-daemon-heavy/script
       
   217 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/EDITME.exim4-heavy.gz
       
   218 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/NEWS.Debian.gz
       
   219 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/README.Debian.gz
       
   220 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/changelog.Debian.gz
       
   221 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/changelog.gz
       
   222 +^debian/exim4-daemon-heavy/usr/share/doc/exim4-daemon-heavy/copyright
       
   223 +^debian/exim4-daemon-heavy/usr/share/lintian/overrides/exim4-daemon-heavy
       
   224 +^debian/exim4-daemon-heavy/usr/share/man/man8/exim4.8.gz
       
   225 +^debian/exim4-daemon-heavy/usr/share/man/man8/mailq.8.gz
       
   226 +^debian/exim4-daemon-heavy/usr/share/man/man8/newaliases.8.gz
       
   227 +^debian/exim4-daemon-heavy/usr/share/man/man8/rmail.8.gz
       
   228 +^debian/exim4-daemon-heavy/usr/share/man/man8/rsmtp.8.gz
       
   229 +^debian/exim4-daemon-heavy/usr/share/man/man8/runq.8.gz
       
   230 +^debian/exim4-daemon-heavy/usr/share/man/man8/sendmail.8.gz
       
   231 +^debian/exim4-daemon-light-dbg.debhelper.log
       
   232 +^debian/exim4-daemon-light-dbg/DEBIAN/control
       
   233 +^debian/exim4-daemon-light-dbg/DEBIAN/md5sums
       
   234 +^debian/exim4-daemon-light-dbg/usr/lib/debug/usr/sbin/exim4
       
   235 +^debian/exim4-daemon-light-dbg/usr/share/doc/exim4-daemon-light-dbg/changelog.Debian.gz
       
   236 +^debian/exim4-daemon-light-dbg/usr/share/doc/exim4-daemon-light-dbg/copyright
       
   237 +^debian/exim4-daemon-light-dbg/usr/share/lintian/overrides/exim4-daemon-light-dbg
       
   238 +^debian/exim4-daemon-light.debhelper.log
       
   239 +^debian/exim4-daemon-light.postrm.debhelper
       
   240 +^debian/exim4-daemon-light.substvars
       
   241 +^debian/exim4-daemon-light/DEBIAN/config
       
   242 +^debian/exim4-daemon-light/DEBIAN/control
       
   243 +^debian/exim4-daemon-light/DEBIAN/md5sums
       
   244 +^debian/exim4-daemon-light/DEBIAN/postinst
       
   245 +^debian/exim4-daemon-light/DEBIAN/postrm
       
   246 +^debian/exim4-daemon-light/DEBIAN/prerm
       
   247 +^debian/exim4-daemon-light/DEBIAN/templates
       
   248 +^debian/exim4-daemon-light/usr/bin/mailq
       
   249 +^debian/exim4-daemon-light/usr/bin/newaliases
       
   250 +^debian/exim4-daemon-light/usr/lib/exim4/exim4
       
   251 +^debian/exim4-daemon-light/usr/lib/sendmail
       
   252 +^debian/exim4-daemon-light/usr/sbin/exim
       
   253 +^debian/exim4-daemon-light/usr/sbin/exim4
       
   254 +^debian/exim4-daemon-light/usr/sbin/rmail
       
   255 +^debian/exim4-daemon-light/usr/sbin/rsmtp
       
   256 +^debian/exim4-daemon-light/usr/sbin/runq
       
   257 +^debian/exim4-daemon-light/usr/sbin/sendmail
       
   258 +^debian/exim4-daemon-light/usr/share/bug/exim4-daemon-light/script
       
   259 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/EDITME.exim4-light.gz
       
   260 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/NEWS.Debian.gz
       
   261 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/README.Debian.gz
       
   262 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/changelog.Debian.gz
       
   263 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/changelog.gz
       
   264 +^debian/exim4-daemon-light/usr/share/doc/exim4-daemon-light/copyright
       
   265 +^debian/exim4-daemon-light/usr/share/lintian/overrides/exim4-daemon-light
       
   266 +^debian/exim4-daemon-light/usr/share/man/man8/exim4.8.gz
       
   267 +^debian/exim4-daemon-light/usr/share/man/man8/mailq.8.gz
       
   268 +^debian/exim4-daemon-light/usr/share/man/man8/newaliases.8.gz
       
   269 +^debian/exim4-daemon-light/usr/share/man/man8/rmail.8.gz
       
   270 +^debian/exim4-daemon-light/usr/share/man/man8/rsmtp.8.gz
       
   271 +^debian/exim4-daemon-light/usr/share/man/man8/runq.8.gz
       
   272 +^debian/exim4-daemon-light/usr/share/man/man8/sendmail.8.gz
       
   273 +^debian/exim4-dbg.debhelper.log
       
   274 +^debian/exim4-dbg/DEBIAN/control
       
   275 +^debian/exim4-dbg/DEBIAN/md5sums
       
   276 +^debian/exim4-dbg/usr/lib/debug/usr/lib/exim4/eximon.bin
       
   277 +^debian/exim4-dbg/usr/lib/debug/usr/sbin/exim_dbmbuild
       
   278 +^debian/exim4-dbg/usr/lib/debug/usr/sbin/exim_dumpdb
       
   279 +^debian/exim4-dbg/usr/lib/debug/usr/sbin/exim_fixdb
       
   280 +^debian/exim4-dbg/usr/lib/debug/usr/sbin/exim_lock
       
   281 +^debian/exim4-dbg/usr/lib/debug/usr/sbin/exim_tidydb
       
   282 +^debian/exim4-dbg/usr/share/doc/exim4-dbg/changelog.Debian.gz
       
   283 +^debian/exim4-dbg/usr/share/doc/exim4-dbg/copyright
       
   284 +^debian/exim4-dbg/usr/share/lintian/overrides/exim4-dbg
       
   285 +^debian/exim4-dev.debhelper.log
       
   286 +^debian/exim4-dev/DEBIAN/control
       
   287 +^debian/exim4-dev/DEBIAN/md5sums
       
   288 +^debian/exim4-dev/usr/bin/exim4-localscan-plugin-config
       
   289 +^debian/exim4-dev/usr/include/exim4/config.h
       
   290 +^debian/exim4-dev/usr/include/exim4/local_scan.h
       
   291 +^debian/exim4-dev/usr/include/exim4/mytypes.h
       
   292 +^debian/exim4-dev/usr/include/exim4/store.h
       
   293 +^debian/exim4-dev/usr/share/doc/exim4-dev/README.Debian.gz
       
   294 +^debian/exim4-dev/usr/share/doc/exim4-dev/changelog.Debian.gz
       
   295 +^debian/exim4-dev/usr/share/doc/exim4-dev/changelog.gz
       
   296 +^debian/exim4-dev/usr/share/doc/exim4-dev/copyright
       
   297 +^debian/exim4-dev/usr/share/lintian/overrides/exim4-dev
       
   298 +^debian/exim4-dev/usr/share/man/man1/exim4-localscan-plugin-config.1.gz
       
   299 +^debian/exim4.debhelper.log
       
   300 +^debian/exim4.postrm.debhelper
       
   301 +^debian/exim4.substvars
       
   302 +^debian/exim4/DEBIAN/config
       
   303 +^debian/exim4/DEBIAN/control
       
   304 +^debian/exim4/DEBIAN/md5sums
       
   305 +^debian/exim4/DEBIAN/postinst
       
   306 +^debian/exim4/DEBIAN/postrm
       
   307 +^debian/exim4/DEBIAN/templates
       
   308 +^debian/exim4/usr/share/bug/exim4/script
       
   309 +^debian/exim4/usr/share/doc/exim4
       
   310 +^debian/exim4/usr/share/lintian/overrides/exim4
       
   311 +^debian/eximon4.debhelper.log
       
   312 +^debian/eximon4.postinst.debhelper
       
   313 +^debian/eximon4.postrm.debhelper
       
   314 +^debian/eximon4.substvars
       
   315 +^debian/eximon4/DEBIAN/control
       
   316 +^debian/eximon4/DEBIAN/md5sums
       
   317 +^debian/eximon4/DEBIAN/postinst
       
   318 +^debian/eximon4/DEBIAN/postrm
       
   319 +^debian/eximon4/usr/lib/exim4/eximon.bin
       
   320 +^debian/eximon4/usr/sbin/eximon
       
   321 +^debian/eximon4/usr/share/doc/eximon4/changelog.Debian.gz
       
   322 +^debian/eximon4/usr/share/doc/eximon4/copyright
       
   323 +^debian/eximon4/usr/share/lintian/overrides/eximon4
       
   324 +^debian/eximon4/usr/share/man/man8/eximon.8.gz
       
   325 +^debian/eximon4/usr/share/menu/eximon4
       
   326 +^debian/files
       
   327 +^installbase-stamp
       
   328 +^patch-stamp
       
   329 +^unpack-configs-stamp
       
   330 diff -r b4cc307a2719 debian/EDITME.exim4-light.diff
       
   331 --- a/debian/EDITME.exim4-light.diff	Thu Aug 13 12:59:19 2009 +0200
       
   332 +++ b/debian/EDITME.exim4-light.diff	Thu Aug 13 13:46:31 2009 +0200
       
   333 @@ -1,5 +1,5 @@
       
   334 ---- /tmp/dpep-work.wG8120/trunk/build-tree/src/EDITME	2007-07-17 11:04:08.000000000 +0200
       
   335 -+++ EDITME.exim4-light	2007-07-17 11:04:27.000000000 +0200
       
   336 +--- /home/luser/src/debian-packages/exim4-4.69/build-tree/src/EDITME	2009-08-10 15:37:12.000000000 +0200
       
   337 ++++ EDITME.exim4-light	2009-08-10 15:45:37.000000000 +0200
       
   338  @@ -100,7 +100,7 @@
       
   339   # /usr/local/sbin. The installation script will try to create this directory,
       
   340   # and any superior directories, if they do not exist.
       
   341 @@ -196,9 +196,15 @@
       
   342   
       
   343   
       
   344   #------------------------------------------------------------------------------
       
   345 -@@ -1149,3 +1156,6 @@
       
   346 +@@ -1148,4 +1155,12 @@
       
   347 + 
       
   348   # ENABLE_DISABLE_FSYNC=yes
       
   349   
       
   350 ++#------------------------------------------------------------------------------
       
   351 ++# support storage/retrieval of values to and from memcache servers via
       
   352 ++# expansions
       
   353 ++SUPPORT_MEMCACHE=yes
       
   354 ++
       
   355   # End of EDITME for Exim 4.
       
   356  +
       
   357  +# enable IPv6 support
       
   358 diff -r b4cc307a2719 debian/changelog
       
   359 --- a/debian/changelog	Thu Aug 13 12:59:19 2009 +0200
       
   360 +++ b/debian/changelog	Thu Aug 13 13:46:31 2009 +0200
       
   361 @@ -1,3 +1,10 @@
       
   362 +exim4 (4.69-9.1) unstable; urgency=low
       
   363 +
       
   364 +  * Non-maintainer upload.
       
   365 +  * memcache support
       
   366 +
       
   367 + -- Matthias Förste <foerste@schlittermann.de>  Thu, 13 Aug 2009 13:26:52 +0200
       
   368 +
       
   369  exim4 (4.69-9) unstable; urgency=medium
       
   370  
       
   371    * [update-exim4.conf]: Use POSIX character classes [:alnum:] or explicit
       
   372 diff -r b4cc307a2719 debian/patches/00list
       
   373 --- a/debian/patches/00list	Thu Aug 13 12:59:19 2009 +0200
       
   374 +++ b/debian/patches/00list	Thu Aug 13 13:46:31 2009 +0200
       
   375 @@ -12,3 +12,4 @@
       
   376  60_convert4r4
       
   377  66_enlarge-dh-parameters-size
       
   378  70_remove_exim-users_references
       
   379 +80_memcache
       
   380 diff -r b4cc307a2719 debian/patches/80_memcache.dpatch
       
   381 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   382 +++ b/debian/patches/80_memcache.dpatch	Thu Aug 13 13:46:31 2009 +0200
       
   383 @@ -0,0 +1,511 @@
       
   384 +#! /bin/sh /usr/share/dpatch/dpatch-run
       
   385 +## 80_memcache.dpatch by Matthias Förste <foerste@schlittermann.de>
       
   386 +##
       
   387 +## All lines beginning with `## DP:' are a description of the patch.
       
   388 +## DP: key/value storage/retrieval via memcache
       
   389 +
       
   390 +@DPATCH@
       
   391 +diff -urNad exim4-4.69~/build-tree/OS/Makefile-Base exim4-4.69/build-tree/OS/Makefile-Base
       
   392 +--- exim4-4.69~/build-tree/OS/Makefile-Base	2009-08-13 13:12:55.000000000 +0200
       
   393 ++++ exim4-4.69/build-tree/OS/Makefile-Base	2009-08-13 13:12:56.000000000 +0200
       
   394 +@@ -543,7 +543,7 @@
       
   395 + dns.o:           $(HDRS) dns.c
       
   396 + enq.o:           $(HDRS) enq.c
       
   397 + exim.o:          $(HDRS) exim.c
       
   398 +-expand.o:        $(HDRS) expand.c
       
   399 ++expand.o:        $(HDRS) memcache.h expand.c
       
   400 + filter.o:        $(HDRS) filter.c
       
   401 + filtertest.o:    $(HDRS) filtertest.c
       
   402 + globals.o:       $(HDRS) globals.c
       
   403 +diff -urNad exim4-4.69~/build-tree/doc/OptionLists.txt exim4-4.69/build-tree/doc/OptionLists.txt
       
   404 +--- exim4-4.69~/build-tree/doc/OptionLists.txt	2007-08-29 15:37:28.000000000 +0200
       
   405 ++++ exim4-4.69/build-tree/doc/OptionLists.txt	2009-08-13 13:12:56.000000000 +0200
       
   406 +@@ -11,7 +11,7 @@
       
   407 +   4. Those that can appear in the build time configuration for the Exim monitor
       
   408 +      (Local/eximon.conf).
       
   409 + 
       
   410 +-This file was last updated for Exim release 4.67.
       
   411 ++This file was last updated for Exim release 4.69.
       
   412 + 
       
   413 + 
       
   414 + 1. RUN TIME OPTIONS
       
   415 +@@ -887,6 +887,7 @@
       
   416 + SUPPORT_CRYPTEQ              optional     support crypteq (if no auths)
       
   417 + SUPPORT_MAILDIR              optional     support for maildir delivery
       
   418 + SUPPORT_MAILSTORE            optional     support for mailstore delivery
       
   419 ++SUPPORT_MEMCACHE             optional*    support for memcache storage and retrieval
       
   420 + SUPPORT_MBX                  optional     support for MBX delivery
       
   421 + SUPPORT_MOVE_FROZEN_MESSAGES optional*    support for frozen message moving
       
   422 + SUPPORT_PAM                  optional     support for PAM authentication
       
   423 +diff -urNad exim4-4.69~/build-tree/doc/memcache.txt exim4-4.69/build-tree/doc/memcache.txt
       
   424 +--- exim4-4.69~/build-tree/doc/memcache.txt	1970-01-01 01:00:00.000000000 +0100
       
   425 ++++ exim4-4.69/build-tree/doc/memcache.txt	2009-08-13 13:12:56.000000000 +0200
       
   426 +@@ -0,0 +1,72 @@
       
   427 ++* store some value under key; expands to 'true' if successful; expiration &
       
   428 ++  timeout are optional
       
   429 ++
       
   430 ++  ${memcache \
       
   431 ++    {+memcache_servers} \
       
   432 ++    {set} \
       
   433 ++    {namespace} \
       
   434 ++    {key} \
       
   435 ++    {value} \
       
   436 ++    {expiration} \
       
   437 ++    {timeout}}
       
   438 ++
       
   439 ++
       
   440 ++* lookup the value of some key; expands to 'true' if the key has been found;
       
   441 ++  stores the value in $value; timeout is optional
       
   442 ++
       
   443 ++  ${memcache \
       
   444 ++    {+memcache_servers} \
       
   445 ++    {get} \
       
   446 ++    {namespace} \
       
   447 ++    {key} \
       
   448 ++    {$value} \
       
   449 ++    {timeout}}
       
   450 ++
       
   451 ++
       
   452 ++Currently only tcp connections are supported. No sanity checks on arguments are
       
   453 ++done yet. You can use a hostlist, but its probably not useful. Each host is
       
   454 ++tried in the order listed until one succeeds. Expansion will fail if none
       
   455 ++suceeds.
       
   456 ++
       
   457 ++example usage for greylisting:
       
   458 ++
       
   459 ++  [...]
       
   460 ++
       
   461 ++  hostlist memcache_servers = <; host1:port1; host2:port2; host3
       
   462 ++
       
   463 ++  [...]
       
   464 ++
       
   465 ++  acl_check_rcpt:
       
   466 ++
       
   467 ++    # greylisting with memcache
       
   468 ++    # do we already have a timestamp for this sender/receiver combo? try to store
       
   469 ++    # one if we dont and defer if this succeeds, deny otherwise; accept the
       
   470 ++    # message if we find a timestamp which is older than 5 minutes, deny
       
   471 ++    # otherwise (if the timestamp is younger that is)
       
   472 ++    accept
       
   473 ++          logwrite = memcache \
       
   474 ++                  get \
       
   475 ++                  exim-lenny:${sender_address}*${local_part}@${domain}
       
   476 ++          condition = ${memcache \
       
   477 ++                  {+memcache_servers} \
       
   478 ++                  {get} \
       
   479 ++                  {exim-lenny:} \
       
   480 ++                  {${sender_address}*${local_part}@${domain}} \
       
   481 ++                  {$value}}
       
   482 ++          endpass
       
   483 ++          condition = ${if or { \
       
   484 ++                  {eq {$value}{}} \
       
   485 ++                  { > {$tod_epoch}{${eval: $value + 300}}} \
       
   486 ++                  }}
       
   487 ++    defer
       
   488 ++          logwrite = memcache \
       
   489 ++                  set \
       
   490 ++                  exim-lenny:${sender_address}*${local_part}@${domain} \
       
   491 ++                  $tod_epoch
       
   492 ++          condition = ${memcache \
       
   493 ++                  {+memcache_servers} \
       
   494 ++                  {set} \
       
   495 ++                  {exim-lenny:} \
       
   496 ++                  {${sender_address}*${local_part}@${domain}} \
       
   497 ++                  {$tod_epoch}}
       
   498 ++    deny
       
   499 +diff -urNad exim4-4.69~/build-tree/scripts/MakeLinks exim4-4.69/build-tree/scripts/MakeLinks
       
   500 +--- exim4-4.69~/build-tree/scripts/MakeLinks	2007-09-28 14:21:57.000000000 +0200
       
   501 ++++ exim4-4.69/build-tree/scripts/MakeLinks	2009-08-13 13:12:56.000000000 +0200
       
   502 +@@ -200,6 +200,7 @@
       
   503 + ln -s ../src/globals.h         globals.h
       
   504 + ln -s ../src/local_scan.h      local_scan.h
       
   505 + ln -s ../src/macros.h          macros.h
       
   506 ++ln -s ../src/memcache.h        memcache.h
       
   507 + ln -s ../src/mytypes.h         mytypes.h
       
   508 + ln -s ../src/osfunctions.h     osfunctions.h
       
   509 + ln -s ../src/store.h           store.h
       
   510 +diff -urNad exim4-4.69~/build-tree/src/config.h.defaults exim4-4.69/build-tree/src/config.h.defaults
       
   511 +--- exim4-4.69~/build-tree/src/config.h.defaults	2009-08-13 13:12:55.000000000 +0200
       
   512 ++++ exim4-4.69/build-tree/src/config.h.defaults	2009-08-13 13:12:56.000000000 +0200
       
   513 +@@ -122,6 +122,7 @@
       
   514 + #define SUPPORT_MAILDIR
       
   515 + #define SUPPORT_MAILSTORE
       
   516 + #define SUPPORT_MBX
       
   517 ++#define SUPPORT_MEMCACHE
       
   518 + #define SUPPORT_MOVE_FROZEN_MESSAGES
       
   519 + #define SUPPORT_PAM
       
   520 + #define SUPPORT_TLS
       
   521 +diff -urNad exim4-4.69~/build-tree/src/expand.c exim4-4.69/build-tree/src/expand.c
       
   522 +--- exim4-4.69~/build-tree/src/expand.c	2007-10-04 15:23:05.000000000 +0200
       
   523 ++++ exim4-4.69/build-tree/src/expand.c	2009-08-13 13:14:42.000000000 +0200
       
   524 +@@ -27,6 +27,10 @@
       
   525 + #include "lookups/ldap.h"
       
   526 + #endif
       
   527 + 
       
   528 ++#ifdef SUPPORT_MEMCACHE
       
   529 ++#include "memcache.h"
       
   530 ++#endif
       
   531 ++
       
   532 + #ifdef SUPPORT_CRYPTEQ
       
   533 + #ifdef CRYPT_H
       
   534 + #include <crypt.h>
       
   535 +@@ -113,6 +117,7 @@
       
   536 +   US"length",
       
   537 +   US"lookup",
       
   538 +   US"map",
       
   539 ++  US"memcache",
       
   540 +   US"nhash",
       
   541 +   US"perl",
       
   542 +   US"prvs",
       
   543 +@@ -135,6 +140,7 @@
       
   544 +   EITEM_LENGTH,
       
   545 +   EITEM_LOOKUP,
       
   546 +   EITEM_MAP,
       
   547 ++  EITEM_MEMCACHE,
       
   548 +   EITEM_NHASH,
       
   549 +   EITEM_PERL,
       
   550 +   EITEM_PRVS,
       
   551 +@@ -4980,6 +4986,231 @@
       
   552 +         }
       
   553 +       }
       
   554 +     #endif /* EXPAND_DLFUNC */
       
   555 ++
       
   556 ++    case EITEM_MEMCACHE:
       
   557 ++    #ifndef SUPPORT_MEMCACHE
       
   558 ++    expand_string_message = US"\"${memcache\" encountered, but this facility "
       
   559 ++      "is not included in this binary";
       
   560 ++    goto EXPAND_FAILED;
       
   561 ++
       
   562 ++    #else   /* SUPPORT_MEMCACHE */
       
   563 ++    /* we dont use flags right now - should we? */
       
   564 ++
       
   565 ++      {
       
   566 ++        uschar *memcache_timeout = US"0s";   /* with time unit postfix, fex 7d */
       
   567 ++        uschar *memcache_expiration = US"0"; /* in seconds */
       
   568 ++        int i_memcache_expiration = -1, i_memcache_timeout = -1;
       
   569 ++        int memcache_operation;
       
   570 ++        uschar *sub_arg[7];
       
   571 ++
       
   572 ++        uschar *memcache_servers[MEMCACHE_SERVERS_MAX];
       
   573 ++        tree_node *memcache_hosts_node;
       
   574 ++        uschar *memcache_hosts_string, *memcache_op_string;
       
   575 ++        uschar *memcache_host;
       
   576 ++        int memcache_hostlist_separator = 0;
       
   577 ++        int i_memcache_server = 0;
       
   578 ++        int n_memcache_servers = 0;
       
   579 ++
       
   580 ++        uschar *memcache_request;
       
   581 ++        int memcache_request_len;
       
   582 ++        BOOL memcache_request_failed = FALSE;
       
   583 ++
       
   584 ++        uschar *memcache_readsocket_result;
       
   585 ++
       
   586 ++        if ((expand_forbid & RDO_MEMCACHE) != 0)
       
   587 ++          {
       
   588 ++          expand_string_message = US"memcache storage/retrieval are not permitted";
       
   589 ++          goto EXPAND_FAILED;
       
   590 ++          }
       
   591 ++
       
   592 ++        /* read up to 7 args */
       
   593 ++        switch(read_subs(sub_arg, 7, 5, &s, skipping, TRUE, US"memcache"))
       
   594 ++          {
       
   595 ++          case 1: goto EXPAND_FAILED_CURLY;
       
   596 ++          case 2:
       
   597 ++          case 3: goto EXPAND_FAILED;
       
   598 ++          }
       
   599 ++
       
   600 ++        /* validate operation and set argument indices */
       
   601 ++        memcache_op_string = string_sprintf(US"%S", sub_arg[1]);
       
   602 ++        if (Ustrcmp(memcache_op_string, US"set") == 0)
       
   603 ++          {
       
   604 ++          i_memcache_expiration = 5; i_memcache_timeout = 6; memcache_operation = MEMCACHE_OP_SET;
       
   605 ++          }
       
   606 ++        else if (Ustrcmp(memcache_op_string, US"get") == 0)
       
   607 ++          {
       
   608 ++          i_memcache_timeout = 5; memcache_operation = MEMCACHE_OP_GET;
       
   609 ++          }
       
   610 ++        else
       
   611 ++          {
       
   612 ++          expand_string_message = string_sprintf(US"invalid memcache operation '%s'",
       
   613 ++            sub_arg[1]);
       
   614 ++          goto EXPAND_FAILED;
       
   615 ++          }
       
   616 ++
       
   617 ++        /* expiration */
       
   618 ++        if (i_memcache_expiration >=0 && sub_arg[i_memcache_expiration] != NULL)
       
   619 ++          {
       
   620 ++          memcache_expiration = string_sprintf(US"%d", readconf_readtime(sub_arg[i_memcache_expiration], 0, FALSE));
       
   621 ++          if (memcache_expiration < 0)
       
   622 ++            {
       
   623 ++            expand_string_message = string_sprintf(US"bad time value %s",
       
   624 ++              sub_arg[i_memcache_expiration]);
       
   625 ++            goto EXPAND_FAILED;
       
   626 ++            }
       
   627 ++          }
       
   628 ++
       
   629 ++        /* now that we have an expiration time we should be able to build the request string */
       
   630 ++        if (memcache_operation == MEMCACHE_OP_SET)
       
   631 ++          {
       
   632 ++          uschar* data = sub_arg[4];
       
   633 ++          int data_len = Ustrlen(data);
       
   634 ++
       
   635 ++          /* writeop [namespace]key flags expiration size-in-bytes [noreply] */
       
   636 ++          uschar *cmd = string_sprintf(US"%s %s%s %d %s %d %s", 
       
   637 ++              US"set",
       
   638 ++              sub_arg[2],
       
   639 ++              sub_arg[3],
       
   640 ++              0,
       
   641 ++              memcache_expiration,
       
   642 ++              data_len,
       
   643 ++              US"");
       
   644 ++          int cmd_len = Ustrlen(cmd);
       
   645 ++
       
   646 ++          memcache_request = string_sprintf(US"%s\r\n%s\r\n", cmd, data);
       
   647 ++          memcache_request_len = Ustrlen(memcache_request);
       
   648 ++          }
       
   649 ++        else if (memcache_operation == MEMCACHE_OP_GET)
       
   650 ++          {
       
   651 ++          memcache_request = string_sprintf(US"%s %s%s\r\n", US"get", sub_arg[2], sub_arg[3]);
       
   652 ++          memcache_request_len = Ustrlen(memcache_request);
       
   653 ++          }
       
   654 ++        else
       
   655 ++          {
       
   656 ++          expand_string_message = string_sprintf(US"invalid memcache operation: '%s'", memcache_op_string);
       
   657 ++          goto EXPAND_FAILED;
       
   658 ++          }
       
   659 ++
       
   660 ++        /* memcache servers - we expect either a named list or just a list */
       
   661 ++        if (sub_arg[0][0] == '+')
       
   662 ++          {
       
   663 ++          if (NULL == (memcache_hosts_node = tree_search(hostlist_anchor, sub_arg[0] + sizeof(uschar))))
       
   664 ++            {
       
   665 ++            expand_string_message = string_sprintf(US"named list '%s' not found",
       
   666 ++              sub_arg[0]);
       
   667 ++            goto EXPAND_FAILED;
       
   668 ++            }
       
   669 ++            memcache_hosts_string = ((namedlist_block *) memcache_hosts_node->data.ptr)->string;
       
   670 ++          }
       
   671 ++        else
       
   672 ++          {
       
   673 ++            memcache_hosts_string = sub_arg[0];
       
   674 ++          }
       
   675 ++
       
   676 ++        while ((NULL != (memcache_host = string_nextinlist(&memcache_hosts_string, &memcache_hostlist_separator, NULL, 0))))
       
   677 ++          {
       
   678 ++          if (i_memcache_server >= MEMCACHE_SERVERS_MAX)
       
   679 ++            {
       
   680 ++            expand_string_message = string_sprintf(US"too many memcache servers, %d is max",
       
   681 ++              MEMCACHE_SERVERS_MAX);
       
   682 ++            goto EXPAND_FAILED;
       
   683 ++            }
       
   684 ++          memcache_servers[i_memcache_server] = memcache_host;
       
   685 ++          i_memcache_server++;
       
   686 ++          }
       
   687 ++        n_memcache_servers = i_memcache_server;
       
   688 ++
       
   689 ++        /* talk to server(s) unless we are skipping */
       
   690 ++        if (!skipping)
       
   691 ++          {
       
   692 ++          for (i_memcache_server = 0; i_memcache_server < n_memcache_servers; 
       
   693 ++                 i_memcache_server++)
       
   694 ++            {
       
   695 ++
       
   696 ++            uschar *memcache_server_name = memcache_servers[i_memcache_server];
       
   697 ++            uschar *memcache_port_name = Ustrrchr(memcache_server_name, ':');
       
   698 ++            uschar *memcache_default_port_name = US"11211";
       
   699 ++
       
   700 ++            /* Sort out the port */
       
   701 ++            if (memcache_port_name == NULL)
       
   702 ++              {
       
   703 ++              memcache_port_name = memcache_default_port_name;
       
   704 ++              }
       
   705 ++            else
       
   706 ++              {
       
   707 ++              *memcache_port_name++ = 0;           /* Terminate server name */
       
   708 ++              }
       
   709 ++
       
   710 ++            uschar *memcache_server_readsocket =
       
   711 ++              string_sprintf(US"${readsocket{inet:%s:%s}{%s}{%s}}",
       
   712 ++              memcache_server_name,
       
   713 ++              memcache_port_name,
       
   714 ++              memcache_request,
       
   715 ++              sub_arg[i_memcache_timeout] == NULL ? memcache_timeout : sub_arg[i_memcache_timeout]);
       
   716 ++            DEBUG(D_memcache)
       
   717 ++              {
       
   718 ++              debug_printf("readsocket expansion item: '%s'\n", memcache_server_readsocket);
       
   719 ++              }
       
   720 ++            memcache_readsocket_result = expand_string(memcache_server_readsocket);
       
   721 ++            if (memcache_readsocket_result != NULL) 
       
   722 ++              {
       
   723 ++              if (memcache_operation == MEMCACHE_OP_GET
       
   724 ++                  && 0 == Ustrncmp(memcache_readsocket_result, US"VALUE ", Ustrlen(US"VALUE ")))
       
   725 ++                {
       
   726 ++                /* we tried to use expand_gettokened but it segfaults and we
       
   727 ++                   didnt find out why */
       
   728 ++                uschar *memcache_value_size = memcache_readsocket_result;
       
   729 ++                int i;
       
   730 ++                for (i = 0; i < 3; i++) { memcache_value_size = Ustrchr(memcache_value_size, ' ') + 1; }
       
   731 ++
       
   732 ++                lookup_value = strstr(memcache_readsocket_result, "\r\n") + Ustrlen("\r\n");
       
   733 ++                lookup_value[
       
   734 ++                  Ustrtol(memcache_value_size,
       
   735 ++                      NULL,
       
   736 ++                      0)] = 0;
       
   737 ++
       
   738 ++                DEBUG(D_memcache) { debug_printf("lookup_value: '%s'\n", lookup_value); }
       
   739 ++
       
   740 ++                }
       
   741 ++              else if (memcache_operation == MEMCACHE_OP_SET
       
   742 ++                  && 0 == Ustrcmp(memcache_readsocket_result, US"STORED\r\n"))
       
   743 ++                {
       
   744 ++                }
       
   745 ++              else
       
   746 ++                {
       
   747 ++                /* something went wrong - try something else */
       
   748 ++                memcache_request_failed = TRUE;
       
   749 ++                DEBUG(D_memcache)
       
   750 ++                  {
       
   751 ++                  debug_printf("memcache operation '%s' failed: '%s'\n",
       
   752 ++                      memcache_op_string,
       
   753 ++                      memcache_readsocket_result);
       
   754 ++                  }
       
   755 ++                continue;
       
   756 ++                }
       
   757 ++
       
   758 ++              yield = string_cat(yield,
       
   759 ++                &size,
       
   760 ++                &ptr,
       
   761 ++                US"yes",
       
   762 ++                Ustrlen(US"yes"));
       
   763 ++              break; 
       
   764 ++              }
       
   765 ++
       
   766 ++            }
       
   767 ++
       
   768 ++            if (memcache_request_failed) 
       
   769 ++              {
       
   770 ++              /* every try failed if we come here */
       
   771 ++              expand_string_message = 
       
   772 ++                string_sprintf(US"all memcache servers failed - last error was: '%s'",
       
   773 ++                expand_string_message);
       
   774 ++              goto EXPAND_FAILED;
       
   775 ++              }
       
   776 ++          }
       
   777 ++        continue;
       
   778 ++      }
       
   779 ++    #endif /* SUPPORT_MEMCACHE */
       
   780 +     }
       
   781 + 
       
   782 +   /* Control reaches here if the name is not recognized as one of the more
       
   783 +diff -urNad exim4-4.69~/build-tree/src/globals.c exim4-4.69/build-tree/src/globals.c
       
   784 +--- exim4-4.69~/build-tree/src/globals.c	2009-08-13 13:12:55.000000000 +0200
       
   785 ++++ exim4-4.69/build-tree/src/globals.c	2009-08-13 13:12:56.000000000 +0200
       
   786 +@@ -451,6 +451,7 @@
       
   787 +   { US"load",           D_load },
       
   788 +   { US"local_scan",     D_local_scan },
       
   789 +   { US"lookup",         D_lookup },
       
   790 ++  { US"memcache",       D_memcache },
       
   791 +   { US"memory",         D_memory },
       
   792 +   { US"pid",            D_pid },
       
   793 +   { US"process_info",   D_process_info },
       
   794 +diff -urNad exim4-4.69~/build-tree/src/macros.h exim4-4.69/build-tree/src/macros.h
       
   795 +--- exim4-4.69~/build-tree/src/macros.h	2007-08-22 12:10:23.000000000 +0200
       
   796 ++++ exim4-4.69/build-tree/src/macros.h	2009-08-13 13:12:56.000000000 +0200
       
   797 +@@ -313,19 +313,20 @@
       
   798 + #define D_load                       0x00008000
       
   799 + #define D_lookup                     0x00010000
       
   800 + #define D_memory                     0x00020000
       
   801 +-#define D_pid                        0x00040000
       
   802 +-#define D_process_info               0x00080000
       
   803 +-#define D_queue_run                  0x00100000
       
   804 +-#define D_receive                    0x00200000
       
   805 +-#define D_resolver                   0x00400000
       
   806 +-#define D_retry                      0x00800000
       
   807 +-#define D_rewrite                    0x01000000
       
   808 +-#define D_route                      0x02000000
       
   809 +-#define D_timestamp                  0x04000000
       
   810 +-#define D_tls                        0x08000000
       
   811 +-#define D_transport                  0x10000000
       
   812 +-#define D_uid                        0x20000000
       
   813 +-#define D_verify                     0x40000000
       
   814 ++#define D_memcache                   0x00040000
       
   815 ++#define D_pid                        0x00080000
       
   816 ++#define D_process_info               0x00100000
       
   817 ++#define D_queue_run                  0x00200000
       
   818 ++#define D_receive                    0x00400000
       
   819 ++#define D_resolver                   0x00800000
       
   820 ++#define D_retry                      0x01000000
       
   821 ++#define D_rewrite                    0x02000000
       
   822 ++#define D_route                      0x04000000
       
   823 ++#define D_timestamp                  0x08000000
       
   824 ++#define D_tls                        0x10000000
       
   825 ++#define D_transport                  0x20000000
       
   826 ++#define D_uid                        0x40000000
       
   827 ++#define D_verify                     0x80000000
       
   828 + 
       
   829 + /* The D_all value must always have all bits set, as it is recognized specially
       
   830 + by the function that decodes debug and log selectors. This is to enable it to
       
   831 +@@ -515,21 +516,21 @@
       
   832 + #define RDO_INCLUDE      0x00000100  /* Forbid :include: */
       
   833 + #define RDO_LOG          0x00000200  /* Forbid "log" */
       
   834 + #define RDO_LOOKUP       0x00000400  /* Forbid "lookup" in expansion in filter */
       
   835 +-#define RDO_PERL         0x00000800  /* Forbid "perl" in expansion in filter */
       
   836 +-#define RDO_READFILE     0x00001000  /* Forbid "readfile" in exp in filter */
       
   837 +-#define RDO_READSOCK     0x00002000  /* Forbid "readsocket" in exp in filter */
       
   838 +-#define RDO_RUN          0x00004000  /* Forbid "run" in expansion in filter */
       
   839 +-#define RDO_DLFUNC       0x00008000  /* Forbid "dlfunc" in expansion in filter */
       
   840 +-#define RDO_REALLOG      0x00010000  /* Really do log (not testing/verifying) */
       
   841 +-#define RDO_REWRITE      0x00020000  /* Rewrite generated addresses */
       
   842 +-#define RDO_EXIM_FILTER  0x00040000  /* Forbid Exim filters */
       
   843 +-#define RDO_SIEVE_FILTER 0x00080000  /* Forbid Sieve filters */
       
   844 +-#define RDO_PREPEND_HOME 0x00100000  /* Prepend $home to relative paths in Exim filter save commands */
       
   845 +-
       
   846 ++#define RDO_MEMCACHE     0x00000800  /* Forbid "memcache" in expansion in filter */
       
   847 ++#define RDO_PERL         0x00001000  /* Forbid "perl" in expansion in filter */
       
   848 ++#define RDO_READFILE     0x00002000  /* Forbid "readfile" in exp in filter */
       
   849 ++#define RDO_READSOCK     0x00004000  /* Forbid "readsocket" in exp in filter */
       
   850 ++#define RDO_RUN          0x00008000  /* Forbid "run" in expansion in filter */
       
   851 ++#define RDO_DLFUNC       0x00010000  /* Forbid "dlfunc" in expansion in filter */
       
   852 ++#define RDO_REALLOG      0x00020000  /* Really do log (not testing/verifying) */
       
   853 ++#define RDO_REWRITE      0x00040000  /* Rewrite generated addresses */
       
   854 ++#define RDO_EXIM_FILTER  0x00080000  /* Forbid Exim filters */
       
   855 ++#define RDO_SIEVE_FILTER 0x00100000  /* Forbid Sieve filters */
       
   856 ++#define RDO_PREPEND_HOME 0x00200000  /* Prepend $home to relative paths in Exim filter save commands */
       
   857 + /* This is the set that apply to expansions in filters */
       
   858 + 
       
   859 + #define RDO_FILTER_EXPANSIONS \
       
   860 +-  (RDO_EXISTS|RDO_LOOKUP|RDO_PERL|RDO_READFILE|RDO_READSOCK|RDO_RUN|RDO_DLFUNC)
       
   861 ++  (RDO_EXISTS|RDO_LOOKUP|RDO_MEMCACHE|RDO_PERL|RDO_READFILE|RDO_READSOCK|RDO_RUN|RDO_DLFUNC)
       
   862 + 
       
   863 + /* As well as the RDO bits themselves, we need the bit numbers in order to
       
   864 + access (most of) the individual bits as separate options. This could be
       
   865 +@@ -537,8 +538,9 @@
       
   866 + 
       
   867 + enum { RDON_BLACKHOLE, RDON_DEFER, RDON_EACCES, RDON_ENOTDIR, RDON_EXISTS,
       
   868 +   RDON_FAIL, RDON_FILTER, RDON_FREEZE, RDON_INCLUDE, RDON_LOG, RDON_LOOKUP,
       
   869 +-  RDON_PERL, RDON_READFILE, RDON_READSOCK, RDON_RUN, RDON_DLFUNC, RDON_REALLOG,
       
   870 +-  RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER, RDON_PREPEND_HOME };
       
   871 ++  RDON_MEMCACHE, RDON_PERL, RDON_READFILE, RDON_READSOCK, RDON_RUN,
       
   872 ++  RDON_DLFUNC, RDON_REALLOG, RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER,
       
   873 ++  RDON_PREPEND_HOME };
       
   874 + 
       
   875 + /* Results of filter or forward file processing. Some are only from a filter;
       
   876 + some are only from a forward file. */
       
   877 +diff -urNad exim4-4.69~/build-tree/src/memcache.h exim4-4.69/build-tree/src/memcache.h
       
   878 +--- exim4-4.69~/build-tree/src/memcache.h	1970-01-01 01:00:00.000000000 +0100
       
   879 ++++ exim4-4.69/build-tree/src/memcache.h	2009-08-13 13:12:56.000000000 +0200
       
   880 +@@ -0,0 +1,14 @@
       
   881 ++#ifndef MEMCACHE_H
       
   882 ++
       
   883 ++#define MEMCACHE_SERVERS_MAX 16
       
   884 ++#define MEMCACHE_OP_SET 0
       
   885 ++#define MEMCACHE_OP_GET 1
       
   886 ++
       
   887 ++/*
       
   888 ++extern void memcache_addhost(uschar *, uschar *, void *);
       
   889 ++*/
       
   890 ++/* host list */
       
   891 ++
       
   892 ++/* put declarations before */
       
   893 ++#define MEMCACHE_H
       
   894 ++#endif