4 * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
23 /* Email service Main .c */
29 #include <glib-object.h>
31 #include <sys/types.h>
35 #include "email-daemon.h"
36 #include "email-ipc.h"
37 #include "email-utilities.h"
38 #include "email-debug-log.h"
39 #include "email-daemon-auto-poll.h"
40 #include "email-daemon-account.h"
41 #include "email-convert.h"
42 #include "email-internal-types.h"
43 #include "email-types.h"
44 #include "email-core-account.h"
45 #include "email-core-mail.h"
46 #include "email-core-smtp.h"
47 #include "email-core-event.h"
48 #include "email-core-global.h"
49 #include "email-core-mailbox.h"
50 #include "email-core-utils.h"
51 #include "email-core-smime.h"
52 #include "email-core-cert.h"
53 #include "email-core-task-manager.h"
54 #include "email-core-signal.h"
55 #include "email-storage.h"
57 void stb_create_account(HIPC_API a_hAPI)
59 EM_DEBUG_FUNC_BEGIN();
62 char* local_account_stream = NULL;
63 email_account_t account;
64 int err = EMAIL_ERROR_NONE;
66 /* Initialize the email_account_t */
67 memset(&account, 0x00, sizeof(email_account_t));
69 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, 0);
70 EM_DEBUG_LOG("size [%d]", buffer_size);
71 if(buffer_size <= 0) {
72 err = EMAIL_ERROR_INVALID_PARAM;
75 local_account_stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0);
76 /* Convert account stream to structure */
77 em_convert_byte_stream_to_account(local_account_stream, buffer_size, &account);
80 EM_DEBUG_LOG("Account name - %s", account.account_name);
81 EM_DEBUG_LOG("Email Address - %s", account.user_email_address);
83 if(!emdaemon_create_account(&account, &err)) {
84 EM_DEBUG_EXCEPTION("emdaemon_create_account fail ");
89 #ifdef __FEATURE_AUTO_POLLING__
90 /* start auto polling, if check_interval not zero */
91 if(account.check_interval > 0) {
92 if(!emdaemon_add_polling_alarm( account.account_id,account.check_interval))
93 EM_DEBUG_EXCEPTION("emdaemon_add_polling_alarm[NOTI_ACCOUNT_ADD] : start auto poll failed >>> ");
97 /* add account details to contact DB */
98 emdaemon_insert_accountinfo_to_contact(&account);
101 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
102 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
104 EM_DEBUG_LOG("[3] APPID[%d], APIID [%d]", emipc_get_app_id(a_hAPI), emipc_get_api_id(a_hAPI));
105 EM_DEBUG_LOG("account id[%d]", account.account_id);
107 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &(account.account_id), sizeof(int)))
108 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
110 /* pass result to app */
111 if (!emipc_execute_stub_api(a_hAPI))
112 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
115 if ( local_result == 0 ) {
116 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
117 EM_DEBUG_EXCEPTION("emipc_add_parameter failed : local_result ");
118 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
119 EM_DEBUG_EXCEPTION("emipc_add_parameter failed : err");
120 if (!emipc_execute_stub_api(a_hAPI))
121 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
126 void stb_delete_account(HIPC_API a_hAPI)
128 EM_DEBUG_FUNC_BEGIN();
130 int local_result = 0;
131 int err = EMAIL_ERROR_NONE;
134 account_id = *((int*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0));
135 if(!emdaemon_delete_account(account_id, &err)) {
136 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
137 EM_DEBUG_LOG("emipc_add_parameter failed ");
138 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
139 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
141 if (!emipc_execute_stub_api(a_hAPI))
142 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
146 #ifdef __FEATURE_AUTO_POLLING__
147 /* stop auto polling for this acount */
148 if(emdaemon_check_auto_polling_started(account_id)) {
149 if(!emdaemon_remove_polling_alarm(account_id))
150 EM_DEBUG_EXCEPTION("emdaemon_remove_polling_alarm[ NOTI_ACCOUNT_DELETE] : remove auto poll failed >>> ");
155 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
156 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
158 if (!emipc_execute_stub_api(a_hAPI))
159 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
166 void stb_update_account(HIPC_API a_hAPI)
168 EM_DEBUG_FUNC_BEGIN();
169 int account_id = 0, buffer_size = 0, local_result = 0, with_validation = 0;
170 char* local_account_stream = NULL;
171 email_account_t new_account_info = {0};
172 email_account_t old_account_info = {0};
173 int err = EMAIL_ERROR_NONE;
176 account_id = *((int*)emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0));
178 /* get account structure from stream */
179 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, 1);
180 EM_DEBUG_LOG("size [%d]", buffer_size);
181 local_account_stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 1);
182 em_convert_byte_stream_to_account(local_account_stream, buffer_size, &new_account_info);
184 /*get validation flag */
185 with_validation = *((int*)emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 2));
188 if(!emdaemon_get_account(account_id, EMAIL_ACC_GET_OPT_FULL_DATA, &old_account_info, &err)) {
189 EM_DEBUG_EXCEPTION("emdaemon_get_account failed ");
194 if( EM_SAFE_STRLEN (new_account_info.incoming_server_password) == 0 ) {
195 EM_SAFE_FREE(new_account_info.incoming_server_password); /* be allocated but has zero length */
196 EM_DEBUG_LOG("old_account_info->incoming_server_password [%s]", old_account_info.incoming_server_password);
197 new_account_info.incoming_server_password = EM_SAFE_STRDUP(old_account_info.incoming_server_password);
198 if(new_account_info.incoming_server_password == NULL) {
199 EM_DEBUG_EXCEPTION("allocation for new_account_info->password failed");
200 err = EMAIL_ERROR_OUT_OF_MEMORY;
206 if( EM_SAFE_STRLEN (new_account_info.outgoing_server_password) == 0 ) {
207 EM_SAFE_FREE(new_account_info.outgoing_server_password);
208 if(old_account_info.outgoing_server_password) {
209 new_account_info.outgoing_server_password = strdup (old_account_info.outgoing_server_password);
210 if(new_account_info.outgoing_server_password == NULL) {
211 EM_DEBUG_EXCEPTION("allocation for new_account_info->outgoing_server_password failed");
212 err = EMAIL_ERROR_OUT_OF_MEMORY;
218 if(with_validation) {
219 emdaemon_validate_account_and_update(account_id, &new_account_info, &handle, &err);
223 if(emdaemon_update_account(account_id, &new_account_info, &err)) {
224 emdaemon_update_accountinfo_to_contact(&old_account_info, &new_account_info);
228 EM_DEBUG_EXCEPTION("emdaemon_update_account failed [%d]", err);
234 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
235 EM_DEBUG_EXCEPTION("emipc_add_parameter for result failed");
237 if(with_validation) {
238 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
239 EM_DEBUG_EXCEPTION("emipc_add_parameter for handle failed");
242 if (!emipc_execute_stub_api(a_hAPI))
243 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
246 if ( local_result == 0 ) {
247 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
248 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
250 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
251 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
253 if (!emipc_execute_stub_api(a_hAPI))
254 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
257 emcore_free_account(&old_account_info);
259 emcore_free_account(&new_account_info);
264 void stb_validate_account(HIPC_API a_hAPI)
266 EM_DEBUG_FUNC_BEGIN();
269 int local_result = 0;
274 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
275 local_result = emdaemon_validate_account(account_id, &handle,&err_code);
277 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
278 EM_DEBUG_LOG("emipc_add_parameter failed ");
280 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err_code, sizeof(int)))
281 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
283 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
284 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
286 if (!emipc_execute_stub_api(a_hAPI))
287 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
293 void stb_get_account_list(HIPC_API a_hAPI)
295 EM_DEBUG_FUNC_BEGIN();
297 int local_result = 0;
299 char* local_stream = NULL;
300 email_account_t* account_list;
303 int err = EMAIL_ERROR_NONE;
305 if(emdaemon_get_account_list(&account_list, &count, &err)) {
306 EM_DEBUG_LOG("emdaemon_get_account_list success");
308 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
309 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
311 EM_DEBUG_LOG("Count [%d]", count);
312 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &count, sizeof(int)))
313 EM_DEBUG_EXCEPTION("emipc_add_parameter count failed ");
315 for(i=0; i<count; i++) {
316 EM_DEBUG_LOG("Name - %s", account_list[i].account_name);
318 local_stream = em_convert_account_to_byte_stream(account_list+i, &size);
321 EM_DEBUG_EXCEPTION ("INVALID PARAM: local_stream NULL ");
322 emcore_free_account_list(&account_list, count, NULL);
326 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, local_stream, size))
327 EM_DEBUG_EXCEPTION("Add Param mailbox failed ");
330 EM_SAFE_FREE(local_stream);
333 emcore_free_account_list(&account_list, count, NULL);
334 if (!emipc_execute_stub_api(a_hAPI))
335 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
339 EM_DEBUG_LOG("emdaemon_get_account_list failed");
340 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
341 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
342 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
343 EM_DEBUG_EXCEPTION("emipc_add_parameter failed : err");
344 if (!emipc_execute_stub_api(a_hAPI))
345 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
348 EM_SAFE_FREE(local_stream);
352 /* sowmya.kr, 10-May-2010, changes for API improvement */
353 void stb_sync_header(HIPC_API a_hAPI)
355 EM_DEBUG_FUNC_BEGIN();
356 int err = EMAIL_ERROR_NONE;
358 int account_id = 0, maibox_id = 0;
361 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
362 EM_DEBUG_LOG("account_id [%d]", account_id);
365 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &maibox_id);
366 EM_DEBUG_LOG("maibox_id [%d]", maibox_id);
368 if(emdaemon_sync_header(account_id, maibox_id, &handle, &err)) {
369 EM_DEBUG_LOG("emdaemon_sync_header success ");
372 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
373 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
374 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
375 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
376 if (!emipc_execute_stub_api(a_hAPI))
377 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
381 void stb_download_body(HIPC_API a_hAPI)
383 EM_DEBUG_FUNC_BEGIN();
384 int err = EMAIL_ERROR_NONE;
386 int attachment_count = 0;
391 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
394 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mail_id);
397 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &attachment_count);
400 if (!emdaemon_download_body(account_id, mail_id, 1, attachment_count, &handle, &err)) {
401 EM_DEBUG_EXCEPTION("emdaemon_download_body - failed");
405 err = EMAIL_ERROR_NONE;
409 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
410 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
411 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
412 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
413 if (!emipc_execute_stub_api(a_hAPI))
414 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
420 void stb_create_mailbox(HIPC_API a_hAPI)
422 EM_DEBUG_FUNC_BEGIN();
424 int err = EMAIL_ERROR_NONE;
425 char *local_stream = NULL;
427 email_mailbox_t mailbox = {0};
428 int handle = 0; /* Added for cancelling mailbox creating */
430 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, 0);
431 EM_DEBUG_LOG("size [%d]", buffer_size);
433 if(buffer_size <= 0) {
434 EM_DEBUG_EXCEPTION("buffer_size(%d) should be greater than 0", buffer_size);
435 err = EMAIL_ERROR_INVALID_PARAM;
439 local_stream = emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0);
440 em_convert_byte_stream_to_mailbox(local_stream, buffer_size, &mailbox);
441 EM_DEBUG_LOG("Mailbox name - %s", mailbox.mailbox_name);
443 on_server = *((int*)emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 1));
445 emdaemon_add_mailbox(&mailbox, on_server, &handle, &err);
448 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
449 EM_DEBUG_EXCEPTION("emipc_add_parameter failed 1");
450 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
451 EM_DEBUG_EXCEPTION("emipc_add_parameter failed 2");
452 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &mailbox.mailbox_id, sizeof(int)))
453 EM_DEBUG_EXCEPTION("emipc_add_parameter failed 3");
455 if (!emipc_execute_stub_api(a_hAPI)) {
456 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
464 void stb_delete_mailbox(HIPC_API a_hAPI)
466 EM_DEBUG_FUNC_BEGIN();
467 int err = EMAIL_ERROR_NONE;
469 int handle = 0; /* Added for cancelling mailbox deleting */
470 int input_mailbox_id = 0;
473 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &input_mailbox_id);
474 EM_DEBUG_LOG("input_mailbox_id [%d]", input_mailbox_id);
476 if (input_mailbox_id > 0)
477 EM_DEBUG_LOG("input_mailbox_id [%d]", input_mailbox_id);
479 EM_DEBUG_LOG("input_mailbox_id == 0");
481 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &on_server);
483 if(emdaemon_delete_mailbox(input_mailbox_id, on_server, &handle, &err))
484 err = EMAIL_ERROR_NONE;
486 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
487 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
488 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
489 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
491 if (!emipc_execute_stub_api(a_hAPI))
492 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
497 void stb_set_mailbox_type(HIPC_API a_hAPI)
499 EM_DEBUG_FUNC_BEGIN();
500 int err = EMAIL_ERROR_NONE;
502 int mailbox_type = 0;
504 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mailbox_id);
505 EM_DEBUG_LOG("mailbox_id[%d]", mailbox_id);
507 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mailbox_type);
508 EM_DEBUG_LOG("mailbox_type[%d]", mailbox_type);
510 if( (err = emdaemon_set_mailbox_type(mailbox_id, mailbox_type)) != EMAIL_ERROR_NONE)
511 err = EMAIL_ERROR_NONE;
513 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
514 EM_DEBUG_EXCEPTION("emipc_add_parameter failed 1");
516 if (!emipc_execute_stub_api(a_hAPI))
517 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
522 void stb_set_local_mailbox(HIPC_API a_hAPI)
524 EM_DEBUG_FUNC_BEGIN();
525 int err = EMAIL_ERROR_NONE;
527 int is_local_mailbox = 0;
529 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mailbox_id);
530 EM_DEBUG_LOG("mailbox_id[%d]", mailbox_id);
532 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &is_local_mailbox);
533 EM_DEBUG_LOG("is_local_mailbox[%d]", is_local_mailbox);
535 if( (err = emdaemon_set_local_mailbox(mailbox_id, is_local_mailbox)) != EMAIL_ERROR_NONE)
536 err = EMAIL_ERROR_NONE;
538 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
539 EM_DEBUG_EXCEPTION("emipc_add_parameter failed 1");
541 if (!emipc_execute_stub_api(a_hAPI))
542 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
547 void stb_set_mail_slot_size_of_mailbox(HIPC_API a_hAPI)
549 EM_DEBUG_FUNC_BEGIN();
550 int err = EMAIL_ERROR_NONE;
554 int mail_slot_size = 0;
556 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
557 EM_DEBUG_LOG("account_id[%d]", account_id);
559 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mailbox_id);
560 EM_DEBUG_LOG("mail_slot_size[%d]", mail_slot_size);
562 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &mail_slot_size);
563 EM_DEBUG_LOG("mail_slot_size[%d]", mail_slot_size);
565 if(emdaemon_set_mail_slot_size_of_mailbox(account_id, mailbox_id, mail_slot_size, &handle, &err))
566 err = EMAIL_ERROR_NONE;
567 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
568 EM_DEBUG_EXCEPTION("emipc_add_parameter failed 1");
570 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
571 EM_DEBUG_EXCEPTION("emipc_add_parameter failed 2");
573 if (!emipc_execute_stub_api(a_hAPI))
574 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
579 void stb_rename_mailbox(HIPC_API a_hAPI)
581 EM_DEBUG_FUNC_BEGIN();
583 int err = EMAIL_ERROR_NONE;
587 char *mailbox_path = NULL;
588 char *mailbox_alias = NULL;
590 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mailbox_id);
591 EM_DEBUG_LOG("mailbox_id[%d]", mailbox_id);
593 buffer_size = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 1);
594 EM_DEBUG_LOG("mailbox_path string size[%d]", buffer_size);
595 if(buffer_size > 0) {
596 mailbox_path = (char*)em_malloc(buffer_size);
597 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, buffer_size, mailbox_path);
598 EM_DEBUG_LOG("mailbox_path [%s]", mailbox_path);
601 buffer_size = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 2);
602 EM_DEBUG_LOG("mailbox_alias string size[%d]", buffer_size);
603 if(buffer_size > 0) {
604 mailbox_alias = (char*)em_malloc(buffer_size);
605 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, buffer_size, mailbox_alias);
606 EM_DEBUG_LOG("mailbox_alias [%s]", mailbox_alias);
609 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 3, sizeof(int), &on_server);
610 EM_DEBUG_LOG("on_server[%d]", on_server);
612 if ((err = emdaemon_rename_mailbox(mailbox_id, mailbox_path, mailbox_alias, on_server, &handle)) != EMAIL_ERROR_NONE) {
613 EM_DEBUG_EXCEPTION("emdaemon_rename_mailbox failed [%d]", err);
616 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
617 EM_DEBUG_EXCEPTION("emipc_add_parameter failed 1");
619 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
620 EM_DEBUG_EXCEPTION("emipc_add_parameter failed 2");
622 if (!emipc_execute_stub_api(a_hAPI))
623 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
625 EM_SAFE_FREE(mailbox_alias);
626 EM_SAFE_FREE(mailbox_path);
631 void stb_send_mail(HIPC_API a_hAPI)
633 EM_DEBUG_FUNC_BEGIN();
634 char* local_stream = NULL;
637 int err = EMAIL_ERROR_NONE;
640 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mail_id);
641 EM_DEBUG_LOG("mail_id [%d]", mail_id);
643 if(emdaemon_send_mail(mail_id, &handle, &err)) {
644 err = EMAIL_ERROR_NONE;
645 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
646 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
647 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
648 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
649 if (!emipc_execute_stub_api(a_hAPI))
650 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
653 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
654 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
655 if (!emipc_execute_stub_api(a_hAPI))
656 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
659 EM_SAFE_FREE(local_stream);
665 /* obsolete - there is no api calling this function */
666 void stb_get_mailbox_list(HIPC_API a_hAPI)
668 EM_DEBUG_FUNC_BEGIN();
669 int err = EMAIL_ERROR_NONE;
671 char* local_stream = NULL;
673 email_mailbox_t* mailbox_list = NULL;
677 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
679 if(emdaemon_get_mailbox_list(account_id, &mailbox_list, &count, &err))
680 EM_DEBUG_LOG("emdaemon_get_mailbox_list - success");
682 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
683 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
685 if(EMAIL_ERROR_NONE == err) {
686 EM_DEBUG_LOG("Count [%d]", count);
687 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &count, sizeof(int)))
688 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
690 for(counter=0; counter<count; counter++) {
691 EM_DEBUG_LOG("Name - %s", mailbox_list[counter].mailbox_name);
693 local_stream = em_convert_mailbox_to_byte_stream(mailbox_list+counter, &size);
696 EM_DEBUG_EXCEPTION ("INVALID PARAM: local_stream NULL ");
697 emcore_free_mailbox_list(&mailbox_list, count);
701 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, local_stream, size))
702 EM_DEBUG_EXCEPTION("Add Param mailbox failed ");
704 EM_SAFE_FREE(local_stream);
709 if (!emipc_execute_stub_api(a_hAPI))
710 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
712 emcore_free_mailbox_list(&mailbox_list, count);
717 void stb_delete_all_mails(HIPC_API a_hAPI)
719 EM_DEBUG_FUNC_BEGIN();
722 int err = EMAIL_ERROR_NONE;
725 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mailbox_id);
728 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &from_server);
730 emdaemon_delete_mail_all(mailbox_id, from_server, NULL, &err);
732 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
733 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
734 if (!emipc_execute_stub_api(a_hAPI))
735 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
740 void stb_delete_mail(HIPC_API a_hAPI)
742 EM_DEBUG_FUNC_BEGIN();
743 int err = EMAIL_ERROR_NONE;
748 int *mail_ids = NULL;
751 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mailbox_id);
753 EM_DEBUG_LOG("mailbox_id [%d]", mailbox_id);
755 /* Number of mail_ids */
756 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &num);
757 EM_DEBUG_LOG("number of mails [%d]", num);
760 mail_ids = em_malloc(sizeof(int) * num);
762 EM_DEBUG_EXCEPTION("em_malloc failed");
763 err = EMAIL_ERROR_OUT_OF_MEMORY;
768 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, num * sizeof(int), mail_ids);
770 for(counter = 0; counter < num; counter++)
771 EM_DEBUG_LOG("mail_ids [%d]", mail_ids[counter]);
774 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 3, sizeof(int), &from_server);
775 EM_DEBUG_LOG("from_server [%d]", from_server);
777 emdaemon_delete_mail(mailbox_id, mail_ids, num, from_server, NULL, &err);
780 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
781 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
783 if (!emipc_execute_stub_api(a_hAPI))
784 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
786 EM_SAFE_FREE(mail_ids);
790 void stb_clear_mail_data (HIPC_API a_hAPI)
792 EM_DEBUG_FUNC_BEGIN();
793 int err = EMAIL_ERROR_NONE;
795 if(emdaemon_clear_all_mail_data(&err)) {
796 EM_DEBUG_LOG(">>> stb_clear_mail_data Success [ %d] >> ", err);
799 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
800 EM_DEBUG_EXCEPTION("emipc_add_parameter failed : err");
801 if (!emipc_execute_stub_api(a_hAPI))
802 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
806 void stb_add_rule(HIPC_API a_hAPI)
808 EM_DEBUG_FUNC_BEGIN();
810 int err = EMAIL_ERROR_NONE;
811 char* local_rule_stream = NULL;
812 email_rule_t rule = { 0 };
814 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, 0);
815 if(buffer_size <= 0) {
816 err = EMAIL_ERROR_INVALID_PARAM;
820 local_rule_stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0);
821 if(!local_rule_stream) {
822 err = EMAIL_ERROR_INVALID_PARAM;
825 em_convert_byte_stream_to_rule(local_rule_stream, buffer_size, &rule);
826 EM_DEBUG_LOG("account ID [%d]", rule.account_id);
828 /* call add_filter handler */
829 err = emdaemon_add_filter(&rule);
833 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
834 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
835 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &rule.filter_id, sizeof(int)))
836 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
837 if (!emipc_execute_stub_api(a_hAPI))
838 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
840 emcore_free_rule(&rule);
846 /* obsolete - there is no api calling this function */
847 void stb_get_rule(HIPC_API a_hAPI)
849 EM_DEBUG_FUNC_BEGIN();
850 int err = EMAIL_ERROR_NONE;
852 email_rule_t* rule = NULL;
854 char* local_rule_stream = NULL;
856 filter_id = *((int*)emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0));
858 emdaemon_get_filter(filter_id, &rule, &err);
860 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
861 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
863 /* insert a rule if there exists a rule */
865 local_rule_stream = em_convert_rule_to_byte_stream(rule, &size);
866 if(!local_rule_stream) { /*prevent 26265*/
867 EM_DEBUG_EXCEPTION("em_convert_rule_to_byte_stream failed");
868 emcore_free_rule(rule);
873 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, local_rule_stream, size))
874 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
876 EM_SAFE_FREE(local_rule_stream);
877 emcore_free_rule(rule);
881 if (!emipc_execute_stub_api(a_hAPI)) {
882 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
889 /* obsolete - there is no api calling this function */
890 void stb_get_rule_list(HIPC_API a_hAPI)
892 EM_DEBUG_FUNC_BEGIN();
893 int err = EMAIL_ERROR_NONE;
895 char* local_stream = NULL;
898 email_rule_t* filtering_list = NULL;
900 emdaemon_get_filter_list(&filtering_list, &count, &err);
902 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
903 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
905 /* insert rules if there exist rules*/
907 EM_DEBUG_LOG("num of rules [%d]", count);
908 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &count, sizeof(int)))
909 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
911 for(i=0; i<count; i++) {
912 EM_DEBUG_LOG("Value - %s", filtering_list[i].value);
914 local_stream = em_convert_rule_to_byte_stream(filtering_list+i, &size);
916 if(!local_stream) break;
918 if(!emipc_add_dynamic_parameter(a_hAPI, ePARAMETER_OUT, local_stream, size))
919 EM_DEBUG_EXCEPTION("emipc_add_dynamic_parameter failed ");
925 if (!emipc_execute_stub_api(a_hAPI)) {
926 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
932 /* obsolete - there is no api calling this function */
933 void stb_find_rule(HIPC_API a_hAPI)
935 EM_DEBUG_FUNC_BEGIN();
937 int err = EMAIL_ERROR_NONE;
938 char* local_rule_stream = NULL;
939 email_rule_t rule = { 0 };
942 buffer_size = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
944 if(buffer_size > 0) {
945 local_rule_stream = (char*)em_malloc(buffer_size);
946 EM_NULL_CHECK_FOR_VOID(local_rule_stream);
947 if(local_rule_stream) {
948 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, buffer_size, local_rule_stream);
949 em_convert_byte_stream_to_rule(local_rule_stream, buffer_size, &rule);
950 EM_SAFE_FREE(local_rule_stream);
951 EM_DEBUG_LOG("account ID [%d]", rule.account_id);
953 if(emdaemon_find_filter(&rule, &err))
954 err = EMAIL_ERROR_NONE;
956 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
957 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
958 if (!emipc_execute_stub_api(a_hAPI))
959 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
966 void stb_update_rule(HIPC_API a_hAPI)
968 EM_DEBUG_FUNC_BEGIN();
972 int err = EMAIL_ERROR_NONE;
973 char* rule_stream = NULL;
974 email_rule_t rule = {0};
978 filter_id = *((int*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0));
981 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, 1);
982 EM_DEBUG_LOG("size [%d]", buffer_size);
983 if(buffer_size <= 0) {
984 err = EMAIL_ERROR_INVALID_PARAM;
987 rule_stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 1);
989 err = EMAIL_ERROR_INVALID_PARAM;
992 em_convert_byte_stream_to_rule(rule_stream, buffer_size, &rule);
994 /* call update handler */
995 emdaemon_update_filter(filter_id, &rule, &err);
998 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
999 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1001 if (!emipc_execute_stub_api(a_hAPI))
1002 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1004 emcore_free_rule(&rule);
1006 EM_DEBUG_FUNC_END();
1009 void stb_move_all_mails(HIPC_API a_hAPI)
1011 EM_DEBUG_FUNC_BEGIN();
1012 int err = EMAIL_ERROR_NONE;
1013 int src_mailbox_id = 0, dst_mailbox_id = 0;
1015 /* src_mailbox_id */
1016 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &src_mailbox_id);
1017 EM_DEBUG_LOG("src_mailbox_id [%d]", src_mailbox_id);
1019 if (src_mailbox_id > 0)
1020 EM_DEBUG_LOG("src_mailbox_id [%d]", src_mailbox_id);
1022 EM_DEBUG_LOG("src_mailbox_id == 0");
1024 /* dst_mailbox_id */
1025 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &dst_mailbox_id);
1026 EM_DEBUG_LOG("dst_mailbox_id [%d]", dst_mailbox_id);
1028 if (dst_mailbox_id > 0)
1029 EM_DEBUG_LOG("dst_mailbox_id [%d]", dst_mailbox_id);
1031 EM_DEBUG_LOG("dst_mailbox_id == 0");
1033 if(emdaemon_move_mail_all_mails(src_mailbox_id, dst_mailbox_id, &err))
1034 EM_DEBUG_LOG("emdaemon_move_mail_all_mails:Success");
1035 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
1036 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1040 if (!emipc_execute_stub_api(a_hAPI)) {
1041 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1044 EM_DEBUG_FUNC_END();
1047 void stb_set_flags_field(HIPC_API a_hAPI)
1049 EM_DEBUG_FUNC_BEGIN();
1050 int err = EMAIL_ERROR_NONE;
1051 email_flags_field_type field_type = 0;
1057 int *mail_ids = NULL;
1060 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1061 EM_DEBUG_LOG("account_id [%d]", account_id);
1063 /* Number of mail_ids */
1064 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &num);
1065 EM_DEBUG_LOG("number of mails [%d]", num);
1068 mail_ids = em_malloc(sizeof(int) * num);
1071 EM_DEBUG_EXCEPTION("em_malloc failed ");
1072 err = EMAIL_ERROR_OUT_OF_MEMORY;
1076 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, num * sizeof(int), mail_ids);
1078 for(counter=0; counter < num; counter++)
1079 EM_DEBUG_LOG("mailids [%d]", mail_ids[counter]);
1082 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 3, sizeof(int), &field_type);
1083 EM_DEBUG_LOG("field_type [%d]", field_type);
1086 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 4, sizeof(int), &value);
1087 EM_DEBUG_LOG("value [%d]", value);
1090 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 5, sizeof(int), &onserver);
1091 EM_DEBUG_LOG("onserver [%d]", onserver);
1093 if(emdaemon_set_flags_field(account_id, mail_ids, num, field_type, value, onserver, &err))
1094 EM_DEBUG_LOG("emdaemon_set_flags_field - success");
1098 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1099 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1101 if (!emipc_execute_stub_api(a_hAPI))
1102 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1105 EM_SAFE_FREE(mail_ids);
1107 EM_DEBUG_FUNC_END();
1110 void stb_add_mail(HIPC_API a_hAPI)
1112 EM_DEBUG_FUNC_BEGIN();
1113 int buffer_size = 0;
1114 int local_result = 0;
1115 int result_attachment_data_count = 0;
1116 int param_index = 0;
1117 int sync_server = 0;
1118 int err = EMAIL_ERROR_NONE;
1119 email_mail_data_t result_mail_data = {0};
1120 email_attachment_data_t *result_attachment_data = NULL;
1121 email_meeting_request_t result_meeting_request = {0};
1124 /* email_mail_data_t */;
1125 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1126 EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size);
1129 if(buffer_size > 0) {
1130 char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
1131 em_convert_byte_stream_to_mail_data(stream, buffer_size, &result_mail_data);
1135 if (result_mail_data.attachment_count > 0) {
1136 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1137 EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size);
1139 if(buffer_size > 0) {
1140 char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index);
1141 em_convert_byte_stream_to_attachment_data(stream, buffer_size, &result_attachment_data, &result_attachment_data_count);
1143 EM_DEBUG_LOG("result_attachment_data_count[%d]", result_attachment_data_count);
1145 if(result_attachment_data_count && !result_attachment_data) {
1146 EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed");
1147 err = EMAIL_ERROR_ON_PARSING;
1156 /* meeting request */
1157 EM_DEBUG_LOG("email_meeting_request_t");
1158 if ( result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_REQUEST
1159 || result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_RESPONSE
1160 || result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_ORIGINATINGREQUEST) {
1161 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1163 if(buffer_size > 0) {
1164 char* stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
1165 em_convert_byte_stream_to_meeting_req(stream, buffer_size, &result_meeting_request);
1169 EM_DEBUG_LOG("sync_server");
1170 emipc_get_parameter(a_hAPI, ePARAMETER_IN, param_index++, sizeof(int), &sync_server);
1172 if( (err = emdaemon_add_mail(&result_mail_data, result_attachment_data, result_attachment_data_count, &result_meeting_request, sync_server)) != EMAIL_ERROR_NONE) {
1173 EM_DEBUG_EXCEPTION("emdaemon_add_mail failed [%d]", err);
1178 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1179 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1180 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &result_mail_data.mail_id, sizeof(int)))
1181 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1182 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &result_mail_data.thread_id, sizeof(int)))
1183 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1184 if (!emipc_execute_stub_api(a_hAPI))
1185 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1188 if ( local_result == 0 ) {
1189 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1190 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1191 if (!emipc_execute_stub_api(a_hAPI))
1192 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1195 emcore_free_mail_data(&result_mail_data);
1197 if(result_attachment_data)
1198 emcore_free_attachment_data(&result_attachment_data, result_attachment_data_count, NULL);
1200 emstorage_free_meeting_request(&result_meeting_request);
1204 EM_DEBUG_FUNC_END();
1208 void stb_update_mail(HIPC_API a_hAPI)
1210 EM_DEBUG_FUNC_BEGIN();
1211 int buffer_size = 0;
1212 int local_result = 0;
1213 int result_attachment_data_count = 0;
1214 int param_index = 0;
1215 int sync_server = 0;
1216 int *temp_buffer = NULL;
1217 int err = EMAIL_ERROR_NONE;
1218 email_mail_data_t result_mail_data = {0};
1219 email_attachment_data_t *result_attachment_data = NULL;
1220 email_meeting_request_t result_meeting_request = {0};
1222 EM_DEBUG_LOG("email_mail_data_t");
1223 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1225 if(buffer_size > 0) {
1226 char* stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
1227 em_convert_byte_stream_to_mail_data(stream, buffer_size, &result_mail_data);
1230 if (result_mail_data.attachment_count > 0) {
1231 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1232 EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size);
1234 if(buffer_size > 0) {
1235 char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index);
1236 em_convert_byte_stream_to_attachment_data(stream, buffer_size, &result_attachment_data, &result_attachment_data_count);
1238 EM_DEBUG_LOG("result_attachment_data_count[%d]", result_attachment_data_count);
1240 if(result_attachment_data_count && !result_attachment_data) {
1241 EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed");
1242 err = EMAIL_ERROR_ON_PARSING;
1249 EM_DEBUG_LOG("email_meeting_request_t");
1251 if ( result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_REQUEST
1252 || result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_RESPONSE
1253 || result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_ORIGINATINGREQUEST) {
1254 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1256 if(buffer_size > 0) {
1257 char* stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
1258 em_convert_byte_stream_to_meeting_req(stream, buffer_size, &result_meeting_request);
1262 EM_DEBUG_LOG("sync_server");
1264 temp_buffer = emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
1267 EM_DEBUG_EXCEPTION("emipc_get_nth_parameter_data[%d] failed", param_index - 1);
1268 err = EMAIL_ERROR_IPC_PROTOCOL_FAILURE;
1272 sync_server = *temp_buffer;
1274 if( (err = emdaemon_update_mail(&result_mail_data, result_attachment_data,
1275 result_attachment_data_count, &result_meeting_request, sync_server)) != EMAIL_ERROR_NONE) {
1276 EM_DEBUG_EXCEPTION("emdaemon_update_mail failed [%d]", err);
1281 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1282 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1283 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &result_mail_data.mail_id, sizeof(int)))
1284 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1285 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &result_mail_data.thread_id, sizeof(int)))
1286 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1287 if (!emipc_execute_stub_api(a_hAPI))
1288 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1291 if ( local_result == 0 ) {
1292 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1293 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1294 if (!emipc_execute_stub_api(a_hAPI))
1295 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1298 emcore_free_mail_data(&result_mail_data);
1300 if(result_attachment_data)
1301 emcore_free_attachment_data(&result_attachment_data, result_attachment_data_count, NULL);
1303 emstorage_free_meeting_request(&result_meeting_request);
1306 EM_DEBUG_FUNC_END();
1310 void stb_move_thread_to_mailbox(HIPC_API a_hAPI)
1312 EM_DEBUG_FUNC_BEGIN();
1313 int mailbox_id = 0, thread_id = 0, move_always_flag = 0;
1314 int err = EMAIL_ERROR_NONE;
1315 char *target_mailbox_name = NULL;
1317 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &thread_id);
1318 EM_DEBUG_LOG("thread_id [%d]", thread_id);
1320 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mailbox_id);
1321 EM_DEBUG_LOG("mailbox_id [%d]", mailbox_id);
1323 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &move_always_flag);
1324 EM_DEBUG_LOG("move_always_flag [%d]", move_always_flag);
1326 if(emdaemon_move_mail_thread_to_mailbox(thread_id, mailbox_id, move_always_flag, &err))
1327 EM_DEBUG_LOG("emdaemon_move_mail_thread_to_mailbox success");
1329 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
1330 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1331 EM_SAFE_FREE(target_mailbox_name);
1335 if (!emipc_execute_stub_api(a_hAPI)) {
1336 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1337 EM_SAFE_FREE(target_mailbox_name);
1341 EM_SAFE_FREE(target_mailbox_name);
1342 EM_DEBUG_FUNC_END();
1345 void stb_delete_thread(HIPC_API a_hAPI)
1347 EM_DEBUG_FUNC_BEGIN();
1349 int thread_id = 0, delete_always_flag = 0;
1351 int err = EMAIL_ERROR_NONE;
1353 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &thread_id);
1354 EM_DEBUG_LOG("thread_id [%d]", thread_id);
1356 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &delete_always_flag);
1357 EM_DEBUG_LOG("delete_always_flag [%d]", delete_always_flag);
1359 if(emdaemon_delete_mail_thread(thread_id, delete_always_flag, &handle, &err))
1360 EM_DEBUG_LOG("emdaemon_delete_mail_thread success");
1362 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
1363 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1367 if (!emipc_execute_stub_api(a_hAPI)) {
1368 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1371 EM_DEBUG_FUNC_END();
1374 void stb_modify_seen_flag_of_thread(HIPC_API a_hAPI)
1376 EM_DEBUG_FUNC_BEGIN();
1378 int thread_id = 0, seen_flag = 0, on_server = 0;
1380 int err = EMAIL_ERROR_NONE;
1382 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &thread_id);
1383 EM_DEBUG_LOG("thread_id [%d]", thread_id);
1385 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &seen_flag);
1386 EM_DEBUG_LOG("seen_flag [%d]", seen_flag);
1388 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &on_server);
1389 EM_DEBUG_LOG("on_server [%d]", on_server);
1391 if(emdaemon_modify_seen_flag_of_thread(thread_id, seen_flag, on_server, &handle, &err))
1392 EM_DEBUG_LOG("emdaemon_modify_seen_flag_of_thread success");
1394 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
1395 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1399 if (!emipc_execute_stub_api(a_hAPI)) {
1400 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1403 EM_DEBUG_FUNC_END();
1406 void stb_expunge_mails_deleted_flagged(HIPC_API a_hAPI)
1408 EM_DEBUG_FUNC_BEGIN();
1410 int mailbox_id = 0, on_server = 0;
1412 int err = EMAIL_ERROR_NONE;
1414 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), (void*)&mailbox_id);
1415 EM_DEBUG_LOG("mailbox_id [%d]", mailbox_id);
1417 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), (void*)&on_server);
1418 EM_DEBUG_LOG("on_server [%d]", on_server);
1420 if( (err = emdaemon_expunge_mails_deleted_flagged(mailbox_id, on_server, &handle)) != EMAIL_ERROR_NONE)
1421 EM_DEBUG_LOG("emdaemon_expunge_mails_deleted_flagged success");
1423 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
1424 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1428 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int))) {
1429 EM_DEBUG_LOG("ipcAPI_AddParameter local_result failed ");
1433 if (!emipc_execute_stub_api(a_hAPI)) {
1434 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1437 EM_DEBUG_FUNC_END();
1440 void stb_move_mail(HIPC_API a_hAPI)
1442 int err = EMAIL_ERROR_NONE;
1443 int num = 0, counter = 0, mailbox_id = 0;
1445 /* Number of mail_ids */
1446 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &num);
1447 EM_DEBUG_LOG("number of mails [%d]", num);
1451 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, num * sizeof(int), mail_ids);
1453 for(counter = 0; counter < num; counter++)
1454 EM_DEBUG_LOG("mailids [%d]", mail_ids[counter]);
1456 /* target_mailbox_id */
1457 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &mailbox_id);
1458 EM_DEBUG_LOG("target_mailbox_id [%d]", mailbox_id);
1461 EM_DEBUG_LOG("mailbox_id [%d]", mailbox_id);
1463 EM_DEBUG_LOG("mailbox_id == 0");
1465 if(emdaemon_move_mail(mail_ids, num, mailbox_id, EMAIL_MOVED_BY_COMMAND, 0, &err))
1466 EM_DEBUG_LOG("emdaemon_move_mail success");
1468 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1469 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1471 if (!emipc_execute_stub_api(a_hAPI))
1472 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1473 EM_DEBUG_FUNC_END();
1476 void stb_delete_rule(HIPC_API a_hAPI)
1478 EM_DEBUG_FUNC_BEGIN();
1481 int err = EMAIL_ERROR_NONE;
1484 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &filter_id);
1486 if(emdaemon_delete_filter(filter_id, &err))
1487 err = EMAIL_ERROR_NONE;
1489 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1490 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1492 if (!emipc_execute_stub_api(a_hAPI))
1493 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1494 EM_DEBUG_FUNC_END();
1497 void stb_apply_rule(HIPC_API a_hAPI)
1499 EM_DEBUG_FUNC_BEGIN();
1502 int err = EMAIL_ERROR_NONE;
1505 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &filter_id);
1507 if(emdaemon_apply_filter(filter_id, &err))
1508 err = EMAIL_ERROR_NONE;
1510 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1511 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1513 if (!emipc_execute_stub_api(a_hAPI))
1514 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1515 EM_DEBUG_FUNC_END();
1518 void stb_add_attachment(HIPC_API a_hAPI)
1520 EM_DEBUG_FUNC_BEGIN();
1521 int buffer_size = 0;
1522 int err = EMAIL_ERROR_NONE;
1524 int attachment_count = 0;
1525 char* attachment_stream = NULL;
1526 email_attachment_data_t* attachment = NULL;
1529 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mail_id);
1532 buffer_size = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 1);
1534 if(buffer_size > 0) {
1535 attachment_stream = (char*)em_malloc(buffer_size);
1536 EM_NULL_CHECK_FOR_VOID(attachment_stream);
1537 if(attachment_stream) {
1538 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, buffer_size, attachment_stream);
1539 em_convert_byte_stream_to_attachment_data(attachment_stream, buffer_size, &attachment, &attachment_count);
1540 EM_SAFE_FREE(attachment_stream);
1545 EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed ");
1549 emdaemon_add_attachment(mail_id, attachment, &err);
1551 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1552 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1553 if(EMAIL_ERROR_NONE == err) {
1554 EM_DEBUG_LOG("emdaemon_add_attachment -Success");
1556 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &(attachment->attachment_id), sizeof(int)))
1557 EM_DEBUG_EXCEPTION("emipc_add_parameter attachment_id failed ");
1559 if (!emipc_execute_stub_api(a_hAPI))
1560 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1562 EM_SAFE_FREE(attachment);
1563 EM_DEBUG_FUNC_END();
1566 void stb_get_attachment(HIPC_API a_hAPI)
1568 EM_DEBUG_FUNC_BEGIN();
1569 int err = EMAIL_ERROR_NONE;
1571 char* attachment_stream = NULL;
1572 email_attachment_data_t* attachment = NULL;
1576 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &attachment_id);
1578 emdaemon_get_attachment(attachment_id, &attachment, &err);
1580 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1581 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1583 if(EMAIL_ERROR_NONE == err) {
1584 EM_DEBUG_LOG("emdaemon_get_attachment - Success");
1586 attachment_stream = em_convert_attachment_data_to_byte_stream(attachment, 1, &size);
1587 if(!attachment_stream) { /*prevent 26263*/
1588 emcore_free_attachment_data(&attachment, 1, &err);
1591 EM_NULL_CHECK_FOR_VOID(attachment_stream);
1593 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, attachment_stream, size))
1594 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1597 if (!emipc_execute_stub_api(a_hAPI)) {
1598 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1601 EM_SAFE_FREE(attachment_stream);
1602 emcore_free_attachment_data(&attachment, 1, &err);
1604 EM_DEBUG_FUNC_END();
1607 void stb_get_imap_mailbox_list(HIPC_API a_hAPI)
1609 EM_DEBUG_FUNC_BEGIN();
1610 int err = EMAIL_ERROR_NONE;
1615 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1617 if(emdaemon_get_imap_mailbox_list(account_id, "", &handle, &err))
1618 err = EMAIL_ERROR_NONE;
1620 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1621 EM_DEBUG_LOG("ipcAPI_AddParameter local_result failed ");
1622 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
1623 EM_DEBUG_LOG("ipcAPI_AddParameter local_result failed ");
1624 if (!emipc_execute_stub_api(a_hAPI))
1625 EM_DEBUG_LOG("emipc_execute_stub_api failed ");
1626 EM_DEBUG_FUNC_END();
1629 void stb_delete_attachment(HIPC_API a_hAPI)
1631 EM_DEBUG_FUNC_BEGIN();
1632 int err = EMAIL_ERROR_NONE;
1633 int attachment_id = 0;
1635 /* attachment_index */
1636 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &attachment_id);
1638 emdaemon_delete_mail_attachment(attachment_id, &err);
1640 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1641 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1642 if (!emipc_execute_stub_api(a_hAPI))
1643 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1645 EM_DEBUG_FUNC_END();
1648 void stb_download_attachment(HIPC_API a_hAPI)
1650 EM_DEBUG_FUNC_BEGIN();
1652 int err = EMAIL_ERROR_NONE;
1658 EM_DEBUG_LOG("account_id");
1659 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1661 EM_DEBUG_LOG("mail_id");
1662 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mail_id);
1664 EM_DEBUG_LOG("nth");
1665 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &nth);
1667 if(emdaemon_download_attachment(account_id, mail_id, nth, &handle, &err)) {
1668 err = EMAIL_ERROR_NONE;
1670 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1671 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1672 EM_DEBUG_LOG(">>>>>>>>>> HANDLE = %d", handle);
1673 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
1674 EM_DEBUG_EXCEPTION("emipc_add_parameter handle failed ");
1675 if (!emipc_execute_stub_api(a_hAPI))
1676 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1679 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1680 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1681 /* Download handle - 17-Apr-09 */
1682 EM_DEBUG_LOG(">>>>>>>>>> HANDLE = %d", handle);
1683 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
1684 EM_DEBUG_EXCEPTION("emipc_add_parameter handle failed ");
1685 if (!emipc_execute_stub_api(a_hAPI))
1686 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1689 EM_DEBUG_FUNC_END();
1692 void stb_mail_send_saved(HIPC_API a_hAPI)
1694 EM_DEBUG_FUNC_BEGIN();
1695 int err = EMAIL_ERROR_NONE;
1699 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1701 EM_DEBUG_LOG("calling emdaemon_send_mail_saved");
1702 if(emdaemon_send_mail_saved(account_id, NULL, &err))
1703 err = EMAIL_ERROR_NONE;
1705 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1706 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
1708 if (!emipc_execute_stub_api(a_hAPI))
1709 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1711 EM_DEBUG_FUNC_END();
1714 void stb_add_read_receipt(HIPC_API a_hAPI){
1715 EM_DEBUG_FUNC_BEGIN();
1716 int read_mail_id = 0;
1717 int receipt_mail_id = 0;
1718 int err = EMAIL_ERROR_NONE;
1721 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &read_mail_id);
1722 EM_DEBUG_LOG("read_mail_id [%d]", read_mail_id);
1724 if( (err = emcore_add_read_receipt(read_mail_id, &receipt_mail_id)) != EMAIL_ERROR_NONE )
1725 EM_DEBUG_EXCEPTION("emcore_add_read_receipt failed [%d]", err);
1727 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1728 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1730 if (err == EMAIL_ERROR_NONE) {
1731 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &receipt_mail_id, sizeof(int)))
1732 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1735 if (!emipc_execute_stub_api(a_hAPI))
1736 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1738 EM_DEBUG_FUNC_END("err [%d]", err);
1741 void stb_retry_sending_mail(HIPC_API a_hAPI)
1744 EM_DEBUG_FUNC_BEGIN();
1746 int timeout_in_sec = 0;
1747 int err = EMAIL_ERROR_NONE;
1750 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mail_id);
1751 EM_DEBUG_LOG("mail_id [%d]", mail_id);
1753 /* timeout_in_sec */
1754 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &timeout_in_sec);
1755 EM_DEBUG_LOG("timeout_in_sec [%d]", timeout_in_sec);
1757 if(emdaemon_send_mail_retry(mail_id, timeout_in_sec,&err))
1758 EM_DEBUG_LOG("emdaemon_get_mailbox_list - success");
1760 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1761 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1763 if (!emipc_execute_stub_api(a_hAPI))
1764 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1765 EM_DEBUG_FUNC_END();
1768 void stb_get_event_queue_status(HIPC_API a_hAPI)
1770 EM_DEBUG_FUNC_BEGIN();
1772 int on_receiving = 0;
1774 /*get the network status */
1775 emdaemon_get_event_queue_status(&on_sending, &on_receiving);
1778 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &on_sending, sizeof(int)))
1779 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1782 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &on_receiving, sizeof(int)))
1783 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1785 EM_DEBUG_LOG("stb_get_event_queue_status - Before Execute API");
1786 if (!emipc_execute_stub_api(a_hAPI))
1787 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1789 EM_DEBUG_FUNC_END();
1792 void stb_cancel_job(HIPC_API a_hAPI)
1794 EM_DEBUG_FUNC_BEGIN();
1797 int err = EMAIL_ERROR_NONE;
1799 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1800 EM_DEBUG_LOG("account_id [%d]", account_id);
1802 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &handle);
1803 EM_DEBUG_LOG("handle [%d]", handle);
1805 if(emdaemon_cancel_job(account_id, handle, &err))
1806 err = EMAIL_ERROR_NONE;
1808 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1809 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1810 if (!emipc_execute_stub_api(a_hAPI))
1811 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1812 EM_DEBUG_FUNC_END();
1815 void stb_get_pending_job(HIPC_API a_hAPI)
1817 EM_DEBUG_FUNC_BEGIN();
1818 email_action_t action = -1;
1821 int err = EMAIL_ERROR_NONE;
1822 email_event_status_type_t status = 0;
1824 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &action);
1825 EM_DEBUG_LOG("action [%d]", action);
1827 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &account_id);
1828 EM_DEBUG_LOG("account_id [%d]", account_id);
1830 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &mail_id);
1831 EM_DEBUG_LOG("mail_id [%d]", mail_id);
1833 if(emdaemon_get_pending_job(action, account_id, mail_id, &status))
1834 err = EMAIL_ERROR_NONE;
1836 err = EMAIL_ERROR_UNKNOWN;
1838 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1839 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1840 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &status, sizeof(int)))
1841 EM_DEBUG_EXCEPTION("emipc_add_parameter status failed ");
1842 if (!emipc_execute_stub_api(a_hAPI))
1843 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1844 EM_DEBUG_FUNC_END();
1847 void stb_print_receiving_event_queue_via_debug_msg(HIPC_API a_hAPI)
1849 email_event_t *event_queue = NULL;
1850 int event_active_queue = 0, err, i;
1852 emcore_get_receiving_event_queue(&event_queue, &event_active_queue, &err);
1854 EM_DEBUG_LOG("======================================================================");
1855 EM_DEBUG_LOG("Event active index [%d]", event_active_queue);
1856 EM_DEBUG_LOG("======================================================================");
1857 for(i = 1; i < 32; i++)
1858 EM_DEBUG_LOG("event[%d] : type[%d], account_id[%d], arg[%d], status[%d]", i, event_queue[i].type, event_queue[i].account_id, event_queue[i].event_param_data_4, event_queue[i].status);
1859 EM_DEBUG_LOG("======================================================================");
1860 EM_DEBUG_LOG("======================================================================");
1862 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1863 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1865 if (!emipc_execute_stub_api(a_hAPI))
1866 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1867 EM_DEBUG_FUNC_END();
1870 void stb_cancel_send_mail_job(HIPC_API a_hAPI)
1872 EM_DEBUG_FUNC_BEGIN();
1874 int err = EMAIL_ERROR_NONE;
1878 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1879 EM_DEBUG_LOG("account_id [%d]", account_id);
1882 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mail_id);
1883 EM_DEBUG_LOG("mail_id [%d]", mail_id);
1885 if(emdaemon_cancel_sending_mail_job(account_id,mail_id,&err))
1886 EM_DEBUG_LOG("success");
1888 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1889 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1891 if (!emipc_execute_stub_api(a_hAPI))
1892 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1893 EM_DEBUG_FUNC_END();
1896 void stb_search_mail_on_server(HIPC_API a_hAPI)
1898 EM_DEBUG_FUNC_BEGIN();
1900 int err = EMAIL_ERROR_NONE;
1903 int buffer_size = 0;
1904 int search_filter_count = 0;
1905 char *stream_for_search_filter_list = NULL;
1906 unsigned int job_handle = 0;
1907 email_search_filter_t *search_filter_list = NULL;
1910 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1911 EM_DEBUG_LOG("account_id [%d]", account_id);
1914 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mailbox_id);
1915 EM_DEBUG_LOG("mailbox_id [%d]", mailbox_id);
1917 /* search_filter_list */
1918 buffer_size = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 2);
1920 if(buffer_size > 0) {
1921 stream_for_search_filter_list = (char*)em_malloc(buffer_size);
1922 EM_NULL_CHECK_FOR_VOID(stream_for_search_filter_list);
1923 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, buffer_size, stream_for_search_filter_list);
1924 em_convert_byte_stream_to_search_filter(stream_for_search_filter_list, &search_filter_list, &search_filter_count);
1925 EM_SAFE_FREE(stream_for_search_filter_list);
1928 if(!emdaemon_search_mail_on_server(account_id ,mailbox_id, search_filter_list, search_filter_count, &job_handle, &err))
1929 EM_DEBUG_LOG("success");
1931 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1932 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1934 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &job_handle, sizeof(int)))
1935 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1937 if (!emipc_execute_stub_api(a_hAPI))
1938 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1940 if(search_filter_list) {
1941 for(i = 0; i < search_filter_count; i++) {
1942 switch(search_filter_list[i].search_filter_type) {
1943 case EMAIL_SEARCH_FILTER_TYPE_BCC :
1944 case EMAIL_SEARCH_FILTER_TYPE_CC :
1945 case EMAIL_SEARCH_FILTER_TYPE_FROM :
1946 case EMAIL_SEARCH_FILTER_TYPE_KEYWORD :
1947 case EMAIL_SEARCH_FILTER_TYPE_SUBJECT :
1948 case EMAIL_SEARCH_FILTER_TYPE_TO :
1949 case EMAIL_SEARCH_FILTER_TYPE_MESSAGE_ID :
1950 EM_SAFE_FREE(search_filter_list[i].search_filter_key_value.string_type_key_value);
1958 EM_SAFE_FREE(search_filter_list);
1960 EM_DEBUG_FUNC_END();
1963 void stb_clear_result_of_search_mail_on_server(HIPC_API a_hAPI)
1965 EM_DEBUG_FUNC_BEGIN();
1966 int err = EMAIL_ERROR_NONE;
1968 emstorage_mailbox_tbl_t *mailbox_tbl = NULL;
1971 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1973 EM_DEBUG_LOG("account_id [%d]", account_id);
1975 if (!emstorage_get_mailbox_by_mailbox_type(account_id, EMAIL_MAILBOX_TYPE_SEARCH_RESULT, &mailbox_tbl, true, &err)) {
1976 EM_DEBUG_EXCEPTION(" emstorage_get_mailbox_by_mailbox_type failed [%d]", err);
1980 if (!emstorage_delete_mail_by_mailbox(account_id, mailbox_tbl->mailbox_id, true, &err))
1981 EM_DEBUG_EXCEPTION(" emstorage_get_mailbox_by_mailbox_type failed [%d]", err);
1986 emstorage_free_mailbox(&mailbox_tbl, 1, NULL);
1989 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1990 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1992 if (!emipc_execute_stub_api(a_hAPI))
1993 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1995 EM_DEBUG_FUNC_END();
2000 void stb_add_account_with_validation(HIPC_API a_hAPI)
2002 EM_DEBUG_FUNC_BEGIN();
2003 int buffer_size = 0;
2004 int local_result = 0;
2006 char* stream = NULL;
2007 email_account_t *account = NULL;
2008 email_account_t *ref_account = NULL;
2009 int ref_check_interval = 0;
2010 int ref_account_id = 0;
2011 int err = EMAIL_ERROR_NONE;
2013 /* get account info */
2014 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2015 EM_DEBUG_LOG("size [%d]", buffer_size);
2016 if(buffer_size <= 0) {
2017 err = EMAIL_ERROR_INVALID_PARAM;
2021 stream =(char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0);
2023 err = EMAIL_ERROR_INVALID_PARAM;
2027 account = em_malloc(sizeof(email_account_t));
2029 if(account == NULL) {
2030 EM_DEBUG_EXCEPTION("EMAIL_ERROR_OUT_OF_MEMORY");
2031 err = EMAIL_ERROR_OUT_OF_MEMORY;
2035 em_convert_byte_stream_to_account(stream, buffer_size, account);
2037 if((err = emcore_add_account_to_unvalidated_account_list(account)) != EMAIL_ERROR_NONE) {
2038 EM_DEBUG_EXCEPTION("emcore_add_account_to_unvalidated_account_list failed [%d]", err);
2042 ref_account = emcore_get_account_reference(account->account_id);
2045 EM_DEBUG_EXCEPTION("emcore_get_account_reference failed [%d]", err);
2049 ref_check_interval = ref_account->check_interval;
2050 ref_account_id = ref_account->account_id;
2052 if(!emdaemon_validate_account_and_create(ref_account, &handle, &err)) {
2053 EM_DEBUG_EXCEPTION("emdaemon_validate_account_and_create fail [%d]", err);
2056 #ifdef __FEATURE_AUTO_POLLING__
2057 /* start auto polling, if check_interval not zero */
2058 if(ref_check_interval > 0) {
2059 if(!emdaemon_add_polling_alarm(ref_account_id, ref_check_interval))
2060 EM_DEBUG_EXCEPTION("emdaemon_add_polling_alarm[NOTI_ACCOUNT_ADD] : start auto poll failed >>> ");
2062 #endif /* __FEATURE_AUTO_POLLING__ */
2063 /* add account details to contact DB */
2064 /* emdaemon_insert_accountinfo_to_contact(account); */
2067 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2068 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2069 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
2070 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2071 if (!emipc_execute_stub_api(a_hAPI))
2072 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2075 if ( local_result == 0 ) { /* there is an error */
2076 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2077 EM_DEBUG_EXCEPTION("emipc_add_parameter failed : local_result ");
2078 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2079 EM_DEBUG_EXCEPTION("emipc_add_parameter failed : err");
2080 if (!emipc_execute_stub_api(a_hAPI))
2081 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2084 /* note: account is freed in thread_func_branch_command, which is run by other thread */
2085 /* emcore_free_account(account); */
2087 EM_DEBUG_FUNC_END();
2090 void stb_backup_account(HIPC_API a_hAPI)
2092 EM_DEBUG_FUNC_BEGIN();
2094 #ifdef __FEATURE_BACKUP_ACCOUNT__
2095 char *file_path = NULL;
2096 int local_result = 0, err_code = 0, handle = 0, file_path_length = 0;
2098 /* file_path_length */
2099 file_path_length = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2100 if(file_path_length > 0) {
2101 EM_DEBUG_LOG("file_path_length [%d]", file_path_length);
2102 file_path = em_malloc(file_path_length);
2103 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, file_path_length, file_path);
2104 EM_DEBUG_LOG("file_path [%s]", file_path);
2105 local_result = emcore_backup_accounts((const char*)file_path, &err_code);
2108 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2109 EM_DEBUG_LOG("emipc_add_parameter failed ");
2111 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err_code, sizeof(int)))
2112 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2114 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
2115 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
2117 if (!emipc_execute_stub_api(a_hAPI))
2118 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2120 EM_SAFE_FREE(file_path);
2121 #endif /* __FEATURE_BACKUP_ACCOUNT__ */
2122 EM_DEBUG_FUNC_END();
2125 void stb_restore_account(HIPC_API a_hAPI)
2127 EM_DEBUG_FUNC_BEGIN();
2128 #ifdef __FEATURE_BACKUP_ACCOUNT__
2129 char *file_path = NULL;
2130 int local_result = 0, err_code = 0, handle = 0, file_path_length = 0;
2132 /* file_path_length */
2133 file_path_length = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2134 if(file_path_length > 0) {
2135 EM_DEBUG_LOG("file_path_length [%d]", file_path_length);
2136 file_path = em_malloc(file_path_length);
2137 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, file_path_length, file_path);
2138 EM_DEBUG_LOG("file_path [%s]", file_path);
2139 local_result = emcore_restore_accounts((const char*)file_path, &err_code);
2142 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2143 EM_DEBUG_LOG("emipc_add_parameter failed ");
2145 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err_code, sizeof(int)))
2146 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2148 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
2149 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
2151 if (!emipc_execute_stub_api(a_hAPI))
2152 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2154 EM_SAFE_FREE(file_path);
2155 #endif /* __FEATURE_BACKUP_ACCOUNT__ */
2156 EM_DEBUG_FUNC_END();
2160 void stb_get_password_length(HIPC_API a_hAPI)
2162 EM_DEBUG_FUNC_BEGIN();
2164 int local_result = 0;
2166 int password_length = 0;
2169 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
2170 local_result = emstorage_get_password_length_of_account(account_id, &password_length,&err_code);
2172 EM_DEBUG_LOG("password_length [%d]", password_length);
2174 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2175 EM_DEBUG_LOG("emipc_add_parameter failed ");
2177 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err_code, sizeof(int)))
2178 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2180 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &password_length, sizeof(int)))
2181 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
2183 if (!emipc_execute_stub_api(a_hAPI))
2184 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2185 EM_DEBUG_FUNC_END();
2188 void stb_add_certificate(HIPC_API a_hAPI)
2190 int err = EMAIL_ERROR_NONE;
2191 int cert_file_len = 0;
2192 int email_address_len = 0;
2193 char *cert_file_path = NULL;
2194 char *email_address = NULL;
2196 cert_file_len = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2197 if (cert_file_len > 0) {
2198 cert_file_path = em_malloc(cert_file_len + 1);
2199 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, cert_file_len, cert_file_path);
2202 email_address_len = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 1);
2203 if (email_address_len > 0) {
2204 email_address = em_malloc(email_address_len + 1);
2205 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, email_address_len, email_address);
2208 if (!emcore_add_public_certificate(cert_file_path, email_address, &err)) {
2209 EM_DEBUG_EXCEPTION("em_core_smime_add_certificate failed");
2212 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2213 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
2215 if (EMAIL_ERROR_NONE == err) {
2216 EM_DEBUG_LOG("email_mail_add_attachment -Success");
2219 if (!emipc_execute_stub_api(a_hAPI))
2220 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2222 EM_SAFE_FREE(cert_file_path);
2223 EM_SAFE_FREE(email_address);
2224 EM_DEBUG_FUNC_END();
2227 void stb_delete_certificate(HIPC_API a_hAPI)
2229 int err = EMAIL_ERROR_NONE;
2230 int email_address_len = 0;
2231 char *email_address = NULL;
2232 char temp_email_address[130] = {0, };
2234 email_address_len = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2235 if (email_address_len > 0) {
2236 EM_DEBUG_LOG("email address string length [%d]", email_address_len);
2237 email_address = em_malloc(email_address_len + 1);
2238 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, email_address_len, email_address);
2239 EM_DEBUG_LOG("email address [%s]", email_address);
2242 SNPRINTF(temp_email_address, sizeof(temp_email_address), "<%s>", email_address);
2243 if (!emcore_delete_public_certificate(temp_email_address, &err)) {
2244 EM_DEBUG_EXCEPTION("em_core_smime_add_certificate failed");
2247 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2248 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
2250 if (EMAIL_ERROR_NONE == err) {
2251 EM_DEBUG_LOG("email_mail_add_attachment -Success");
2254 if (!emipc_execute_stub_api(a_hAPI))
2255 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2258 EM_SAFE_FREE(email_address);
2259 EM_DEBUG_FUNC_END();
2262 void stb_verify_signature(HIPC_API a_hAPI)
2264 int err = EMAIL_ERROR_NONE;
2268 int attachment_tbl_count = 0;
2269 email_mail_data_t *mail_data = NULL;
2270 emstorage_attachment_tbl_t *attachment_tbl_list = NULL;
2272 err = emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mail_id);
2273 if (err != EMAIL_ERROR_NONE) {
2274 EM_DEBUG_EXCEPTION("emipc_get_parameter failed");
2278 if (!emcore_get_mail_data(mail_id, &mail_data)) {
2279 EM_DEBUG_EXCEPTION("emcore_get_mail_data failed");
2283 if ((err = emstorage_get_attachment_list(mail_id, true, &attachment_tbl_list, &attachment_tbl_count)) != EMAIL_ERROR_NONE) {
2284 EM_DEBUG_EXCEPTION("emstorage_get_attachment_list failed : [%d]", err);
2288 if (attachment_tbl_count <= 0) {
2289 EM_DEBUG_EXCEPTION("Invalid signed mail");
2290 err = EMAIL_ERROR_INVALID_MAIL;
2294 for (count = 0; count < attachment_tbl_count; count++) {
2295 if (strcasestr(attachment_tbl_list[count].attachment_name, "p7s") == NULL)
2301 if (!emcore_verify_signature(attachment_tbl_list[count].attachment_path, mail_data->file_path_mime_entity, &verify, &err)) {
2302 EM_DEBUG_EXCEPTION("emcore_verify_signature failed");
2308 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &verify, sizeof(int)))
2309 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
2312 EM_DEBUG_LOG("Verify S/MIME signed mail-Success");
2315 if (!emipc_execute_stub_api(a_hAPI))
2316 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2319 if (attachment_tbl_list)
2320 emstorage_free_attachment(&attachment_tbl_list, attachment_tbl_count, NULL);
2323 emcore_free_mail_data(mail_data);
2324 EM_SAFE_FREE(mail_data);
2327 EM_DEBUG_FUNC_END();
2330 void stb_verify_certificate(HIPC_API a_hAPI)
2332 int err = EMAIL_ERROR_NONE;
2334 int cert_file_len = 0;
2335 char *cert_file_path = 0;
2337 cert_file_len = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2338 if (cert_file_len > 0) {
2339 cert_file_path = em_malloc(cert_file_len + 1);
2340 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, cert_file_len, cert_file_path);
2343 if (!emcore_verify_certificate(cert_file_path, &verify, &err)) {
2344 EM_DEBUG_EXCEPTION("em_core_smime_add_certificate failed");
2347 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &verify, sizeof(int)))
2348 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
2351 EM_DEBUG_LOG("Verify S/MIME signed mail-Success");
2354 if (!emipc_execute_stub_api(a_hAPI))
2355 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2357 EM_SAFE_FREE(cert_file_path);
2358 EM_DEBUG_FUNC_END();
2361 void stb_ping_service(HIPC_API a_hAPI)
2363 EM_DEBUG_FUNC_BEGIN();
2364 int err = EMAIL_ERROR_NONE;
2365 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2366 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2368 if (!emipc_execute_stub_api(a_hAPI))
2369 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2370 EM_DEBUG_FUNC_END();
2373 void stb_update_notification_bar_for_unread_mail(HIPC_API a_hAPI)
2375 EM_DEBUG_FUNC_BEGIN();
2376 int err = EMAIL_ERROR_NONE, account_id;
2379 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
2380 EM_DEBUG_LOG("account_id [%d]", account_id);
2382 if(!emcore_finalize_sync(account_id, &err)) {
2383 EM_DEBUG_EXCEPTION("emcore_finalize_sync failed [%d]", err);
2386 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2387 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2389 if (!emipc_execute_stub_api(a_hAPI))
2390 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2391 EM_DEBUG_FUNC_END();
2394 void stb_show_user_message(HIPC_API a_hAPI)
2396 EM_DEBUG_FUNC_BEGIN();
2397 int err = EMAIL_ERROR_NONE;
2399 int param_error = 0;
2400 email_action_t param_action = 0;
2403 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), ¶m_id);
2404 EM_DEBUG_LOG("param_id [%d]", param_id);
2407 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), ¶m_action);
2408 EM_DEBUG_LOG("param_action [%d]", param_action);
2411 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), ¶m_error);
2412 EM_DEBUG_LOG("param_error [%d]", param_error);
2414 if( (err = emcore_show_user_message(param_id, param_action, param_error)) != EMAIL_ERROR_NONE) {
2415 EM_DEBUG_EXCEPTION("emcore_show_user_message failed [%d]", err);
2418 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2419 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2421 if (!emipc_execute_stub_api(a_hAPI))
2422 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2424 EM_DEBUG_FUNC_END("err [%d]", err);
2427 void stb_write_mime_file(HIPC_API a_hAPI)
2429 EM_DEBUG_FUNC_BEGIN();
2431 int exist_file_path = 0;
2432 int buffer_size = 0;
2433 int local_result = 0;
2434 int result_attachment_data_count = 0;
2435 int param_index = 0;
2436 int err = EMAIL_ERROR_NONE;
2437 int ret = EMAIL_ERROR_NONE;
2438 char *file_path = NULL;
2439 char *output_file_path = NULL;
2440 email_mail_data_t result_mail_data = {0};
2441 email_attachment_data_t *result_attachment_data = NULL;
2442 emstorage_mail_tbl_t *input_mail_tbl_data = NULL;
2443 emstorage_attachment_tbl_t *input_attachment_tbl_data = NULL;
2445 /* email_mail_data_t */;
2446 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2447 EM_DEBUG_LOG("email_mail_data_t buffer_size[%d]", buffer_size);
2450 if(buffer_size > 0) {
2451 char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
2452 em_convert_byte_stream_to_mail_data(stream, buffer_size, &result_mail_data);
2456 if (result_mail_data.attachment_count > 0) {
2457 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2458 EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size);
2460 if(buffer_size > 0) {
2461 char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index);
2462 em_convert_byte_stream_to_attachment_data(stream, buffer_size, &result_attachment_data, &result_attachment_data_count);
2464 EM_DEBUG_LOG("result_attachment_data_count[%d]", result_attachment_data_count);
2466 if(result_attachment_data_count && !result_attachment_data) {
2467 EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed");
2468 err = EMAIL_ERROR_ON_PARSING;
2477 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2478 if (buffer_size > 0) {
2479 output_file_path = (char *)emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index);
2480 EM_DEBUG_LOG("output_file_path : [%s]", output_file_path);
2483 /* Convert mail_data to mail_tbl */
2484 if (!em_convert_mail_data_to_mail_tbl(&result_mail_data, 1, &input_mail_tbl_data, &err)) {
2485 EM_DEBUG_EXCEPTION("em_convert_mail_data_to_mail_tbl failed");
2489 /* Convert attachment_data to attachment_tbl */
2490 if (result_attachment_data_count > 0) {
2491 input_attachment_tbl_data = (emstorage_attachment_tbl_t *)em_malloc(sizeof(emstorage_attachment_tbl_t) * result_attachment_data_count);
2492 if (input_attachment_tbl_data == NULL) {
2493 EM_DEBUG_EXCEPTION("em_malloc failed");
2494 err = EMAIL_ERROR_OUT_OF_MEMORY;
2499 for (i = 0; i < result_attachment_data_count ; i++) {
2500 input_attachment_tbl_data[i].attachment_id = result_attachment_data[i].attachment_id;
2501 input_attachment_tbl_data[i].attachment_name = EM_SAFE_STRDUP(result_attachment_data[i].attachment_name);
2502 input_attachment_tbl_data[i].attachment_path = EM_SAFE_STRDUP(result_attachment_data[i].attachment_path);
2503 input_attachment_tbl_data[i].attachment_size = result_attachment_data[i].attachment_size;
2504 input_attachment_tbl_data[i].mail_id = result_attachment_data[i].mail_id;
2505 input_attachment_tbl_data[i].account_id = result_attachment_data[i].account_id;
2506 input_attachment_tbl_data[i].mailbox_id = result_attachment_data[i].mailbox_id;
2507 input_attachment_tbl_data[i].attachment_save_status = result_attachment_data[i].save_status;
2508 input_attachment_tbl_data[i].attachment_drm_type = result_attachment_data[i].drm_status;
2509 input_attachment_tbl_data[i].attachment_inline_content_status = result_attachment_data[i].inline_content_status;
2510 input_attachment_tbl_data[i].attachment_mime_type = EM_SAFE_STRDUP(result_attachment_data[i].attachment_mime_type);
2513 if ((err = em_verify_email_address_of_mail_tbl(input_mail_tbl_data, false)) != EMAIL_ERROR_NONE) {
2514 EM_DEBUG_EXCEPTION("em_verify_email_address_of_mail_tbl failed : [%d]", err);
2518 if (!emcore_make_rfc822_file_from_mail(input_mail_tbl_data, input_attachment_tbl_data, result_attachment_data_count, NULL, &file_path, NULL, &err)) {
2519 EM_DEBUG_EXCEPTION("emcore_make_rfc822_file_from_mail failed");
2523 if (output_file_path) {
2524 if (!emstorage_move_file(file_path, output_file_path, false, &err)) {
2525 EM_DEBUG_EXCEPTION("emstorage_move_file failed : [%d]", err);
2529 exist_file_path = 1;
2530 output_file_path = EM_SAFE_STRDUP(file_path);
2534 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, (char *)output_file_path, EM_SAFE_STRLEN(output_file_path) + 1)) {
2535 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2536 err = EMAIL_ERROR_NULL_VALUE;
2543 if ( local_result == 0 ) {
2544 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2545 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2548 if (!emipc_execute_stub_api(a_hAPI))
2549 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2551 emstorage_free_attachment(&input_attachment_tbl_data, result_attachment_data_count, &ret);
2553 emstorage_free_mail(&input_mail_tbl_data, 1, &ret);
2555 emcore_free_mail_data(&result_mail_data);
2557 if(result_attachment_data)
2558 emcore_free_attachment_data(&result_attachment_data, result_attachment_data_count, NULL);
2560 EM_SAFE_FREE(file_path);
2561 if (exist_file_path)
2562 EM_SAFE_FREE(output_file_path);
2565 EM_DEBUG_FUNC_END();
2569 void stb_validate_account_ex(HIPC_API a_hAPI)
2571 EM_DEBUG_FUNC_BEGIN();
2572 int buffer_size = 0;
2573 int local_result = 0;
2575 char* stream = NULL;
2576 email_account_t *account = NULL;
2577 email_account_t *ref_account = NULL;
2578 int err = EMAIL_ERROR_NONE;
2580 /* get account info */
2581 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2582 EM_DEBUG_LOG("size [%d]", buffer_size);
2583 if(buffer_size <= 0) {
2584 err = EMAIL_ERROR_INVALID_PARAM;
2588 stream =(char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0);
2590 err = EMAIL_ERROR_INVALID_PARAM;
2594 account = em_malloc(sizeof(email_account_t));
2596 if(account == NULL) {
2597 EM_DEBUG_EXCEPTION("EMAIL_ERROR_OUT_OF_MEMORY");
2598 err = EMAIL_ERROR_OUT_OF_MEMORY;
2602 em_convert_byte_stream_to_account(stream, buffer_size, account);
2604 if((err = emcore_add_account_to_unvalidated_account_list(account)) != EMAIL_ERROR_NONE) {
2605 EM_DEBUG_EXCEPTION("emcore_add_account_to_unvalidated_account_list failed [%d]", err);
2609 ref_account = emcore_get_account_reference(account->account_id);
2612 EM_DEBUG_EXCEPTION("emcore_get_account_reference failed [%d]", err);
2616 if((err = emdaemon_validate_account_ex(ref_account, &handle)) != EMAIL_ERROR_NONE) {
2617 EM_DEBUG_EXCEPTION("emdaemon_validate_account_ex fail [%d]", err);
2622 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2623 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2624 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
2625 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2626 if (!emipc_execute_stub_api(a_hAPI))
2627 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2630 if ( local_result == 0 ) { /* there is an error */
2631 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2632 EM_DEBUG_EXCEPTION("emipc_add_parameter failed : local_result ");
2633 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2634 EM_DEBUG_EXCEPTION("emipc_add_parameter failed : err");
2635 if (!emipc_execute_stub_api(a_hAPI))
2636 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2639 /* note: account is freed in thread_func_branch_command, which is run by other thread */
2640 /* emcore_free_account(account); */
2642 EM_DEBUG_FUNC_END();
2644 void stb_handle_task(int task_type, HIPC_API a_hAPI)
2646 EM_DEBUG_FUNC_BEGIN();
2647 int param_index = 0;
2648 int is_async_task = (task_type > EMAIL_ASYNC_TASK_BOUNDARY_START)?1:0;
2649 int err = EMAIL_ERROR_NONE;
2651 int task_parameter_length = 0;
2652 char *task_parameter = NULL;
2654 /* task_parameter_length */;
2655 task_parameter_length = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2656 EM_DEBUG_LOG("task_parameter_length [%d]", task_parameter_length);
2658 /* task_parameter */
2659 if(task_parameter_length > 0) {
2660 task_parameter = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
2664 /* add async task */
2665 if((err = emcore_add_task_to_task_table(task_type, EMAIL_TASK_PRIORITY_MID, task_parameter, task_parameter_length, &task_id)) != EMAIL_ERROR_NONE) {
2666 EM_DEBUG_EXCEPTION("emcore_add_task_to_task_pool failed [%d]", err);
2672 email_task_t sync_task;
2674 memset(&sync_task, 0, sizeof(email_task_t));
2675 sync_task.task_type = task_type;
2676 sync_task.task_priority = EMAIL_TASK_PRIORITY_MID;
2677 sync_task.task_parameter = task_parameter;
2678 sync_task.task_parameter_length = task_parameter_length;
2680 if((err = (int)emcore_default_sync_task_handler(&sync_task)) != EMAIL_ERROR_NONE) {
2681 EM_DEBUG_EXCEPTION("emcore_default_sync_task_handler failed [%d]", err);
2687 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2688 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2691 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &task_id, sizeof(int)))
2692 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2695 if (!emipc_execute_stub_api(a_hAPI))
2696 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2699 EM_DEBUG_FUNC_END("err [%d]", err);
2702 void* thread_func_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT(void *input_param)
2704 EM_DEBUG_FUNC_BEGIN("input_param [%p]", input_param);
2705 int err = EMAIL_ERROR_NONE;
2706 int err_for_signal = EMAIL_ERROR_NONE;
2708 int task_id = THREAD_SELF();
2709 task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT *task_param = input_param;
2711 /* Send start signal */
2712 if((err_for_signal = emcore_send_task_status_signal(EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT, task_id, EMAIL_TASK_STATUS_STARTED, EMAIL_ERROR_NONE, 0)) != EMAIL_ERROR_NONE)
2713 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2715 for(i = 0; i < task_param->mail_id_count; i++) {
2716 if((err = emcore_move_mail_to_another_account(task_param->mail_id_array[i], task_param->source_mailbox_id, task_param->target_mailbox_id, task_id)) != EMAIL_ERROR_NONE) {
2717 EM_DEBUG_EXCEPTION("emcore_move_mail_to_another_account failed [%d]", err);
2721 /* Send progress signal */
2722 if((err_for_signal = emcore_send_task_status_signal(EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT, task_id, EMAIL_TASK_STATUS_IN_PROGRESS, i, task_param->mail_id_count)) != EMAIL_ERROR_NONE)
2723 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2727 /* Send finish signal */
2728 if(err == EMAIL_ERROR_NONE) {
2729 if((err_for_signal = emcore_send_task_status_signal(EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT, task_id, EMAIL_TASK_STATUS_FINISHED, EMAIL_ERROR_NONE, 0)) != EMAIL_ERROR_NONE)
2730 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2733 if((err_for_signal = emcore_send_task_status_signal(EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT, task_id, EMAIL_TASK_STATUS_FAILED, err, 0)) != EMAIL_ERROR_NONE)
2734 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2737 /* Free task parameter */
2738 EM_SAFE_FREE(task_param->mail_id_array);
2739 EM_SAFE_FREE(task_param);
2741 EM_DEBUG_FUNC_END("err [%d]", err);
2745 void stb_move_mails_to_mailbox_of_another_account(HIPC_API a_hAPI)
2747 EM_DEBUG_FUNC_BEGIN();
2748 int param_index = 0;
2749 int err = EMAIL_ERROR_NONE;
2750 int task_parameter_length = 0;
2753 char *task_parameter = NULL;
2754 task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT *decoded_parameter = NULL;
2756 /* task_parameter_length */;
2757 task_parameter_length = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2759 if(task_parameter_length <= 0) {
2760 EM_DEBUG_EXCEPTION("EMAIL_ERROR_INVALID_PARAM : task_parameter_length [%d]", task_parameter_length);
2761 err = EMAIL_ERROR_INVALID_PARAM;
2765 /* task_parameter */
2766 task_parameter = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
2768 if((err = email_decode_task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT(task_parameter, task_parameter_length, (void**)&decoded_parameter)) != EMAIL_ERROR_NONE) {
2769 EM_DEBUG_EXCEPTION("email_decode_task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT failed[%d]", err);
2773 THREAD_CREATE(task_id, thread_func_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT, (void*)decoded_parameter, thread_error);
2775 if(thread_error != 0) {
2776 EM_DEBUG_EXCEPTION("THREAD_CREATE failed [%d]", thread_error);
2777 err = EMAIL_ERROR_SYSTEM_FAILURE;
2781 THREAD_DETACH(task_id);
2784 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2785 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2787 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &task_id, sizeof(int)))
2788 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2790 if (!emipc_execute_stub_api(a_hAPI))
2791 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2793 EM_DEBUG_FUNC_END("err [%d]", err);
2796 void* thread_func_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX(void *input_param)
2798 EM_DEBUG_FUNC_BEGIN("input_param [%p]", input_param);
2799 int err = EMAIL_ERROR_NONE;
2800 int err_for_signal = EMAIL_ERROR_NONE;
2802 int task_id = THREAD_SELF();
2803 email_account_t* ref_account = NULL;
2804 task_parameter_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX *task_param = input_param;
2806 ref_account = emcore_get_account_reference(task_param->account_id);
2809 EM_DEBUG_EXCEPTION("emcore_get_account_reference failed [%d]", task_param->account_id);
2810 err = EMAIL_ERROR_INVALID_ACCOUNT;
2814 /* on_server is allowed to be only 0 when server_type is EMAIL_SERVER_TYPE_ACTIVE_SYNC */
2815 if ( ref_account->incoming_server_type == EMAIL_SERVER_TYPE_ACTIVE_SYNC ) {
2819 /* Send start signal */
2820 if((err_for_signal = emcore_send_task_status_signal(EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX, task_id, EMAIL_TASK_STATUS_STARTED, EMAIL_ERROR_NONE, 0)) != EMAIL_ERROR_NONE)
2821 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2823 if((err = emcore_delete_mailbox_ex(task_param->account_id, task_param->mailbox_id_array, task_param->mailbox_id_count, task_param->on_server, recursive)) != EMAIL_ERROR_NONE) {
2824 EM_DEBUG_EXCEPTION("emcore_delete_mailbox_ex failed[%d]", err);
2829 /* Send finish signal */
2830 if(err == EMAIL_ERROR_NONE) {
2831 if((err_for_signal = emcore_send_task_status_signal(EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX, task_id, EMAIL_TASK_STATUS_FINISHED, EMAIL_ERROR_NONE, 0)) != EMAIL_ERROR_NONE)
2832 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2835 if((err_for_signal = emcore_send_task_status_signal(EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX, task_id, EMAIL_TASK_STATUS_FAILED, err, 0)) != EMAIL_ERROR_NONE)
2836 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2839 /* Free task parameter */
2840 EM_SAFE_FREE(task_param->mailbox_id_array);
2841 EM_SAFE_FREE(task_param);
2843 EM_DEBUG_FUNC_END("err [%d]", err);
2847 void stb_delete_mailbox_ex(HIPC_API a_hAPI)
2849 EM_DEBUG_FUNC_BEGIN();
2850 int param_index = 0;
2851 int err = EMAIL_ERROR_NONE;
2852 int task_parameter_length = 0;
2853 int thread_error = 0;
2855 char *task_parameter = NULL;
2856 task_parameter_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX *decoded_parameter = NULL;
2858 /* task_parameter_length */;
2859 task_parameter_length = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2861 if(task_parameter_length <= 0) {
2862 EM_DEBUG_EXCEPTION("EMAIL_ERROR_INVALID_PARAM : task_parameter_length [%d]", task_parameter_length);
2863 err = EMAIL_ERROR_INVALID_PARAM;
2867 /* task_parameter */
2868 task_parameter = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
2870 if((err = email_decode_task_parameter_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX(task_parameter, task_parameter_length, (void**)&decoded_parameter)) != EMAIL_ERROR_NONE) {
2871 EM_DEBUG_EXCEPTION("email_decode_task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT failed[%d]", err);
2875 THREAD_CREATE(task_id, thread_func_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX, (void*)decoded_parameter, thread_error);
2877 if(thread_error != 0) {
2878 EM_DEBUG_EXCEPTION("THREAD_CREATE failed [%d]", thread_error);
2879 err = EMAIL_ERROR_SYSTEM_FAILURE;
2883 THREAD_DETACH(task_id);
2886 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2887 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2889 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &task_id, sizeof(int)))
2890 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2892 if (!emipc_execute_stub_api(a_hAPI))
2893 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2895 EM_DEBUG_FUNC_END("err [%d]", err);
2898 void* thread_func_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL(void *input_param)
2900 EM_DEBUG_FUNC_BEGIN("input_param [%p]", input_param);
2901 int err = EMAIL_ERROR_NONE;
2902 int err_for_signal = EMAIL_ERROR_NONE;
2903 int task_id = THREAD_SELF();
2904 task_parameter_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL *task_param = input_param;
2906 /* Send start signal */
2907 if((err_for_signal = emcore_send_task_status_signal(EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL, task_id, EMAIL_TASK_STATUS_STARTED, EMAIL_ERROR_NONE, 0)) != EMAIL_ERROR_NONE)
2908 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2910 if((err = emcore_send_mail_with_downloading_attachment_of_original_mail(task_param->mail_id)) != EMAIL_ERROR_NONE) {
2911 EM_DEBUG_EXCEPTION("emcore_send_mail_with_downloading_attachment_of_original_mail failed [%d]", err);
2916 /* Send finish signal */
2917 if(err == EMAIL_ERROR_NONE) {
2918 if((err_for_signal = emcore_send_task_status_signal(EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL, task_id, EMAIL_TASK_STATUS_FINISHED, EMAIL_ERROR_NONE, 0)) != EMAIL_ERROR_NONE)
2919 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2922 if((err_for_signal = emcore_send_task_status_signal(EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL, task_id, EMAIL_TASK_STATUS_FAILED, err, 0)) != EMAIL_ERROR_NONE)
2923 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2926 /* Free task parameter */
2927 EM_SAFE_FREE(task_param);
2929 EM_DEBUG_FUNC_END("err [%d]", err);
2933 void stb_send_mail_with_downloading_attachment_of_original_mail(HIPC_API a_hAPI)
2935 EM_DEBUG_FUNC_BEGIN();
2936 int param_index = 0;
2937 int err = EMAIL_ERROR_NONE;
2938 int task_parameter_length = 0;
2939 int thread_error = 0;
2941 char *task_parameter = NULL;
2942 task_parameter_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL *decoded_parameter = NULL;
2944 /* task_parameter_length */;
2945 task_parameter_length = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2947 if(task_parameter_length <= 0) {
2948 EM_DEBUG_EXCEPTION("EMAIL_ERROR_INVALID_PARAM : task_parameter_length [%d]", task_parameter_length);
2949 err = EMAIL_ERROR_INVALID_PARAM;
2953 /* task_parameter */
2954 task_parameter = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
2956 if((err = email_decode_task_parameter_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL(task_parameter, task_parameter_length, (void**)&decoded_parameter)) != EMAIL_ERROR_NONE) {
2957 EM_DEBUG_EXCEPTION("email_decode_task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT failed[%d]", err);
2961 THREAD_CREATE(task_id, thread_func_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL, (void*)decoded_parameter, thread_error);
2963 if(thread_error != 0) {
2964 EM_DEBUG_EXCEPTION("THREAD_CREATE failed [%d]", thread_error);
2965 err = EMAIL_ERROR_SYSTEM_FAILURE;
2969 THREAD_DETACH(task_id);
2972 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2973 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2975 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &task_id, sizeof(int)))
2976 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2978 if (!emipc_execute_stub_api(a_hAPI))
2979 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2981 EM_DEBUG_FUNC_END("err [%d]", err);
2984 void stb_API_mapper(HIPC_API a_hAPI)
2986 EM_DEBUG_FUNC_BEGIN();
2987 int nAPIID = emipc_get_api_id(a_hAPI);
2990 case _EMAIL_API_ADD_ACCOUNT:
2991 stb_create_account(a_hAPI);
2994 case _EMAIL_API_ADD_MAILBOX:
2995 stb_create_mailbox(a_hAPI);
2998 case _EMAIL_API_DELETE_MAILBOX:
2999 stb_delete_mailbox(a_hAPI);
3002 case _EMAIL_API_SET_MAILBOX_TYPE:
3003 stb_set_mailbox_type(a_hAPI);
3006 case _EMAIL_API_SET_LOCAL_MAILBOX:
3007 stb_set_local_mailbox(a_hAPI);
3010 case _EMAIL_API_SET_MAIL_SLOT_SIZE:
3011 stb_set_mail_slot_size_of_mailbox(a_hAPI);
3014 case _EMAIL_API_RENAME_MAILBOX:
3015 stb_rename_mailbox(a_hAPI);
3018 case _EMAIL_API_SEND_MAIL:
3019 stb_send_mail(a_hAPI);
3022 case _EMAIL_API_GET_MAILBOX_LIST:
3023 stb_get_mailbox_list(a_hAPI);
3026 case _EMAIL_API_SYNC_HEADER:
3027 stb_sync_header(a_hAPI);
3030 case _EMAIL_API_DOWNLOAD_BODY:
3031 stb_download_body(a_hAPI);
3034 case _EMAIL_API_CLEAR_DATA:
3035 stb_clear_mail_data (a_hAPI);
3038 case _EMAIL_API_DELETE_ALL_MAIL:
3039 stb_delete_all_mails(a_hAPI);
3042 case _EMAIL_API_DELETE_MAIL:
3043 stb_delete_mail(a_hAPI);
3046 case _EMAIL_API_ADD_RULE:
3047 stb_add_rule(a_hAPI);
3050 case _EMAIL_API_GET_RULE:
3051 stb_get_rule(a_hAPI);
3054 case _EMAIL_API_GET_RULE_LIST:
3055 stb_get_rule_list(a_hAPI);
3058 case _EMAIL_API_FIND_RULE:
3059 stb_find_rule(a_hAPI);
3062 case _EMAIL_API_UPDATE_RULE:
3063 stb_update_rule(a_hAPI);
3066 case _EMAIL_API_DELETE_RULE:
3067 stb_delete_rule(a_hAPI);
3070 case _EMAIL_API_APPLY_RULE:
3071 stb_apply_rule(a_hAPI);
3074 case _EMAIL_API_MOVE_MAIL:
3075 stb_move_mail(a_hAPI);
3078 case _EMAIL_API_MOVE_ALL_MAIL:
3079 stb_move_all_mails(a_hAPI);
3082 case _EMAIL_API_SET_FLAGS_FIELD:
3083 stb_set_flags_field(a_hAPI);
3086 case _EMAIL_API_ADD_MAIL:
3087 stb_add_mail(a_hAPI);
3090 case _EMAIL_API_UPDATE_MAIL:
3091 stb_update_mail(a_hAPI);
3094 case _EMAIL_API_MOVE_THREAD_TO_MAILBOX:
3095 stb_move_thread_to_mailbox(a_hAPI);
3098 case _EMAIL_API_DELETE_THREAD:
3099 stb_delete_thread(a_hAPI);
3102 case _EMAIL_API_MODIFY_SEEN_FLAG_OF_THREAD:
3103 stb_modify_seen_flag_of_thread(a_hAPI);
3106 case _EMAIL_API_EXPUNGE_MAILS_DELETED_FLAGGED:
3107 stb_expunge_mails_deleted_flagged(a_hAPI);
3110 case _EMAIL_API_DELETE_ACCOUNT:
3111 stb_delete_account(a_hAPI);
3114 case _EMAIL_API_UPDATE_ACCOUNT:
3115 stb_update_account(a_hAPI);
3118 case _EMAIL_API_ADD_ATTACHMENT:
3119 stb_add_attachment(a_hAPI);
3122 case _EMAIL_API_GET_IMAP_MAILBOX_LIST:
3123 stb_get_imap_mailbox_list(a_hAPI);
3126 case _EMAIL_API_GET_ATTACHMENT:
3127 stb_get_attachment(a_hAPI);
3130 case _EMAIL_API_DELETE_ATTACHMENT:
3131 stb_delete_attachment(a_hAPI);
3134 case _EMAIL_API_DOWNLOAD_ATTACHMENT:
3135 stb_download_attachment(a_hAPI);
3138 case _EMAIL_API_GET_ACCOUNT_LIST:
3139 stb_get_account_list(a_hAPI);
3142 case _EMAIL_API_SEND_SAVED:
3143 stb_mail_send_saved(a_hAPI);
3146 case _EMAIL_API_ADD_READ_RECEIPT:
3147 stb_add_read_receipt(a_hAPI);
3150 case _EMAIL_API_CANCEL_JOB:
3151 stb_cancel_job(a_hAPI);
3154 case _EMAIL_API_GET_PENDING_JOB:
3155 stb_get_pending_job(a_hAPI);
3158 case _EMAIL_API_NETWORK_GET_STATUS:
3159 stb_get_event_queue_status(a_hAPI);
3162 case _EMAIL_API_SEND_RETRY:
3163 stb_retry_sending_mail(a_hAPI);
3166 case _EMAIL_API_VALIDATE_ACCOUNT :
3167 stb_validate_account(a_hAPI);
3170 case _EMAIL_API_SEND_MAIL_CANCEL_JOB :
3171 stb_cancel_send_mail_job(a_hAPI);
3174 case _EMAIL_API_SEARCH_MAIL_ON_SERVER :
3175 stb_search_mail_on_server(a_hAPI);
3178 case _EMAIL_API_CLEAR_RESULT_OF_SEARCH_MAIL_ON_SERVER :
3179 stb_clear_result_of_search_mail_on_server(a_hAPI);
3182 case _EMAIL_API_ADD_ACCOUNT_WITH_VALIDATION :
3183 stb_add_account_with_validation(a_hAPI);
3186 case _EMAIL_API_BACKUP_ACCOUNTS:
3187 stb_backup_account(a_hAPI);
3190 case _EMAIL_API_RESTORE_ACCOUNTS:
3191 stb_restore_account(a_hAPI);
3194 case _EMAIL_API_GET_PASSWORD_LENGTH_OF_ACCOUNT:
3195 stb_get_password_length(a_hAPI);
3198 case _EMAIL_API_PRINT_RECEIVING_EVENT_QUEUE :
3199 stb_print_receiving_event_queue_via_debug_msg(a_hAPI);
3202 case _EMAIL_API_ADD_CERTIFICATE:
3203 stb_add_certificate(a_hAPI);
3206 case _EMAIL_API_DELETE_CERTIFICATE:
3207 stb_delete_certificate(a_hAPI);
3210 case _EMAIL_API_VERIFY_SIGNATURE:
3211 stb_verify_signature(a_hAPI);
3214 case _EMAIL_API_VERIFY_CERTIFICATE:
3215 stb_verify_certificate(a_hAPI);
3218 case _EMAIL_API_PING_SERVICE :
3219 stb_ping_service(a_hAPI);
3222 case _EMAIL_API_UPDATE_NOTIFICATION_BAR_FOR_UNREAD_MAIL :
3223 stb_update_notification_bar_for_unread_mail(a_hAPI);
3226 case _EMAIL_API_SHOW_USER_MESSAGE :
3227 stb_show_user_message(a_hAPI);
3230 case _EMAIL_API_WRITE_MIME_FILE :
3231 stb_write_mime_file(a_hAPI);
3234 case _EMAIL_API_VALIDATE_ACCOUNT_EX :
3235 stb_validate_account_ex(a_hAPI);
3238 case EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT :
3239 stb_move_mails_to_mailbox_of_another_account(a_hAPI);
3242 case EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX :
3243 stb_delete_mailbox_ex(a_hAPI);
3246 case EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL :
3247 stb_send_mail_with_downloading_attachment_of_original_mail(a_hAPI);
3251 if(EMAIL_SYNC_TASK_BOUNDARY_START < nAPIID && nAPIID < EMAIL_ASYNC_TASK_BOUNDARY_END)
3252 stb_handle_task(nAPIID, a_hAPI);
3255 EM_DEBUG_FUNC_END();
3258 GMainLoop *g_mainloop = NULL;
3260 static void callback_for_sigterm(int signum)
3262 EM_DEBUG_FUNC_BEGIN("signum [%d]", signum);
3265 g_main_loop_quit(g_mainloop);
3267 EM_DEBUG_FUNC_END();
3270 INTERNAL_FUNC int main(int argc, char *argv[])
3272 /* Do the email-service Initialization
3273 1. Create all DB tables and load the email engine */
3274 EM_DEBUG_LOG("Email service begin");
3276 GMainLoop *mainloop;
3278 EM_DEBUG_LOG("ipcEmailStub_Initialize Start");
3280 ret = emipc_initialize_stub(stb_API_mapper);
3283 EM_DEBUG_LOG("ipcEmailStub_Initialize Success");
3285 EM_DEBUG_EXCEPTION("ipcEmailStub_Initialize failed");
3287 signal(SIGPIPE, SIG_IGN); /* to ignore signal 13(SIGPIPE) */
3288 signal(SIGTERM, callback_for_sigterm); /* to handle signal 15(SIGTERM) - power off case*/
3290 emdaemon_initialize(&err);
3292 /* Start auto polling */
3293 #ifdef __FEATURE_AUTO_POLLING__
3294 emdaemon_start_auto_polling(&err);
3297 mainloop = g_main_loop_new(NULL, 0);
3298 g_mainloop = mainloop;
3302 g_main_loop_run(mainloop);
3304 /* Clean up resources */
3305 g_main_loop_unref(mainloop);
3309 emipc_finalize_stub();
3311 emdaemon_finalize(NULL);
3313 EM_DEBUG_FUNC_END();