From 8cd7bd4d2190c73c0684fe78ff036a2e8732bee5 Mon Sep 17 00:00:00 2001 From: "imen.bhiri" Date: Tue, 7 Jun 2016 15:23:42 +0100 Subject: [PATCH] bug fixing: schedule download --- external.c | 14 +++++--------- inc/external.h | 4 ++-- scripts/icwmp.sh | 8 ++++---- xml.c | 12 ++++++------ 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/external.c b/external.c index 87b1e6f..f61f15a 100644 --- a/external.c +++ b/external.c @@ -250,7 +250,7 @@ int external_simple(char *command, char *arg) return 0; } -int external_download(char *url, char *size, char *type, char *user, char *pass,...) +int external_download(char *url, char *size, char *type, char *user, char *pass, time_t c) { DD(INFO,"executing download url '%s'", url); @@ -271,7 +271,7 @@ int external_download(char *url, char *size, char *type, char *user, char *pass, json_obj_out_add(json_obj_out, "type", type); if(user) json_obj_out_add(json_obj_out, "user", user); if(pass) json_obj_out_add(json_obj_out, "pass", pass); - if(id) json_obj_out_add(json_obj_out, "id", id); + if(id) json_obj_out_add(json_obj_out, "ids", id); external_write_pipe_output(json_object_to_json_string(json_obj_out)); json_object_put(json_obj_out); @@ -338,18 +338,14 @@ int external_change_du_state_uninstall(char *package_name) return 0; } -int external_apply(char *action, char *arg,...) +int external_apply(char *action, char *arg, time_t c) { - time_t c = 0; DD(INFO,"executing apply %s", action); json_object *json_obj_out; char *id = NULL; - va_list ap; //création du pointeur - va_start(ap,arg); - c = (time_t) va_arg(ap,time_t); - asprintf(&id, "%ld", c); + if (c) asprintf(&id, "%ld", c); /* send data to the script */ json_obj_out = json_object_new_object(); @@ -358,7 +354,7 @@ int external_apply(char *action, char *arg,...) json_obj_out_add(json_obj_out, "action", action); if (arg) json_obj_out_add(json_obj_out, "arg", arg); - if(id) json_obj_out_add(json_obj_out, "id", id); + if(id) json_obj_out_add(json_obj_out, "ids", id); external_write_pipe_output(json_object_to_json_string(json_obj_out)); json_object_put(json_obj_out); diff --git a/inc/external.h b/inc/external.h index d685806..a5b5047 100644 --- a/inc/external.h +++ b/inc/external.h @@ -28,9 +28,9 @@ void external_fetch_uploadFaultResp (char **fault_code); void external_uninstallFaultResp (char *fault_code); void external_fetch_uninstallFaultResp (char **fault); int external_simple(char *command, char *arg); -int external_download(char *url, char *size, char *type, char *user, char *pass,...); +int external_download(char *url, char *size, char *type, char *user, char *pass,time_t c); int external_upload(char *url, char *type, char *user, char *pass); -int external_apply(char *action, char *arg,...); +int external_apply(char *action, char *arg,time_t c); int external_change_du_state_uninstall(char *package_name); int external_handle_action(int (*external_handler)(char *msg)); void external_add_list_paramameter(char *param_name, char *param_data, char *param_type, char *fault_code); diff --git a/scripts/icwmp.sh b/scripts/icwmp.sh index 4bf511e..3c7d947 100644 --- a/scripts/icwmp.sh +++ b/scripts/icwmp.sh @@ -275,7 +275,7 @@ handle_action() { mv /tmp/icwmp_download /tmp/web_content.ipk 2> /dev/null icwmp_fault_output "" "$FAULT_CPE_NO_FAULT" elif [ "$__arg3" = "3" ];then - if [ "$__arg6" != "0" ]; then + if [ "$__arg6" != "" ]; then local tmp="/etc/vendor_configuration_file_${__arg6}.cfg" mv /tmp/icwmp_download "$tmp" 2> /dev/null else @@ -318,7 +318,7 @@ handle_action() { fi ;; 3) - if [ "$__arg2" != "0" ]; then + if [ "$__arg2" != "" ]; then icwmp_apply_vendor_configuration $__arg2 else icwmp_apply_vendor_configuration @@ -404,7 +404,7 @@ handle_action() { json_get_var __arg3 type json_get_var __arg4 user json_get_var __arg5 pass - json_get_var __arg6 id + json_get_var __arg6 ids action="download" ;; du_download) @@ -434,7 +434,7 @@ handle_action() { action="apply_value" elif [ "$action" = "download" ]; then json_get_var __arg1 arg - json_get_var __arg2 id + json_get_var __arg2 ids action="apply_download" elif [ "$action" = "du_download" ]; then json_get_var __arg1 arg diff --git a/xml.c b/xml.c index 7915790..c296288 100644 --- a/xml.c +++ b/xml.c @@ -2248,7 +2248,7 @@ int cwmp_launch_download(struct download *pdownload, struct transfer_complete ** sprintf(file_size,"%d",pdownload->file_size); external_download(pdownload->url, file_size, pdownload->file_type, - pdownload->username, pdownload->password); + pdownload->username, pdownload->password, 0); external_handle_action(cwmp_handle_downloadFault); external_fetch_downloadFaultResp(&fault_code); @@ -2527,7 +2527,7 @@ void *thread_cwmp_rpc_cpe_download (void *v) } bkp_session_insert_transfer_complete(ptransfer_complete); bkp_session_save(); - external_apply("download", pdownload->file_type); + external_apply("download", pdownload->file_type, 0); external_handle_action(cwmp_handle_downloadFault); external_fetch_downloadFaultResp(&fault_code); if(fault_code != NULL) @@ -2789,7 +2789,7 @@ void *thread_cwmp_rpc_cpe_schedule_download (void *v) } bkp_session_insert_transfer_complete(ptransfer_complete); bkp_session_save(); - external_apply("download", current_download->file_type); + external_apply("download", current_download->file_type, 0); external_handle_action(cwmp_handle_downloadFault); external_fetch_downloadFaultResp(&fault_code); if(fault_code != NULL) @@ -3136,7 +3136,7 @@ void *thread_cwmp_rpc_cpe_change_du_state (void *v) res->fault = error; break; } - external_apply("du_download", "install"); + external_apply("du_download", "install", 0); external_handle_action(cwmp_handle_dustate_changeFault); external_fetch_du_change_stateFaultResp(&fault_code, &package_version, &package_name); if(fault_code != NULL) @@ -3311,7 +3311,7 @@ void *thread_cwmp_rpc_cpe_change_du_state (void *v) break; break; } - external_apply("du_download", "update"); + external_apply("du_download", "update", 0); external_handle_action(cwmp_handle_dustate_changeFault); external_fetch_du_change_stateFaultResp(&fault_code, &package_version, &package_name); if(fault_code != NULL) @@ -4447,7 +4447,7 @@ int cwmp_handle_rpc_cpe_schedule_download(struct session *session, struct rpc *r strcmp(file_type,"4 Tone File") && strcmp(file_type,"5 Ringer File")) { - error = FAULT_CPE_REQUEST_DENIED; + error = FAULT_CPE_INVALID_ARGUMENTS; } else if(( strcmp(windowmode0,"1 At Any Time") &&