Download RPC: Fix TransferComplete issue in case filetype is '6 Stored Firmware Image'

This commit is contained in:
Omar Kallel 2021-06-11 08:32:39 +01:00
parent 70dc5c2bba
commit 01bb855c0e
2 changed files with 17 additions and 9 deletions

1
cwmp.c
View file

@ -253,7 +253,6 @@ void cwmp_schedule_session(struct cwmp *cwmp)
cwmp_update_enabled_notify_file();
cwmp_prepare_value_change(cwmp);
clean_list_value_change();
cwmp_load_saved_session(cwmp, NULL, ALL);
if ((error = cwmp_move_session_to_session_send(cwmp, session))) {
CWMP_LOG(EMERG, "FATAL error in the mutex process in the session scheduler!");
exit(EXIT_FAILURE);

View file

@ -189,8 +189,9 @@ int cwmp_launch_download(struct download *pdownload, enum load_type ltype, struc
error = FAULT_CPE_DOWNLOAD_FAIL_CONTACT_SERVER;
else if (http_code == 401)
error = FAULT_CPE_DOWNLOAD_FAIL_FILE_AUTHENTICATION;
else if (http_code != 200)
else if (http_code != 200) {
error = FAULT_CPE_DOWNLOAD_FAILURE;
}
if (error != FAULT_CPE_NO_FAULT)
goto end_download;
@ -277,7 +278,7 @@ int apply_downloaded_file(struct cwmp *cwmp, struct download *pdownload, struct
error = FAULT_CPE_DOWNLOAD_FAIL_FILE_CORRUPTED;
}
if ((error == FAULT_CPE_NO_FAULT) && (pdownload->file_type[0] == '1' || pdownload->file_type[0] == '3' || pdownload->file_type[0] == '6')) {
if ((error == FAULT_CPE_NO_FAULT) && (pdownload->file_type[0] == '1' || pdownload->file_type[0] == '3')) {
uci_set_value(UCI_ACS_PARAMETERKEY_PATH, pdownload->command_key ? pdownload->command_key : "", CWMP_CMD_SET);
cwmp_commit_package("cwmp");
if (pdownload->file_type[0] == '3') {
@ -285,8 +286,10 @@ int apply_downloaded_file(struct cwmp *cwmp, struct download *pdownload, struct
}
return FAULT_CPE_NO_FAULT;
}
bkp_session_delete_transfer_complete(ptransfer_complete);
ptransfer_complete->fault_code = error;
if (error != FAULT_CPE_NO_FAULT) {
bkp_session_delete_transfer_complete(ptransfer_complete);
ptransfer_complete->fault_code = error;
}
bkp_session_insert_transfer_complete(ptransfer_complete);
bkp_session_save();
cwmp_root_cause_transfer_complete(cwmp, ptransfer_complete);
@ -344,7 +347,7 @@ void *thread_cwmp_rpc_cpe_download(void *v)
pthread_mutex_lock(&(cwmp->mutex_session_send));
CWMP_LOG(INFO, "Launch download file %s", pdownload->url);
error = cwmp_launch_download(pdownload, TYPE_DOWNLOAD, &ptransfer_complete);
sleep(3);
if (error != FAULT_CPE_NO_FAULT) {
bkp_session_insert_transfer_complete(ptransfer_complete);
bkp_session_save();
@ -352,7 +355,11 @@ void *thread_cwmp_rpc_cpe_download(void *v)
bkp_session_delete_transfer_complete(ptransfer_complete);
} else {
error = apply_downloaded_file(cwmp, pdownload, ptransfer_complete);
if (error || pdownload->file_type[0] == '6')
bkp_session_delete_transfer_complete(ptransfer_complete);
}
if (pdownload->file_type[0] == '6')
sleep(30);
pthread_mutex_unlock(&(cwmp->mutex_session_send));
pthread_cond_signal(&(cwmp->threshold_session_send));
pthread_mutex_lock(&mutex_download);
@ -661,14 +668,16 @@ void *thread_cwmp_rpc_cpe_apply_schedule_download(void *v)
error = FAULT_CPE_DOWNLOAD_FAIL_FILE_CORRUPTED;
}
if ((error == FAULT_CPE_NO_FAULT) && (apply_download->file_type[0] == '1' || apply_download->file_type[0] == '3' || apply_download->file_type[0] == '6')) {
if ((error == FAULT_CPE_NO_FAULT) && (apply_download->file_type[0] == '1' || apply_download->file_type[0] == '3')) {
if (apply_download->file_type[0] == '3') {
CWMP_LOG(INFO, "Download and apply new vendor config file is done successfully");
}
exit(EXIT_SUCCESS);
}
bkp_session_delete_transfer_complete(ptransfer_complete);
ptransfer_complete->fault_code = error;
if (error != FAULT_CPE_NO_FAULT) {
bkp_session_delete_transfer_complete(ptransfer_complete);
ptransfer_complete->fault_code = error;
}
bkp_session_insert_transfer_complete(ptransfer_complete);
bkp_session_save();
cwmp_root_cause_transfer_complete(cwmp, ptransfer_complete);