Fixes binkp/1.1 for Sun NetBSD
This commit is contained in:
parent
d76ab6bcb4
commit
28a8feac7c
@ -2,6 +2,10 @@ $Id$
|
|||||||
|
|
||||||
v0.39.6 11-Jan-2004
|
v0.39.6 11-Jan-2004
|
||||||
|
|
||||||
|
mbcico:
|
||||||
|
New binkp/1.1 driver fixes for Sun NetBSD.
|
||||||
|
Removed TCP ignore check in EOB state.
|
||||||
|
|
||||||
mbsetup:
|
mbsetup:
|
||||||
Reorganised menu 1.4 screen 1 and 2.
|
Reorganised menu 1.4 screen 1 and 2.
|
||||||
Added settings for T-Mail filebox paths in the second screen
|
Added settings for T-Mail filebox paths in the second screen
|
||||||
|
@ -114,10 +114,11 @@ file_list *tosend = NULL; /* Files to send */
|
|||||||
file_list *respond = NULL; /* Requests honored */
|
file_list *respond = NULL; /* Requests honored */
|
||||||
binkp_list *bll = NULL; /* Files to send with status */
|
binkp_list *bll = NULL; /* Files to send with status */
|
||||||
static binkp_list *cursend = NULL; /* Current file being transmitted */
|
static binkp_list *cursend = NULL; /* Current file being transmitted */
|
||||||
struct timeval txtvstart; /* Transmitter start time */
|
struct timeval txtvstart; /* Transmitter start time */
|
||||||
struct timeval txtvend; /* Transmitter end time */
|
struct timeval txtvend; /* Transmitter end time */
|
||||||
struct timeval rxtvstart; /* Receiver start time */
|
struct timeval rxtvstart; /* Receiver start time */
|
||||||
struct timeval rxtvend; /* Receiver end time */
|
struct timeval rxtvend; /* Receiver end time */
|
||||||
|
|
||||||
|
|
||||||
struct binkprec {
|
struct binkprec {
|
||||||
int Role; /* 1=orig, 0=answer */
|
int Role; /* 1=orig, 0=answer */
|
||||||
@ -848,20 +849,9 @@ int file_transfer(void)
|
|||||||
*/
|
*/
|
||||||
rc = binkp_poll_frame();
|
rc = binkp_poll_frame();
|
||||||
if (rc == -1) {
|
if (rc == -1) {
|
||||||
if (bp.local_EOB && bp.remote_EOB) {
|
bp.rc = rc;
|
||||||
Syslog('b', "Binkp: ignore TCP error in EOB state");
|
bp.FtState = DeinitTransfer;
|
||||||
rc = 0;
|
break;
|
||||||
bp.rc = 0;
|
|
||||||
bp.FtState = Transmit; /* Go once more through transmitter to cleanup */
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
* Only check if not in EOB state
|
|
||||||
*/
|
|
||||||
bp.rc = rc;
|
|
||||||
bp.FtState = DeinitTransfer;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (rc == 1) {
|
} else if (rc == 1) {
|
||||||
bp.FtState = Receive;
|
bp.FtState = Receive;
|
||||||
break;
|
break;
|
||||||
@ -1012,11 +1002,10 @@ TrType binkp_receiver(void)
|
|||||||
} else if (bp.RxState == RxAccF) {
|
} else if (bp.RxState == RxAccF) {
|
||||||
Syslog('b', "Binkp: got M_FILE \"%s\"", printable(bp.rxbuf +1, 0));
|
Syslog('b', "Binkp: got M_FILE \"%s\"", printable(bp.rxbuf +1, 0));
|
||||||
if (strlen(bp.rxbuf) < 512) {
|
if (strlen(bp.rxbuf) < 512) {
|
||||||
// sscanf(bp.rxbuf+1, "%s %ld %ld %ld", bp.rname, &bp.rsize, &bp.rtime, &bp.roffs);
|
sprintf(bp.rname, "%s", strtok(bp.rxbuf+1, " \n\r"));
|
||||||
sprintf(bp.rname, "%s", strtok(bp.rxbuf+1, " \n\r"));
|
bp.rsize = atoi(strtok(NULL, " \n\r"));
|
||||||
bp.rsize = atoi(strtok(NULL, " \n\r"));
|
bp.rtime = atoi(strtok(NULL, " \n\r"));
|
||||||
bp.rtime = atoi(strtok(NULL, " \n\r"));
|
bp.roffs = atoi(strtok(NULL, " \n\r"));
|
||||||
bp.roffs = atoi(strtok(NULL, " \n\r"));
|
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* Corrupted command, in case this was serious, send the M_GOT back so it's
|
* Corrupted command, in case this was serious, send the M_GOT back so it's
|
||||||
@ -1161,7 +1150,6 @@ TrType binkp_receiver(void)
|
|||||||
closefile();
|
closefile();
|
||||||
bp.rxpos = bp.rxpos - bp.rxbytes;
|
bp.rxpos = bp.rxpos - bp.rxbytes;
|
||||||
gettimeofday(&rxtvend, &bp.tz);
|
gettimeofday(&rxtvend, &bp.tz);
|
||||||
Syslog('b', "4");
|
|
||||||
Syslog('+', "Binkp: OK %s", transfertime(rxtvstart, rxtvend, bp.rxpos, FALSE));
|
Syslog('+', "Binkp: OK %s", transfertime(rxtvstart, rxtvend, bp.rxpos, FALSE));
|
||||||
rcvdbytes += bp.rxpos;
|
rcvdbytes += bp.rxpos;
|
||||||
bp.RxState = RxWaitF;
|
bp.RxState = RxWaitF;
|
||||||
@ -1810,7 +1798,10 @@ int binkp_process_messages(void)
|
|||||||
for (tmpq = tql; tmpq; tmpq = tmpq->next) {
|
for (tmpq = tql; tmpq; tmpq = tmpq->next) {
|
||||||
Syslog('+', "Binkp: %s \"%s\"", bstate[tmpq->cmd], printable(tmpq->data, 0));
|
Syslog('+', "Binkp: %s \"%s\"", bstate[tmpq->cmd], printable(tmpq->data, 0));
|
||||||
if (tmpq->cmd == MM_GET) {
|
if (tmpq->cmd == MM_GET) {
|
||||||
sscanf(tmpq->data, "%s %ld %ld %ld", lname, &lsize, <ime, &loffs);
|
sprintf(lname, "%s", strtok(tmpq->data, " \n\r"));
|
||||||
|
lsize = atoi(strtok(NULL, " \n\r"));
|
||||||
|
ltime = atoi(strtok(NULL, " \n\r"));
|
||||||
|
loffs = atoi(strtok(NULL, " \n\r"));
|
||||||
Found = FALSE;
|
Found = FALSE;
|
||||||
for (tmp = bll; tmp; tmp = tmp->next) {
|
for (tmp = bll; tmp; tmp = tmp->next) {
|
||||||
if ((strcmp(lname, tmp->remote) == 0) && (lsize == tmp->size) && (ltime == tmp->date)) {
|
if ((strcmp(lname, tmp->remote) == 0) && (lsize == tmp->size) && (ltime == tmp->date)) {
|
||||||
@ -1861,7 +1852,13 @@ int binkp_process_messages(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (tmpq->cmd == MM_GOT) {
|
} else if (tmpq->cmd == MM_GOT) {
|
||||||
sscanf(tmpq->data, "%s %ld %ld", lname, &lsize, <ime);
|
Syslog('b', "1");
|
||||||
|
sprintf(lname, "%s", strtok(tmpq->data, " \n\r"));
|
||||||
|
Syslog('b', "2");
|
||||||
|
lsize = atoi(strtok(NULL, " \n\r"));
|
||||||
|
Syslog('b', "3");
|
||||||
|
ltime = atoi(strtok(NULL, " \n\r"));
|
||||||
|
Syslog('b', "4");
|
||||||
Found = FALSE;
|
Found = FALSE;
|
||||||
for (tmp = bll; tmp; tmp = tmp->next) {
|
for (tmp = bll; tmp; tmp = tmp->next) {
|
||||||
if ((strcmp(lname, tmp->remote) == 0) && (lsize == tmp->size) && (ltime == tmp->date)) {
|
if ((strcmp(lname, tmp->remote) == 0) && (lsize == tmp->size) && (ltime == tmp->date)) {
|
||||||
@ -1892,7 +1889,9 @@ int binkp_process_messages(void)
|
|||||||
Syslog('+', "Binkp: unexpected M_GOT \"%s\"", tmpq->data); /* Ignore frame */
|
Syslog('+', "Binkp: unexpected M_GOT \"%s\"", tmpq->data); /* Ignore frame */
|
||||||
}
|
}
|
||||||
} else if (tmpq->cmd == MM_SKIP) {
|
} else if (tmpq->cmd == MM_SKIP) {
|
||||||
sscanf(tmpq->data, "%s %ld %ld", lname, &lsize, <ime);
|
sprintf(lname, "%s", strtok(tmpq->data, " \n\r"));
|
||||||
|
lsize = atoi(strtok(NULL, " \n\r"));
|
||||||
|
ltime = atoi(strtok(NULL, " \n\r"));
|
||||||
Found = FALSE;
|
Found = FALSE;
|
||||||
for (tmp = bll; tmp; tmp = tmp->next) {
|
for (tmp = bll; tmp; tmp = tmp->next) {
|
||||||
if ((strcmp(lname, tmp->remote) == 0) && (lsize == tmp->size) && (ltime == tmp->date)) {
|
if ((strcmp(lname, tmp->remote) == 0) && (lsize == tmp->size) && (ltime == tmp->date)) {
|
||||||
|
Reference in New Issue
Block a user