disable NR in NETSPOOL mode due to fatal incompatibility
This commit is contained in:
parent
e3533cfbe0
commit
64074ffb24
@ -1,6 +1,8 @@
|
|||||||
=== 2012-02 ===
|
=== 2012-02 ===
|
||||||
|
|
||||||
Netspool support
|
Netspool support
|
||||||
|
Netspool forcibly disables NR mode in binkp
|
||||||
|
(due to NR mode requires access to file on local filesystem)
|
||||||
|
|
||||||
=== 2011-12-25 ===
|
=== 2011-12-25 ===
|
||||||
|
|
||||||
|
@ -363,7 +363,9 @@ int binkp_incoming(s_binkp_sysinfo *local_data, s_binkp_sysinfo *remote_data)
|
|||||||
override_get (&ovr, remote_data->addrs[i].addr, 0);
|
override_get (&ovr, remote_data->addrs[i].addr, 0);
|
||||||
if (!nodelist_checkflag (ovr.sFlags, "NR"))
|
if (!nodelist_checkflag (ovr.sFlags, "NR"))
|
||||||
{
|
{
|
||||||
|
#ifndef NETSPOOL
|
||||||
szOpt = xstrcat (szOpt, " NR");
|
szOpt = xstrcat (szOpt, " NR");
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -439,6 +441,7 @@ int binkp_transfer(s_protinfo *pi) {
|
|||||||
if (remote->options & BINKP_OPT_NR) {
|
if (remote->options & BINKP_OPT_NR) {
|
||||||
binkp_queuemsgf(&bpi,BPMSG_FILE,"%s %ld %ld -1",name,total,time);
|
binkp_queuemsgf(&bpi,BPMSG_FILE,"%s %ld %ld -1",name,total,time);
|
||||||
binkp_send_state = BPT_Wait_M_GET;
|
binkp_send_state = BPT_Wait_M_GET;
|
||||||
|
log("binkp going to BPT_Wait_M_GET");
|
||||||
} else {
|
} else {
|
||||||
binkp_queuemsgf(&bpi,BPMSG_FILE,"%s %ld %ld 0", name,total,time);
|
binkp_queuemsgf(&bpi,BPMSG_FILE,"%s %ld %ld 0", name,total,time);
|
||||||
binkp_send_state = BPT_Send_File;
|
binkp_send_state = BPT_Send_File;
|
||||||
@ -446,6 +449,7 @@ int binkp_transfer(s_protinfo *pi) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (binkp_send_state == BPT_Send_File) {
|
if (binkp_send_state == BPT_Send_File) {
|
||||||
|
log("binkp BPT_Send_File");
|
||||||
if (bpi.opos == 0 && bpi.n_msgs == 0) {
|
if (bpi.opos == 0 && bpi.n_msgs == 0) {
|
||||||
if((n = p_tx_readfile (bpi.obuf+BINKP_BLK_HDRSIZE,4096,pi))<0) {
|
if((n = p_tx_readfile (bpi.obuf+BINKP_BLK_HDRSIZE,4096,pi))<0) {
|
||||||
p_tx_fclose (pi);
|
p_tx_fclose (pi);
|
||||||
|
@ -538,8 +538,10 @@ void binkp_queue_sysinfo(s_bpinfo *bpi, s_binkp_sysinfo *binkp)
|
|||||||
if (state.caller)
|
if (state.caller)
|
||||||
{
|
{
|
||||||
char *szOpt = xstrcpy (" MB");
|
char *szOpt = xstrcpy (" MB");
|
||||||
|
#ifndef NETSPOOL
|
||||||
if (!nodelist_checkflag (state.node.flags, "NR"))
|
if (!nodelist_checkflag (state.node.flags, "NR"))
|
||||||
szOpt = xstrcat (szOpt, " NR");
|
szOpt = xstrcat (szOpt, " NR");
|
||||||
|
#endif
|
||||||
if (!nodelist_checkflag (state.node.flags, "ND"))
|
if (!nodelist_checkflag (state.node.flags, "ND"))
|
||||||
szOpt = xstrcat (szOpt, " ND");
|
szOpt = xstrcat (szOpt, " ND");
|
||||||
if (*szOpt)
|
if (*szOpt)
|
||||||
@ -732,9 +734,12 @@ void binkp_parse_options(s_binkp_sysinfo *binkp, char *options)
|
|||||||
for( p = string_token(options, &n, NULL, 0); p;
|
for( p = string_token(options, &n, NULL, 0); p;
|
||||||
p = string_token(NULL, &n, NULL, 0) )
|
p = string_token(NULL, &n, NULL, 0) )
|
||||||
{
|
{
|
||||||
if( !strcmp(p, "NR") )
|
#ifndef NETSPOOL
|
||||||
|
if( !strcmp(p, "NR") ) {
|
||||||
binkp->options |= BINKP_OPT_NR;
|
binkp->options |= BINKP_OPT_NR;
|
||||||
else if( !strcmp(p, "MB") )
|
} else
|
||||||
|
#endif
|
||||||
|
if( !strcmp(p, "MB") )
|
||||||
binkp->options |= BINKP_OPT_MB;
|
binkp->options |= BINKP_OPT_MB;
|
||||||
else if( !strcmp(p, "MPWD") )
|
else if( !strcmp(p, "MPWD") )
|
||||||
binkp->options |= BINKP_OPT_MPWD;
|
binkp->options |= BINKP_OPT_MPWD;
|
||||||
|
@ -102,9 +102,9 @@ static int prot_get_next_file(s_filelist **dest, s_protinfo *pi)
|
|||||||
/* network queue */
|
/* network queue */
|
||||||
#ifdef NETSPOOL
|
#ifdef NETSPOOL
|
||||||
|
|
||||||
log("start netspool");
|
log("netspool next file");
|
||||||
if(state.netspool.state == NS_NOTINIT) {
|
if(state.netspool.state == NS_NOTINIT) {
|
||||||
log("netspool connection");
|
log("new netspool connection");
|
||||||
char password[100];
|
char password[100];
|
||||||
char address[300];
|
char address[300];
|
||||||
char *host = conf_string(cf_netspool_host);
|
char *host = conf_string(cf_netspool_host);
|
||||||
@ -135,7 +135,7 @@ static int prot_get_next_file(s_filelist **dest, s_protinfo *pi)
|
|||||||
log("netspool begin receive");
|
log("netspool begin receive");
|
||||||
netspool_receive(&state.netspool);
|
netspool_receive(&state.netspool);
|
||||||
} else {
|
} else {
|
||||||
log("netspool is busy");
|
log("netspool could not start receive");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,11 +144,14 @@ static int prot_get_next_file(s_filelist **dest, s_protinfo *pi)
|
|||||||
*dest = NULL;
|
*dest = NULL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(state.netspool.state == NS_READY) {
|
||||||
|
log("no files to receive");
|
||||||
|
netspool_end(&state.netspool);
|
||||||
|
}
|
||||||
|
|
||||||
if(state.netspool.state==NS_ERROR) {
|
if(state.netspool.state==NS_ERROR) {
|
||||||
log("netspool error %s", state.netspool.error);
|
log("no next file: netspool error %s", state.netspool.error);
|
||||||
} else {
|
|
||||||
log("netspool gives no more files");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -452,6 +455,7 @@ int p_tx_fclose(s_protinfo *pi)
|
|||||||
break;
|
break;
|
||||||
#ifdef NETSPOOL
|
#ifdef NETSPOOL
|
||||||
case ACTION_ACKNOWLEDGE:
|
case ACTION_ACKNOWLEDGE:
|
||||||
|
log("netspool commit %s", state.netspool.filename);
|
||||||
netspool_acknowledge(&state.netspool);
|
netspool_acknowledge(&state.netspool);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
@ -482,6 +486,7 @@ int p_tx_readfile(char *buffer, size_t buflen, s_protinfo *pi)
|
|||||||
|
|
||||||
#ifdef NETSPOOL
|
#ifdef NETSPOOL
|
||||||
if(pi->send->fname==NULL && strcmp(pi->send->local_name, "NETSPOOL")==0 ) {
|
if(pi->send->fname==NULL && strcmp(pi->send->local_name, "NETSPOOL")==0 ) {
|
||||||
|
log("reading netspool file");
|
||||||
if( state.netspool.state != NS_RECVFILE ) {
|
if( state.netspool.state != NS_RECVFILE ) {
|
||||||
log("send: wrong netspool state");
|
log("send: wrong netspool state");
|
||||||
pi->send->status = FSTAT_SKIPPED;
|
pi->send->status = FSTAT_SKIPPED;
|
||||||
@ -490,12 +495,14 @@ int p_tx_readfile(char *buffer, size_t buflen, s_protinfo *pi)
|
|||||||
n = netspool_read(&state.netspool, buffer, buflen);
|
n = netspool_read(&state.netspool, buffer, buflen);
|
||||||
pi->send->eofseen = state.netspool.length == 0;
|
pi->send->eofseen = state.netspool.length == 0;
|
||||||
if( n==-1 ) {
|
if( n==-1 ) {
|
||||||
log("send: netspool error");
|
log("send: netspool error %s", state.netspool.error);
|
||||||
log(state.netspool.error);
|
|
||||||
pi->send->status = FSTAT_SKIPPED;
|
pi->send->status = FSTAT_SKIPPED;
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
log("got %d bytes from netspool", n);
|
||||||
return n;
|
return n;
|
||||||
|
} else {
|
||||||
|
log("reading local file");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
@ -1295,9 +1302,9 @@ void p_session_cleanup(s_protinfo *pi, bool success)
|
|||||||
|
|
||||||
#ifdef NETSPOOL
|
#ifdef NETSPOOL
|
||||||
if(state.netspool.state==NS_ERROR) {
|
if(state.netspool.state==NS_ERROR) {
|
||||||
log("netspool error %s", state.netspool.error);
|
log("end session: netspool error %s", state.netspool.error);
|
||||||
}
|
}
|
||||||
netspool_end(&state.netspool);
|
/*netspool_end(&state.netspool);*/
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user