Index: ossp-pkg/lmtp2nntp/lmtp2nntp_config.c RCS File: /v/ossp/cvs/ossp-pkg/lmtp2nntp/lmtp2nntp_config.c,v rcsdiff -q -kk '-r1.93' '-r1.94' -u '/v/ossp/cvs/ossp-pkg/lmtp2nntp/lmtp2nntp_config.c,v' 2>/dev/null --- lmtp2nntp_config.c 2003/02/12 16:16:29 1.93 +++ lmtp2nntp_config.c 2004/04/02 08:22:46 1.94 @@ -361,6 +361,8 @@ /* --bind SINGLE */ try { + char *cp; + if ( (val_get(ctx->val, "option.bind", &ov) != VAL_OK) || (ov->ndata < 0) || (ov->ndata == 1 && ov->data.s == NULL) @@ -434,7 +436,13 @@ } /* otherwise assume INET socket */ else { - if ((sa_rc = sa_addr_u2a(ctx->saaServerbind, "inet://%s", ov->data.s)) != SA_OK) { + cp = ov->data.s; + if (strrchr(cp, ':') == NULL) + cp = str_concat(cp, ":24", NULL); /* http://www.iana.org/assignments/port-numbers (and names) */ + else + cp = str_concat(cp, NULL); /* prepare for free() */ + logbook(ctx->l2, L2_LEVEL_DEBUG, "data.s = \"%s\", cp = \"%s\"", ov->data.s, cp); + if ((sa_rc = sa_addr_u2a(ctx->saaServerbind, "inet://%s", cp)) != SA_OK) { logbook(ctx->l2, L2_LEVEL_ERROR, "option --bind, parsing alternate IO guessing INET socket (%s) failed with \"%s\"", ov->data.s, sa_error(sa_rc)); throw(0,0,0); } @@ -442,6 +450,7 @@ logbook(ctx->l2, L2_LEVEL_ERROR, "option --bind, bind (%s) failed with \"%s\"", ov->data.s, sa_error(sa_rc)); throw(0,0,0); } + free(cp); } /* for either sockets */ if ((sa_rc = sa_listen(ctx->saServerbind, -1)) != SA_OK) { @@ -496,11 +505,11 @@ if ((ctx->pns = (struct ns *)malloc(ov->ndata * sizeof(struct ns))) == NULL) throw(0,0,0); for (i = 0; i < ov->ndata;) { cp = (ov->data.m)[i]; - logbook(ctx->l2, L2_LEVEL_DEBUG, "cp = (data.m)[%d] = \"%s\"", i, cp); if (strrchr(cp, ':') == NULL) cp = str_concat(cp, ":nntp", NULL); /* http://www.iana.org/assignments/port-numbers (and names) */ else cp = str_concat(cp, NULL); /* prepare for free() */ + logbook(ctx->l2, L2_LEVEL_DEBUG, "(data.m)[%d] = \"%s\", cp = \"%s\"", i, (ov->data.m)[i], cp); if ((sa_rc = sa_addr_create(&ctx->pns[i].saa)) != SA_OK) { logbook(ctx->l2, L2_LEVEL_ERROR, "option --destination, create address (internal) failed with \"%s\"", sa_error(sa_rc)); throw(0,0,0);