binkp_loop return codes

master
Sergey Dorofeev 12 years ago
parent 1c2f44fc3f
commit f2d9c6e4a7

@ -57,6 +57,7 @@ typedef struct {
e_file_receive_status frs;
int emptyloop;
bool continuesend;
int rc;
} s_binkp_state;
int binkp_getforsend(s_binkp_state *bstate, char *buf, int *block_type, unsigned short *block_length);
@ -68,8 +69,7 @@ int binkp_loop(s_binkp_state *bstate) {
unsigned char readbuf[BINKP_HEADER+BINKP_MAXBLOCK+1];
unsigned char writebuf[BINKP_HEADER+BINKP_MAXBLOCK+1];
int rc = HRC_OK;
bstate->rc = PRC_NOERROR;
bstate->phase = 0;
bstate->subphase = 0;
bstate->extracmd[0] = -1;
@ -133,7 +133,7 @@ int binkp_loop(s_binkp_state *bstate) {
writebuf[0] = (block_length>>8)&0x7f;
} else {
log("block for sending has invalid type, aborting");
return -1;
return PRC_ERROR;
}
writebuf[1] = block_length&0xff;
}
@ -146,7 +146,7 @@ int binkp_loop(s_binkp_state *bstate) {
}
if (m<0 || m>3) {
log("getforsend error");
return -1;
return PRC_ERROR;
}
}
@ -182,13 +182,13 @@ int binkp_loop(s_binkp_state *bstate) {
n = tty_select(want_read?&canread:NULL, have_to_write?&canwrite:NULL, timeout);
if( n<0 ) {
log("binkp error on tty_select");
return -1;
return PRC_ERROR;
}
}
else {
log("empty loop %d", ++bstate->emptyloop);
if (bstate->emptyloop==10) {
return -1;
return PRC_ERROR;
}
}
@ -196,11 +196,11 @@ int binkp_loop(s_binkp_state *bstate) {
n = tty_read(readbuf+read_pos, want_read);
if( n<0 ) {
log("binkp: tty read error");
return -1;
return PRC_ERROR;
}
else if (n==0) {
log("read: remote socket shutdown");
return -1;
return PRC_REMOTEABORTED;
}
want_read -= n;
read_pos += n;
@ -234,11 +234,11 @@ int binkp_loop(s_binkp_state *bstate) {
else if (m==3) {
log("aborting session");
bstate->complete = true;
rc = HRC_OTHER_ERR;
//rc = HRC_OTHER_ERR;
}
else {
log("doreceiveblock error");
return -1;
return PRC_ERROR;
}
}
@ -247,18 +247,18 @@ int binkp_loop(s_binkp_state *bstate) {
n = tty_write(writebuf+write_pos, have_to_write);
if( n<0 ) {
log("binkp: tty write error");
return -1;
return PRC_ERROR;
}
else if (n==0) {
log("write: remote socket shutdown");
return -1;
return PRC_REMOTEABORTED;
}
//log("%d bytes sent", n);
write_pos += n;
have_to_write -= n;
}
}
return rc;
return bstate->rc;
}
int binkp_outgoing(s_binkp_sysinfo *local_data, s_binkp_sysinfo *remote_data)
@ -614,7 +614,8 @@ case 4:
}
#define PROTO_ERROR(msg) log("error: %s", msg); bstate->extracmd[0] = BPMSG_ERR; strcpy(bstate->extracmd+1, msg); bstate->extraislast = true; return -1;
#define PROTO_ERROR(msg) { log("error: %s", msg); bstate->rc = PRC_LOCALABORTED; \
bstate->extracmd[0] = BPMSG_ERR; strcpy(bstate->extracmd+1, msg); bstate->extraislast = true; return 1; }
int binkp_doreceiveblock(s_binkp_state *bstate, char *buf, int block_type, unsigned short block_length)
@ -897,9 +898,11 @@ check_that_all_files_are_confirmed:
case BPMSG_ERR: /* Misc errors */
log("remote error: %s", buf+1);
bstate->rc = PRC_REMOTEABORTED;
return 3;
case BPMSG_BSY: /* All AKAs are busy */
log("remote busy: %s", buf+1);
bstate->rc = PRC_REMOTEABORTED;
return 3;
case BPMSG_GET: /* Get a file from offset */

@ -17,12 +17,12 @@
#include "outbound.h"
/* File transfer protocols return codes */
#define PRC_NOERROR 0 /* No comments :) */
#define PRC_ERROR 1 /* I/O error occured while snd./rcv. */
#define PRC_REMOTEABORTED 2 /* "ABORT" initiated by remote */
#define PRC_LOCALABORTED 3 /* We got SIGINT/SIGTERM? */
#define PRC_CPSTOOLOW 4 /* Cps was so low.. :( */
#define PRC_STOPTIME 5 /* Aborted due to the time limits */
#define PRC_NOERROR 0 /* Successful session */
#define PRC_ERROR 20 /* I/O error occured while snd./rcv. */
#define PRC_REMOTEABORTED 21 /* "ABORT" initiated by remote */
#define PRC_LOCALABORTED 22 /* We got SIGINT/SIGTERM? */
#define PRC_CPSTOOLOW 23 /* Cps was so low.. :( */
#define PRC_STOPTIME 24 /* Aborted due to the time limits */
/* Send/Recv file status values */
#define FSTAT_PROCESS 1

Loading…
Cancel
Save