Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/gnu/dist/postfix/src/master fix bug in original postfix rega...
details: https://anonhg.NetBSD.org/src/rev/33f9ce7d4c82
branches: trunk
changeset: 507936:33f9ce7d4c82
user: itojun <itojun%NetBSD.org@localhost>
date: Tue Apr 03 11:59:04 2001 +0000
description:
fix bug in original postfix regarding to "host:port" syntax in master.cf.
diffstat:
gnu/dist/postfix/src/master/master.h | 3 +++
gnu/dist/postfix/src/master/master_ent.c | 17 ++++++++++++++++-
2 files changed, 19 insertions(+), 1 deletions(-)
diffs (75 lines):
diff -r dfc57f5106d0 -r 33f9ce7d4c82 gnu/dist/postfix/src/master/master.h
--- a/gnu/dist/postfix/src/master/master.h Tue Apr 03 11:51:33 2001 +0000
+++ b/gnu/dist/postfix/src/master/master.h Tue Apr 03 11:59:04 2001 +0000
@@ -26,6 +26,9 @@
union {
struct INET_ADDR_LIST *inet;
} addr_list;
+ union {
+ struct INET_ADDR_LIST *inet;
+ } addr_list_buf;
int max_proc; /* upper bound on # processes */
char *path; /* command pathname */
struct ARGV *args; /* argument vector */
diff -r dfc57f5106d0 -r 33f9ce7d4c82 gnu/dist/postfix/src/master/master_ent.c
--- a/gnu/dist/postfix/src/master/master_ent.c Tue Apr 03 11:51:33 2001 +0000
+++ b/gnu/dist/postfix/src/master/master_ent.c Tue Apr 03 11:59:04 2001 +0000
@@ -91,6 +91,7 @@
#include <mail_params.h>
#include <own_inet_addr.h>
#include <wildcard_inet_addr.h>
+#include <inet_util.h>
/* Local stuff. */
@@ -223,6 +224,7 @@
MASTER_SERV *serv;
char *cp;
char *name;
+ char *addr, *port;
char *transport;
int private;
int unprivileged; /* passed on to child */
@@ -230,6 +232,7 @@
char *command;
int n;
char *bufp;
+ char *atmp;
if (master_fp == 0)
msg_panic("get_master_ent: config file not open");
@@ -271,7 +274,16 @@
transport = get_str_ent(&bufp, "transport type", (char *) 0);
if (STR_SAME(transport, MASTER_XPORT_NAME_INET)) {
serv->type = MASTER_SERV_TYPE_INET;
- if (strcasecmp(var_inet_interfaces, DEF_INET_INTERFACES) == 0) {
+ atmp = inet_parse(name, &addr, &port);
+ if (addr && *addr) {
+ serv->addr_list.inet = serv->addr_list_buf.inet =
+ (INET_ADDR_LIST *) mymalloc(sizeof(*serv->addr_list_buf.inet));
+ inet_addr_list_init(serv->addr_list.inet);
+ inet_addr_host(serv->addr_list.inet, addr);
+ serv->listen_fd_count = serv->addr_list.inet->used;
+ /* avoid issue with free, assume strlen(name) > strlen(port) */
+ strcpy(name, port);
+ } else if (strcasecmp(var_inet_interfaces, DEF_INET_INTERFACES) == 0) {
#ifdef INET6
serv->addr_list.inet = wildcard_inet_addr_list();
serv->listen_fd_count = serv->addr_list.inet->used;
@@ -283,6 +295,7 @@
serv->addr_list.inet = own_inet_addr_list(); /* virtual */
serv->listen_fd_count = serv->addr_list.inet->used;
}
+ myfree(atmp);
} else if (STR_SAME(transport, MASTER_XPORT_NAME_UNIX)) {
serv->type = MASTER_SERV_TYPE_UNIX;
serv->listen_fd_count = 1;
@@ -455,6 +468,8 @@
/*
* Undo what get_master_ent() created.
*/
+ if (serv->type == MASTER_SERV_TYPE_INET && serv->addr_list_buf.inet)
+ myfree((char *)serv->addr_list_buf.inet);
myfree(serv->name);
myfree(serv->path);
argv_free(serv->args);
Home |
Main Index |
Thread Index |
Old Index