Index: ossp-pkg/lmtp2nntp/lmtp2nntp_config.c RCS File: /v/ossp/cvs/ossp-pkg/lmtp2nntp/lmtp2nntp_config.c,v rcsdiff -q -kk '-r1.43' '-r1.44' -u '/v/ossp/cvs/ossp-pkg/lmtp2nntp/lmtp2nntp_config.c,v' 2>/dev/null --- lmtp2nntp_config.c 2002/02/05 15:58:21 1.43 +++ lmtp2nntp_config.c 2002/02/06 13:51:38 1.44 @@ -490,9 +490,12 @@ log2(ctx, ERROR, "option --destination, creating TCP socket (%s) failed with \"%s\"", cp /*FIXME again, option vs. config */, sa_error(rc)); throw(0,0,0); } + ctx->pns[i].nntp = NULL; + ctx->pns[i].rc = NNTP_OK; + ctx->pns[i].l2 = ctx->l2; free(cp); + ctx->nns = i; } - ctx->nns = i; } } catch (ex) Index: ossp-pkg/lmtp2nntp/lmtp2nntp_main.c RCS File: /v/ossp/cvs/ossp-pkg/lmtp2nntp/lmtp2nntp_main.c,v rcsdiff -q -kk '-r1.37' '-r1.38' -u '/v/ossp/cvs/ossp-pkg/lmtp2nntp/lmtp2nntp_main.c,v' 2>/dev/null --- lmtp2nntp_main.c 2002/02/05 14:56:47 1.37 +++ lmtp2nntp_main.c 2002/02/06 13:51:38 1.38 @@ -344,7 +344,6 @@ ctx->ctx.vp = ctx; ctx->val = NULL; ctx->progname = NULL; - ctx->option_childsmax = 0; ctx->option_groupmode = GROUPMODE_UNDEF; ctx->option_operationmode = OPERATIONMODE_UNDEF; ctx->option_operationmodefakestatus = NULL; @@ -364,6 +363,9 @@ ctx->option_killflag = FALSE; ctx->option_uid = getuid(); ctx->option_daemon = FALSE; + ctx->nacl = 0; + ctx->pacl = NULL; + ctx->option_childsmax = 0; ctx->active_childs = 0; ctx->l2_env = NULL; ctx->l2 = NULL; @@ -371,14 +373,17 @@ ctx->saServerbind = NULL; ctx->saaClientbind = NULL; ctx->saClientbind = NULL; + ctx->saaIO = NULL; + ctx->saIO = NULL; + ctx->fdIOi = -1; + ctx->fdIOo = -1; ctx->nns = 0; ctx->pns = NULL; - ctx->nacl = 0; - ctx->pacl = NULL; ctx->azGroupargs = NULL; ctx->asGroupargs = 0; initsession(&ctx->session); ctx->msg = NULL; + memset(&ctx->uname, 0, sizeof(struct utsname)); /* fill in application context */ if (val_create(&ctx->val) != VAL_OK) @@ -623,7 +628,7 @@ /* graceful shutdown */ CUS: log0(ctx, NOTICE, "graceful shutdown shortly before exit - no more logging"); - l2_channel_destroy(ctx->l2); + //l2_channel_destroy(ctx->l2); l2_env_destroy(ctx->l2_env); if (ctx->saServerbind) sa_destroy(ctx->saServerbind); @@ -791,11 +796,15 @@ } else { log1(ctx, WARNING, "NNTP session establishment to ${option.destination}[${i}] failed", i); //FIXME - log1(ctx, DEBUG, "removing ns[%d] from list", i); + log1(ctx, DEBUG, "FIXME-CURRENTLY-NOT removing ns[%d] from list", i); lmtp_gfs_ns(&ctx->pns[i]); + /*FIXME #1 this code is a leftover from the static ns array with nsc counter + FIXME #2 this code removes the newsservice forever!? What is the scope, what should the scope be - gateway, child process, session, posting lifetime? What is the intention of the user? if (i < --ctx->nns) { memcpy(&ctx->pns[i], &ctx->pns[i+1], (ctx->nns - i ) * sizeof(struct ns)); } + */ + i++; //FIXME this is just to avoid infinite loop } } while (i < ctx->nns); Index: ossp-pkg/lmtp2nntp/lmtp2nntp_option.c RCS File: /v/ossp/cvs/ossp-pkg/lmtp2nntp/lmtp2nntp_option.c,v rcsdiff -q -kk '-r1.12' '-r1.13' -u '/v/ossp/cvs/ossp-pkg/lmtp2nntp/lmtp2nntp_option.c,v' 2>/dev/null --- lmtp2nntp_option.c 2002/02/05 14:56:47 1.12 +++ lmtp2nntp_option.c 2002/02/06 13:51:38 1.13 @@ -152,14 +152,18 @@ oc->val = o->vo; oc->number = o->pi + 1; /* 0 is a reserved val in popt, so offset 1 */ switch (type) { - case OPT_FLAG: oc->data.f = 0; break; - case OPT_SINGLE: oc->data.s = def; break; - case OPT_MULTI: oc->data.m = NULL; break; + case OPT_FLAG: oc->data.f = 0; + break; + case OPT_SINGLE: oc->data.s = def == NULL ? NULL : strdup(def); + break; + case OPT_MULTI: oc->data.m = NULL; + break; } oc->ndata = (type == OPT_SINGLE && def != NULL) ? 1 : 0; - if ( ( oc->longname == NULL) - || (descrip != NULL && oc->descrip == NULL) - || (argdescrip != NULL && oc->argdescrip == NULL) + if ( ( oc->longname == NULL) + || ( descrip != NULL && oc->descrip == NULL) + || ( argdescrip != NULL && oc->argdescrip == NULL) + || (type == OPT_SINGLE && def != NULL && oc->data.s == NULL) ) CU(OPTION_ERR_MEM); @@ -666,8 +670,9 @@ oc = o->first; while (oc != NULL) { - if (oc->type == OPT_SINGLE && oc->data.s != NULL) + if (oc->type == OPT_SINGLE && oc->data.s != NULL) { free(oc->data.s); + } if (oc->type == OPT_MULTI && oc->data.m != NULL) { for (i = 0; i < oc->ndata; i++) if (oc->data.m[i] == NULL) Index: ossp-pkg/lmtp2nntp/test.sh RCS File: /v/ossp/cvs/ossp-pkg/lmtp2nntp/test.sh,v rcsdiff -q -kk '-r1.10' '-r1.11' -u '/v/ossp/cvs/ossp-pkg/lmtp2nntp/test.sh,v' 2>/dev/null --- test.sh 2002/02/05 14:56:47 1.10 +++ test.sh 2002/02/06 13:51:38 1.11 @@ -160,7 +160,7 @@ echon "checking whether a valid fake posting succeeds ... " prolog newmsg -./lmtp2nntp <${STDIN} -c ${LOCAL} -o 250/2.0.0 -g arg -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 1500 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ; RC=$ +./lmtp2nntp <${STDIN} -b - -c ${LOCAL} -o 250/2.0.0 -g arg -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 1500 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ; RC=$ RC=""; if [ 1 -eq `egrep <${STDOUT} '^220[- ]LMTP Service ready' | wc -l` ]; then RC="${RC}init "; fi if [ 1 -eq `egrep <${STDOUT} '^250[- ].*pleased to meet you' | wc -l` ]; then RC="${RC}LHLO "; fi @@ -182,7 +182,7 @@ echon "checking whether -m option blocks invalid sender ... " prolog newmsg -( MFILT=".*@is.invalid" ; ./lmtp2nntp <${STDIN} -c ${LOCAL} -o 250/2.0.0 -g arg -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 1500 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ) ; RC=$? +( MFILT=".*@is.invalid" ; ./lmtp2nntp <${STDIN} -b - -c ${LOCAL} -o 250/2.0.0 -g arg -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 1500 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ) ; RC=$? RC=""; if [ 1 -eq `egrep <${STDOUT} '^220[- ]LMTP Service ready' | wc -l` ]; then RC="${RC}init "; fi if [ 1 -eq `egrep <${STDOUT} '^250[- ].+pleased to meet you' | wc -l` ]; then RC="${RC}LHLO "; fi @@ -204,7 +204,7 @@ echon "checking whether -s option rejects article with invalid size ... " prolog newmsg -./lmtp2nntp <${STDIN} -c ${LOCAL} -o 250/2.0.0 -g arg -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 100 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ; RC=$? +./lmtp2nntp <${STDIN} -b - -c ${LOCAL} -o 250/2.0.0 -g arg -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 100 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ; RC=$? RC=""; if [ 1 -eq `egrep <${STDOUT} '^220[- ]LMTP Service ready' | wc -l` ]; then RC="${RC}init "; fi if [ 1 -eq `egrep <${STDOUT} '^250[- ].*pleased to meet you' | wc -l` ]; then RC="${RC}LHLO "; fi @@ -226,7 +226,7 @@ echon "checking whether -c option fails on invalid local host address ... " prolog newmsg -( LOCAL="10.255.255.255" ; ./lmtp2nntp <${STDIN} -c ${LOCAL} -o 250/2.0.0 -g arg -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 1500 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ) ; RC=$? +( LOCAL="10.255.255.255" ; ./lmtp2nntp <${STDIN} -b - -c ${LOCAL} -o 250/2.0.0 -g arg -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 1500 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ) ; RC=$? RC=""; if [ 1 -eq `egrep <${STDOUT} '^220[- ]LMTP Service ready' | wc -l` ]; then RC="${RC}init "; fi if [ 1 -eq `egrep <${L2FILE} 'error.+binding' | wc -l` ]; then RC="${RC}bind "; fi @@ -243,7 +243,7 @@ echon "checking whether -g envelope option blocks invalid group ... " prolog newmsg -( GROUP="foo.*" ; ./lmtp2nntp <${STDIN} -c ${LOCAL} -o 250/2.0.0 -g envelope -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 1500 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ) ; RC=$? +( GROUP="foo.*" ; ./lmtp2nntp <${STDIN} -b - -c ${LOCAL} -o 250/2.0.0 -g envelope -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 1500 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ) ; RC=$? RC=""; if [ 1 -eq `egrep <${STDOUT} '^220[- ]LMTP Service ready' | wc -l` ]; then RC="${RC}init "; fi if [ 1 -eq `egrep <${STDOUT} '^250[- ].*pleased to meet you' | wc -l` ]; then RC="${RC}LHLO "; fi @@ -266,7 +266,7 @@ echon "checking whether -d option times out for invalid host ... " prolog newmsg -( HOST="10.255.255.255" ; ./lmtp2nntp <${STDIN} -c ${LOCAL} -o 250/2.0.0 -g arg -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 1500 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ) ; RC=$? +( HOST="10.255.255.255" ; ./lmtp2nntp <${STDIN} -b - -c ${LOCAL} -o 250/2.0.0 -g arg -d ${HOST} ${LOG} -m "${MFILT}" -n ${NODE} -s 1500 --timeoutnntpconnect=1 ${GROUP} >${STDOUT} 2>${STDERR} ) ; RC=$? RC=""; if [ 1 -eq `egrep <${STDOUT} '^220[- ]LMTP Service ready' | wc -l` ]; then RC="${RC}init "; fi if [ 1 -eq `egrep <${L2FILE} 'warning.+connect.+failed' | wc -l` ]; then RC="${RC}conn "; fi