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;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -145,10 +145,13 @@ static int prot_get_next_file(s_filelist **dest, s_protinfo *pi)
 | 
			
		||||
	    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