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);
832 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
833 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
834 if (!emipc_execute_stub_api(a_hAPI))
835 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
837 emcore_free_rule(&rule);
843 /* obsolete - there is no api calling this function */
844 void stb_get_rule(HIPC_API a_hAPI)
846 EM_DEBUG_FUNC_BEGIN();
847 int err = EMAIL_ERROR_NONE;
849 email_rule_t* rule = NULL;
851 char* local_rule_stream = NULL;
853 filter_id = *((int*)emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0));
855 emdaemon_get_filter(filter_id, &rule, &err);
857 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
858 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
860 /* insert a rule if there exists a rule */
862 local_rule_stream = em_convert_rule_to_byte_stream(rule, &size);
863 if(!local_rule_stream) { /*prevent 26265*/
864 EM_DEBUG_EXCEPTION("em_convert_rule_to_byte_stream failed");
865 emcore_free_rule(rule);
870 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, local_rule_stream, size))
871 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
873 EM_SAFE_FREE(local_rule_stream);
874 emcore_free_rule(rule);
878 if (!emipc_execute_stub_api(a_hAPI)) {
879 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
886 /* obsolete - there is no api calling this function */
887 void stb_get_rule_list(HIPC_API a_hAPI)
889 EM_DEBUG_FUNC_BEGIN();
890 int err = EMAIL_ERROR_NONE;
892 char* local_stream = NULL;
895 email_rule_t* filtering_list = NULL;
897 emdaemon_get_filter_list(&filtering_list, &count, &err);
899 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
900 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
902 /* insert rules if there exist rules*/
904 EM_DEBUG_LOG("num of rules [%d]", count);
905 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &count, sizeof(int)))
906 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
908 for(i=0; i<count; i++) {
909 EM_DEBUG_LOG("Value - %s", filtering_list[i].value);
911 local_stream = em_convert_rule_to_byte_stream(filtering_list+i, &size);
913 if(!local_stream) break;
915 if(!emipc_add_dynamic_parameter(a_hAPI, ePARAMETER_OUT, local_stream, size))
916 EM_DEBUG_EXCEPTION("emipc_add_dynamic_parameter failed ");
922 if (!emipc_execute_stub_api(a_hAPI)) {
923 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
929 /* obsolete - there is no api calling this function */
930 void stb_find_rule(HIPC_API a_hAPI)
932 EM_DEBUG_FUNC_BEGIN();
934 int err = EMAIL_ERROR_NONE;
935 char* local_rule_stream = NULL;
936 email_rule_t rule = { 0 };
939 buffer_size = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
941 if(buffer_size > 0) {
942 local_rule_stream = (char*)em_malloc(buffer_size);
943 EM_NULL_CHECK_FOR_VOID(local_rule_stream);
944 if(local_rule_stream) {
945 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, buffer_size, local_rule_stream);
946 em_convert_byte_stream_to_rule(local_rule_stream, buffer_size, &rule);
947 EM_SAFE_FREE(local_rule_stream);
948 EM_DEBUG_LOG("account ID [%d]", rule.account_id);
950 if(emdaemon_find_filter(&rule, &err))
951 err = EMAIL_ERROR_NONE;
953 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
954 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
955 if (!emipc_execute_stub_api(a_hAPI))
956 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
963 void stb_update_rule(HIPC_API a_hAPI)
965 EM_DEBUG_FUNC_BEGIN();
969 int err = EMAIL_ERROR_NONE;
970 char* rule_stream = NULL;
971 email_rule_t rule = {0};
975 filter_id = *((int*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0));
978 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, 1);
979 EM_DEBUG_LOG("size [%d]", buffer_size);
980 if(buffer_size <= 0) {
981 err = EMAIL_ERROR_INVALID_PARAM;
984 rule_stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 1);
986 err = EMAIL_ERROR_INVALID_PARAM;
989 em_convert_byte_stream_to_rule(rule_stream, buffer_size, &rule);
991 /* call update handler */
992 emdaemon_update_filter(filter_id, &rule, &err);
995 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
996 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
998 if (!emipc_execute_stub_api(a_hAPI))
999 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1001 emcore_free_rule(&rule);
1003 EM_DEBUG_FUNC_END();
1006 void stb_move_all_mails(HIPC_API a_hAPI)
1008 EM_DEBUG_FUNC_BEGIN();
1009 int err = EMAIL_ERROR_NONE;
1010 int src_mailbox_id = 0, dst_mailbox_id = 0;
1012 /* src_mailbox_id */
1013 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &src_mailbox_id);
1014 EM_DEBUG_LOG("src_mailbox_id [%d]", src_mailbox_id);
1016 if (src_mailbox_id > 0)
1017 EM_DEBUG_LOG("src_mailbox_id [%d]", src_mailbox_id);
1019 EM_DEBUG_LOG("src_mailbox_id == 0");
1021 /* dst_mailbox_id */
1022 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &dst_mailbox_id);
1023 EM_DEBUG_LOG("dst_mailbox_id [%d]", dst_mailbox_id);
1025 if (dst_mailbox_id > 0)
1026 EM_DEBUG_LOG("dst_mailbox_id [%d]", dst_mailbox_id);
1028 EM_DEBUG_LOG("dst_mailbox_id == 0");
1030 if(emdaemon_move_mail_all_mails(src_mailbox_id, dst_mailbox_id, &err))
1031 EM_DEBUG_LOG("emdaemon_move_mail_all_mails:Success");
1032 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
1033 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1037 if (!emipc_execute_stub_api(a_hAPI)) {
1038 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1041 EM_DEBUG_FUNC_END();
1044 void stb_set_flags_field(HIPC_API a_hAPI)
1046 EM_DEBUG_FUNC_BEGIN();
1047 int err = EMAIL_ERROR_NONE;
1048 email_flags_field_type field_type = 0;
1054 int *mail_ids = NULL;
1057 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1058 EM_DEBUG_LOG("account_id [%d]", account_id);
1060 /* Number of mail_ids */
1061 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &num);
1062 EM_DEBUG_LOG("number of mails [%d]", num);
1065 mail_ids = em_malloc(sizeof(int) * num);
1068 EM_DEBUG_EXCEPTION("em_malloc failed ");
1069 err = EMAIL_ERROR_OUT_OF_MEMORY;
1073 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, num * sizeof(int), mail_ids);
1075 for(counter=0; counter < num; counter++)
1076 EM_DEBUG_LOG("mailids [%d]", mail_ids[counter]);
1079 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 3, sizeof(int), &field_type);
1080 EM_DEBUG_LOG("field_type [%d]", field_type);
1083 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 4, sizeof(int), &value);
1084 EM_DEBUG_LOG("value [%d]", value);
1087 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 5, sizeof(int), &onserver);
1088 EM_DEBUG_LOG("onserver [%d]", onserver);
1090 if(emdaemon_set_flags_field(account_id, mail_ids, num, field_type, value, onserver, &err))
1091 EM_DEBUG_LOG("emdaemon_set_flags_field - success");
1095 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1096 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1098 if (!emipc_execute_stub_api(a_hAPI))
1099 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1102 EM_SAFE_FREE(mail_ids);
1104 EM_DEBUG_FUNC_END();
1107 void stb_add_mail(HIPC_API a_hAPI)
1109 EM_DEBUG_FUNC_BEGIN();
1110 int buffer_size = 0;
1111 int local_result = 0;
1112 int result_attachment_data_count = 0;
1113 int param_index = 0;
1114 int sync_server = 0;
1115 int err = EMAIL_ERROR_NONE;
1116 email_mail_data_t result_mail_data = {0};
1117 email_attachment_data_t *result_attachment_data = NULL;
1118 email_meeting_request_t result_meeting_request = {0};
1121 /* email_mail_data_t */;
1122 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1123 EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size);
1126 if(buffer_size > 0) {
1127 char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
1128 em_convert_byte_stream_to_mail_data(stream, buffer_size, &result_mail_data);
1132 if (result_mail_data.attachment_count > 0) {
1133 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1134 EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size);
1136 if(buffer_size > 0) {
1137 char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index);
1138 em_convert_byte_stream_to_attachment_data(stream, buffer_size, &result_attachment_data, &result_attachment_data_count);
1140 EM_DEBUG_LOG("result_attachment_data_count[%d]", result_attachment_data_count);
1142 if(result_attachment_data_count && !result_attachment_data) {
1143 EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed");
1144 err = EMAIL_ERROR_ON_PARSING;
1153 /* meeting request */
1154 EM_DEBUG_LOG("email_meeting_request_t");
1155 if ( result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_REQUEST
1156 || result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_RESPONSE
1157 || result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_ORIGINATINGREQUEST) {
1158 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1160 if(buffer_size > 0) {
1161 char* stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
1162 em_convert_byte_stream_to_meeting_req(stream, buffer_size, &result_meeting_request);
1166 EM_DEBUG_LOG("sync_server");
1167 emipc_get_parameter(a_hAPI, ePARAMETER_IN, param_index++, sizeof(int), &sync_server);
1169 if( (err = emdaemon_add_mail(&result_mail_data, result_attachment_data, result_attachment_data_count, &result_meeting_request, sync_server)) != EMAIL_ERROR_NONE) {
1170 EM_DEBUG_EXCEPTION("emdaemon_add_mail failed [%d]", err);
1175 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1176 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1177 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &result_mail_data.mail_id, sizeof(int)))
1178 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1179 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &result_mail_data.thread_id, sizeof(int)))
1180 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1181 if (!emipc_execute_stub_api(a_hAPI))
1182 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1185 if ( local_result == 0 ) {
1186 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1187 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1188 if (!emipc_execute_stub_api(a_hAPI))
1189 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1192 emcore_free_mail_data(&result_mail_data);
1194 if(result_attachment_data)
1195 emcore_free_attachment_data(&result_attachment_data, result_attachment_data_count, NULL);
1197 emstorage_free_meeting_request(&result_meeting_request);
1201 EM_DEBUG_FUNC_END();
1205 void stb_update_mail(HIPC_API a_hAPI)
1207 EM_DEBUG_FUNC_BEGIN();
1208 int buffer_size = 0;
1209 int local_result = 0;
1210 int result_attachment_data_count = 0;
1211 int param_index = 0;
1212 int sync_server = 0;
1213 int *temp_buffer = NULL;
1214 int err = EMAIL_ERROR_NONE;
1215 email_mail_data_t result_mail_data = {0};
1216 email_attachment_data_t *result_attachment_data = NULL;
1217 email_meeting_request_t result_meeting_request = {0};
1219 EM_DEBUG_LOG("email_mail_data_t");
1220 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1222 if(buffer_size > 0) {
1223 char* stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
1224 em_convert_byte_stream_to_mail_data(stream, buffer_size, &result_mail_data);
1227 if (result_mail_data.attachment_count > 0) {
1228 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1229 EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size);
1231 if(buffer_size > 0) {
1232 char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index);
1233 em_convert_byte_stream_to_attachment_data(stream, buffer_size, &result_attachment_data, &result_attachment_data_count);
1235 EM_DEBUG_LOG("result_attachment_data_count[%d]", result_attachment_data_count);
1237 if(result_attachment_data_count && !result_attachment_data) {
1238 EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed");
1239 err = EMAIL_ERROR_ON_PARSING;
1246 EM_DEBUG_LOG("email_meeting_request_t");
1248 if ( result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_REQUEST
1249 || result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_RESPONSE
1250 || result_mail_data.meeting_request_status == EMAIL_MAIL_TYPE_MEETING_ORIGINATINGREQUEST) {
1251 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
1253 if(buffer_size > 0) {
1254 char* stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
1255 em_convert_byte_stream_to_meeting_req(stream, buffer_size, &result_meeting_request);
1259 EM_DEBUG_LOG("sync_server");
1261 temp_buffer = emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
1264 EM_DEBUG_EXCEPTION("emipc_get_nth_parameter_data[%d] failed", param_index - 1);
1265 err = EMAIL_ERROR_IPC_PROTOCOL_FAILURE;
1269 sync_server = *temp_buffer;
1271 if( (err = emdaemon_update_mail(&result_mail_data, result_attachment_data,
1272 result_attachment_data_count, &result_meeting_request, sync_server)) != EMAIL_ERROR_NONE) {
1273 EM_DEBUG_EXCEPTION("emdaemon_update_mail failed [%d]", err);
1278 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1279 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1280 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &result_mail_data.mail_id, sizeof(int)))
1281 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1282 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &result_mail_data.thread_id, sizeof(int)))
1283 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1284 if (!emipc_execute_stub_api(a_hAPI))
1285 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1288 if ( local_result == 0 ) {
1289 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1290 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1291 if (!emipc_execute_stub_api(a_hAPI))
1292 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1295 emcore_free_mail_data(&result_mail_data);
1297 if(result_attachment_data)
1298 emcore_free_attachment_data(&result_attachment_data, result_attachment_data_count, NULL);
1300 emstorage_free_meeting_request(&result_meeting_request);
1303 EM_DEBUG_FUNC_END();
1307 void stb_move_thread_to_mailbox(HIPC_API a_hAPI)
1309 EM_DEBUG_FUNC_BEGIN();
1310 int mailbox_id = 0, thread_id = 0, move_always_flag = 0;
1311 int err = EMAIL_ERROR_NONE;
1312 char *target_mailbox_name = NULL;
1314 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &thread_id);
1315 EM_DEBUG_LOG("thread_id [%d]", thread_id);
1317 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mailbox_id);
1318 EM_DEBUG_LOG("mailbox_id [%d]", mailbox_id);
1320 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &move_always_flag);
1321 EM_DEBUG_LOG("move_always_flag [%d]", move_always_flag);
1323 if(emdaemon_move_mail_thread_to_mailbox(thread_id, mailbox_id, move_always_flag, &err))
1324 EM_DEBUG_LOG("emdaemon_move_mail_thread_to_mailbox success");
1326 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
1327 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1328 EM_SAFE_FREE(target_mailbox_name);
1332 if (!emipc_execute_stub_api(a_hAPI)) {
1333 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1334 EM_SAFE_FREE(target_mailbox_name);
1338 EM_SAFE_FREE(target_mailbox_name);
1339 EM_DEBUG_FUNC_END();
1342 void stb_delete_thread(HIPC_API a_hAPI)
1344 EM_DEBUG_FUNC_BEGIN();
1346 int thread_id = 0, delete_always_flag = 0;
1348 int err = EMAIL_ERROR_NONE;
1350 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &thread_id);
1351 EM_DEBUG_LOG("thread_id [%d]", thread_id);
1353 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &delete_always_flag);
1354 EM_DEBUG_LOG("delete_always_flag [%d]", delete_always_flag);
1356 if(emdaemon_delete_mail_thread(thread_id, delete_always_flag, &handle, &err))
1357 EM_DEBUG_LOG("emdaemon_delete_mail_thread success");
1359 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
1360 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1364 if (!emipc_execute_stub_api(a_hAPI)) {
1365 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1368 EM_DEBUG_FUNC_END();
1371 void stb_modify_seen_flag_of_thread(HIPC_API a_hAPI)
1373 EM_DEBUG_FUNC_BEGIN();
1375 int thread_id = 0, seen_flag = 0, on_server = 0;
1377 int err = EMAIL_ERROR_NONE;
1379 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &thread_id);
1380 EM_DEBUG_LOG("thread_id [%d]", thread_id);
1382 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &seen_flag);
1383 EM_DEBUG_LOG("seen_flag [%d]", seen_flag);
1385 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &on_server);
1386 EM_DEBUG_LOG("on_server [%d]", on_server);
1388 if(emdaemon_modify_seen_flag_of_thread(thread_id, seen_flag, on_server, &handle, &err))
1389 EM_DEBUG_LOG("emdaemon_modify_seen_flag_of_thread success");
1391 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
1392 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1396 if (!emipc_execute_stub_api(a_hAPI)) {
1397 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1400 EM_DEBUG_FUNC_END();
1403 void stb_expunge_mails_deleted_flagged(HIPC_API a_hAPI)
1405 EM_DEBUG_FUNC_BEGIN();
1407 int mailbox_id = 0, on_server = 0;
1409 int err = EMAIL_ERROR_NONE;
1411 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), (void*)&mailbox_id);
1412 EM_DEBUG_LOG("mailbox_id [%d]", mailbox_id);
1414 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), (void*)&on_server);
1415 EM_DEBUG_LOG("on_server [%d]", on_server);
1417 if( (err = emdaemon_expunge_mails_deleted_flagged(mailbox_id, on_server, &handle)) != EMAIL_ERROR_NONE)
1418 EM_DEBUG_LOG("emdaemon_expunge_mails_deleted_flagged success");
1420 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
1421 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1425 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int))) {
1426 EM_DEBUG_LOG("ipcAPI_AddParameter local_result failed ");
1430 if (!emipc_execute_stub_api(a_hAPI)) {
1431 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1434 EM_DEBUG_FUNC_END();
1437 void stb_update_mail_attribute(HIPC_API a_hAPI)
1439 EM_DEBUG_FUNC_BEGIN();
1440 int err = EMAIL_ERROR_NONE;
1441 int mail_id_count = 0, counter = 0;
1442 email_mail_attribute_type attribute;
1443 /* email_mail_attribute_value_t value; */
1446 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mail_id_count);
1447 EM_DEBUG_LOG("mail_id_count [%d]", mail_id_count);
1450 int mail_id_array[mail_id_count];
1451 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, mail_id_count * sizeof(int), mail_id_array);
1453 for(counter = 0; counter < mail_id_count; counter++)
1454 EM_DEBUG_LOG("mail_id[%d] [%d]", counter, mail_id_array[counter]);
1457 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &attribute);
1458 EM_DEBUG_LOG("attribute [%d]", attribute);
1462 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 3, sizeof(int), &value);
1463 EM_DEBUG_LOG("target_mailbox_id [%d]", mailbox_id);
1467 if(emdaemon_move_mail(mail_ids, num, mailbox_id, EMAIL_MOVED_BY_COMMAND, 0, &err))
1468 EM_DEBUG_LOG("emdaemon_move_mail success");
1471 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1472 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1474 if (!emipc_execute_stub_api(a_hAPI))
1475 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1476 EM_DEBUG_FUNC_END();
1479 void stb_move_mail(HIPC_API a_hAPI)
1481 int err = EMAIL_ERROR_NONE;
1482 int num = 0, counter = 0, mailbox_id = 0;
1484 /* Number of mail_ids */
1485 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &num);
1486 EM_DEBUG_LOG("number of mails [%d]", num);
1490 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, num * sizeof(int), mail_ids);
1492 for(counter = 0; counter < num; counter++)
1493 EM_DEBUG_LOG("mailids [%d]", mail_ids[counter]);
1495 /* target_mailbox_id */
1496 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &mailbox_id);
1497 EM_DEBUG_LOG("target_mailbox_id [%d]", mailbox_id);
1500 EM_DEBUG_LOG("mailbox_id [%d]", mailbox_id);
1502 EM_DEBUG_LOG("mailbox_id == 0");
1504 if(emdaemon_move_mail(mail_ids, num, mailbox_id, EMAIL_MOVED_BY_COMMAND, 0, &err))
1505 EM_DEBUG_LOG("emdaemon_move_mail success");
1507 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1508 EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
1510 if (!emipc_execute_stub_api(a_hAPI))
1511 EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
1512 EM_DEBUG_FUNC_END();
1515 void stb_delete_rule(HIPC_API a_hAPI)
1517 EM_DEBUG_FUNC_BEGIN();
1520 int err = EMAIL_ERROR_NONE;
1523 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &filter_id);
1525 if(emdaemon_delete_filter(filter_id, &err))
1526 err = EMAIL_ERROR_NONE;
1528 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1529 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1531 if (!emipc_execute_stub_api(a_hAPI))
1532 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1533 EM_DEBUG_FUNC_END();
1536 void stb_add_attachment(HIPC_API a_hAPI)
1538 EM_DEBUG_FUNC_BEGIN();
1539 int buffer_size = 0;
1540 int err = EMAIL_ERROR_NONE;
1542 int attachment_count = 0;
1543 char* attachment_stream = NULL;
1544 email_attachment_data_t* attachment = NULL;
1547 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mail_id);
1550 buffer_size = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 1);
1552 if(buffer_size > 0) {
1553 attachment_stream = (char*)em_malloc(buffer_size);
1554 EM_NULL_CHECK_FOR_VOID(attachment_stream);
1555 if(attachment_stream) {
1556 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, buffer_size, attachment_stream);
1557 em_convert_byte_stream_to_attachment_data(attachment_stream, buffer_size, &attachment, &attachment_count);
1558 EM_SAFE_FREE(attachment_stream);
1563 EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed ");
1567 emdaemon_add_attachment(mail_id, attachment, &err);
1569 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1570 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1571 if(EMAIL_ERROR_NONE == err) {
1572 EM_DEBUG_LOG("emdaemon_add_attachment -Success");
1574 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &(attachment->attachment_id), sizeof(int)))
1575 EM_DEBUG_EXCEPTION("emipc_add_parameter attachment_id failed ");
1577 if (!emipc_execute_stub_api(a_hAPI))
1578 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1580 EM_SAFE_FREE(attachment);
1581 EM_DEBUG_FUNC_END();
1584 void stb_get_attachment(HIPC_API a_hAPI)
1586 EM_DEBUG_FUNC_BEGIN();
1587 int err = EMAIL_ERROR_NONE;
1589 char* attachment_stream = NULL;
1590 email_attachment_data_t* attachment = NULL;
1594 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &attachment_id);
1596 emdaemon_get_attachment(attachment_id, &attachment, &err);
1598 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1599 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1601 if(EMAIL_ERROR_NONE == err) {
1602 EM_DEBUG_LOG("emdaemon_get_attachment - Success");
1604 attachment_stream = em_convert_attachment_data_to_byte_stream(attachment, 1, &size);
1605 if(!attachment_stream) { /*prevent 26263*/
1606 emcore_free_attachment_data(&attachment, 1, &err);
1609 EM_NULL_CHECK_FOR_VOID(attachment_stream);
1611 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, attachment_stream, size))
1612 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1615 if (!emipc_execute_stub_api(a_hAPI)) {
1616 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1619 EM_SAFE_FREE(attachment_stream);
1620 emcore_free_attachment_data(&attachment, 1, &err);
1622 EM_DEBUG_FUNC_END();
1625 void stb_get_imap_mailbox_list(HIPC_API a_hAPI)
1627 EM_DEBUG_FUNC_BEGIN();
1628 int err = EMAIL_ERROR_NONE;
1633 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1635 if(emdaemon_get_imap_mailbox_list(account_id, "", &handle, &err))
1636 err = EMAIL_ERROR_NONE;
1638 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1639 EM_DEBUG_LOG("ipcAPI_AddParameter local_result failed ");
1640 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
1641 EM_DEBUG_LOG("ipcAPI_AddParameter local_result failed ");
1642 if (!emipc_execute_stub_api(a_hAPI))
1643 EM_DEBUG_LOG("emipc_execute_stub_api failed ");
1644 EM_DEBUG_FUNC_END();
1647 void stb_delete_attachment(HIPC_API a_hAPI)
1649 EM_DEBUG_FUNC_BEGIN();
1650 int err = EMAIL_ERROR_NONE;
1651 int attachment_id = 0;
1653 /* attachment_index */
1654 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &attachment_id);
1656 emdaemon_delete_mail_attachment(attachment_id, &err);
1658 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1659 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1660 if (!emipc_execute_stub_api(a_hAPI))
1661 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1663 EM_DEBUG_FUNC_END();
1666 void stb_download_attachment(HIPC_API a_hAPI)
1668 EM_DEBUG_FUNC_BEGIN();
1670 int err = EMAIL_ERROR_NONE;
1676 EM_DEBUG_LOG("account_id");
1677 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1679 EM_DEBUG_LOG("mail_id");
1680 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mail_id);
1682 EM_DEBUG_LOG("nth");
1683 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &nth);
1685 if(emdaemon_download_attachment(account_id, mail_id, nth, &handle, &err)) {
1686 err = EMAIL_ERROR_NONE;
1688 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1689 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1690 EM_DEBUG_LOG(">>>>>>>>>> HANDLE = %d", handle);
1691 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
1692 EM_DEBUG_EXCEPTION("emipc_add_parameter handle failed ");
1693 if (!emipc_execute_stub_api(a_hAPI))
1694 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1697 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1698 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1699 /* Download handle - 17-Apr-09 */
1700 EM_DEBUG_LOG(">>>>>>>>>> HANDLE = %d", handle);
1701 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
1702 EM_DEBUG_EXCEPTION("emipc_add_parameter handle failed ");
1703 if (!emipc_execute_stub_api(a_hAPI))
1704 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1707 EM_DEBUG_FUNC_END();
1710 void stb_mail_send_saved(HIPC_API a_hAPI)
1712 EM_DEBUG_FUNC_BEGIN();
1713 int err = EMAIL_ERROR_NONE;
1717 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1719 EM_DEBUG_LOG("calling emdaemon_send_mail_saved");
1720 if(emdaemon_send_mail_saved(account_id, NULL, &err))
1721 err = EMAIL_ERROR_NONE;
1723 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1724 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
1726 if (!emipc_execute_stub_api(a_hAPI))
1727 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1729 EM_DEBUG_FUNC_END();
1732 void stb_add_read_receipt(HIPC_API a_hAPI){
1733 EM_DEBUG_FUNC_BEGIN();
1734 int read_mail_id = 0;
1735 int receipt_mail_id = 0;
1736 int err = EMAIL_ERROR_NONE;
1739 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &read_mail_id);
1740 EM_DEBUG_LOG("read_mail_id [%d]", read_mail_id);
1742 if( (err = emcore_add_read_receipt(read_mail_id, &receipt_mail_id)) != EMAIL_ERROR_NONE )
1743 EM_DEBUG_EXCEPTION("emcore_add_read_receipt failed [%d]", err);
1745 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1746 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1748 if (err == EMAIL_ERROR_NONE) {
1749 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &receipt_mail_id, sizeof(int)))
1750 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1753 if (!emipc_execute_stub_api(a_hAPI))
1754 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1756 EM_DEBUG_FUNC_END("err [%d]", err);
1759 void stb_retry_sending_mail(HIPC_API a_hAPI)
1762 EM_DEBUG_FUNC_BEGIN();
1764 int timeout_in_sec = 0;
1765 int err = EMAIL_ERROR_NONE;
1768 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mail_id);
1769 EM_DEBUG_LOG("mail_id [%d]", mail_id);
1771 /* timeout_in_sec */
1772 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &timeout_in_sec);
1773 EM_DEBUG_LOG("timeout_in_sec [%d]", timeout_in_sec);
1775 if(emdaemon_send_mail_retry(mail_id, timeout_in_sec,&err))
1776 EM_DEBUG_LOG("emdaemon_get_mailbox_list - success");
1778 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1779 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1781 if (!emipc_execute_stub_api(a_hAPI))
1782 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1783 EM_DEBUG_FUNC_END();
1786 void stb_get_event_queue_status(HIPC_API a_hAPI)
1788 EM_DEBUG_FUNC_BEGIN();
1790 int on_receiving = 0;
1792 /*get the network status */
1793 emdaemon_get_event_queue_status(&on_sending, &on_receiving);
1796 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &on_sending, sizeof(int)))
1797 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1800 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &on_receiving, sizeof(int)))
1801 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1803 EM_DEBUG_LOG("stb_get_event_queue_status - Before Execute API");
1804 if (!emipc_execute_stub_api(a_hAPI))
1805 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1807 EM_DEBUG_FUNC_END();
1810 void stb_cancel_job(HIPC_API a_hAPI)
1812 EM_DEBUG_FUNC_BEGIN();
1815 int err = EMAIL_ERROR_NONE;
1817 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1818 EM_DEBUG_LOG("account_id [%d]", account_id);
1820 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &handle);
1821 EM_DEBUG_LOG("handle [%d]", handle);
1823 if(emdaemon_cancel_job(account_id, handle, &err))
1824 err = EMAIL_ERROR_NONE;
1826 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1827 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1828 if (!emipc_execute_stub_api(a_hAPI))
1829 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1830 EM_DEBUG_FUNC_END();
1833 void stb_get_pending_job(HIPC_API a_hAPI)
1835 EM_DEBUG_FUNC_BEGIN();
1836 email_action_t action = -1;
1839 int err = EMAIL_ERROR_NONE;
1840 email_event_status_type_t status = 0;
1842 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &action);
1843 EM_DEBUG_LOG("action [%d]", action);
1845 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &account_id);
1846 EM_DEBUG_LOG("account_id [%d]", account_id);
1848 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), &mail_id);
1849 EM_DEBUG_LOG("mail_id [%d]", mail_id);
1851 if(emdaemon_get_pending_job(action, account_id, mail_id, &status))
1852 err = EMAIL_ERROR_NONE;
1854 err = EMAIL_ERROR_UNKNOWN;
1856 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1857 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
1858 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &status, sizeof(int)))
1859 EM_DEBUG_EXCEPTION("emipc_add_parameter status failed ");
1860 if (!emipc_execute_stub_api(a_hAPI))
1861 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
1862 EM_DEBUG_FUNC_END();
1865 void stb_print_receiving_event_queue_via_debug_msg(HIPC_API a_hAPI)
1867 email_event_t *event_queue = NULL;
1868 int event_active_queue = 0, err, i;
1870 emcore_get_receiving_event_queue(&event_queue, &event_active_queue, &err);
1872 EM_DEBUG_LOG("======================================================================");
1873 EM_DEBUG_LOG("Event active index [%d]", event_active_queue);
1874 EM_DEBUG_LOG("======================================================================");
1875 for(i = 1; i < 32; i++)
1876 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);
1877 EM_DEBUG_LOG("======================================================================");
1878 EM_DEBUG_LOG("======================================================================");
1880 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1881 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1883 if (!emipc_execute_stub_api(a_hAPI))
1884 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1885 EM_DEBUG_FUNC_END();
1888 void stb_cancel_send_mail_job(HIPC_API a_hAPI)
1890 EM_DEBUG_FUNC_BEGIN();
1892 int err = EMAIL_ERROR_NONE;
1896 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1897 EM_DEBUG_LOG("account_id [%d]", account_id);
1900 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mail_id);
1901 EM_DEBUG_LOG("mail_id [%d]", mail_id);
1903 if(emdaemon_cancel_sending_mail_job(account_id,mail_id,&err))
1904 EM_DEBUG_LOG("success");
1906 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1907 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1909 if (!emipc_execute_stub_api(a_hAPI))
1910 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1911 EM_DEBUG_FUNC_END();
1914 void stb_search_mail_on_server(HIPC_API a_hAPI)
1916 EM_DEBUG_FUNC_BEGIN();
1918 int err = EMAIL_ERROR_NONE;
1921 int buffer_size = 0;
1922 int search_filter_count = 0;
1923 char *stream_for_search_filter_list = NULL;
1924 unsigned int job_handle = 0;
1925 email_search_filter_t *search_filter_list = NULL;
1928 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1929 EM_DEBUG_LOG("account_id [%d]", account_id);
1932 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), &mailbox_id);
1933 EM_DEBUG_LOG("mailbox_id [%d]", mailbox_id);
1935 /* search_filter_list */
1936 buffer_size = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 2);
1938 if(buffer_size > 0) {
1939 stream_for_search_filter_list = (char*)em_malloc(buffer_size);
1940 EM_NULL_CHECK_FOR_VOID(stream_for_search_filter_list);
1941 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, buffer_size, stream_for_search_filter_list);
1942 em_convert_byte_stream_to_search_filter(stream_for_search_filter_list, &search_filter_list, &search_filter_count);
1943 EM_SAFE_FREE(stream_for_search_filter_list);
1946 if(!emdaemon_search_mail_on_server(account_id ,mailbox_id, search_filter_list, search_filter_count, &job_handle, &err))
1947 EM_DEBUG_LOG("success");
1949 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1950 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1952 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &job_handle, sizeof(int)))
1953 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
1955 if (!emipc_execute_stub_api(a_hAPI))
1956 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
1958 if(search_filter_list) {
1959 for(i = 0; i < search_filter_count; i++) {
1960 switch(search_filter_list[i].search_filter_type) {
1961 case EMAIL_SEARCH_FILTER_TYPE_BCC :
1962 case EMAIL_SEARCH_FILTER_TYPE_CC :
1963 case EMAIL_SEARCH_FILTER_TYPE_FROM :
1964 case EMAIL_SEARCH_FILTER_TYPE_KEYWORD :
1965 case EMAIL_SEARCH_FILTER_TYPE_SUBJECT :
1966 case EMAIL_SEARCH_FILTER_TYPE_TO :
1967 case EMAIL_SEARCH_FILTER_TYPE_MESSAGE_ID :
1968 EM_SAFE_FREE(search_filter_list[i].search_filter_key_value.string_type_key_value);
1976 EM_SAFE_FREE(search_filter_list);
1978 EM_DEBUG_FUNC_END();
1981 void stb_clear_result_of_search_mail_on_server(HIPC_API a_hAPI)
1983 EM_DEBUG_FUNC_BEGIN();
1984 int err = EMAIL_ERROR_NONE;
1988 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
1990 EM_DEBUG_LOG("account_id [%d]", account_id);
1992 if (!emstorage_delete_mail_by_mailbox(account_id, EMAIL_SEARCH_RESULT_MAILBOX_NAME, true, &err))
1993 EM_DEBUG_EXCEPTION(" emstorage_get_mailbox_by_mailbox_type failed [%d]", err);
1995 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
1996 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
1998 if (!emipc_execute_stub_api(a_hAPI))
1999 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2001 EM_DEBUG_FUNC_END();
2006 void stb_add_account_with_validation(HIPC_API a_hAPI)
2008 EM_DEBUG_FUNC_BEGIN();
2009 int buffer_size = 0;
2010 int local_result = 0;
2012 char* stream = NULL;
2013 email_account_t *account = NULL;
2014 email_account_t *ref_account = NULL;
2015 int ref_check_interval = 0;
2016 int ref_account_id = 0;
2017 int err = EMAIL_ERROR_NONE;
2019 /* get account info */
2020 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2021 EM_DEBUG_LOG("size [%d]", buffer_size);
2022 if(buffer_size <= 0) {
2023 err = EMAIL_ERROR_INVALID_PARAM;
2027 stream =(char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0);
2029 err = EMAIL_ERROR_INVALID_PARAM;
2033 account = em_malloc(sizeof(email_account_t));
2035 if(account == NULL) {
2036 EM_DEBUG_EXCEPTION("EMAIL_ERROR_OUT_OF_MEMORY");
2037 err = EMAIL_ERROR_OUT_OF_MEMORY;
2041 em_convert_byte_stream_to_account(stream, buffer_size, account);
2043 if((err = emcore_add_account_to_unvalidated_account_list(account)) != EMAIL_ERROR_NONE) {
2044 EM_DEBUG_EXCEPTION("emcore_add_account_to_unvalidated_account_list failed [%d]", err);
2048 ref_account = emcore_get_account_reference(account->account_id);
2051 EM_DEBUG_EXCEPTION("emcore_get_account_reference failed [%d]", err);
2055 ref_check_interval = ref_account->check_interval;
2056 ref_account_id = ref_account->account_id;
2058 if(!emdaemon_validate_account_and_create(ref_account, &handle, &err)) {
2059 EM_DEBUG_EXCEPTION("emdaemon_validate_account_and_create fail [%d]", err);
2062 #ifdef __FEATURE_AUTO_POLLING__
2063 /* start auto polling, if check_interval not zero */
2064 if(ref_check_interval > 0) {
2065 if(!emdaemon_add_polling_alarm(ref_account_id, ref_check_interval))
2066 EM_DEBUG_EXCEPTION("emdaemon_add_polling_alarm[NOTI_ACCOUNT_ADD] : start auto poll failed >>> ");
2068 #endif /* __FEATURE_AUTO_POLLING__ */
2069 /* add account details to contact DB */
2070 /* emdaemon_insert_accountinfo_to_contact(account); */
2073 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2074 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2075 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
2076 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2077 if (!emipc_execute_stub_api(a_hAPI))
2078 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2081 if ( local_result == 0 ) { /* there is an error */
2082 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2083 EM_DEBUG_EXCEPTION("emipc_add_parameter failed : local_result ");
2084 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2085 EM_DEBUG_EXCEPTION("emipc_add_parameter failed : err");
2086 if (!emipc_execute_stub_api(a_hAPI))
2087 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2090 /* note: account is freed in thread_func_branch_command, which is run by other thread */
2091 /* emcore_free_account(account); */
2093 EM_DEBUG_FUNC_END();
2096 void stb_backup_account(HIPC_API a_hAPI)
2098 EM_DEBUG_FUNC_BEGIN();
2100 #ifdef __FEATURE_BACKUP_ACCOUNT__
2101 char *file_path = NULL;
2102 int local_result = 0, err_code = 0, handle = 0, file_path_length = 0;
2104 /* file_path_length */
2105 file_path_length = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2106 if(file_path_length > 0) {
2107 EM_DEBUG_LOG("file_path_length [%d]", file_path_length);
2108 file_path = em_malloc(file_path_length);
2109 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, file_path_length, file_path);
2110 EM_DEBUG_LOG("file_path [%s]", file_path);
2111 local_result = emcore_backup_accounts((const char*)file_path, &err_code);
2114 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2115 EM_DEBUG_LOG("emipc_add_parameter failed ");
2117 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err_code, sizeof(int)))
2118 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2120 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
2121 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
2123 if (!emipc_execute_stub_api(a_hAPI))
2124 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2126 EM_SAFE_FREE(file_path);
2127 #endif /* __FEATURE_BACKUP_ACCOUNT__ */
2128 EM_DEBUG_FUNC_END();
2131 void stb_restore_account(HIPC_API a_hAPI)
2133 EM_DEBUG_FUNC_BEGIN();
2134 #ifdef __FEATURE_BACKUP_ACCOUNT__
2135 char *file_path = NULL;
2136 int local_result = 0, err_code = 0, handle = 0, file_path_length = 0;
2138 /* file_path_length */
2139 file_path_length = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2140 if(file_path_length > 0) {
2141 EM_DEBUG_LOG("file_path_length [%d]", file_path_length);
2142 file_path = em_malloc(file_path_length);
2143 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, file_path_length, file_path);
2144 EM_DEBUG_LOG("file_path [%s]", file_path);
2145 local_result = emcore_restore_accounts((const char*)file_path, &err_code);
2148 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2149 EM_DEBUG_LOG("emipc_add_parameter failed ");
2151 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err_code, sizeof(int)))
2152 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2154 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int)))
2155 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
2157 if (!emipc_execute_stub_api(a_hAPI))
2158 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2160 EM_SAFE_FREE(file_path);
2161 #endif /* __FEATURE_BACKUP_ACCOUNT__ */
2162 EM_DEBUG_FUNC_END();
2166 void stb_get_password_length(HIPC_API a_hAPI)
2168 EM_DEBUG_FUNC_BEGIN();
2170 int local_result = 0;
2172 int password_length = 0;
2175 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
2176 local_result = emstorage_get_password_length_of_account(account_id, &password_length,&err_code);
2178 EM_DEBUG_LOG("password_length [%d]", password_length);
2180 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &local_result, sizeof(int)))
2181 EM_DEBUG_LOG("emipc_add_parameter failed ");
2183 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err_code, sizeof(int)))
2184 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2186 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &password_length, sizeof(int)))
2187 EM_DEBUG_EXCEPTION("emipc_add_parameter result failed ");
2189 if (!emipc_execute_stub_api(a_hAPI))
2190 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2191 EM_DEBUG_FUNC_END();
2194 void stb_add_certificate(HIPC_API a_hAPI)
2196 int err = EMAIL_ERROR_NONE;
2197 int cert_file_len = 0;
2198 int email_address_len = 0;
2199 char *cert_file_path = NULL;
2200 char *email_address = NULL;
2202 cert_file_len = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2203 if (cert_file_len > 0) {
2204 cert_file_path = em_malloc(cert_file_len + 1);
2205 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, cert_file_len, cert_file_path);
2208 email_address_len = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 1);
2209 if (email_address_len > 0) {
2210 email_address = em_malloc(email_address_len + 1);
2211 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, email_address_len, email_address);
2214 if (!emcore_add_public_certificate(cert_file_path, email_address, &err)) {
2215 EM_DEBUG_EXCEPTION("em_core_smime_add_certificate failed");
2218 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2219 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
2221 if (EMAIL_ERROR_NONE == err) {
2222 EM_DEBUG_LOG("email_mail_add_attachment -Success");
2225 if (!emipc_execute_stub_api(a_hAPI))
2226 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2228 EM_SAFE_FREE(cert_file_path);
2229 EM_SAFE_FREE(email_address);
2230 EM_DEBUG_FUNC_END();
2233 void stb_delete_certificate(HIPC_API a_hAPI)
2235 int err = EMAIL_ERROR_NONE;
2236 int email_address_len = 0;
2237 char *email_address = NULL;
2238 char temp_email_address[130] = {0, };
2240 email_address_len = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2241 if (email_address_len > 0) {
2242 EM_DEBUG_LOG("email address string length [%d]", email_address_len);
2243 email_address = em_malloc(email_address_len + 1);
2244 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, email_address_len, email_address);
2245 EM_DEBUG_LOG("email address [%s]", email_address);
2248 SNPRINTF(temp_email_address, sizeof(temp_email_address), "<%s>", email_address);
2249 if (!emcore_delete_public_certificate(temp_email_address, &err)) {
2250 EM_DEBUG_EXCEPTION("em_core_smime_add_certificate failed");
2253 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2254 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
2256 if (EMAIL_ERROR_NONE == err) {
2257 EM_DEBUG_LOG("email_mail_add_attachment -Success");
2260 if (!emipc_execute_stub_api(a_hAPI))
2261 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2264 EM_SAFE_FREE(email_address);
2265 EM_DEBUG_FUNC_END();
2268 void stb_verify_signature(HIPC_API a_hAPI)
2270 int err = EMAIL_ERROR_NONE;
2274 int attachment_tbl_count = 0;
2275 email_mail_data_t *mail_data = NULL;
2276 emstorage_attachment_tbl_t *attachment_tbl_list = NULL;
2278 err = emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &mail_id);
2279 if (err != EMAIL_ERROR_NONE) {
2280 EM_DEBUG_EXCEPTION("emipc_get_parameter failed");
2284 if (!emcore_get_mail_data(mail_id, &mail_data)) {
2285 EM_DEBUG_EXCEPTION("emcore_get_mail_data failed");
2289 if ((err = emstorage_get_attachment_list(mail_id, true, &attachment_tbl_list, &attachment_tbl_count)) != EMAIL_ERROR_NONE) {
2290 EM_DEBUG_EXCEPTION("emstorage_get_attachment_list failed : [%d]", err);
2294 if (attachment_tbl_count <= 0) {
2295 EM_DEBUG_EXCEPTION("Invalid signed mail");
2296 err = EMAIL_ERROR_INVALID_MAIL;
2300 for (count = 0; count < attachment_tbl_count; count++) {
2301 if (strcasestr(attachment_tbl_list[count].attachment_name, "p7s") == NULL)
2307 if (!emcore_verify_signature(attachment_tbl_list[count].attachment_path, mail_data->file_path_mime_entity, &verify, &err)) {
2308 EM_DEBUG_EXCEPTION("emcore_verify_signature failed");
2314 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &verify, sizeof(int)))
2315 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
2318 EM_DEBUG_LOG("Verify S/MIME signed mail-Success");
2321 if (!emipc_execute_stub_api(a_hAPI))
2322 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2325 if (attachment_tbl_list)
2326 emstorage_free_attachment(&attachment_tbl_list, attachment_tbl_count, NULL);
2329 emcore_free_mail_data(mail_data);
2330 EM_SAFE_FREE(mail_data);
2333 EM_DEBUG_FUNC_END();
2336 void stb_verify_certificate(HIPC_API a_hAPI)
2338 int err = EMAIL_ERROR_NONE;
2340 int cert_file_len = 0;
2341 char *cert_file_path = 0;
2343 cert_file_len = emipc_get_parameter_length(a_hAPI, ePARAMETER_IN, 0);
2344 if (cert_file_len > 0) {
2345 cert_file_path = em_malloc(cert_file_len + 1);
2346 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, cert_file_len, cert_file_path);
2349 if (!emcore_verify_certificate(cert_file_path, &verify, &err)) {
2350 EM_DEBUG_EXCEPTION("em_core_smime_add_certificate failed");
2353 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &verify, sizeof(int)))
2354 EM_DEBUG_EXCEPTION("emipc_add_parameter local_result failed ");
2357 EM_DEBUG_LOG("Verify S/MIME signed mail-Success");
2360 if (!emipc_execute_stub_api(a_hAPI))
2361 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2363 EM_SAFE_FREE(cert_file_path);
2364 EM_DEBUG_FUNC_END();
2367 void stb_ping_service(HIPC_API a_hAPI)
2369 EM_DEBUG_FUNC_BEGIN();
2370 int err = EMAIL_ERROR_NONE;
2371 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2372 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2374 if (!emipc_execute_stub_api(a_hAPI))
2375 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2376 EM_DEBUG_FUNC_END();
2379 void stb_update_notification_bar_for_unread_mail(HIPC_API a_hAPI)
2381 EM_DEBUG_FUNC_BEGIN();
2382 int err = EMAIL_ERROR_NONE, account_id;
2385 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), &account_id);
2386 EM_DEBUG_LOG("account_id [%d]", account_id);
2388 if(!emcore_finalize_sync(account_id, &err)) {
2389 EM_DEBUG_EXCEPTION("emcore_finalize_sync failed [%d]", err);
2392 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2393 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2395 if (!emipc_execute_stub_api(a_hAPI))
2396 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2397 EM_DEBUG_FUNC_END();
2400 void stb_show_user_message(HIPC_API a_hAPI)
2402 EM_DEBUG_FUNC_BEGIN();
2403 int err = EMAIL_ERROR_NONE;
2405 int param_error = 0;
2406 email_action_t param_action = 0;
2409 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), ¶m_id);
2410 EM_DEBUG_LOG("param_id [%d]", param_id);
2413 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 1, sizeof(int), ¶m_action);
2414 EM_DEBUG_LOG("param_action [%d]", param_action);
2417 emipc_get_parameter(a_hAPI, ePARAMETER_IN, 2, sizeof(int), ¶m_error);
2418 EM_DEBUG_LOG("param_error [%d]", param_error);
2420 if( (err = emcore_show_user_message(param_id, param_action, param_error)) != EMAIL_ERROR_NONE) {
2421 EM_DEBUG_EXCEPTION("emcore_show_user_message failed [%d]", err);
2424 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2425 EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
2427 if (!emipc_execute_stub_api(a_hAPI))
2428 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed ");
2430 EM_DEBUG_FUNC_END("err [%d]", err);
2433 void stb_write_mime_file(HIPC_API a_hAPI)
2435 EM_DEBUG_FUNC_BEGIN();
2437 int exist_file_path = 0;
2438 int buffer_size = 0;
2439 int local_result = 0;
2440 int result_attachment_data_count = 0;
2441 int param_index = 0;
2442 int err = EMAIL_ERROR_NONE;
2443 int ret = EMAIL_ERROR_NONE;
2444 char *file_path = NULL;
2445 char *output_file_path = NULL;
2446 email_mail_data_t result_mail_data = {0};
2447 email_attachment_data_t *result_attachment_data = NULL;
2448 emstorage_mail_tbl_t *input_mail_tbl_data = NULL;
2449 emstorage_attachment_tbl_t *input_attachment_tbl_data = NULL;
2451 /* email_mail_data_t */;
2452 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2453 EM_DEBUG_LOG("email_mail_data_t buffer_size[%d]", buffer_size);
2456 if(buffer_size > 0) {
2457 char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
2458 em_convert_byte_stream_to_mail_data(stream, buffer_size, &result_mail_data);
2462 if (result_mail_data.attachment_count > 0) {
2463 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2464 EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size);
2466 if(buffer_size > 0) {
2467 char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index);
2468 em_convert_byte_stream_to_attachment_data(stream, buffer_size, &result_attachment_data, &result_attachment_data_count);
2470 EM_DEBUG_LOG("result_attachment_data_count[%d]", result_attachment_data_count);
2472 if(result_attachment_data_count && !result_attachment_data) {
2473 EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed");
2474 err = EMAIL_ERROR_ON_PARSING;
2483 buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2484 if (buffer_size > 0) {
2485 output_file_path = (char *)emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index);
2486 EM_DEBUG_LOG("output_file_path : [%s]", output_file_path);
2489 /* Convert mail_data to mail_tbl */
2490 if (!em_convert_mail_data_to_mail_tbl(&result_mail_data, 1, &input_mail_tbl_data, &err)) {
2491 EM_DEBUG_EXCEPTION("em_convert_mail_data_to_mail_tbl failed");
2495 /* Convert attachment_data to attachment_tbl */
2496 if (result_attachment_data_count > 0) {
2497 input_attachment_tbl_data = (emstorage_attachment_tbl_t *)em_malloc(sizeof(emstorage_attachment_tbl_t) * result_attachment_data_count);
2498 if (input_attachment_tbl_data == NULL) {
2499 EM_DEBUG_EXCEPTION("em_malloc failed");
2500 err = EMAIL_ERROR_OUT_OF_MEMORY;
2505 for (i = 0; i < result_attachment_data_count ; i++) {
2506 input_attachment_tbl_data[i].attachment_id = result_attachment_data[i].attachment_id;
2507 input_attachment_tbl_data[i].attachment_name = EM_SAFE_STRDUP(result_attachment_data[i].attachment_name);
2508 input_attachment_tbl_data[i].attachment_path = EM_SAFE_STRDUP(result_attachment_data[i].attachment_path);
2509 input_attachment_tbl_data[i].attachment_size = result_attachment_data[i].attachment_size;
2510 input_attachment_tbl_data[i].mail_id = result_attachment_data[i].mail_id;
2511 input_attachment_tbl_data[i].account_id = result_attachment_data[i].account_id;
2512 input_attachment_tbl_data[i].mailbox_id = result_attachment_data[i].mailbox_id;
2513 input_attachment_tbl_data[i].attachment_save_status = result_attachment_data[i].save_status;
2514 input_attachment_tbl_data[i].attachment_drm_type = result_attachment_data[i].drm_status;
2515 input_attachment_tbl_data[i].attachment_inline_content_status = result_attachment_data[i].inline_content_status;
2516 input_attachment_tbl_data[i].attachment_mime_type = EM_SAFE_STRDUP(result_attachment_data[i].attachment_mime_type);
2519 if ((err = em_verify_email_address_of_mail_tbl(input_mail_tbl_data, false)) != EMAIL_ERROR_NONE) {
2520 EM_DEBUG_EXCEPTION("em_verify_email_address_of_mail_tbl failed : [%d]", err);
2524 if (!emcore_make_rfc822_file_from_mail(input_mail_tbl_data, input_attachment_tbl_data, result_attachment_data_count, NULL, &file_path, NULL, &err)) {
2525 EM_DEBUG_EXCEPTION("emcore_make_rfc822_file_from_mail failed");
2529 if (output_file_path) {
2530 if (!emstorage_move_file(file_path, output_file_path, false, &err)) {
2531 EM_DEBUG_EXCEPTION("emstorage_move_file failed : [%d]", err);
2535 exist_file_path = 1;
2536 output_file_path = EM_SAFE_STRDUP(file_path);
2540 if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, (char *)output_file_path, EM_SAFE_STRLEN(output_file_path) + 1)) {
2541 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2542 err = EMAIL_ERROR_NULL_VALUE;
2549 if ( local_result == 0 ) {
2550 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2551 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2554 if (!emipc_execute_stub_api(a_hAPI))
2555 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2557 emstorage_free_attachment(&input_attachment_tbl_data, result_attachment_data_count, &ret);
2559 emstorage_free_mail(&input_mail_tbl_data, 1, &ret);
2561 emcore_free_mail_data(&result_mail_data);
2563 if(result_attachment_data)
2564 emcore_free_attachment_data(&result_attachment_data, result_attachment_data_count, NULL);
2566 EM_SAFE_FREE(file_path);
2567 if (exist_file_path)
2568 EM_SAFE_FREE(output_file_path);
2571 EM_DEBUG_FUNC_END();
2574 void stb_handle_task(int task_type, HIPC_API a_hAPI)
2576 EM_DEBUG_FUNC_BEGIN();
2577 int param_index = 0;
2578 int is_async_task = (task_type > EMAIL_ASYNC_TASK_BOUNDARY)?1:0;
2579 int err = EMAIL_ERROR_NONE;
2581 int task_parameter_length = 0;
2582 char *task_parameter = NULL;
2584 /* task_parameter_length */;
2585 task_parameter_length = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2586 EM_DEBUG_LOG("task_parameter_length [%d]", task_parameter_length);
2588 /* task_parameter */
2589 if(task_parameter_length > 0) {
2590 task_parameter = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
2594 /* add async task */
2595 if((err = emcore_add_task_to_task_table(task_type, EMAIL_TASK_PRIORITY_MID, task_parameter, task_parameter_length, &task_id)) != EMAIL_ERROR_NONE) {
2596 EM_DEBUG_EXCEPTION("emcore_add_task_to_task_pool failed [%d]", err);
2605 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2606 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2609 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &task_id, sizeof(int)))
2610 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2613 if (!emipc_execute_stub_api(a_hAPI))
2614 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2617 EM_DEBUG_FUNC_END("err [%d]", err);
2620 void* thread_func_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT(void *input_param)
2622 EM_DEBUG_FUNC_BEGIN("input_param [%p]", input_param);
2623 int err = EMAIL_ERROR_NONE;
2624 int err_for_signal = EMAIL_ERROR_NONE;
2626 int task_id = THREAD_SELF();
2627 task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT *task_param = input_param;
2629 /* Send start signal */
2630 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)
2631 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2633 for(i = 0; i < task_param->mail_id_count; i++) {
2634 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) {
2635 EM_DEBUG_EXCEPTION("emcore_move_mail_to_another_account failed [%d]", err);
2639 /* Send progress signal */
2640 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)
2641 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2645 /* Send finish signal */
2646 if(err == EMAIL_ERROR_NONE) {
2647 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)
2648 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2651 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)
2652 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2655 /* Free task parameter */
2656 EM_SAFE_FREE(task_param->mail_id_array);
2657 EM_SAFE_FREE(task_param);
2659 EM_DEBUG_FUNC_END("err [%d]", err);
2663 void stb_move_mails_to_mailbox_of_another_account(HIPC_API a_hAPI)
2665 EM_DEBUG_FUNC_BEGIN();
2666 int param_index = 0;
2667 int err = EMAIL_ERROR_NONE;
2668 int task_parameter_length = 0;
2671 char *task_parameter = NULL;
2672 task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT *decoded_parameter = NULL;
2674 /* task_parameter_length */;
2675 task_parameter_length = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2677 if(task_parameter_length <= 0) {
2678 EM_DEBUG_EXCEPTION("EMAIL_ERROR_INVALID_PARAM : task_parameter_length [%d]", task_parameter_length);
2679 err = EMAIL_ERROR_INVALID_PARAM;
2683 /* task_parameter */
2684 task_parameter = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
2686 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) {
2687 EM_DEBUG_EXCEPTION("email_decode_task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT failed[%d]", err);
2691 THREAD_CREATE(task_id, thread_func_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT, (void*)decoded_parameter, thread_error);
2693 if(thread_error != 0) {
2694 EM_DEBUG_EXCEPTION("THREAD_CREATE failed [%d]", thread_error);
2695 err = EMAIL_ERROR_SYSTEM_FAILURE;
2699 THREAD_DETACH(task_id);
2702 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2703 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2705 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &task_id, sizeof(int)))
2706 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2708 if (!emipc_execute_stub_api(a_hAPI))
2709 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2711 EM_DEBUG_FUNC_END("err [%d]", err);
2714 void* thread_func_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX(void *input_param)
2716 EM_DEBUG_FUNC_BEGIN("input_param [%p]", input_param);
2717 int err = EMAIL_ERROR_NONE;
2718 int err_for_signal = EMAIL_ERROR_NONE;
2719 int task_id = THREAD_SELF();
2720 task_parameter_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX *task_param = input_param;
2722 /* Send start signal */
2723 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)
2724 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2726 if((err = emcore_delete_mailbox_ex(task_param->account_id, task_param->mailbox_id_array, task_param->mailbox_id_count, task_param->on_server)) != EMAIL_ERROR_NONE) {
2727 EM_DEBUG_EXCEPTION("emcore_delete_mailbox_ex failed[%d]", err);
2732 /* Send finish signal */
2733 if(err == EMAIL_ERROR_NONE) {
2734 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)
2735 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2738 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)
2739 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2742 /* Free task parameter */
2743 EM_SAFE_FREE(task_param->mailbox_id_array);
2744 EM_SAFE_FREE(task_param);
2746 EM_DEBUG_FUNC_END("err [%d]", err);
2750 void stb_delete_mailbox_ex(HIPC_API a_hAPI)
2752 EM_DEBUG_FUNC_BEGIN();
2753 int param_index = 0;
2754 int err = EMAIL_ERROR_NONE;
2755 int task_parameter_length = 0;
2756 int thread_error = 0;
2758 char *task_parameter = NULL;
2759 task_parameter_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX *decoded_parameter = NULL;
2761 /* task_parameter_length */;
2762 task_parameter_length = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2764 if(task_parameter_length <= 0) {
2765 EM_DEBUG_EXCEPTION("EMAIL_ERROR_INVALID_PARAM : task_parameter_length [%d]", task_parameter_length);
2766 err = EMAIL_ERROR_INVALID_PARAM;
2770 /* task_parameter */
2771 task_parameter = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
2773 if((err = email_decode_task_parameter_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX(task_parameter, task_parameter_length, (void**)&decoded_parameter)) != EMAIL_ERROR_NONE) {
2774 EM_DEBUG_EXCEPTION("email_decode_task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT failed[%d]", err);
2778 THREAD_CREATE(task_id, thread_func_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX, (void*)decoded_parameter, thread_error);
2780 if(thread_error != 0) {
2781 EM_DEBUG_EXCEPTION("THREAD_CREATE failed [%d]", thread_error);
2782 err = EMAIL_ERROR_SYSTEM_FAILURE;
2786 THREAD_DETACH(task_id);
2789 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2790 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2792 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &task_id, sizeof(int)))
2793 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2795 if (!emipc_execute_stub_api(a_hAPI))
2796 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2798 EM_DEBUG_FUNC_END("err [%d]", err);
2801 void* thread_func_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL(void *input_param)
2803 EM_DEBUG_FUNC_BEGIN("input_param [%p]", input_param);
2804 int err = EMAIL_ERROR_NONE;
2805 int err_for_signal = EMAIL_ERROR_NONE;
2806 int task_id = THREAD_SELF();
2807 task_parameter_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL *task_param = input_param;
2809 /* Send start signal */
2810 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)
2811 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2813 if((err = emcore_send_mail_with_downloading_attachment_of_original_mail(task_param->mail_id)) != EMAIL_ERROR_NONE) {
2814 EM_DEBUG_EXCEPTION("emcore_send_mail_with_downloading_attachment_of_original_mail failed [%d]", err);
2819 /* Send finish signal */
2820 if(err == EMAIL_ERROR_NONE) {
2821 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)
2822 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2825 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)
2826 EM_DEBUG_LOG("emcore_send_task_status_signal failed [%d]", err_for_signal);
2829 /* Free task parameter */
2830 EM_SAFE_FREE(task_param);
2832 EM_DEBUG_FUNC_END("err [%d]", err);
2836 void stb_send_mail_with_downloading_attachment_of_original_mail(HIPC_API a_hAPI)
2838 EM_DEBUG_FUNC_BEGIN();
2839 int param_index = 0;
2840 int err = EMAIL_ERROR_NONE;
2841 int task_parameter_length = 0;
2842 int thread_error = 0;
2844 char *task_parameter = NULL;
2845 task_parameter_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL *decoded_parameter = NULL;
2847 /* task_parameter_length */;
2848 task_parameter_length = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index);
2850 if(task_parameter_length <= 0) {
2851 EM_DEBUG_EXCEPTION("EMAIL_ERROR_INVALID_PARAM : task_parameter_length [%d]", task_parameter_length);
2852 err = EMAIL_ERROR_INVALID_PARAM;
2856 /* task_parameter */
2857 task_parameter = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index++);
2859 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) {
2860 EM_DEBUG_EXCEPTION("email_decode_task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT failed[%d]", err);
2864 THREAD_CREATE(task_id, thread_func_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL, (void*)decoded_parameter, thread_error);
2866 if(thread_error != 0) {
2867 EM_DEBUG_EXCEPTION("THREAD_CREATE failed [%d]", thread_error);
2868 err = EMAIL_ERROR_SYSTEM_FAILURE;
2872 THREAD_DETACH(task_id);
2875 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
2876 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2878 if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &task_id, sizeof(int)))
2879 EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
2881 if (!emipc_execute_stub_api(a_hAPI))
2882 EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
2884 EM_DEBUG_FUNC_END("err [%d]", err);
2887 void stb_API_mapper(HIPC_API a_hAPI)
2889 EM_DEBUG_FUNC_BEGIN();
2890 int nAPIID = emipc_get_api_id(a_hAPI);
2893 case _EMAIL_API_ADD_ACCOUNT:
2894 stb_create_account(a_hAPI);
2897 case _EMAIL_API_ADD_MAILBOX:
2898 stb_create_mailbox(a_hAPI);
2901 case _EMAIL_API_DELETE_MAILBOX:
2902 stb_delete_mailbox(a_hAPI);
2905 case _EMAIL_API_SET_MAILBOX_TYPE:
2906 stb_set_mailbox_type(a_hAPI);
2909 case _EMAIL_API_SET_LOCAL_MAILBOX:
2910 stb_set_local_mailbox(a_hAPI);
2913 case _EMAIL_API_SET_MAIL_SLOT_SIZE:
2914 stb_set_mail_slot_size_of_mailbox(a_hAPI);
2917 case _EMAIL_API_RENAME_MAILBOX:
2918 stb_rename_mailbox(a_hAPI);
2921 case _EMAIL_API_SEND_MAIL:
2922 stb_send_mail(a_hAPI);
2925 case _EMAIL_API_GET_MAILBOX_LIST:
2926 stb_get_mailbox_list(a_hAPI);
2929 case _EMAIL_API_SYNC_HEADER:
2930 stb_sync_header(a_hAPI);
2933 case _EMAIL_API_DOWNLOAD_BODY:
2934 stb_download_body(a_hAPI);
2937 case _EMAIL_API_CLEAR_DATA:
2938 stb_clear_mail_data (a_hAPI);
2941 case _EMAIL_API_DELETE_ALL_MAIL:
2942 stb_delete_all_mails(a_hAPI);
2945 case _EMAIL_API_DELETE_MAIL:
2946 stb_delete_mail(a_hAPI);
2949 case _EMAIL_API_ADD_RULE:
2950 stb_add_rule(a_hAPI);
2953 case _EMAIL_API_GET_RULE:
2954 stb_get_rule(a_hAPI);
2957 case _EMAIL_API_GET_RULE_LIST:
2958 stb_get_rule_list(a_hAPI);
2961 case _EMAIL_API_FIND_RULE:
2962 stb_find_rule(a_hAPI);
2965 case _EMAIL_API_UPDATE_RULE:
2966 stb_update_rule(a_hAPI);
2969 case _EMAIL_API_DELETE_RULE:
2970 stb_delete_rule(a_hAPI);
2973 case _EMAIL_API_MOVE_MAIL:
2974 stb_move_mail(a_hAPI);
2977 case _EMAIL_API_MOVE_ALL_MAIL:
2978 stb_move_all_mails(a_hAPI);
2981 case _EMAIL_API_SET_FLAGS_FIELD:
2982 stb_set_flags_field(a_hAPI);
2985 case _EMAIL_API_ADD_MAIL:
2986 stb_add_mail(a_hAPI);
2989 case _EMAIL_API_UPDATE_MAIL:
2990 stb_update_mail(a_hAPI);
2993 case _EMAIL_API_MOVE_THREAD_TO_MAILBOX:
2994 stb_move_thread_to_mailbox(a_hAPI);
2997 case _EMAIL_API_DELETE_THREAD:
2998 stb_delete_thread(a_hAPI);
3001 case _EMAIL_API_MODIFY_SEEN_FLAG_OF_THREAD:
3002 stb_modify_seen_flag_of_thread(a_hAPI);
3005 case _EMAIL_API_EXPUNGE_MAILS_DELETED_FLAGGED:
3006 stb_expunge_mails_deleted_flagged(a_hAPI);
3009 case _EMAIL_API_UPDATE_MAIL_ATTRIBUTE:
3010 stb_update_mail_attribute(a_hAPI);
3013 case _EMAIL_API_DELETE_ACCOUNT:
3014 stb_delete_account(a_hAPI);
3017 case _EMAIL_API_UPDATE_ACCOUNT:
3018 stb_update_account(a_hAPI);
3021 case _EMAIL_API_ADD_ATTACHMENT:
3022 stb_add_attachment(a_hAPI);
3025 case _EMAIL_API_GET_IMAP_MAILBOX_LIST:
3026 stb_get_imap_mailbox_list(a_hAPI);
3029 case _EMAIL_API_GET_ATTACHMENT:
3030 stb_get_attachment(a_hAPI);
3033 case _EMAIL_API_DELETE_ATTACHMENT:
3034 stb_delete_attachment(a_hAPI);
3037 case _EMAIL_API_DOWNLOAD_ATTACHMENT:
3038 stb_download_attachment(a_hAPI);
3041 case _EMAIL_API_GET_ACCOUNT_LIST:
3042 stb_get_account_list(a_hAPI);
3045 case _EMAIL_API_SEND_SAVED:
3046 stb_mail_send_saved(a_hAPI);
3049 case _EMAIL_API_ADD_READ_RECEIPT:
3050 stb_add_read_receipt(a_hAPI);
3053 case _EMAIL_API_CANCEL_JOB:
3054 stb_cancel_job(a_hAPI);
3057 case _EMAIL_API_GET_PENDING_JOB:
3058 stb_get_pending_job(a_hAPI);
3061 case _EMAIL_API_NETWORK_GET_STATUS:
3062 stb_get_event_queue_status(a_hAPI);
3065 case _EMAIL_API_SEND_RETRY:
3066 stb_retry_sending_mail(a_hAPI);
3069 case _EMAIL_API_VALIDATE_ACCOUNT :
3070 stb_validate_account(a_hAPI);
3073 case _EMAIL_API_SEND_MAIL_CANCEL_JOB :
3074 stb_cancel_send_mail_job(a_hAPI);
3077 case _EMAIL_API_SEARCH_MAIL_ON_SERVER :
3078 stb_search_mail_on_server(a_hAPI);
3081 case _EMAIL_API_CLEAR_RESULT_OF_SEARCH_MAIL_ON_SERVER :
3082 stb_clear_result_of_search_mail_on_server(a_hAPI);
3085 case _EMAIL_API_ADD_ACCOUNT_WITH_VALIDATION :
3086 stb_add_account_with_validation(a_hAPI);
3089 case _EMAIL_API_BACKUP_ACCOUNTS:
3090 stb_backup_account(a_hAPI);
3093 case _EMAIL_API_RESTORE_ACCOUNTS:
3094 stb_restore_account(a_hAPI);
3097 case _EMAIL_API_GET_PASSWORD_LENGTH_OF_ACCOUNT:
3098 stb_get_password_length(a_hAPI);
3101 case _EMAIL_API_PRINT_RECEIVING_EVENT_QUEUE :
3102 stb_print_receiving_event_queue_via_debug_msg(a_hAPI);
3105 case _EMAIL_API_ADD_CERTIFICATE:
3106 stb_add_certificate(a_hAPI);
3109 case _EMAIL_API_DELETE_CERTIFICATE:
3110 stb_delete_certificate(a_hAPI);
3113 case _EMAIL_API_VERIFY_SIGNATURE:
3114 stb_verify_signature(a_hAPI);
3117 case _EMAIL_API_VERIFY_CERTIFICATE:
3118 stb_verify_certificate(a_hAPI);
3121 case _EMAIL_API_PING_SERVICE :
3122 stb_ping_service(a_hAPI);
3125 case _EMAIL_API_UPDATE_NOTIFICATION_BAR_FOR_UNREAD_MAIL :
3126 stb_update_notification_bar_for_unread_mail(a_hAPI);
3129 case _EMAIL_API_SHOW_USER_MESSAGE :
3130 stb_show_user_message(a_hAPI);
3133 case _EMAIL_API_WRITE_MIME_FILE :
3134 stb_write_mime_file(a_hAPI);
3137 case EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT :
3138 stb_move_mails_to_mailbox_of_another_account(a_hAPI);
3141 case EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX :
3142 stb_delete_mailbox_ex(a_hAPI);
3145 case EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL :
3146 stb_send_mail_with_downloading_attachment_of_original_mail(a_hAPI);
3149 EM_DEBUG_FUNC_END();
3152 GMainLoop *g_mainloop = NULL;
3154 static void callback_for_sigterm(int signum)
3156 EM_DEBUG_FUNC_BEGIN("signum [%d]", signum);
3159 g_main_loop_quit(g_mainloop);
3161 EM_DEBUG_FUNC_END();
3164 INTERNAL_FUNC int main(int argc, char *argv[])
3166 /* Do the email-service Initialization
3167 1. Create all DB tables and load the email engine */
3168 EM_DEBUG_LOG("Email service begin");
3170 GMainLoop *mainloop;
3173 EM_DEBUG_LOG("emdaemon_initialize_emn Start");
3174 emdaemon_initialize_emn();
3177 EM_DEBUG_LOG("ipcEmailStub_Initialize Start");
3179 ret = emipc_initialize_stub(stb_API_mapper);
3182 EM_DEBUG_LOG("ipcEmailStub_Initialize Success");
3184 EM_DEBUG_EXCEPTION("ipcEmailStub_Initialize failed");
3186 signal(SIGPIPE, SIG_IGN); /* to ignore signal 13(SIGPIPE) */
3187 signal(SIGTERM, callback_for_sigterm); /* to handle signal 15(SIGTERM) - power off case*/
3189 emdaemon_initialize(&err);
3191 /* Start auto polling */
3192 #ifdef __FEATURE_AUTO_POLLING__
3193 emdaemon_start_auto_polling(&err);
3196 mainloop = g_main_loop_new(NULL, 0);
3197 g_mainloop = mainloop;
3201 g_main_loop_run(mainloop);
3203 /* Clean up resources */
3204 g_main_loop_unref(mainloop);
3208 emipc_finalize_stub();
3210 emdaemon_finalize(NULL);
3212 EM_DEBUG_FUNC_END();