mFix aarch64 binkp FSM
This commit is contained in:
parent
73a3376a3d
commit
f72259cfe3
@ -740,7 +740,7 @@ case BPMSG_PWD: /* Session password */
|
|||||||
/* Do authorization */
|
/* Do authorization */
|
||||||
if( binkp_auth_incoming(bstate->remote_data) ) {
|
if( binkp_auth_incoming(bstate->remote_data) ) {
|
||||||
log("error: invalid password");
|
log("error: invalid password");
|
||||||
if( bstate->extracmd[0] !=-1 ) return 0; // suspend if extra is occupied
|
if( bstate->extracmd[0] != (char)-1 ) return 0; // suspend if extra is occupied
|
||||||
bstate->extracmd[0] = BPMSG_ERR;
|
bstate->extracmd[0] = BPMSG_ERR;
|
||||||
strcpy(bstate->extracmd+1, "Security violation");
|
strcpy(bstate->extracmd+1, "Security violation");
|
||||||
bstate->extraislast = true;
|
bstate->extraislast = true;
|
||||||
@ -749,7 +749,7 @@ case BPMSG_PWD: /* Session password */
|
|||||||
// lock addresses
|
// lock addresses
|
||||||
if( session_addrs_lock(state.remoteaddrs, state.n_remoteaddr) ) {
|
if( session_addrs_lock(state.remoteaddrs, state.n_remoteaddr) ) {
|
||||||
log("error locking addresses of the remote");
|
log("error locking addresses of the remote");
|
||||||
if( bstate->extracmd[0] !=-1 ) return 0; // suspend if extra is occupied
|
if( bstate->extracmd[0] != (char)-1 ) return 0; // suspend if extra is occupied
|
||||||
bstate->extracmd[0] = BPMSG_BSY;
|
bstate->extracmd[0] = BPMSG_BSY;
|
||||||
strcpy(bstate->extracmd+1, "All addresses are busy");
|
strcpy(bstate->extracmd+1, "All addresses are busy");
|
||||||
bstate->extraislast = true;
|
bstate->extraislast = true;
|
||||||
@ -770,6 +770,7 @@ case BPMSG_FILE: /* File information */
|
|||||||
s_bpfinfo recvfi;
|
s_bpfinfo recvfi;
|
||||||
if( binkp_parsfinfo(buf+1, &recvfi, true) ) {
|
if( binkp_parsfinfo(buf+1, &recvfi, true) ) {
|
||||||
log ("M_FILE parse error: %s", buf + 1);
|
log ("M_FILE parse error: %s", buf + 1);
|
||||||
|
DEB((D_24554, "M_FILE parse error: %s", buf + 1 ));
|
||||||
PROTO_ERROR("invalid M_FILE");
|
PROTO_ERROR("invalid M_FILE");
|
||||||
}
|
}
|
||||||
bstate->batch_recv_count += 1;
|
bstate->batch_recv_count += 1;
|
||||||
@ -786,7 +787,7 @@ case BPMSG_FILE: /* File information */
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
DEB((D_24554, "no, skipping; TODO: accept it"));
|
DEB((D_24554, "no, skipping; TODO: accept it"));
|
||||||
if( bstate->extracmd[0] != -1 ) return 0;
|
if( bstate->extracmd[0] != (char)-1 ) return 0;
|
||||||
bstate->extracmd[0] = BPMSG_SKIP;
|
bstate->extracmd[0] = BPMSG_SKIP;
|
||||||
sprintf(bstate->extracmd+1, "%s %ld %ld %ld", recvfi.fn, recvfi.sz, recvfi.tm, recvfi.offs);
|
sprintf(bstate->extracmd+1, "%s %ld %ld %ld", recvfi.fn, recvfi.sz, recvfi.tm, recvfi.offs);
|
||||||
bstate->extraislast = false;
|
bstate->extraislast = false;
|
||||||
@ -798,7 +799,7 @@ case BPMSG_FILE: /* File information */
|
|||||||
PROTO_ERROR("invalid mode for M_FILE");
|
PROTO_ERROR("invalid mode for M_FILE");
|
||||||
}
|
}
|
||||||
|
|
||||||
if( bstate->extracmd[0] != -1 ) return 0;
|
if( bstate->extracmd[0] != (char)-1 ) return 0;
|
||||||
switch(p_rx_fopen(bstate->pi, recvfi.fn, recvfi.sz, recvfi.tm, 0)) {
|
switch(p_rx_fopen(bstate->pi, recvfi.fn, recvfi.sz, recvfi.tm, 0)) {
|
||||||
case 0:
|
case 0:
|
||||||
if (bstate->pi->recv->bytes_skipped == recvfi.offs) {
|
if (bstate->pi->recv->bytes_skipped == recvfi.offs) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user