mirror of https://github.com/wolfSSL/wolfssh.git
Merge pull request #241 from JacobBarthelmeh/scp
exit channel in echoserver before sending disconnectpull/248/head
commit
380a53554b
|
@ -401,8 +401,20 @@ static THREAD_RETURN WOLFSSH_THREAD server_worker(void* vArgs)
|
|||
|
||||
switch (ret) {
|
||||
case WS_SCP_COMPLETE:
|
||||
printf("scp file transfer completed\n");
|
||||
ret = 0;
|
||||
{
|
||||
byte buf[1];
|
||||
printf("scp file transfer completed\n");
|
||||
if (wolfSSH_stream_exit(threadCtx->ssh, 0) != WS_SUCCESS) {
|
||||
fprintf(stderr, "Error with SSH stream exit.\n");
|
||||
}
|
||||
/* Peer MUST send back a SSH_MSG_CHANNEL_CLOSE unless already
|
||||
* sent*/
|
||||
ret = wolfSSH_stream_read(threadCtx->ssh, buf, 1);
|
||||
if (ret != WS_EOF) {
|
||||
fprintf(stderr, "Was expecting EOF\n");
|
||||
}
|
||||
ret = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case WS_SFTP_COMPLETE:
|
||||
|
|
|
@ -873,6 +873,11 @@ int wolfSSH_shutdown(WOLFSSH* ssh)
|
|||
if (ret == WS_SUCCESS)
|
||||
ret = SendDisconnect(ssh, WOLFSSH_DISCONNECT_BY_APPLICATION);
|
||||
|
||||
if (ssh != NULL && ssh->channelList == NULL) {
|
||||
WLOG(WS_LOG_DEBUG, "channel list was already removed");
|
||||
ret = WS_SUCCESS;
|
||||
}
|
||||
|
||||
WLOG(WS_LOG_DEBUG, "Leaving wolfSSH_shutdown(), ret = %d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue