Bugfix: the proxymap client didn't properly propagate the
postmap (postalias) -r and -w options to the proxymap server.
File: util/dict.h.
+
+ Workaround: force synchronous updates in the proxymap server
+ so that maps will be in a consistent state between updates.
+ File: proxymap/proxymap.c.
ination
logs
- * The proxymap(8) servers provide read-only table lookup service to Postfix
- processes. This overcomes chroot restrictions, and reduces the number of
- open lookup tables by sharing one open table among multiple processes.
+ * The proxymap(8) servers provide read-only and read-write table lookup
+ service to Postfix processes. This overcomes chroot restrictions, reduces
+ the number of open lookup tables by sharing one open table among multiple
+ processes, and implements single-updater tables.
* The scache(8) server maintains the connection cache for the Postfix smtp(8)
client. When connection caching is enabled for selected destinations, the
</table>
-<li> <p> The <a href="proxymap.8.html">proxymap(8)</a> servers provide read-only table lookup
+<li> <p> The <a href="proxymap.8.html">proxymap(8)</a> servers provide read-only and read-write
+table lookup
service to Postfix processes. This overcomes chroot restrictions,
-and reduces the number of open lookup tables by sharing one open
-table among multiple processes. </p>
+reduces the number of open lookup tables by sharing one open
+table among multiple processes, and implements single-updater
+tables. </p>
<li> <p> The <a href="scache.8.html">scache(8)</a> server maintains the connection cache for
the Postfix <a href="smtp.8.html">smtp(8)</a> client. When connection caching is enabled for
To implement single-updater maps, specify a process
limit of 1 in the <a href="master.5.html">master.cf</a> file entry for the
- proxywrite service.
+ <b>proxywrite</b> service.
This request is supported in Postfix 2.5 and later.
as with the \fBopen\fR request.
.sp
To implement single-updater maps, specify a process limit
-of 1 in the master.cf file entry for the proxywrite service.
+of 1 in the master.cf file entry for the \fBproxywrite\fR
+service.
.sp
This request is supported in Postfix 2.5 and later.
.PP
</table>
-<li> <p> The proxymap(8) servers provide read-only table lookup
+<li> <p> The proxymap(8) servers provide read-only and read-write
+table lookup
service to Postfix processes. This overcomes chroot restrictions,
-and reduces the number of open lookup tables by sharing one open
-table among multiple processes. </p>
+reduces the number of open lookup tables by sharing one open
+table among multiple processes, and implements single-updater
+tables. </p>
<li> <p> The scache(8) server maintains the connection cache for
the Postfix smtp(8) client. When connection caching is enabled for
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "2007111203"
+#define MAIL_RELEASE_DATE "2007111204"
#define MAIL_VERSION_NUMBER "2.5"
#ifdef SNAPSHOT
/* as with the \fBopen\fR request.
/* .sp
/* To implement single-updater maps, specify a process limit
-/* of 1 in the master.cf file entry for the proxywrite service.
+/* of 1 in the master.cf file entry for the \fBproxywrite\fR
+/* service.
/* .sp
/* This request is supported in Postfix 2.5 and later.
/* .PP
request_flags);
if (dict == 0)
msg_panic("proxy_map_find: dict_open null result");
- if (proxy_writer)
- dict->flags |= DICT_FLAG_SYNC_UPDATE;
dict_register(STR(map_type_name_flags), dict);
return (dict);
}
/*
* Process the request.
+ *
+ * XXX We don't close maps, so we must turn on synchronous update to ensure
+ * that the on-disk data is in a consistent state between updates.
+ *
+ * XXX We ignore duplicates, because the proxymap server would abort
+ * otherwise.
*/
if (attr_scan(client_stream, ATTR_FLAG_STRICT,
ATTR_TYPE_STR, MAIL_ATTR_TABLE, request_map,
/* void */ ;
} else {
dict->flags = ((dict->flags & ~DICT_FLAG_RQST_MASK)
- | (request_flags & DICT_FLAG_RQST_MASK));
+ | (request_flags & DICT_FLAG_RQST_MASK)
+ | DICT_FLAG_SYNC_UPDATE | DICT_FLAG_DUP_REPLACE);
dict_put(dict, STR(request_key), STR(request_value));
reply_status = PROXY_STAT_OK;
}