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