#include "email-convert.h"
#include "email-storage.h"
#include "email-core-utils.h"
+#include "email-core-gmime.h"
#include "email-core-signal.h"
#include "email-utilities.h"
#include "email-ipc.h"
goto FINISH_OFF;
}
- if (!emstorage_get_mailbox_list_ex(multi_user_name, account_id, mailbox_sync_type, with_count, &mailbox_count, &mailbox_tbl_list, true, &err)) {
+ emcore_gmime_init();
+ if (!emstorage_get_mailbox_list_ex(multi_user_name, account_id, mailbox_sync_type, with_count, &mailbox_count, &mailbox_tbl_list, true, &err)) {
+ emcore_gmime_shutdown();
EM_DEBUG_EXCEPTION("emstorage_get_mailbox_list_ex failed [%d]", err);
goto FINISH_OFF;
} else
err = EMAIL_ERROR_NONE;
-
+
+ emcore_gmime_shutdown();
+
if (mailbox_count > 0) {
if (!(*mailbox_list = em_malloc(sizeof(email_mailbox_t) * mailbox_count))) {
EM_DEBUG_EXCEPTION("malloc failed for mailbox_list");
goto FINISH_OFF;
}
- for (i = 0; i < mailbox_count; i++)
+ for (i = 0; i < mailbox_count; i++)
em_convert_mailbox_tbl_to_mailbox(mailbox_tbl_list + i, (*mailbox_list) + i);
}
else
* @return #EMAIL_ERROR_NONE on success,
* otherwise an error code (see #EMAIL_ERROR_XXX) on failure
*/
-EXPORT_API int email_add_certificate(char *certificate_path, char *email_address);
+EXPORT_API int email_add_certificate(char *certificate_path, char *email_address) DEPRECATED;
/**
* @brief Deletes a public certificate information from the database.
* @return #EMAIL_ERROR_NONE on success,
* otherwise an error code (see #EMAIL_ERROR_XXX) on failure
*/
-EXPORT_API int email_delete_certificate(char *email_address);
+EXPORT_API int email_delete_certificate(char *email_address) DEPRECATED;
/**
* @brief Gets the the public certificate information from the database.
* @return #EMAIL_ERROR_NONE on success,
* otherwise an error code (see #EMAIL_ERROR_XXX) on failure
*/
-EXPORT_API int email_get_certificate(char *email_address, email_certificate_t **certificate);
+EXPORT_API int email_get_certificate(char *email_address, email_certificate_t **certificate) DEPRECATED;
/**
* @brief Gets a decrypted message.
* @return #EMAIL_ERROR_NONE on success,
* otherwise an error code (see #EMAIL_ERROR_XXX) on failure
*/
-EXPORT_API int email_verify_certificate(char *certificate_path, int *verify);
+EXPORT_API int email_verify_certificate(char *certificate_path, int *verify) DEPRECATED;
/**
* @brief Gets the certificate from the server (using exchange server).
#define EMAIL_ACCOUNT_FMT "S(" "isiii" "isii" ")" "B" "S(" "issss" "isiss" "iiiii" "iiiii" "isiss" "iii"\
"$(" "iiiii" "iisii" "iisi" "iiiis" ")" "iiiiiisiis" ")"
+/* For converting fmt : to distinguish between 64bit or 32bit */
+static char *convert_format(char *fmt)
+{
+ EM_DEBUG_FUNC_BEGIN();
+
+ if (fmt == NULL) {
+ EM_DEBUG_EXCEPTION("Invalid parameter");
+ return NULL;
+ }
+
+ int size = 0;
+ int string_size = 0;
+ int ret = false;
+ char *c = NULL;
+ char *converted_fmt = NULL;
+
+ string_size = strlen(fmt);
+ converted_fmt = em_malloc(string_size);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("em_malloc failed");
+ return NULL;
+ }
+
+ c = fmt;
+ while (*c != '\0') {
+ switch (*c) {
+ case 'c':
+ case 'i':
+ case 'u':
+ case 'j':
+ case 'v':
+ case 'I':
+ case 'U':
+ case 'f':
+ case 's':
+ case '#':
+ case 'B':
+ case 'A':
+ case 'S':
+ case '$': /* nested structure */
+ case ')':
+ case '(':
+ strncat(converted_fmt, c, 1);
+ break;
+ case 't': /* special charater for time_t */
+ case 'T':
+ size = sizeof(time_t);
+ if (size == 4) {
+ /* 32bit */
+ strncat(converted_fmt, "i", 1);
+ } else if (size == 8) {
+ /* 64bit */
+ strncat(converted_fmt, "I", 1);
+ } else {
+ EM_DEBUG_LOG("size : [%d]", size);
+ }
+
+ break;
+ default:
+ EM_DEBUG_EXCEPTION("unsupported option %c\n", *c);
+ goto FINISH_OFF;
+ }
+ c++;
+ }
+
+ EM_DEBUG_LOG("original fmt : [%s]", fmt);
+ EM_DEBUG_LOG("converted_fmt : [%s]", converted_fmt);
+
+ ret = true;
+
+FINISH_OFF:
+
+ if (ret == false) {
+ EM_SAFE_FREE(converted_fmt);
+ }
+
+ EM_DEBUG_FUNC_END();
+ return converted_fmt;
+}
INTERNAL_FUNC char* em_convert_account_to_byte_stream(email_account_t* account, int *stream_len)
{
tpl_node *tn = NULL;
tpl_bin tb;
+ char *converted_fmt = NULL;
+
+ converted_fmt = convert_format(EMAIL_ACCOUNT_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return NULL;
+ }
tn = tpl_map(EMAIL_ACCOUNT_FMT, account, &tb, &(account->user_data_length));
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return NULL;
}
+ EM_SAFE_FREE(converted_fmt);
+
tb.sz = account->user_data_length;
tb.addr = account->user_data;
tpl_pack(tn, 0);
tpl_free(tn);
*stream_len = len;
+
EM_DEBUG_FUNC_END();
return (char*) buf;
}
tpl_node *tn = NULL;
tpl_bin tb;
+ char *converted_fmt = NULL;
- tn = tpl_map(EMAIL_ACCOUNT_FMT, account, &tb, &(account->user_data_length));
+ converted_fmt = convert_format(EMAIL_ACCOUNT_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return;
+ }
+
+ tn = tpl_map(converted_fmt, account, &tb, &(account->user_data_length));
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return;
}
+ EM_SAFE_FREE(converted_fmt);
tpl_load(tn, TPL_MEM, stream, stream_len);
tpl_unpack(tn, 0);
EM_DEBUG_FUNC_END();
}
-#define EMAIL_MAIL_DATA_FMT "S(" "iiiis" "iisss" "issss" "sssss" "sisss"\
- "icccc" "cccii" "iiiii" "iisii" "iiiii" "iisss" "si" ")B"
+#define EMAIL_MAIL_DATA_FMT "S(" "iiiis" "tisss" "issss" "sssss" "sisss"\
+ "icccc" "cccii" "iiiii" "iisii" "iitii" "ttsss" "si" ")B"
INTERNAL_FUNC char* em_convert_mail_data_to_byte_stream(email_mail_data_t *mail_data, int *stream_len)
{
tpl_node *tn = NULL;
tpl_bin tb;
+ char *converted_fmt = NULL;
+
+ converted_fmt = convert_format(EMAIL_MAIL_DATA_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return NULL;
+ }
EM_DEBUG_LOG("eas_data_length[%d]", mail_data->eas_data_length); /*prevent 44369*/
- tn = tpl_map(EMAIL_MAIL_DATA_FMT, mail_data, &tb);
+ tn = tpl_map(converted_fmt, mail_data, &tb);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return NULL;
}
+ EM_SAFE_FREE(converted_fmt);
tb.sz = mail_data->eas_data_length;
tb.addr = mail_data->eas_data;
tpl_pack(tn, 0);
tpl_free(tn);
*stream_len = len;
+
EM_DEBUG_FUNC_END();
return (char*) buf;
}
tpl_node *tn = NULL;
tpl_bin tb;
+ char *converted_fmt = NULL;
+
+ converted_fmt = convert_format(EMAIL_MAIL_DATA_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return;
+ }
- tn = tpl_map(EMAIL_MAIL_DATA_FMT, mail_data, &tb);
+ tn = tpl_map(converted_fmt, mail_data, &tb);
if(!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return;
}
+ EM_SAFE_FREE(converted_fmt);
tpl_load(tn, TPL_MEM, stream, stream_len);
tpl_unpack(tn, 0);
email_attachment_data_t cur = {0};
tpl_node *tn = NULL;
+ char *converted_fmt = NULL;
+
+ converted_fmt = convert_format(EMAIL_ATTACHMENT_DATA_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("convertinf failed");
+ return NULL;
+ }
/* tpl_map adds value at 2nd param addr to packing buffer iterately */
/* 2nd param value (not addr via pointer) should be modified at each iteration */
- tn = tpl_map(EMAIL_ATTACHMENT_DATA_FMT, &cur);
+ tn = tpl_map(converted_fmt, &cur);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return NULL;
}
+ EM_SAFE_FREE(converted_fmt);
/* if attachment_count is zero, for loop is skipped */
int i=0;
email_attachment_data_t cur = {0};
tpl_node *tn = NULL;
- tn = tpl_map(EMAIL_ATTACHMENT_DATA_FMT, &cur);
+ char *converted_fmt = NULL;
+
+ converted_fmt = convert_format(EMAIL_ATTACHMENT_DATA_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return;
+ }
+
+ tn = tpl_map(converted_fmt, &cur);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return;
}
+ EM_SAFE_FREE(converted_fmt);
tpl_load(tn, TPL_MEM, stream, stream_len);
/* tpl does not return the size of variable-length array, but we need variable-length array */
*attachment_count = num_element;
*attachment_data = attached;
+
EM_DEBUG_FUNC_END();
}
-#define EMAIL_MAILBOX_FMT "S(" "isisi" "iiiii" "iiii" ")B"
+#define EMAIL_MAILBOX_FMT "S(" "isisi" "iiiii" "itii" ")B"
INTERNAL_FUNC char* em_convert_mailbox_to_byte_stream(email_mailbox_t *mailbox_data, int *stream_len)
{
tpl_node *tn = NULL;
tpl_bin tb;
+ char *converted_fmt = NULL;
+
+ converted_fmt = convert_format(EMAIL_MAILBOX_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return NULL;
+ }
EM_DEBUG_LOG("eas_data_length[%d]", mailbox_data->eas_data_length);
- tn = tpl_map(EMAIL_MAILBOX_FMT, mailbox_data, &tb);
+ tn = tpl_map(converted_fmt, mailbox_data, &tb);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return NULL;
}
+ EM_SAFE_FREE(converted_fmt);
tb.sz = mailbox_data->eas_data_length;
tb.addr = mailbox_data->eas_data;
tpl_pack(tn, 0);
tpl_free(tn);
*stream_len = len;
+
EM_DEBUG_FUNC_END("serialized len: %d", len);
return (char*) buf;
}
tpl_node *tn = NULL;
tpl_bin tb;
+ char *converted_fmt = NULL;
+
+ converted_fmt = convert_format(EMAIL_MAILBOX_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return;
+ }
- tn = tpl_map(EMAIL_MAILBOX_FMT, mailbox_data, &tb);
+ tn = tpl_map(converted_fmt, mailbox_data, &tb);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return;
}
+ EM_SAFE_FREE(converted_fmt);
tpl_load(tn, TPL_MEM, stream, stream_len);
tpl_unpack(tn, 0);
EM_IF_NULL_RETURN_VALUE(stream_len, NULL);
tpl_node *tn = NULL;
+ char *converted_fmt = NULL;
+
+ converted_fmt = convert_format(EMAIL_OPTION_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return NULL;
+ }
- tn = tpl_map(EMAIL_OPTION_FMT, option);
+ tn = tpl_map(converted_fmt, option);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return NULL;
}
+ EM_SAFE_FREE(converted_fmt);
tpl_pack(tn, 0);
/* write account to buffer */
tpl_free(tn);
*stream_len = len;
+
EM_DEBUG_FUNC_END("serialized len: %d", len);
return (char*) buf;
}
EM_NULL_CHECK_FOR_VOID(option);
tpl_node *tn = NULL;
+ char *converted_fmt = NULL;
- tn = tpl_map(EMAIL_OPTION_FMT, option);
+ converted_fmt = convert_format(EMAIL_OPTION_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return;
+ }
+
+ tn = tpl_map(converted_fmt, option);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return;
}
+ EM_SAFE_FREE(converted_fmt);
tpl_load(tn, TPL_MEM, stream, stream_len);
tpl_unpack(tn, 0);
tpl_free(tn);
EM_IF_NULL_RETURN_VALUE(stream_len, NULL);
tpl_node *tn = NULL;
+ char *converted_fmt = NULL;
+
+ converted_fmt = convert_format(EMAIL_RULE_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return NULL;
+ }
- tn = tpl_map(EMAIL_RULE_FMT, rule);
+ tn = tpl_map(converted_fmt, rule);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return NULL;
}
+ EM_SAFE_FREE(converted_fmt);
tpl_pack(tn, 0);
/* write account to buffer */
tpl_free(tn);
*stream_len = len;
+
EM_DEBUG_FUNC_END("serialized len: %d", len);
return (char*) buf;
}
EM_NULL_CHECK_FOR_VOID(rule);
tpl_node *tn = NULL;
+ char *converted_fmt = NULL;
- tn = tpl_map(EMAIL_RULE_FMT, rule);
+ converted_fmt = convert_format(EMAIL_RULE_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return NULL;
+ }
+
+ tn = tpl_map(converted_fmt, rule);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return;
}
+ EM_SAFE_FREE(converted_fmt);
tpl_load(tn, TPL_MEM, stream, stream_len);
tpl_unpack(tn, 0);
tpl_free(tn);
tpl_node *tn = NULL;
tpl_bin tb[4];
+ char *converted_fmt = NULL;
- tn = tpl_map(EMAIL_MEETING_REQUEST_FMT,
+ converted_fmt = convert_format(EMAIL_MEETING_REQUEST_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return NULL;
+ }
+
+ tn = tpl_map(converted_fmt,
&meeting_req->mail_id,
&meeting_req->meeting_response,
&tb[0],
&meeting_req->time_zone.daylight_bias
);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return NULL;
}
+ EM_SAFE_FREE(converted_fmt);
tb[0].sz = tb[1].sz = tb[2].sz = tb[3].sz = sizeof(struct tm);
tb[0].addr = &meeting_req->start_time;
tb[1].addr = &meeting_req->end_time;
tb[2].addr = &meeting_req->time_zone.standard_time_start_date;
tb[3].addr = &meeting_req->time_zone.daylight_time_start_date;
-
tpl_pack(tn, 0);
/* write account to buffer */
tpl_free(tn);
*stream_len = len;
+
EM_DEBUG_FUNC_END();
return (char*) buf;
}
tpl_node *tn = NULL;
tpl_bin tb[4];
+ char *converted_fmt = NULL;
+
+ converted_fmt = convert_format(EMAIL_MEETING_REQUEST_FMT);
+ if (converted_fmt == NULL) {
+ EM_DEBUG_EXCEPTION("converting failed");
+ return NULL;
+ }
- tn = tpl_map(EMAIL_MEETING_REQUEST_FMT,
+ tn = tpl_map(converted_fmt,
&meeting_req->mail_id,
&meeting_req->meeting_response,
&tb[0],
&meeting_req->time_zone.daylight_bias
);
if (!tn) {
+ EM_SAFE_FREE(converted_fmt);
EM_DEBUG_EXCEPTION("tpl_map failed");
return;
}
tpl_load(tn, TPL_MEM, stream, stream_len);
tpl_unpack(tn, 0);
tpl_free(tn);
+ EM_SAFE_FREE(converted_fmt);
/* tb will be destroyed at end of func, but tb.addr remains */
memcpy(&meeting_req->start_time, tb[0].addr, sizeof(struct tm));
return err;
}
-
-/* Memory clean up */
-#include <sys/mman.h>
-
-/* #define GETSP() ({ unsigned int sp; asm volatile ("mov %0, sp " : "=r"(sp)); sp;}) */
-#define BUF_SIZE 256
-#define PAGE_SIZE (1 << 12)
-#define _ALIGN_UP(addr, size) (((addr)+((size)-1))&(~((size)-1)))
-#define _ALIGN_DOWN(addr, size) ((addr)&(~((size)-1)))
-#define PAGE_ALIGN(addr) _ALIGN_DOWN(addr, PAGE_SIZE)
-
-int stack_trim(void)
-{
- /*
- char buf[BUF_SIZE];
- FILE *file;
- unsigned int stacktop;
- int found = 0;
- unsigned int sp;
-
- asm volatile ("mov %0, sp " : "=r"(sp));
-
- sprintf(buf, "/proc/%d/maps", getpid());
- file = fopen(buf, "r");
- while (fgets(buf, BUF_SIZE, file) != NULL) {
- if (strstr(buf, "[stack]")) {
- found = 1;
- break;
- }
- }
-
- fclose(file);
-
- if (found) {
- sscanf(buf, "%x-", &stacktop);
- if (madvise((void *)PAGE_ALIGN(stacktop), PAGE_ALIGN(sp)-stacktop, MADV_DONTNEED) < 0)
- perror("stack madvise fail");
- }
- */
- return 1;
-}
-
-INTERNAL_FUNC void em_flush_memory()
-{
- EM_DEBUG_FUNC_BEGIN();
- /* flush memory in heap */
- malloc_trim(0);
-
- /* flush memory in stack */
- stack_trim();
-
- /* flush memory for sqlite */
- emstorage_flush_db_cache();
- EM_DEBUG_FUNC_END();
-}
-
INTERNAL_FUNC int em_get_file_name_from_file_path(char *input_source_file_path, char **output_file_name)
{
EM_DEBUG_FUNC_BEGIN_SEC("input_source_file_path[%s], output_file_name [%p]", input_source_file_path, output_file_name);
- while ((result = strstr(curpos, "RE:")) != NULL) {
+ while ((result = g_strrstr(curpos, "RE:")) != NULL) {
curpos = result + 3;
EM_DEBUG_LOG_SEC("RE result : %s", curpos);
}
- while ((result = strstr(curpos, "FWD:")) != NULL) {
+ while ((result = g_strrstr(curpos, "FWD:")) != NULL) {
curpos = result + 4;
EM_DEBUG_LOG_SEC("FWD result : %s", curpos);
}
- while ((result = strstr(curpos, "FW:")) != NULL) {
+ while ((result = g_strrstr(curpos, "FW:")) != NULL) {
curpos = result + 3;
EM_DEBUG_LOG_SEC("FW result : %s", curpos);
}
#define EMAIL_ERROR_SECURED_STORAGE_FAILURE -2100 /**< Error from secured storage */
#define EMAIL_ERROR_GCONF_FAILURE -1058 /**< The error occurred on accessing Gconf */
#define EMAIL_ERROR_FILE -1059 /**< File related error */
+#define EMAIL_ERROR_SERVER_STORAGE_FULL -2101 /**< There is no more storage in server */
/* Error codes for network */
#define EMAIL_ERROR_SOCKET_FAILURE -1031 /**< Socket operation failed */
#define EMAIL_ERROR_TLS_NOT_SUPPORTED -1040 /**< The server doesn't support TLS */
#define EMAIL_ERROR_TLS_SSL_FAILURE -1041 /**< The agent failed TLS/SSL */
#define EMAIL_ERROR_CANNOT_NEGOTIATE_TLS -1400 /**< "Cannot negotiate TLS" */
-
#define EMAIL_ERROR_NO_RESPONSE -1036 /**< There is no server response */
/* Error codes for authentication */
#define __FEATURE_SUPPORT_REPORT_MAIL__
#define __FEATURE_SUPPORT_IMAP_ID__
/* #define __FEATURE_SUPPORT_SYNC_STATE_ON_NOTI_BAR__ */
-#define __FEATURE_SUPPORT_VALIDATION_SYSTEM__
+/* #define __FEATURE_SUPPORT_VALIDATION_SYSTEM__ */
#define __FEATURE_PROGRESS_IN_OUTBOX__
/* #define __FEATURE_USE_SHARED_MUTEX_FOR_PROTECTED_FUNC_CALL__ */
#define EMAIL_LAUNCHED_BY_UNKNOWN_METHOD 0
#define EMAIL_LAUNCHED_BY_DBUS_ACTIVATION 1
+#define EML_FOLDER 20 /* save eml content to temporary folder */
+
/* __FEATURE_LOCAL_ACTIVITY__ supported
#define BULK_OPERATION_COUNT 50
#define ALL_ACTIVITIES 0
_EMAIL_API_VERIFY_CERTIFICATE = 0x01600003, /**< IPC API ID for email_verify_certificate */
};
-
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
EMAIL_SET_SLOT_SIZE_START, /**< Task started */
EMAIL_SET_SLOT_SIZE_FINISH, /**< Task finished */
EMAIL_SET_SLOT_SIZE_FAIL, /**< Task failed */
-}email_set_slot_size_status_e;
+} email_set_slot_size_status_e;
/**
* @brief Enumeration for the status of expunging mails.
EMAIL_EXPUNGE_MAILS_DELETED_FLAGGED_START, /**< Task started */
EMAIL_EXPUNGE_MAILS_DELETED_FLAGGED_FINISH, /**< Task finished */
EMAIL_EXPUNGE_MAILS_DELETED_FLAGGED_FAIL, /**< Task failed */
-}email_expunge_mails_deleted_flagged_status_e;
+} email_expunge_mails_deleted_flagged_status_e;
/**
* @brief Enumeration for the status of searching mails on server.
EMAIL_SEARCH_ON_SERVER_START, /**< Task started */
EMAIL_SEARCH_ON_SERVER_FINISH, /**< Task finished */
EMAIL_SEARCH_ON_SERVER_FAIL, /**< Task failed */
-}email_search_on_server_status_e;
+} email_search_on_server_status_e;
/**
* @brief Enumeration for the status of moving mails.
EMAIL_MOVE_MAILBOX_ON_IMAP_SERVER_START, /**< Task started */
EMAIL_MOVE_MAILBOX_ON_IMAP_SERVER_FINISH, /**< Task finished */
EMAIL_MOVE_MAILBOX_ON_IMAP_SERVER_FAIL, /**< Task failed */
-}email_move_mailbox_status_e;
+} email_move_mailbox_status_e;
/**
* @brief Enumeration for the status of updating mails.
EMAIL_UPDATE_MAIL_START, /**< Task started */
EMAIL_UPDATE_MAIL_FINISH, /**< Task finished */
EMAIL_UPDATE_MAIL_FAIL, /**< Task failed */
-}email_update_mail_status_e;
+} email_update_mail_status_e;
/**
* @brief Enumeration for the mailbox type.
EMAIL_MAILBOX_TYPE_SEARCH_RESULT = 8, /**< Specified mailbox type for result of search on server */
EMAIL_MAILBOX_TYPE_FLAGGED = 9, /**< Specified flagged mailbox type on gmail */
EMAIL_MAILBOX_TYPE_USER_DEFINED = 0xFF, /**< Specified mailbox type for all other mailboxes */
-}email_mailbox_type_e;
+} email_mailbox_type_e;
/** @brief Enumeration for the sync order.
email_account_t *ref_account = NULL;
- ref_account = emcore_get_account_reference(multi_user_name, input_account_id, false);
-
+ ref_account = emcore_get_account_reference(multi_user_name, input_account_id, true);
if(ref_account == NULL) {
EM_DEBUG_EXCEPTION("emcore_get_account_reference() failed");
err = EMAIL_ERROR_INVALID_ACCOUNT;
emcore_free_account(account_ref);
EM_SAFE_FREE(account_ref);
}
-
- em_flush_memory();
}
}
}
else {
- pop_elm->status = EMAIL_EVENT_STATUS_CANCELED;
+ if (pop_elm) pop_elm->status = EMAIL_EVENT_STATUS_CANCELED;
}
}
LEAVE_RECURSIVE_CRITICAL_SECTION(_event_queue_lock);
q_length = g_queue_get_length(g_send_event_que);
} else {
- pop_elm->status = EMAIL_EVENT_STATUS_CANCELED;
+ if (pop_elm) pop_elm->status = EMAIL_EVENT_STATUS_CANCELED;
}
}
LEAVE_RECURSIVE_CRITICAL_SECTION(_send_event_queue_lock);
g_mime_init(0);
#ifdef __FEATURE_SECURE_PGP__
- setenv("GNUPGHOME", "/opt/usr/apps/com.samsung.email/data/.gnupg", 1);
+ setenv("GNUPGHOME", "/opt/usr/apps/org.tizen.email/data/.gnupg", 1);
#endif
EM_DEBUG_FUNC_END();
/*Figure out TEXT or ATTACHMENT(INLINE) ?*/
int result = false;
- if (disposition_str && g_ascii_strcasecmp(disposition_str, GMIME_DISPOSITION_ATTACHMENT) == 0) {
+ if (content_id && (emcore_search_string_from_file(cnt_info->text.html, content_id, NULL, &result) == EMAIL_ERROR_NONE && result)) {
+ content_disposition_type = INLINE_ATTACHMENT;
+ EM_DEBUG_LOG("INLINE_ATTACHMENT");
+ } else if ((disposition_str && g_ascii_strcasecmp(disposition_str, GMIME_DISPOSITION_ATTACHMENT) == 0) || disposition_filename || ctype_name) {
+ content_disposition_type = ATTACHMENT;
+ EM_DEBUG_LOG("ATTACHMENT");
+ } else if (ctype_subtype && g_ascii_strcasecmp(ctype_subtype, "delivery-status") == 0) {
+ content_disposition_type = ATTACHMENT;
+ EM_DEBUG_LOG("ATTACHMENT");
+ } else if (ctype_subtype && g_ascii_strcasecmp(ctype_subtype, "calendar") == 0) {
content_disposition_type = ATTACHMENT;
EM_DEBUG_LOG("ATTACHMENT");
- } else if ((content_id || content_location) && (ctype_name || disposition_filename)) {
- if (cnt_info->attachment_only) {
- content_disposition_type = ATTACHMENT;
- EM_DEBUG_LOG("ATTACHMENT");
- } else {
- content_disposition_type = INLINE_ATTACHMENT;
- EM_DEBUG_LOG("INLINE_ATTACHMENT");
- }
} else {
- if (content_id &&
- (emcore_search_string_from_file(cnt_info->text.html, content_id, NULL, &result) == EMAIL_ERROR_NONE && result)) {
- content_disposition_type = INLINE_ATTACHMENT;
- EM_DEBUG_LOG("INLINE_ATTACHMENT");
- } else if (content_id || content_location) {
- if (g_ascii_strcasecmp(ctype_type, "text") == 0 &&
- (g_ascii_strcasecmp(ctype_subtype, "plain") == 0 || g_ascii_strcasecmp(ctype_subtype, "html") == 0)) {
- EM_DEBUG_LOG("TEXT");
- } else {
- if (cnt_info->attachment_only) {
- content_disposition_type = ATTACHMENT;
- EM_DEBUG_LOG("ATTACHMENT");
- } else {
- content_disposition_type = INLINE_ATTACHMENT;
- EM_DEBUG_LOG("INLINE_ATTACHMENT");
- }
- }
- } else {
- if (g_ascii_strcasecmp(ctype_type, "text") == 0 &&
- (g_ascii_strcasecmp(ctype_subtype, "plain") == 0 || g_ascii_strcasecmp(ctype_subtype, "html") == 0)) {
- EM_DEBUG_LOG("TEXT");
- } else {
- content_disposition_type = ATTACHMENT;
- EM_DEBUG_LOG("ATTACHMENT");
- }
- }
+ EM_DEBUG_LOG("Not INLINE or ATTACHMENT");
}
if (content_disposition_type != ATTACHMENT && content_disposition_type != INLINE_ATTACHMENT) {
EM_DEBUG_LOG("Multi Part Signed");
snprintf(sections, sizeof(sections), "BODY.PEEK[1.mime] BODY.PEEK[1]");
- if (cnt_info->sections) {
- char *tmp_str = NULL;
- tmp_str = g_strconcat(cnt_info->sections, " ", sections, NULL);
-
- if (tmp_str) {
- EM_SAFE_FREE(cnt_info->sections);
- cnt_info->sections = tmp_str;
- }
- }
- else {
- cnt_info->sections = EM_SAFE_STRDUP(sections);
- }
+ cnt_info->content_type = 1;
+ cnt_info->sections = EM_SAFE_STRDUP(sections);
EM_DEBUG_LOG("sections <%s>", cnt_info->sections);
-
} else if (GMIME_IS_MULTIPART(part)) {
EM_DEBUG_LOG("Multi Part");
} else if (GMIME_IS_PART(part)) {
snprintf(sections, sizeof(sections), "BODY.PEEK[%s.MIME] BODY.PEEK[%s]", ctype_section, ctype_section);
if (cnt_info->sections) {
-
- if (strcasestr(cnt_info->sections, "BODY.PEEK[1.MIME] BODY.PEEK[1]")) {
- if (strcasestr(sections, "1."))
- goto FINISH_OFF;
+ /* Signed message : Did not need sections */
+ if (cnt_info->content_type == 1) {
+ goto FINISH_OFF;
}
char *tmp_str = NULL;
ctype_subtype = (char *)g_mime_content_type_get_media_subtype(ctype);
/* Type-Subtype */
- if (g_strcmp0(ctype_type, "text") == 0 && g_strcmp0(ctype_subtype, "plain") == 0 &&
- body->type >= (unsigned int)0 && body->subtype) {
+ if (g_strcmp0(ctype_type, "text") == 0 && g_strcmp0(ctype_subtype, "plain") == 0
+ && body->subtype) {
GMimeContentType *content_type = NULL;
char *type = g_ascii_strdown(body_types[body->type], -1);
char *subtype = g_ascii_strdown(body->subtype, -1);
EM_DEBUG_LOG("Content-ID: %s", body->id);
int i = 0;
char *cid = EM_SAFE_STRDUP(body->id);
- if (cid) g_strstrip(cid);
+ if (cid) {
+ g_strstrip(cid);
- while (strlen(cid) > 0 && cid[i] != '\0') {
- if (cid[i] == '<' || cid[i] == '>')
- cid[i] = ' ';
- i++;
- }
+ while (strlen(cid) > 0 && cid[i] != '\0') {
+ if (cid[i] == '<' || cid[i] == '>')
+ cid[i] = ' ';
+ i++;
+ }
- g_strstrip(cid);
- EM_DEBUG_LOG_DEV("Content-ID stripped: %s", cid);
- g_mime_object_set_content_id(part_object, cid);
- EM_SAFE_FREE(cid);
+ g_strstrip(cid);
+ EM_DEBUG_LOG_DEV("Content-ID stripped: %s", cid);
+ g_mime_object_set_content_id(part_object, cid);
+ free(cid);
+ }
}
EM_DEBUG_FUNC_END();
EM_DEBUG_FUNC_BEGIN();
int entity_fd = 0;
- int real_size = 0;
int error = EMAIL_ERROR_NONE;
char *mime_entity_path = NULL;
GMimeObject *mime_entity = NULL;
- GMimeStream *out_stream = NULL;
+ GMimeStream *out_stream = NULL, *filtered = NULL, *stream = NULL;
+ GMimeFilter *filter = NULL;
if (!GMIME_IS_MULTIPART_SIGNED(multipart)) {
EM_DEBUG_EXCEPTION("Invalid param");
goto FINISH_OFF;
}
- mime_entity = g_mime_multipart_get_part((GMimeMultipart *)multipart, 0);
- out_stream = g_mime_stream_fs_new(entity_fd);
- real_size = g_mime_object_write_to_stream(mime_entity, out_stream);
- if (out_stream) g_object_unref(out_stream);
+ mime_entity = g_mime_multipart_get_part(GMIME_MULTIPART(multipart), GMIME_MULTIPART_SIGNED_CONTENT);
+ stream = g_mime_stream_mem_new();
+ g_mime_object_write_to_stream(mime_entity, stream);
+ g_mime_stream_reset(stream);
- if (real_size <= 0) {
- EM_DEBUG_EXCEPTION("g_mime_object_write_to_stream failed");
- error = EMAIL_ERROR_FILE;
- goto FINISH_OFF;
- }
+ filtered = g_mime_stream_filter_new(stream);
+ filter = g_mime_filter_crlf_new(TRUE, FALSE);
+ g_mime_stream_filter_add(GMIME_STREAM_FILTER(filtered), filter);
-FINISH_OFF:
+ if (filter) g_object_unref(filter);
+ if (stream) g_object_unref(stream);
+ if (filtered) g_mime_stream_reset(filtered);
+
+ out_stream = g_mime_stream_fs_new(entity_fd);
+ g_mime_stream_write_to_stream(filtered, out_stream);
+ g_mime_stream_flush(out_stream);
+ if (filtered) g_object_unref(filtered);
if (out_stream) g_object_unref(out_stream);
+FINISH_OFF:
+
if (error != EMAIL_ERROR_NONE) {
EM_SAFE_FREE(mime_entity_path);
return NULL;
}
/* Close connection */
- connection_info->mail_stream = mail_close(connection_info->mail_stream);
+ if (connection_info->mail_stream)
+ connection_info->mail_stream = mail_close(connection_info->mail_stream);
+
EM_SAFE_FREE(connection_info->multi_user_name);
EM_SAFE_FREE(connection_info);
}
}
- if(account_ref_list)
+ if (account_ref_list)
emcore_free_account_list(&account_ref_list, account_count, NULL);
if (auto_sync_account_count) {
email_policy.password = NULL;
email_policy.extractable = true;
- EM_DEBUG_LOG("stored_data : [%s]", stored_data);
+// EM_DEBUG_LOG("stored_data : [%s]", stored_data);
email_data.data = (unsigned char *)stored_data;
email_data.size = strlen(stored_data);
goto FINISH_OFF;
}
- EM_DEBUG_LOG("stored_data : [%s]", email_data->data);
- EM_DEBUG_LOG("stored_data length : [%d]", email_data->size);
+// EM_DEBUG_LOG("stored_data : [%s]", email_data->data);
+// EM_DEBUG_LOG("stored_data length : [%d]", email_data->size);
FINISH_OFF:
- if (stored_data)
- *stored_data = g_strndup(email_data->data, email_data->size);
+ if (stored_data) {
+ if (email_data) *stored_data = g_strndup(email_data->data, email_data->size);
+ }
if (email_data)
ckmc_buffer_free(email_data);
EM_DEBUG_LOG("Count of mails copied [%d]", count);
old_server_uid = em_malloc(count * sizeof(unsigned long));
+ if (old_server_uid == NULL) {
+ EM_DEBUG_EXCEPTION("em_malloc failed : EMAIL_ERROR_OUT_OF_MEMORY");
+ return;
+ }
+
new_server_uid = em_malloc(count * sizeof(unsigned long));
+ if (new_server_uid == NULL) {
+ EM_DEBUG_EXCEPTION("em_malloc failed : EMAIL_ERROR_OUT_OF_MEMORY");
+ EM_SAFE_FREE(old_server_uid);
+ return;
+ }
/* While loop below will collect all old server uid from sourceset into old_server_uid array */
while (sourceset) {
goto FINISH_OFF;
}
- while(emcore_mime_get_line_from_sock((void *)stream, sock_buf, 1024, &err)) {
+ while (emcore_mime_get_line_from_sock((void *)stream, sock_buf, 1024, &err)) {
if (write(fd, sock_buf, EM_SAFE_STRLEN(sock_buf)) != EM_SAFE_STRLEN(sock_buf)) {
EM_DEBUG_EXCEPTION("write failed");
}
g_mime_message_foreach(message1, emcore_gmime_imap_parse_full_foreach_cb, (gpointer)cnt_info);
/* Get mime entity */
- g_mime_message_foreach(message1, emcore_gmime_get_mime_entity_cb, (gpointer)cnt_info);
+ if (cnt_info->content_type == 1)
+ g_mime_message_foreach(message1, emcore_gmime_get_mime_entity_cb, (gpointer)cnt_info);
/* free resources */
if (message1) {
FINISH_OFF:
+ EM_SAFE_FREE(id_set);
+
#ifdef __FEATURE_LOCAL_ACTIVITY__
if (ret) {
emstorage_activity_tbl_t new_activity;
if (err_code != NULL)
*err_code = err;
+
EM_DEBUG_FUNC_END();
return ret;
}
emstorage_mailbox_tbl_t *search_mailbox = NULL;
emstorage_mail_tbl_t *new_mail_tbl_data = NULL;
- SEARCHPGM *search_program = NULL;
+// SEARCHPGM *search_program = NULL;
MAILSTREAM *stream = NULL;
//MESSAGECACHE *mail_cache_element = NULL;
ENVELOPE *env = NULL;
if (uid_list)
emcore_free_uids(uid_list, NULL);
-
+/*
if (search_program)
mail_free_searchpgm(&search_program);
-
+*/
if (search_mailbox != NULL)
emstorage_free_mailbox(&search_mailbox, 1, NULL);
char *p_date = NULL;
char *s = NULL;
int seen = 0;
+ int answered = 0;
int forwarded = 0;
int draft = 0;
int flagged = 0;
seen = strstr(p, "\\Seen") ? 1 : 0;
draft = strstr(p, "\\Draft") ? 1 : 0;
flagged = strstr(p, "\\Flagged") ? 1 : 0;
+ answered = strstr(p, "\\Answered") ? 1 : 0;
forwarded = strstr(p, "$Forwarded") ? 1 : 0;
if ((p = strstr(p, "UID "))) {
uid_elem->uid = EM_SAFE_STRDUP(p + strlen("UID "));
uid_elem->flag.seen = seen;
uid_elem->flag.draft = draft;
- uid_elem->flag.forwarded = forwarded;
uid_elem->flag.flagged = flagged;
+ uid_elem->flag.answered = answered;
+ uid_elem->flag.forwarded = forwarded;
uid_elem->internaldate = EM_SAFE_STRDUP(internaldate);
if (*uid_list != NULL)
uid_elem->next = *uid_list; /* prepend new data to list */
/* Reading the current timeinfo */
timeinfo = localtime (&week_before_RawTime);
+ if (timeinfo == NULL) {
+ EM_DEBUG_EXCEPTION("localtime failed");
+ err = EMAIL_ERROR_SYSTEM_FAILURE;
+ goto FINISH_OFF;
+ }
EM_DEBUG_LOG(">>>>>Mobile Date a Week before %d %d %d %d %d %d", 1900 + timeinfo->tm_year, timeinfo->tm_mon+1, timeinfo->tm_mday);
}
if (!emstorage_get_downloaded_list(multi_user_name, input_mailbox_tbl->account_id,
- (account->incoming_server_type == EMAIL_SERVER_TYPE_POP3) ? 0 : input_mailbox_tbl->mailbox_id,
- &downloaded_uids, &downloaded_uid_count, true, &err)) {
+ (account->incoming_server_type == EMAIL_SERVER_TYPE_POP3) ? 0 : input_mailbox_tbl->mailbox_id,
+ &downloaded_uids,
+ &downloaded_uid_count,
+ true,
+ &err)) {
EM_DEBUG_EXCEPTION("emstorage_get_downloaded_list failed [%d]", err);
goto FINISH_OFF;
}
else {
int to_be_downloaded = 1;
- if (limit_count > 0 && uid_count >= limit_count){
+ if (limit_count > 0 && uid_count >= limit_count) {
/* EM_DEBUG_LOG("hit the limit[%d] for [%s]", limit_count, uid_elem->uid); */
to_be_downloaded = 0;
- }
- else{
+ } else {
for (i = downloaded_uid_count; i > 0; i--) {
if (downloaded_uids[i - 1].sync_status == EMAIL_SYNC_STATUS_NOT_EXIST_ON_SERVER
&& !EM_SAFE_STRCMP(uid_elem->uid, downloaded_uids[i - 1].server_uid)) {
if (downloaded_uids[i - 1].mailbox_id != input_mailbox_tbl->mailbox_id) {
uid_count--;
- }
- else {
+ } else {
/* The mail exists on server and local storage, so it should not be downloaded, just check seen flag */
- if(downloaded_uids[i - 1].flags_seen_field != uid_elem->flag.seen ||
+ if (downloaded_uids[i - 1].flags_seen_field != uid_elem->flag.seen ||
downloaded_uids[i - 1].flags_flagged_field != uid_elem->flag.flagged) {
if(downloaded_uids[i - 1].flags_seen_field != uid_elem->flag.seen) {
downloaded_uids[i - 1].sync_status = EMAIL_SYNC_STATUS_FLAG_CHANGED;
downloaded_uids[i - 1].flags_seen_field = uid_elem->flag.seen;
}
+
if (downloaded_uids[i - 1].flags_flagged_field != uid_elem->flag.flagged) {
downloaded_uids[i - 1].sync_status = EMAIL_SYNC_STATUS_FLAG_CHANGED;
downloaded_uids[i - 1].flags_flagged_field = uid_elem->flag.flagged;
} else {
downloaded_uids[i - 1].sync_status = EMAIL_SYNC_STATUS_EXIST_ON_SERVER;
}
+
+ if (!emstorage_get_mail_by_id(multi_user_name,
+ downloaded_uids[i-1].local_uid,
+ &mail,
+ false,
+ &err)) {
+ EM_DEBUG_EXCEPTION("emstorage_get_mail_by_id failed : [%d]", err);
+ continue;
+ }
+
+ if (mail->flags_answered_field != uid_elem->flag.answered) {
+ if (!emcore_set_flags_field(multi_user_name,
+ downloaded_uids[i-1].account_id,
+ &(downloaded_uids[i-1].local_uid),
+ 1,
+ EMAIL_FLAGS_ANSWERED_FIELD,
+ uid_elem->flag.answered,
+ &err)) {
+ EM_DEBUG_EXCEPTION("emcore_set_flags_field failed : [%d]", err);
+ }
+ }
+
+ if (mail->flags_forwarded_field != uid_elem->flag.forwarded) {
+ if (!emcore_set_flags_field(multi_user_name,
+ downloaded_uids[i-1].account_id,
+ &(downloaded_uids[i-1].local_uid),
+ 1,
+ EMAIL_FLAGS_FORWARDED_FIELD,
+ uid_elem->flag.forwarded,
+ &err)) {
+ EM_DEBUG_EXCEPTION("emcore_set_flags_field failed : [%d]", err);
+ }
+ }
+
+ emstorage_free_mail(&mail, 1, NULL);
+ mail = NULL;
}
+
to_be_downloaded = 0;
break;
}
}
}
- if (!emstorage_remove_downloaded_mail(multi_user_name, input_mailbox_tbl->account_id, input_mailbox_tbl->mailbox_name, downloaded_uids[i].server_uid, true, &err)) { /* remove uid from uid list */
+ if (!emstorage_remove_downloaded_mail(multi_user_name,
+ input_mailbox_tbl->account_id,
+ input_mailbox_tbl->mailbox_name,
+ downloaded_uids[i].server_uid,
+ true,
+ &err)) { /* remove uid from uid list */
EM_DEBUG_EXCEPTION("emstorage_remove_downloaded_mail failed - %d", err);
/* goto FINISH_OFF; */
}
else if (account->incoming_server_type == EMAIL_SERVER_TYPE_IMAP4) {
/* set seen flag of downloaded mail */
if (downloaded_uids[i].sync_status == EMAIL_SYNC_STATUS_FLAG_CHANGED) {
- if (!emcore_set_flags_field(multi_user_name, downloaded_uids[i].account_id, &(downloaded_uids[i].local_uid), 1, EMAIL_FLAGS_FLAGGED_FIELD, downloaded_uids[i].flags_flagged_field, &err)) {
+ if (!emcore_set_flags_field(multi_user_name,
+ downloaded_uids[i].account_id,
+ &(downloaded_uids[i].local_uid),
+ 1,
+ EMAIL_FLAGS_FLAGGED_FIELD,
+ downloaded_uids[i].flags_flagged_field,
+ &err)) {
EM_DEBUG_EXCEPTION("emcore_set_flags_field failed [%d]", err);
}
- if (!emcore_set_flags_field(multi_user_name, downloaded_uids[i].account_id, &(downloaded_uids[i].local_uid), 1, EMAIL_FLAGS_SEEN_FIELD, downloaded_uids[i].flags_seen_field, &err)) {
+ if (!emcore_set_flags_field(multi_user_name,
+ downloaded_uids[i].account_id,
+ &(downloaded_uids[i].local_uid),
+ 1,
+ EMAIL_FLAGS_SEEN_FIELD,
+ downloaded_uids[i].flags_seen_field,
+ &err)) {
EM_DEBUG_EXCEPTION("emcore_set_flags_field failed [%d]", err);
}
else
emcore_display_unread_in_badge(multi_user_name);
}
-
-
}
+
if (mail != NULL)
emstorage_free_mail(&mail, 1, NULL);
mail = NULL;
EM_DEBUG_EXCEPTION("emcore_get_utf8_address failed [%d]", err);
goto FINISH_OFF;
}
-
-
}
if (input_envelope->to) {
EM_DEBUG_EXCEPTION("emcore_get_utf8_address failed [%d]", err);
goto FINISH_OFF;
}
-
-
}
if (input_envelope->cc) {
temp_mail_tbl_data->server_mail_id = EM_SAFE_STRDUP(input_uid_elem->uid);
temp_mail_tbl_data->mail_size = mail_cache_element->rfc822_size;
temp_mail_tbl_data->flags_seen_field = input_uid_elem->flag.seen;
+ temp_mail_tbl_data->flags_draft_field = input_uid_elem->flag.draft;
+ temp_mail_tbl_data->flags_flagged_field = input_uid_elem->flag.flagged;
+ temp_mail_tbl_data->flags_answered_field = input_uid_elem->flag.answered;
+ temp_mail_tbl_data->flags_forwarded_field = input_uid_elem->flag.forwarded;
temp_mail_tbl_data->flags_deleted_field = mail_cache_element->deleted;
- temp_mail_tbl_data->flags_flagged_field = mail_cache_element->flagged;
- temp_mail_tbl_data->flags_answered_field = mail_cache_element->answered;
temp_mail_tbl_data->flags_recent_field = mail_cache_element->recent;
- temp_mail_tbl_data->flags_draft_field = mail_cache_element->draft;
- temp_mail_tbl_data->flags_forwarded_field = input_uid_elem->flag.forwarded;
temp_mail_tbl_data->priority = priority;
temp_mail_tbl_data->report_status = (req_read_receipt ? EMAIL_MAIL_REQUEST_MDN : 0);
temp_mail_tbl_data->attachment_count = 0;
input_mailbox_tbl->mailbox_name, searched_mail_id,
new_mail_tbl_data->server_mail_id, new_mail_tbl_data->mail_size,
0, &err)) {
- EM_DEBUG_EXCEPTION("emcore_add_read_mail_uid failed");
+ EM_DEBUG_EXCEPTION("emcore_add_read_mail_uid failed : [%d]", err);
+ goto CONTINUE_NEXT;
+ }
+
+ if (!emstorage_change_mail_field(multi_user_name, searched_mail_id, UPDATE_DATETIME,
+ new_mail_tbl_data, true, &err)) {
+ EM_DEBUG_EXCEPTION("emstorage_change_mail_field failed : [%d]", err);
+ goto CONTINUE_NEXT;
}
goto CONTINUE_NEXT;
EM_DEBUG_EXCEPTION("emcore_check_rule failed [%d]", err);
}
- if(destination_mailbox) /* cleanup before reusing */
+ if (destination_mailbox) /* cleanup before reusing */
emstorage_free_mailbox(&destination_mailbox, 1, NULL);
if (priority_sender) {
message1 = g_mime_parser_construct_message(parser1);
if (parser1) g_object_unref(parser1);
+ if (message1 == NULL) {
+ EM_DEBUG_LOG("message1 is NULL");
+ continue;
+ }
+
/* message1 is multipart? */
if (GMIME_IS_MULTIPART (message1->mime_part)) {
}
EM_SAFE_FREE(new_mailbox->mailbox_name);
new_mailbox->mailbox_name = enc_mailbox_name;
+
+ EM_SAFE_FREE(new_mailbox->alias);
+ new_mailbox->alias = emcore_get_alias_of_mailbox((const char *)new_mailbox->mailbox_name);
}
if (on_server) {
target_mailbox->account_id,
target_mailbox->mailbox_id,
target_mailbox->mailbox_name,
- input_new_mailbox_name,
+ new_mailbox_name,
handle_to_be_published)) != EMAIL_ERROR_NONE) {
EM_DEBUG_EXCEPTION("emcore_rename_mailbox_on_imap_server failed [%d]", err);
goto FINISH_OFF;
}
}
- if(input_mailbox_id == target_mailbox_array[i].mailbox_id) {
+ if (input_mailbox_id == target_mailbox_array[i].mailbox_id) {
if ((err = emstorage_rename_mailbox(multi_user_name,
target_mailbox_array[i].mailbox_id,
- input_new_mailbox_name,
+ new_mailbox_name,
input_new_mailbox_alias,
input_eas_data,
input_eas_data_length,
}
}
else {
- EM_DEBUG_LOG_SEC("target_mailbox_array[i].mailbox_name[%s] old_mailbox_name[%s] input_new_mailbox_name [%s]", target_mailbox_array[i].mailbox_name, old_mailbox_name, input_new_mailbox_name);
- renamed_mailbox_name = em_replace_string(target_mailbox_array[i].mailbox_name, old_mailbox_name, input_new_mailbox_name);
+ EM_DEBUG_LOG_SEC("target_mailbox_array[i].mailbox_name[%s] "
+ "old_mailbox_name[%s] "
+ "new_mailbox_name [%s]",
+ target_mailbox_array[i].mailbox_name,
+ old_mailbox_name,
+ new_mailbox_name);
+ renamed_mailbox_name = em_replace_string(target_mailbox_array[i].mailbox_name,
+ old_mailbox_name,
+ new_mailbox_name);
EM_DEBUG_LOG_SEC("renamed_mailbox_name[%s]", renamed_mailbox_name);
if ((err = emstorage_rename_mailbox(multi_user_name,
#define SAVE_TYPE_BUFFER 2 /* save content to buffe */
#define SAVE_TYPE_FILE 3 /* save content to temporary fil */
-#define EML_FOLDER 20 /* save eml content to temporary folder */
-
-
/* ---------------------------------------------------------------------- */
/* Global variable */
static int eml_data_count = 0;
char *temp_cid_data = NULL;
char *temp_cid = NULL;
- temp_str = EM_SAFE_STRDUP(str);
+ if (str == NULL) {
+ EM_DEBUG_EXCEPTION("Invalid parameter");
+ return NULL;
+ }
+
+ temp_str = g_strdup(str);
buf_length = EM_SAFE_STRLEN(str) + 1024;
buf = em_malloc(buf_length);
if (buf == NULL) {
EM_DEBUG_EXCEPTION("em_malloc failed");
+ EM_SAFE_FREE(temp_str);
return NULL;
}
temp_cid_data = em_malloc((temp_cid-temp_str)+1);
if (temp_cid_data == NULL) {
EM_DEBUG_EXCEPTION("em_malloc failed");
+ EM_SAFE_FREE(buf);
return temp_str;
}
EM_DEBUG_FUNC_END();
return SUCCESS;
}
-
static int emcore_make_mail_data_from_m_mesg(email_mail_data_t *dst_mail_data, struct _m_mesg *mmsg)
{
- EM_DEBUG_FUNC_BEGIN();
- int err = EMAIL_ERROR_NONE;
+ EM_DEBUG_FUNC_BEGIN();
+ int err = EMAIL_ERROR_NONE;
- if (!mmsg || !dst_mail_data) {
- EM_DEBUG_EXCEPTION("Invalid parameter");
- err = EMAIL_ERROR_INVALID_PARAM;
- return err;
- }
+ if (!mmsg || !dst_mail_data) {
+ EM_DEBUG_EXCEPTION("Invalid parameter");
+ err = EMAIL_ERROR_INVALID_PARAM;
+ return err;
+ }
char *encoded_subject = NULL;
char *first_address = NULL;
}
if (!mmsg->rfc822header) {
- EM_DEBUG_LOG("This mail did not have envelop");
- return err;
- }
+ EM_DEBUG_LOG("This mail did not have envelop");
+ return err;
+ }
/* Set the date */
- if (mmsg->rfc822header->date) {
- EM_DEBUG_LOG("date : [%s]", mmsg->rfc822header->date);
- mail_parse_date(&mail_cache_element, (unsigned char *)mmsg->rfc822header->date);
- }
+ if (mmsg->rfc822header->date) {
+ EM_DEBUG_LOG("date : [%s]", mmsg->rfc822header->date);
+ mail_parse_date(&mail_cache_element, (unsigned char *)mmsg->rfc822header->date);
+ }
- temp_time_info.tm_sec = mail_cache_element.seconds;
- temp_time_info.tm_min = mail_cache_element.minutes - mail_cache_element.zminutes;
- temp_time_info.tm_hour = mail_cache_element.hours - mail_cache_element.zhours;
+ temp_time_info.tm_sec = mail_cache_element.seconds;
+ temp_time_info.tm_min = mail_cache_element.minutes - mail_cache_element.zminutes;
+ temp_time_info.tm_hour = mail_cache_element.hours - mail_cache_element.zhours;
- if (mail_cache_element.hours - mail_cache_element.zhours < 0) {
- temp_time_info.tm_mday = mail_cache_element.day - 1;
- temp_time_info.tm_hour += 24;
- } else
- temp_time_info.tm_mday = mail_cache_element.day;
+ if (mail_cache_element.hours - mail_cache_element.zhours < 0) {
+ temp_time_info.tm_mday = mail_cache_element.day - 1;
+ temp_time_info.tm_hour += 24;
+ } else
+ temp_time_info.tm_mday = mail_cache_element.day;
- temp_time_info.tm_mon = mail_cache_element.month - 1;
- temp_time_info.tm_year = mail_cache_element.year + 70;
+ temp_time_info.tm_mon = mail_cache_element.month - 1;
+ temp_time_info.tm_year = mail_cache_element.year + 70;
- dst_mail_data->date_time = timegm(&temp_time_info);
+ dst_mail_data->date_time = timegm(&temp_time_info);
/* Set the subject */
- encoded_subject = emcore_gmime_get_decoding_text(mmsg->rfc822header->subject);
- dst_mail_data->subject = EM_SAFE_STRDUP(encoded_subject);
+ dst_mail_data->subject = EM_SAFE_STRDUP(mmsg->rfc822header->subject);
/* Set the email address(from, to, cc, bcc, received ...) */
- dst_mail_data->email_address_recipient = EM_SAFE_STRDUP(mmsg->rfc822header->received);
-
- if (mmsg->rfc822header->from) {
- rfc822_parse_adrlist(&from, mmsg->rfc822header->from, NULL);
- if (!emcore_get_utf8_address(&dst_mail_data->full_address_from, from, &err)) {
- EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->from);
- }
- }
-
- if (mmsg->rfc822header->to) {
- rfc822_parse_adrlist(&to, mmsg->rfc822header->to, NULL);
- if (!emcore_get_utf8_address(&dst_mail_data->full_address_to, to, &err)) {
- EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->to);
- }
- }
-
- if (mmsg->rfc822header->cc) {
- rfc822_parse_adrlist(&cc, mmsg->rfc822header->cc, NULL);
- if (!emcore_get_utf8_address(&dst_mail_data->full_address_cc, cc, &err)) {
- EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->cc);
- }
- }
-
- if (mmsg->rfc822header->bcc) {
- rfc822_parse_adrlist(&bcc, mmsg->rfc822header->bcc, NULL);
- if (!emcore_get_utf8_address(&dst_mail_data->full_address_bcc, bcc, &err)) {
- EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->bcc);
- }
- }
-
- if (mmsg->rfc822header->return_path) {
- rfc822_parse_adrlist(&return_path, mmsg->rfc822header->return_path, NULL);
- if (!emcore_get_utf8_address(&dst_mail_data->full_address_return, return_path, &err)) {
- EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->return_path);
- }
- }
-
- if (mmsg->rfc822header->reply_to) {
- rfc822_parse_adrlist(&reply_to, mmsg->rfc822header->reply_to, NULL);
- if (!emcore_get_utf8_address(&dst_mail_data->full_address_reply, reply_to, &err)) {
- EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->reply_to);
- }
- }
+ dst_mail_data->email_address_recipient = EM_SAFE_STRDUP(mmsg->rfc822header->received);
+
+ if (mmsg->rfc822header->from) {
+ rfc822_parse_adrlist(&from, mmsg->rfc822header->from, NULL);
+ if (!emcore_get_utf8_address(&dst_mail_data->full_address_from, from, &err)) {
+ EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->from);
+ }
+ }
+
+ if (mmsg->rfc822header->to) {
+ rfc822_parse_adrlist(&to, mmsg->rfc822header->to, NULL);
+ if (!emcore_get_utf8_address(&dst_mail_data->full_address_to, to, &err)) {
+ EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->to);
+ }
+ }
+
+ if (mmsg->rfc822header->cc) {
+ rfc822_parse_adrlist(&cc, mmsg->rfc822header->cc, NULL);
+ if (!emcore_get_utf8_address(&dst_mail_data->full_address_cc, cc, &err)) {
+ EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->cc);
+ }
+ }
+
+ if (mmsg->rfc822header->bcc) {
+ rfc822_parse_adrlist(&bcc, mmsg->rfc822header->bcc, NULL);
+ if (!emcore_get_utf8_address(&dst_mail_data->full_address_bcc, bcc, &err)) {
+ EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->bcc);
+ }
+ }
+
+ if (mmsg->rfc822header->return_path) {
+ rfc822_parse_adrlist(&return_path, mmsg->rfc822header->return_path, NULL);
+ if (!emcore_get_utf8_address(&dst_mail_data->full_address_return, return_path, &err)) {
+ EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->return_path);
+ }
+ }
+
+ if (mmsg->rfc822header->reply_to) {
+ rfc822_parse_adrlist(&reply_to, mmsg->rfc822header->reply_to, NULL);
+ if (!emcore_get_utf8_address(&dst_mail_data->full_address_reply, reply_to, &err)) {
+ EM_DEBUG_EXCEPTION_SEC("emcore_get_utf8_address failed : [%d], [%s]", err, mmsg->rfc822header->reply_to);
+ }
+ }
if (emcore_get_first_address(dst_mail_data->full_address_from, &first_alias, &first_address) == true) {
dst_mail_data->alias_sender = EM_SAFE_STRDUP(first_alias);
dst_mail_data->email_address_sender = EM_SAFE_STRDUP(first_address);
}
-
EM_SAFE_FREE(encoded_subject);
EM_SAFE_FREE(first_alias);
EM_SAFE_FREE(first_address);
emcore_gmime_init();
if (!emcore_gmime_eml_parse_mime(eml_file_path, mmsg->rfc822header, cnt_info, &err)) {
+ emcore_gmime_shutdown();
EM_DEBUG_EXCEPTION("emcore_gmime_parse_mime failed : [%d]", err);
err = EMAIL_ERROR_INVALID_DATA;
- emcore_gmime_shutdown();
goto FINISH_OFF;
}
- emcore_gmime_shutdown();
if (!emcore_make_mail_data_from_mime_data(mmsg,
cnt_info,
output_attachment_data,
output_attachment_count,
&err)) {
+ emcore_gmime_shutdown();
EM_DEBUG_EXCEPTION("emcore_make_mail_tbl_data_from_mime failed : [%d]", err);
goto FINISH_OFF;
}
+ emcore_gmime_shutdown();
ret = true;
SNPRINTF(file_name, sizeof(file_name), "%s", cert->filepath);
EM_DEBUG_LOG_SEC("file_name : [%s]", file_name);
- err = cert_svc_load_file_to_context(context, file_name);
- if (err != CERT_SVC_ERR_NO_ERROR) {
+ int cert_err = cert_svc_load_file_to_context(context, file_name);
+ if (cert_err != CERT_SVC_ERR_NO_ERROR) {
EM_DEBUG_EXCEPTION("cert_svc_load_file_to_context failed : [%d]", err);
err = EMAIL_ERROR_SYSTEM_FAILURE;
goto FINISH_OFF;
if (err_code)
*err_code = err;
- EM_DEBUG_FUNC_END();
+ EM_DEBUG_FUNC_END("err : [%d]", err);
return ret;
}
int ret = false;
int err = EMAIL_ERROR_NONE, err2 = EMAIL_ERROR_NONE;
int attachment_tbl_count = 0;
- int i = 0;
int account_id = 0;
SENDSTREAM** send_stream = NULL;
ENVELOPE *envelope = NULL;
opt = &(ref_account->options);
#ifdef __FEATURE_SUPPORT_VALIDATION_SYSTEM__
+ int i = 0;
EM_VALIDATION_SYSTEM_LOG("INFO", mail_id, "Email Send Start, %s -> %s, success", mail_tbl_data->full_address_from, mail_tbl_data->full_address_to);
for (i = 0; i < attachment_tbl_count; i++) {
if(attachment_tbl_data)
if (input_mail_tbl_data->file_path_html && EM_SAFE_STRLEN(input_mail_tbl_data->file_path_html) > 0) {
EM_DEBUG_LOG_SEC("file_path_html[%s]", input_mail_tbl_data->file_path_html);
- if (input_mail_tbl_data->inline_content_count > 0 && (strcasecmp(root_body->subtype, "RELATED") != 0)) {
+ if (input_mail_tbl_data->inline_content_count > 0 &&
+ (root_body->subtype && (strcasecmp(root_body->subtype, "RELATED") != 0))) {
part_for_related = attach_multipart_with_sub_type(root_body, "RELATED", &error);
if (!part_for_related) {
EM_DEBUG_EXCEPTION("attach_multipart_with_sub_type [related] failed [%d]", error);
\r
task_parameter_decoder = task_handler->task_parameter_decoder;\r
\r
- if ((err = task_parameter_decoder(input_byte_stream, input_stream_size, output_task_parameter_struct)) != EMAIL_ERROR_NONE) {\r
+ if ((err = task_parameter_decoder(input_byte_stream,
+ input_stream_size,
+ output_task_parameter_struct)) != EMAIL_ERROR_NONE) {
EM_DEBUG_EXCEPTION("task_parameter_decoder failed [%d]", err);\r
goto FINISH_OFF;\r
}\r
int err = EMAIL_ERROR_NONE;\r
int output_task_count;\r
\r
- if((err = emstorage_query_task(NULL, "WHERE task_status == 1", " ORDER BY date_time ASC, task_priority ASC LIMIT 0, 1", output_task, &output_task_count)) != EMAIL_ERROR_NONE) {\r
+ if ((err = emstorage_query_task(NULL,
+ "WHERE task_status == 1",
+ "ORDER BY date_time ASC, task_priority ASC LIMIT 0, 1",
+ output_task,
+ &output_task_count)) != EMAIL_ERROR_NONE) {
EM_DEBUG_EXCEPTION("emstorage_query_task failed [%d]", err);\r
goto FINISH_OFF;\r
}\r
EM_DEBUG_LOG("pthread_create returns [%d]", thread_error);\r
\r
/* new_task and task_parameter will be free in task handler. */\r
- EM_SAFE_FREE(new_task->task_parameter);\r
- EM_SAFE_FREE(new_task);\r
+ EM_SAFE_FREE(new_task->task_parameter);
+ EM_SAFE_FREE(new_task);
}\r
else {\r
/* If there is no task or no available slot, sleep until someone wake you up. */\r
, &task_parameter->target_mailbox_id\r
, &task_parameter->mail_id_count\r
, &tb);\r
+ if (tn == NULL) {
+ EM_DEBUG_EXCEPTION("tpl_map failed");
+ err = EMAIL_ERROR_SYSTEM_FAILURE;
+ goto FINISH_OFF;
+ }
+
tb.sz = sizeof(int) * task_parameter->mail_id_count;\r
tb.addr = task_parameter->mail_id_array;\r
tpl_pack(tn, 0);\r
}\r
\r
task_parameter = em_malloc(sizeof(task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT));\r
-\r
- if(task_parameter == NULL) {\r
+ if (task_parameter == NULL) {
EM_DEBUG_EXCEPTION("EMAIL_ERROR_OUT_OF_MEMORY");\r
err = EMAIL_ERROR_OUT_OF_MEMORY;\r
goto FINISH_OFF;\r
, &tb);\r
if (tn == NULL) {
EM_DEBUG_EXCEPTION("tpl_map failed");
+ EM_SAFE_FREE(task_parameter);
err = EMAIL_ERROR_SYSTEM_FAILURE;
goto FINISH_OFF;
}
}\r
\r
task_parameter = em_malloc(sizeof(task_parameter_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX));\r
-\r
if(task_parameter == NULL) {\r
EM_DEBUG_EXCEPTION("EMAIL_ERROR_OUT_OF_MEMORY");\r
err = EMAIL_ERROR_OUT_OF_MEMORY;\r
, &task_parameter->on_server);\r
if (tn == NULL) {
EM_DEBUG_EXCEPTION("tpl_map failed");
+ EM_SAFE_FREE(task_parameter);
err = EMAIL_ERROR_SYSTEM_FAILURE;
goto FINISH_OFF;
}
}\r
\r
task_parameter = em_malloc(sizeof(task_parameter_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL));\r
-\r
if (task_parameter == NULL) {
EM_DEBUG_EXCEPTION("EMAIL_ERROR_OUT_OF_MEMORY");\r
err = EMAIL_ERROR_OUT_OF_MEMORY;\r
, &task_parameter->mail_id);\r
if (tn == NULL) {
EM_DEBUG_EXCEPTION("tpl_map failed");
+ EM_SAFE_FREE(task_parameter);
err = EMAIL_ERROR_SYSTEM_FAILURE;
goto FINISH_OFF;
}
}\r
\r
task_parameter = em_malloc(sizeof(task_parameter_EMAIL_SYNC_TASK_SCHEDULE_SENDING_MAIL));\r
-\r
if(task_parameter == NULL) {\r
EM_DEBUG_EXCEPTION("EMAIL_ERROR_OUT_OF_MEMORY");\r
err = EMAIL_ERROR_OUT_OF_MEMORY;\r
, &task_parameter->mail_id, &task_parameter->scheduled_time);\r
if (tn == NULL) {
EM_DEBUG_EXCEPTION("tpl_map failed");
+ EM_SAFE_FREE(task_parameter);
err = EMAIL_ERROR_SYSTEM_FAILURE;
goto FINISH_OFF;
}
#include "email-core-account.h"
#include "email-core-mailbox-sync.h"
#include "email-core-mime.h"
+#include "email-core-gmime.h"
#include "email-core-signal.h"
#include "email-daemon.h"
#include "email-utilities.h"
#include <gmime/gmime.h>
-
INTERNAL_FUNC char *emcore_convert_mutf7_to_utf8(char *mailbox_name)
{
EM_DEBUG_FUNC_BEGIN("mailbox_name[%p]", mailbox_name);
EM_DEBUG_EXCEPTION("EMAIL_ERROR_OUT_OF_MEMORY");
return NULL;
}
-
+
for (; *cursor; ++cursor)
switch (*cursor) {
case '+':
goto FINISH_OFF;
}
- noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, "New email", dgettext(NATIVE_EMAIL_DOMAIN,"IDS_EMAIL_TPOP_NEW_EMAIL_RECEIVED_ABB"), NOTIFICATION_VARIABLE_TYPE_NONE);
+ noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, "New emails", dgettext(NATIVE_EMAIL_DOMAIN,"IDS_EMAIL_MBODY_NEW_EMAILS_ABB"), NOTIFICATION_VARIABLE_TYPE_NONE);
if (noti_err != NOTIFICATION_ERROR_NONE) {
EM_DEBUG_EXCEPTION("notification_set_text TEXT_TYPE_TITLE failed");
goto FINISH_OFF;
}
FINISH_OFF:
+
EM_DEBUG_FUNC_END("alert_type [%d]", alert_type);
return alert_type;
}
goto FINISH_OFF;
}
- ret = app_control_set_app_id(svc_handle, "com.samsung.email-tts-play");
+ ret = app_control_set_app_id(svc_handle, "org.tizen.email-tts-play");
if (ret != APP_CONTROL_ERROR_NONE) {
EM_DEBUG_LOG("app_control_set_app_id() failed! ret:[%d]", ret);
err = EMAIL_ERROR_SYSTEM_FAILURE;
goto FINISH_OFF;
}
- if ((noti_err = notification_set_text_domain(noti, NATIVE_EMAIL_DOMAIN, "/usr/apps/com.samsung.email/res/locale")) != NOTIFICATION_ERROR_NONE) {
+ if ((noti_err = notification_set_text_domain(noti, NATIVE_EMAIL_DOMAIN, "/usr/apps/org.tizen.email/res/locale")) != NOTIFICATION_ERROR_NONE) {
EM_DEBUG_EXCEPTION("notification_set_text_domain failed [%d]", noti_err);
err = EMAIL_ERROR_SYSTEM_FAILURE;
goto FINISH_OFF;
int private_id = 0;
void *join_zone = NULL;
char *mailbox_name = NULL;
+ char *dgettext_string = NULL;
char vconf_private_id[MAX_PATH] = {0, };
notification_h noti = NULL;
notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
switch (action) {
case EMAIL_ACTION_SEND_MAIL :
-
+/*
setlocale(LC_MESSAGES, vconf_get_str(VCONFKEY_LANGSET));
bindtextdomain("sys_string", "/usr/share/locale");
textdomain("sys_string");
+*/
+ setlocale(LC_MESSAGES, vconf_get_str(VCONFKEY_LANGSET));
+ bindtextdomain(NATIVE_EMAIL_DOMAIN, "/usr/apps/org.tizen.email/res/locale");
+ textdomain(NATIVE_EMAIL_DOMAIN);
- if (sending_error == EMAIL_ERROR_NONE) {
- /*if ((noti_err = emcore_layout_single_noti(noti, account_tbl->account_name, 1, "IDS_COM_POP_SENT", p_mail_data->date_time, p_mail_data->subject)) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_layout_single_noti failed [%d]", err);
- err = EMAIL_ERROR_SYSTEM_FAILURE;
- goto FINISH_OFF;
- }*/
+ switch(sending_error) {
+ case EMAIL_ERROR_NONE:
+ dgettext_string = dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_TPOP_EMAIL_SENT");
+ break;
+ case EMAIL_ERROR_FLIGHT_MODE_ENABLE:
+ dgettext_string = dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_TPOP_FAILED_TO_CONNECT_TO_NETWORK");
+ break;
+ case EMAIL_ERROR_NETWORK_NOT_AVAILABLE:
+ case EMAIL_ERROR_NO_SIM_INSERTED:
+ dgettext_string = dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_TPOP_NETWORK_NOT_AVAILABLE_EMAIL_WILL_BE_SENT_WHEN_CONNECTED_TO_NETWORK");
+ break;
+ case EMAIL_ERROR_SERVER_STORAGE_FULL:
+ dgettext_string = dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_TPOP_SENDING_FAILED_SERVER_STORAGE_FULL_ABB");
+ break;
+ default:
+ dgettext_string = dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_TPOP_SENDING_FAILED");
+ break;
+ }
- if ((noti_err = notification_status_message_post(dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_TPOP_EMAIL_SENT"))) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_status_message_post failed [%d]", noti_err);
- err = EMAIL_ERROR_NOTI;
- goto FINISH_OFF;
- }
+ if ((noti_err = notification_set_layout(noti,
+ NOTIFICATION_LY_NOTI_EVENT_SINGLE)) != NOTIFICATION_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("notification_set_layout failed [%d]", noti_err);
+ err = EMAIL_ERROR_NOTI;
+ goto FINISH_OFF;
+ }
- } else {
- /*if ((noti_err = emcore_layout_single_noti(noti, account_tbl->account_name, 1, "IDS_COM_POP_SENDING_FAILED", p_mail_data->date_time, p_mail_data->subject)) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_layout_single_noti failed [%d]", err);
- err = EMAIL_ERROR_SYSTEM_FAILURE;
- goto FINISH_OFF;
- }*/
-
- switch(sending_error) {
- case EMAIL_ERROR_FLIGHT_MODE_ENABLE:
- EM_DEBUG_LOG("Flight mode enable");
- if ((noti_err = notification_status_message_post(dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_TPOP_FAILED_TO_CONNECT_TO_NETWORK"))) != NOTIFICATION_ERROR_NONE)
- {
- EM_DEBUG_EXCEPTION("notification_status_message_post failed [%d]", noti_err);
- err = EMAIL_ERROR_NOTI;
- goto FINISH_OFF;
- }
- break;
+ if ((noti_err = notification_set_image(noti,
+ NOTIFICATION_IMAGE_TYPE_ICON,
+ EMAIL_NOTI_ICON_PATH)) != NOTIFICATION_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("notification_set_image failed [%d]", noti_err);
+ err = EMAIL_ERROR_NOTI;
+ goto FINISH_OFF;
+ }
- case EMAIL_ERROR_NETWORK_NOT_AVAILABLE:
- case EMAIL_ERROR_NO_SIM_INSERTED:
- if ((noti_err = notification_status_message_post(dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_TPOP_NETWORK_NOT_AVAILABLE_EMAIL_WILL_BE_SENT_WHEN_CONNECTED_TO_NETWORK"))) != NOTIFICATION_ERROR_NONE)
- {
- EM_DEBUG_EXCEPTION("notification_status_message_post failed [%d]", noti_err);
- err = EMAIL_ERROR_NOTI;
- goto FINISH_OFF;
- }
- break;
- default:
- if ((noti_err = notification_status_message_post(dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_TPOP_SENDING_FAILED"))) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_status_message_post failed [%d]", noti_err);
- err = EMAIL_ERROR_NOTI;
- goto FINISH_OFF;
- }
- }
- if ((noti_err = notification_set_layout(noti, NOTIFICATION_LY_NOTI_EVENT_SINGLE)) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_set_layout failed [%d]", noti_err);
- err = EMAIL_ERROR_NOTI;
- goto FINISH_OFF;
- }
+ if ((noti_err = notification_set_text(noti,
+ NOTIFICATION_TEXT_TYPE_TITLE,
+ p_mail_data->alias_recipient,
+ NULL,
+ NOTIFICATION_VARIABLE_TYPE_NONE)) != NOTIFICATION_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("notification_set_text failed [%d]", noti_err);
+ err = EMAIL_ERROR_NOTI;
+ goto FINISH_OFF;
+ }
- if ((noti_err = notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, EMAIL_NOTI_ICON_PATH)) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_set_image failed [%d]", noti_err);
+ switch (sending_error) {
+ case EMAIL_ERROR_NONE:
+ if ((noti_err = notification_set_text(noti,
+ NOTIFICATION_TEXT_TYPE_CONTENT,
+ "Email Sent",
+ dgettext_string,
+ NOTIFICATION_VARIABLE_TYPE_NONE)) != NOTIFICATION_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("notification_set_text failed [%d]", noti_err);
err = EMAIL_ERROR_NOTI;
goto FINISH_OFF;
}
-
- if ((noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, "Sending failed", dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_TPOP_SENDING_FAILED"), NOTIFICATION_VARIABLE_TYPE_NONE)) != NOTIFICATION_ERROR_NONE) {
+ break;
+ case EMAIL_ERROR_SERVER_STORAGE_FULL:
+ if ((noti_err = notification_set_text(noti,
+ NOTIFICATION_TEXT_TYPE_CONTENT,
+ "Sending failed. Server storage full.",
+ dgettext_string,
+ NOTIFICATION_VARIABLE_TYPE_NONE)) != NOTIFICATION_ERROR_NONE) {
EM_DEBUG_EXCEPTION("notification_set_text failed [%d]", noti_err);
err = EMAIL_ERROR_NOTI;
goto FINISH_OFF;
}
-
- if (p_mail_data->subject) {
- if ((noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, p_mail_data->subject, NULL, NOTIFICATION_VARIABLE_TYPE_NONE)) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_set_text failed [%d]", noti_err);
- err = EMAIL_ERROR_NOTI;
- goto FINISH_OFF;
- }
- } else {
- if ((noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, "No subject", NULL, NOTIFICATION_VARIABLE_TYPE_NONE)) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_set_text failed [%d]", noti_err);
- err = EMAIL_ERROR_NOTI;
- goto FINISH_OFF;
- }
- }
-
- if (sending_error == EMAIL_ERROR_SMTP_SEND_FAILURE_BY_OVERSIZE) {
- setlocale(LC_MESSAGES, vconf_get_str(VCONFKEY_LANGSET));
- bindtextdomain(NATIVE_EMAIL_DOMAIN, "/usr/apps/com.samsung.email/res/locale");
- textdomain(NATIVE_EMAIL_DOMAIN);
- if ((noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_INFO_1, dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_POP_THE_EMAIL_IS_TOO_LARGE"), NULL, NOTIFICATION_VARIABLE_TYPE_NONE)) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_set_text TEXT_TYPE_INFO_1 failed");
- err = EMAIL_ERROR_NOTI;
- goto FINISH_OFF;
- }
- }
-
- /*notification_set_execute_option(noti, NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH, NULL, NULL, args);*/
-
- if ((noti_err = notification_set_display_applist(noti, NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY)) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_insert failed [%d]", noti_err);
+ break;
+ default:
+ if ((noti_err = notification_set_text(noti,
+ NOTIFICATION_TEXT_TYPE_CONTENT,
+ "Sending failed",
+ dgettext_string,
+ NOTIFICATION_VARIABLE_TYPE_NONE)) != NOTIFICATION_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("notification_set_text failed [%d]", noti_err);
err = EMAIL_ERROR_NOTI;
goto FINISH_OFF;
}
+ break;
+ }
- if ((noti_err = notification_insert(noti, &private_id)) != NOTIFICATION_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("notification_insert failed [%d]", noti_err);
+ if (sending_error == EMAIL_ERROR_SMTP_SEND_FAILURE_BY_OVERSIZE) {
+ if ((noti_err = notification_set_text(noti,
+ NOTIFICATION_TEXT_TYPE_INFO_1,
+ dgettext(NATIVE_EMAIL_DOMAIN, "IDS_EMAIL_POP_THE_EMAIL_IS_TOO_LARGE"),
+ NULL,
+ NOTIFICATION_VARIABLE_TYPE_NONE)) != NOTIFICATION_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("notification_set_text TEXT_TYPE_INFO_1 failed");
err = EMAIL_ERROR_NOTI;
goto FINISH_OFF;
}
+ }
- EM_DEBUG_LOG("Private_id = [%d]", private_id);
+ if ((noti_err = notification_set_display_applist(noti,
+ NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY | NOTIFICATION_DISPLAY_APP_TICKER)) != NOTIFICATION_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("notification_insert failed [%d]", noti_err);
+ err = EMAIL_ERROR_NOTI;
+ goto FINISH_OFF;
+ }
- SNPRINTF(vconf_private_id, sizeof(vconf_private_id), "%s/%d", VCONF_KEY_NOTI_PRIVATE_ID, account_id);
- if (vconf_set_int(vconf_private_id, private_id) != 0) {
- EM_DEBUG_EXCEPTION("vconf_set_int failed");
- err = EMAIL_ERROR_GCONF_FAILURE;
- goto FINISH_OFF;
- }
+ if ((noti_err = notification_insert(noti, &private_id)) != NOTIFICATION_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("notification_insert failed [%d]", noti_err);
+ err = EMAIL_ERROR_NOTI;
+ goto FINISH_OFF;
+ }
+
+ EM_DEBUG_LOG("Private_id = [%d]", private_id);
+
+ SNPRINTF(vconf_private_id, sizeof(vconf_private_id), "%s/%d", VCONF_KEY_NOTI_PRIVATE_ID, account_id);
+ if (vconf_set_int(vconf_private_id, private_id) != 0) {
+ EM_DEBUG_EXCEPTION("vconf_set_int failed");
+ err = EMAIL_ERROR_GCONF_FAILURE;
+ goto FINISH_OFF;
}
break;
case EMAIL_ACTION_SENDING_MAIL :
- if ((noti_err = notification_set_text_domain(noti, NATIVE_EMAIL_DOMAIN, "/usr/apps/com.samsung.email/res/locale")) != NOTIFICATION_ERROR_NONE) {
+ if ((noti_err = notification_set_text_domain(noti, NATIVE_EMAIL_DOMAIN, "/usr/apps/org.tizen.email/res/locale")) != NOTIFICATION_ERROR_NONE) {
EM_DEBUG_EXCEPTION("notification_set_text_domain failed [%d]", noti_err);
err = EMAIL_ERROR_NOTI;
goto FINISH_OFF;
EM_DEBUG_LOG("Private_id = [%d]", private_id);
SNPRINTF(vconf_private_id, sizeof(vconf_private_id), "%s/%d", VCONF_KEY_NOTI_PRIVATE_ID, account_id);
- if ((err = vconf_set_int (vconf_private_id, private_id)) != 0) {
- EM_DEBUG_EXCEPTION("vconf_set_int failed [%d]", err);
+ if (vconf_set_int (vconf_private_id, private_id) != 0) {
+ EM_DEBUG_EXCEPTION("vconf_set_int failed");
err = EMAIL_ERROR_GCONF_FAILURE;
goto FINISH_OFF;
}
EM_DEBUG_EXCEPTION ("notification_free error [%d]", noti_err);
err = EMAIL_ERROR_NOTI;
}
+
break;
}
app_control_destroy(service);
if ((action == EMAIL_ACTION_SEND_MAIL) && noti) {
- if( (noti_err = notification_free(noti)) != NOTIFICATION_ERROR_NONE)
+ if ((noti_err = notification_free(noti)) != NOTIFICATION_ERROR_NONE) {
err = EMAIL_ERROR_NOTI;
+ }
}
+ if ((action != EMAIL_ACTION_SEND_MAIL) && (err != EMAIL_ERROR_NONE)) {
+ if (noti) {
+ notification_free(noti);
+ g_sending_noti_handle = NULL;
+ }
+ }
+
if (join_zone)
emcore_unset_join_zone(join_zone);
}
-INTERNAL_FUNC int reg_replace_new (char **input_source_text, char *input_old_pattern_string, char *input_new_string)
+INTERNAL_FUNC char *reg_replace_new(char *input_source_text, char *input_old_pattern_string, char *input_new_string)
{
char *replaced_str = NULL;
- int error_code = EMAIL_ERROR_NONE;
GRegex *regex = NULL;
GError *error = NULL;
- if (input_source_text == NULL || *input_source_text == NULL) {
- return EMAIL_ERROR_INVALID_PARAM;
+ if (input_source_text == NULL) {
+ EM_DEBUG_EXCEPTION("Invalid parameter");
+ return NULL;
}
regex = g_regex_new(input_old_pattern_string, G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, &error);
-
if (!regex) {
EM_DEBUG_LOG("g_regex_new failed");
- error_code = EMAIL_ERROR_SYSTEM_FAILURE;
goto FINISH_OFF;
}
- replaced_str = g_regex_replace_literal(regex, *input_source_text, EM_SAFE_STRLEN(*input_source_text), 0, input_new_string, 0, &error);
-
- EM_SAFE_FREE(*input_source_text);
-
- *input_source_text = replaced_str;
+ replaced_str = g_regex_replace_literal(regex,
+ input_source_text,
+ strlen(input_source_text),
+ 0,
+ input_new_string,
+ 0,
+ &error);
+ if (replaced_str == NULL) {
+ EM_DEBUG_EXCEPTION("g_regex_replace_literal failed : [%s][%d]", error->message, error->code);
+ goto FINISH_OFF;
+ }
FINISH_OFF:
+
+ if (regex) g_regex_unref(regex);
- g_regex_unref(regex);
- return error_code;
+ return replaced_str;
}
#include <libxml/HTMLparser.h>
-static void emcore_get_content_string(xmlNode *input_node, char *input_result_buffer, int input_result_buffer_legnth, int *input_exit_flag)
+static void emcore_get_content_string(xmlNode *input_node, char *input_result_buffer, int input_result_buffer_length, int *input_exit_flag)
{
xmlNode *cur_node = NULL;
char *temp_content_string = NULL;
if (cur_node->name && (strcasecmp((const char *)cur_node->name, "head") == 0 || strcasecmp((const char *)cur_node->name, "title") == 0))
continue;
+ if (cur_node->name && (strcasecmp((const char *)cur_node->name, "BR") == 0)) {
+ if (EM_SAFE_STRLEN(input_result_buffer) + 1 >= input_result_buffer_length) {
+ *input_exit_flag = 1;
+ break;
+ } else {
+ EM_SAFE_STRCAT(input_result_buffer, " ");
+ continue;
+ }
+ }
+
if (cur_node->type == XML_TEXT_NODE && cur_node->content) {
- if ((EM_SAFE_STRLEN(cur_node->content) + EM_SAFE_STRLEN(input_result_buffer)) >= input_result_buffer_legnth) {
+ if ((EM_SAFE_STRLEN(cur_node->content) + EM_SAFE_STRLEN(input_result_buffer)) >= input_result_buffer_length) {
int len1 = EM_SAFE_STRLEN(input_result_buffer);
- if (len1 >= 0 && len1 < input_result_buffer_legnth) {
- int remain_size = input_result_buffer_legnth - len1 - 2;
- char *remain_str = em_malloc(remain_size);
- if (remain_str && cur_node->content) {
- snprintf(remain_str, remain_size, "%s", (char*)(cur_node->content));
- }
+ if (len1 >= 0 && len1 < input_result_buffer_length) {
+ int remain_size = input_result_buffer_length - len1 - 2;
+ EM_DEBUG_LOG("remain_size : [%d], len1 : [%d]", remain_size, len1);
+ char *remain_str = NULL;
- if (remain_str)
- EM_SAFE_STRCAT(input_result_buffer, remain_str);
+ if (remain_size > 0)
+ remain_str = g_strndup((char *)(cur_node->content), remain_size);
- EM_SAFE_FREE(remain_str);
+ if (remain_str) {
+ char *replaced_string = NULL;
+ replaced_string = reg_replace_new(remain_str, "[ \t\r\n\v\f]+", " ");
+ EM_SAFE_STRCAT(input_result_buffer, replaced_string);
+ EM_SAFE_FREE(replaced_string);
+ free(remain_str);
+ }
}
*input_exit_flag = 1;
break;
}
+
temp_content_string = EM_SAFE_STRDUP((const char *)cur_node->content);
if (temp_content_string) {
- reg_replace_new(&temp_content_string, "[ \t\r\n\v\f]+", " ");
- EM_SAFE_STRCAT(input_result_buffer, temp_content_string);
- EM_SAFE_FREE(temp_content_string);
+ char *replaced_string = NULL;
+ replaced_string = reg_replace_new(temp_content_string, "[ \t\r\n\v\f]+", " ");
+ EM_SAFE_STRCAT(input_result_buffer, replaced_string);
+ EM_SAFE_FREE(replaced_string);
+ free(temp_content_string);
}
}
if (cur_node->children)
- emcore_get_content_string(cur_node->children, input_result_buffer, input_result_buffer_legnth, input_exit_flag);
+ emcore_get_content_string(cur_node->children, input_result_buffer, input_result_buffer_length, input_exit_flag);
if (*input_exit_flag == 1)
break;
}
+
FINISH_OFF:
+
return;
}
}
result_string = em_malloc(sizeof(char) * input_result_buffer_legnth);
-
if (result_string == NULL) {
EM_DEBUG_EXCEPTION("EMAIL_ERROR_OUT_OF_MEMORY");
err = EMAIL_ERROR_OUT_OF_MEMORY;
root_element = xmlDocGetRootElement(result_html_document);
-
emcore_get_content_string(root_element, result_string, input_result_buffer_legnth, &exit_flag);
- reg_replace_new(&result_string, "[ \t\r\n\v\f]+", " ");
- EM_SAFE_STRCPY(output_result_buffer, result_string);
- // em_trim_left(output_result_buffer);
+ char *replaced_string = reg_replace_new(result_string, "[ \t\r\n\v\f]+", " ");
+ EM_SAFE_STRCPY(output_result_buffer, replaced_string);
+ EM_SAFE_FREE(replaced_string);
+ em_trim_left(output_result_buffer);
FINISH_OFF:
if (result_html_document) {
{
EM_DEBUG_FUNC_BEGIN();
int err = EMAIL_ERROR_NONE;
-
int contact_error = 0;
int person_id = 0;
int allowed_contact_type = 0; /* 0 : NONE, 1 : All contacts, 2 : Favorites, 3 : Custom */
/* pData : a parameter which is registered when busy handler is registerd */
/* count : retry count */
-#define EMAIL_STORAGE_MAX_RETRY_COUNT 20
-static int _callback_sqlite_busy_handler(void *pData, int count)
+#define EMAIL_STORAGE_MAX_RETRY_COUNT 20
+
+static int _callback_sqlite_busy_handler(void *pData, int retry)
{
- EM_DEBUG_LOG("Busy Handler Called!!: [%d]", count);
- usleep(200000); /* sleep time when SQLITE_LOCK */
+ if (retry < EMAIL_STORAGE_MAX_RETRY_COUNT) {
+ EM_DEBUG_LOG("Busy handler called!!: [%d]", retry);
+ sqlite3_sleep(200);
+ return 1;
+ }
- /* retry will be stopped if busy handler return 0 */
- return EMAIL_STORAGE_MAX_RETRY_COUNT - count;
+ EM_DEBUG_EXCEPTION("Invalid Busy handler called:: [%d]", retry);
+ return 0;
+}
+
+static int _callback_collation_utf7_sort(void *data, int length_text_a, const void *text_a,
+ int length_text_b, const void *text_b)
+{
+ EM_DEBUG_FUNC_BEGIN();
+ int result = 0;
+ char *converted_string_a = NULL;
+ char *converted_string_b = NULL;
+
+ EM_DEBUG_LOG_DEV("text_a : [%s]", text_a);
+ converted_string_a = emcore_convert_mutf7_to_utf8((char *)text_a);
+ EM_DEBUG_LOG_DEV("Converted text_a : [%s]", converted_string_a);
+
+ EM_DEBUG_LOG_DEV("text_b : [%s]", text_b);
+ converted_string_b = emcore_convert_mutf7_to_utf8((char *)text_b);
+ EM_DEBUG_LOG_DEV("Converted text_b : [%s]", converted_string_b);
+
+ if (converted_string_a && converted_string_b)
+ result = strcmp(converted_string_a, converted_string_b);
+
+ EM_SAFE_FREE(converted_string_a);
+ EM_SAFE_FREE(converted_string_b);
+
+ EM_DEBUG_FUNC_END();
+ return result;
}
static int _delete_all_files_and_directories(char *db_file_path, int *err_code)
goto FINISH_OFF;
}
+ /* Register collation callback function */
+ rc = sqlite3_create_collation(*sqlite_handle, "CONVERTUTF8", SQLITE_UTF8, NULL, _callback_collation_utf7_sort);
+ if (SQLITE_OK != rc) {
+ EM_DEBUG_EXCEPTION("sqlite3_create_collation failed : [%d][%s]", rc, sqlite3_errmsg(*sqlite_handle));
+ error = EMAIL_ERROR_DB_FAILURE;
+ sqlite3_close(*sqlite_handle);
+ *sqlite_handle = NULL;
+ goto FINISH_OFF;
+ }
+
ret = true;
FINISH_OFF:
EM_DEBUG_LOG("CREATE TABLE mail_text_tbl");
EM_SAFE_STRNCPY(sql_query_string, create_table_query[CREATE_TABLE_MAIL_TEXT_TBL], sizeof(sql_query_string)-1); /*prevent 21984 */
- error = emstorage_exec_query_by_prepare_v2(local_db_handle, sql_query_string);
- if (error != EMAIL_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("emstorage_exec_query_by_prepare_v2 failed:[%d]", error);
- goto FINISH_OFF;
- }
+ error = emstorage_exec_query_by_prepare_v2(local_db_handle, sql_query_string);
+ if (error != EMAIL_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("emstorage_exec_query_by_prepare_v2 failed:[%d]", error);
+ goto FINISH_OFF;
+ }
EMSTORAGE_PROTECTED_FUNC_CALL(sqlite3_exec(local_db_handle, "END;", NULL, NULL, NULL), rc);
} /* mail_text_tbl */
EM_DEBUG_LOG("CREATE TABLE mail_auto_download_activity_tbl");
EM_SAFE_STRNCPY(sql_query_string, create_table_query[CREATE_TABLE_MAIL_AUTO_DOWNLOAD_ACTIVITY_TBL], sizeof(sql_query_string)-1);
- error = emstorage_exec_query_by_prepare_v2(local_db_handle, sql_query_string);
- if (error != EMAIL_ERROR_NONE) {
- EM_DEBUG_EXCEPTION("emstorage_exec_query_by_prepare_v2 failed:[%d]", error);
- goto FINISH_OFF;
- }
+ error = emstorage_exec_query_by_prepare_v2(local_db_handle, sql_query_string);
+ if (error != EMAIL_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("emstorage_exec_query_by_prepare_v2 failed:[%d]", error);
+ goto FINISH_OFF;
+ }
EMSTORAGE_PROTECTED_FUNC_CALL(sqlite3_exec(local_db_handle, "END;", NULL, NULL, NULL), rc);
} /* mail_auto_download_activity_tbl */
EMSTORAGE_FINISH_READ_TRANSACTION(transaction);
- sqlite3_db_release_memory(local_db_handle);
+// sqlite3_db_release_memory(local_db_handle);
EM_SAFE_FREE(sql_query_string);
EM_SAFE_FREE(date_time_string);
EMSTORAGE_FINISH_READ_TRANSACTION(transaction);
- sqlite3_db_release_memory(local_db_handle);
+// sqlite3_db_release_memory(local_db_handle);
if (err_code != NULL)
*err_code = error;
EMSTORAGE_FINISH_READ_TRANSACTION(transaction);
- sqlite3_db_release_memory(local_db_handle);
+// sqlite3_db_release_memory(local_db_handle);
if (err_code != NULL)
*err_code = error;
SNPRINTF(sql_query_string, sizeof(sql_query_string), "SELECT %s, total, read FROM mail_box_tbl AS MBT LEFT OUTER JOIN (SELECT mailbox_id, count(mail_id) AS total, SUM(flags_seen_field) AS read FROM mail_tbl WHERE flags_deleted_field = 0 GROUP BY mailbox_id) AS MT ON MBT.mailbox_id = MT.mailbox_id %s %s", fields, input_conditional_clause, input_ordering_clause);
}
- EM_DEBUG_LOG_DEV ("query[%s]", sql_query_string);
+ EM_DEBUG_LOG_DEV("query[%s]", sql_query_string);
EMSTORAGE_PROTECTED_FUNC_CALL(sqlite3_get_table(local_db_handle, sql_query_string, &result, &count, NULL, NULL), rc);
EM_DEBUG_DB_EXEC(SQLITE_OK != rc, {error = EMAIL_ERROR_DB_FAILURE;sqlite3_free_table(result);goto FINISH_OFF; },
("sqlite3_get_table failed [%d] [%s]", rc, sql_query_string))
- EM_DEBUG_LOG_DEV ("result count [%d]", count);
+ EM_DEBUG_LOG_DEV("result count [%d]", count);
if(count == 0) {
EM_DEBUG_LOG_SEC ("Can't find mailbox query[%s]", sql_query_string);
EMSTORAGE_FINISH_READ_TRANSACTION(input_transaction);
- sqlite3_db_release_memory(local_db_handle);
+// sqlite3_db_release_memory(local_db_handle);
EM_DEBUG_FUNC_END("error [%d]", error);
return error;
SNPRINTF(conditional_clause_string + EM_SAFE_STRLEN(conditional_clause_string), sizeof(conditional_clause_string)-(EM_SAFE_STRLEN(conditional_clause_string)+1), " AND account_id = %d ", account_id);
}
- SNPRINTF(ordering_clause_string, QUERY_SIZE, " ORDER BY MBT.mailbox_name ");
+ SNPRINTF(ordering_clause_string, QUERY_SIZE, " ORDER BY CASE WHEN MBT.mailbox_name"
+ " GLOB \'[][~`!@#$%%^&*()_-+=|\\{}:;<>,.?/ ]*\'"
+ " THEN 2 ELSE 1 END ASC,"
+ " MBT.mailbox_name COLLATE CONVERTUTF8 ASC ");
EM_DEBUG_LOG("conditional_clause_string[%s]", conditional_clause_string);
EM_DEBUG_LOG("ordering_clause_string[%s]", ordering_clause_string);
break;
case UPDATE_DATETIME: {
- time_t now = time(NULL);
-
SNPRINTF(sql_query_string, sizeof(sql_query_string),
"UPDATE mail_tbl SET"
- " date_time = '%d'"
+ " date_time = '%ld'"
" WHERE mail_id = %d AND account_id != 0"
- , (int)now
+ , mail->date_time
, mail_id);
EMSTORAGE_PROTECTED_FUNC_CALL(sqlite3_prepare_v2(local_db_handle, sql_query_string, EM_SAFE_STRLEN(sql_query_string), &hStmt, NULL), rc);
mkdir(MAILHOME, DIRECTORY_PERMISSION);
mkdir(MAILTEMP, DIRECTORY_PERMISSION);
+ chmod(MAILTEMP, 0777);
/* first clear index. */
while (indexes->object_name) {
error = EMAIL_ERROR_OUT_OF_MEMORY;
goto FINISH_OFF;
}
+
+ if (account_id == EML_FOLDER) {
+ chmod(buf, 0777);
+ }
}
}
if (stat(buf, &sbuf) == 0) {
if ((sbuf.st_mode & S_IFMT) != S_IFDIR) {
EM_DEBUG_EXCEPTION(" a object which isn't directory aleady exists");
-
error = EMAIL_ERROR_SYSTEM_FAILURE;
goto FINISH_OFF;
}
error = EMAIL_ERROR_OUT_OF_MEMORY;
goto FINISH_OFF;
}
+
+ if (account_id == EML_FOLDER) {
+ chmod(buf, 0777);
+ }
}
}
error = EMAIL_ERROR_OUT_OF_MEMORY;
goto FINISH_OFF;
}
+
+ if (account_id == EML_FOLDER) {
+ chmod(buf, 0777);
+ }
}
}
mkdir(EMAILPATH, DIRECTORY_PERMISSION);
mkdir(MAILHOME, DIRECTORY_PERMISSION);
mkdir(MAILTEMP, DIRECTORY_PERMISSION);
+ chmod(MAILTEMP, 0777);
EM_DEBUG_FUNC_END();
}
EMSTORAGE_FINISH_READ_TRANSACTION(transaction);
- sqlite3_db_release_memory(local_db_handle);
-
+// sqlite3_db_release_memory(local_db_handle);
if (ret == true) {
if (mail_ids != NULL)
EM_DEBUG_LOG_SEC("stripped_subject: [%s]", stripped_subject);
- if (EM_SAFE_STRLEN(stripped_subject) < 2) {
+ if (EM_SAFE_STRLEN(stripped_subject) == 0) {
result_thread_id = -1;
goto FINISH_OFF;
}
goto FINISH_OFF;
}
- if (EM_SAFE_STRLEN(stripped_subject) < 2) {
+ if (EM_SAFE_STRLEN(stripped_subject) == 0) {
result_thread_id = -1;
goto FINISH_OFF;
}
EMSTORAGE_FINISH_READ_TRANSACTION(transaction);
- if (local_db_handle)
- sqlite3_db_release_memory(local_db_handle);
+// sqlite3_db_release_memory(local_db_handle);
EM_DEBUG_FUNC_END("err [%d]", err);
return err;
return ret;
}
-
-INTERNAL_FUNC void emstorage_flush_db_cache()
-{
- /* sqlite3_release_memory(-1); */
-}
-
#ifdef __FEATURE_LOCAL_ACTIVITY__
/**
* emstorage_add_activity - Add Email Local activity during OFFLINE mode
mod_field_name_string = em_malloc(sizeof(char) * length_field_name);
if (mod_field_name_string == NULL) {
EM_DEBUG_EXCEPTION("em_malloc failed");
+ EM_SAFE_FREE(temp_field_name_string);
ret = EMAIL_ERROR_OUT_OF_MEMORY;
goto FINISH_OFF;
}
mod_value_string = em_malloc(sizeof(char) * length_value);
if (mod_value_string == NULL) {
EM_DEBUG_EXCEPTION("em_malloc failed");
+ EM_SAFE_FREE(temp_field_name_string);
ret = EMAIL_ERROR_OUT_OF_MEMORY;
goto FINISH_OFF;
}
sqlite3_free_table(result);
EMSTORAGE_FINISH_READ_TRANSACTION(true);
- sqlite3_db_release_memory(local_db_handle);
+// sqlite3_db_release_memory(local_db_handle);
query_size = (10 * count) + strlen("mail_id IN ( ) ");
sqlite3_free_table(result);
EMSTORAGE_FINISH_READ_TRANSACTION(true);
- sqlite3_db_release_memory(local_db_handle);
+// sqlite3_db_release_memory(local_db_handle);
query_size = (10 * count) + strlen("mail_id IN ( ) ");
return err;
}
-INTERNAL_FUNC int emstorage_query_task(char *multi_user_name, const char *input_conditional_clause, const char *input_ordering_clause, email_task_t **output_task_list, int *output_task_count)
+INTERNAL_FUNC int emstorage_query_task(char *multi_user_name,
+ const char *input_conditional_clause,
+ const char *input_ordering_clause,
+ email_task_t **output_task_list,
+ int *output_task_count)
{
- EM_DEBUG_FUNC_BEGIN("input_conditional_clause[%p], input_ordering_clause [%p], output_task_list[%p], output_task_count[%d]", input_conditional_clause, input_ordering_clause, output_task_list, output_task_count);
+ EM_DEBUG_FUNC_BEGIN("input_conditional_clause[%p], input_ordering_clause [%p], "
+ "output_task_list[%p], output_task_count[%d]",
+ input_conditional_clause, input_ordering_clause, output_task_list, output_task_count);
int i = 0, count = 0, rc = -1;
int cur_query = 0;
int field_index = 0;
local_db_handle = emstorage_get_db_connection(multi_user_name);
- SNPRINTF_OFFSET(sql_query_string, cur_query, QUERY_SIZE, "SELECT COUNT(*) FROM mail_task_tbl %s", input_conditional_clause);
+ SNPRINTF_OFFSET(sql_query_string, cur_query, QUERY_SIZE,
+ "SELECT COUNT(*) FROM mail_task_tbl %s", input_conditional_clause);
EM_DEBUG_LOG_SEC("emstorage_query_mail_list : query[%s].", sql_query_string);
EMSTORAGE_PROTECTED_FUNC_CALL(sqlite3_get_table(local_db_handle, sql_query_string, &result, NULL, NULL, NULL), rc);
goto FINISH_OFF;
}
- SNPRINTF_OFFSET(sql_query_string, cur_query, QUERY_SIZE, "SELECT %s FROM mail_task_tbl %s %s", field_list, input_conditional_clause, input_ordering_clause);
+ SNPRINTF_OFFSET(sql_query_string, cur_query, QUERY_SIZE,
+ "SELECT %s FROM mail_task_tbl %s %s", field_list, input_conditional_clause, input_ordering_clause);
EM_DEBUG_LOG_SEC("emstorage_query_mail_list : query[%s].", sql_query_string);
EMSTORAGE_PROTECTED_FUNC_CALL(sqlite3_prepare_v2(local_db_handle, sql_query_string, EM_SAFE_STRLEN(sql_query_string), &hStmt, NULL), rc);
EM_DEBUG_DB_EXEC((rc != SQLITE_ROW && rc != SQLITE_DONE), {err = EMAIL_ERROR_DB_FAILURE;goto FINISH_OFF; },
("sqlite3_step fail:%d", rc));
- if (rc == SQLITE_DONE) {
+ if (rc == SQLITE_DONE) {
EM_DEBUG_EXCEPTION("no task found...");
err = EMAIL_ERROR_TASK_NOT_FOUND;
count = 0;
}
FINISH_OFF:
+
if (err == EMAIL_ERROR_NONE) {
if (output_task_list)
*output_task_list = task_item_from_tbl;
*output_task_count = count;
+ } else {
+ for (i = 0; i < count; i++) {
+ EM_SAFE_FREE(task_item_from_tbl[i].task_parameter);
+ }
+ EM_SAFE_FREE(task_item_from_tbl);
}
- else {
- for (i = 0; i < count; i++) {
- EM_SAFE_FREE(task_item_from_tbl[i].task_parameter);
- }
- }
+
if (hStmt != NULL) {
rc = sqlite3_finalize(hStmt);
hStmt = NULL;
}
}
-
EM_DEBUG_FUNC_END("err [%d]", err);
return err;
}
int total_body_size;
int total_attachment_size;
int attachment_only;
+ int content_type; /* 1 : signed */
char *sections;
struct text_data
INTERNAL_FUNC int emcore_sync_seen_flag_with_server(char *multi_user_name, int mail_ids[], int num, int event_handle, int *err_code);
INTERNAL_FUNC int emcore_set_flags_field(char *multi_user_name, int account_id, int mail_ids[], int num, email_flags_field_type field_type, int value, int *err_code);
-INTERNAL_FUNC char* emcore_convert_mutf7_to_utf8(char *mailbox_name);
INTERNAL_FUNC int emcore_convert_string_to_structure(const char *encoded_string, void **struct_var, email_convert_struct_type_e type);
INTERNAL_FUNC int emcore_save_mail_file(char *multi_user_name, int account_id, int mail_id, int attachment_id, char *src_file_path, char *file_name, char *full_path, char *virtual_path, int *err_code);
INTERNAL_FUNC int reg_replace (char *input_source_text, char *input_old_pattern_string, char *input_new_string);
-INTERNAL_FUNC int reg_replace_new (char **input_source_text, char *input_old_pattern_string, char *input_new_string);
+INTERNAL_FUNC char *reg_replace_new (char *input_source_text, char *input_old_pattern_string, char *input_new_string);
int emcore_strip_HTML_tag(const char *input_html_file_path, char *encoding_type, char *output_result_buffer, int input_result_buffer_legnth);
int emcore_send_noti_for_new_mail(int account_id, char *mailbox_name, char *subject, char *from, char *uid, char *datetime);
int emcore_make_attachment_file_name_with_extension(char *source_file_name, char *sub_type, char *result_file_name, int result_file_name_buffer_length, int *err_code);
}
event_data = em_malloc(sizeof(email_event_t));
+ if (event_data == NULL) {
+ EM_DEBUG_EXCEPTION("em_malloc failed");
+ err = EMAIL_ERROR_OUT_OF_MEMORY;
+ goto FINISH_OFF;
+ }
+
event_data->type = EMAIL_EVENT_QUERY_SMTP_MAIL_SIZE_LIMIT;
event_data->event_param_data_1 = NULL;
event_data->event_param_data_3 = NULL;
event_data->account_id = account_id;
- event_data->multi_user_name = EM_SAFE_STRDUP(multi_user_name);
+ event_data->multi_user_name = EM_SAFE_STRDUP(multi_user_name);
if (!emcore_insert_event(event_data, (int*)handle, &err)) {
EM_DEBUG_EXCEPTION(" emcore_insert_event falied [%d]", err);
emcore_return_handle(started_event->handle);
EM_SAFE_FREE(started_event);
}
- em_flush_memory();
}
}
* Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
*
* Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>
-*
+*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
emdaemon_init_alarm_data_list();
- /* Openssl library init */
- emcore_init_openssl_library();
+ /* Openssl library init */
+ emcore_init_openssl_library();
if (err_code)
*err_code = EMAIL_ERROR_NONE;
int err = EMAIL_ERROR_NONE;
email_alarm_data_t *alarm_data = NULL;
- EM_DEBUG_ALARM_LOG("default_alarm_callback input_timer_id[%d]", input_timer_id);
+// EM_DEBUG_ALARM_LOG("default_alarm_callback input_timer_id[%d]", input_timer_id);
emdevice_set_sleep_on_off(STAY_AWAKE_FLAG_FOR_ALARM_CALLBACK, false, NULL);
if (retry_info == NULL) {
EM_DEBUG_EXCEPTION("em_malloc failed");
err = EMAIL_ERROR_OUT_OF_MEMORY;
+ goto FINISH_OFF;
}
retry_info->mail_id = mail_id;
ret = true;
FINISH_OFF:
+
EM_SAFE_FREE(mail_list);
EM_SAFE_FREE(mail_id_list);
if (err_code)
*err_code = err;
+
EM_DEBUG_FUNC_END();
return ret;
}
EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
}
- if (rule)
+ if (rule) {
emcore_free_rule(rule);
+ free(rule);
+ }
EM_SAFE_FREE(local_rule_stream);
EM_SAFE_FREE(multi_user_name);
if(emdaemon_move_mail_all_mails(multi_user_name, src_mailbox_id, dst_mailbox_id, &err))
EM_DEBUG_LOG("emdaemon_move_mail_all_mails:Success");
+
if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
EM_DEBUG_EXCEPTION("emipc_add_parameter failed ");
- return;
}
if (!emipc_execute_stub_api(a_hAPI)) {
EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
- return;
}
EM_SAFE_FREE(multi_user_name);
emstorage_free_meeting_request(&result_meeting_request);
- em_flush_memory();
-
EM_SAFE_FREE(multi_user_name);
EM_DEBUG_FUNC_END();
}
emstorage_free_meeting_request(&result_meeting_request);
- em_flush_memory();
-
EM_SAFE_FREE(multi_user_name);
EM_DEBUG_FUNC_END();
}
if ((err = emcore_get_user_name(nAPPID, &multi_user_name)) != EMAIL_ERROR_NONE) {
EM_DEBUG_EXCEPTION("emcore_get_user_info failed : [%d]", err);
- multi_user_name = NULL;
+ multi_user_name = NULL;
}
emipc_get_parameter(a_hAPI, ePARAMETER_IN, 0, sizeof(int), (void*)&mailbox_id);
if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int))) {
EM_DEBUG_EXCEPTION("emipc_add_parameter fail");
- return;
}
if(!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &handle, sizeof(int))) {
EM_DEBUG_LOG("ipcAPI_AddParameter local_result failed ");
- return;
}
if (!emipc_execute_stub_api(a_hAPI)) {
EM_DEBUG_EXCEPTION("emipc_execute_stub_api fail");
- return;
}
EM_SAFE_FREE(multi_user_name);
/* get account info */
buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, 0);
EM_DEBUG_LOG("size [%d]", buffer_size);
- if (buffer_size <= 0) {
+ if(buffer_size <= 0) {
err = EMAIL_ERROR_INVALID_PARAM;
goto FINISH_OFF;
}
- stream = (char *)emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0);
- if (!stream) {
+ stream =(char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, 0);
+ if(!stream) {
err = EMAIL_ERROR_INVALID_PARAM;
goto FINISH_OFF;
}
if (!emipc_execute_stub_api(a_hAPI))
EM_DEBUG_EXCEPTION("emipc_execute_stub_api failed");
- em_flush_memory();
EM_DEBUG_FUNC_END("err [%d]", err);
}
EM_DEBUG_LOG("Domain name : [%s]", user_name);
if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, &err, sizeof(int)))
- EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
+ EM_DEBUG_EXCEPTION("emipc_add_parameter failed");
if (user_name) {
if (!emipc_add_parameter(a_hAPI, ePARAMETER_OUT, user_name, EM_SAFE_STRLEN(user_name) + 1))
emipc_get_parameter(hAPI, ePARAMETER_OUT, 0, sizeof(int), &err);
FINISH_OFF:
- if(hAPI)
+
+ EM_SAFE_FREE(task_parameter_stream);
+
+ if (hAPI)
emipc_destroy_email_api(hAPI);
EM_DEBUG_FUNC_END("err [%d]", err);
#include <glib.h>
#include <pthread.h>
#include <sys/types.h>
+#include <sys/epoll.h>
#include <unistd.h>
typedef struct {
ENTER_CRITICAL_SECTION(proxy_mutex);
GList *cur = socket_head;
- while( cur ) {
+ while (cur) {
thread_socket_t* cur_socket = g_list_nth_data(cur,0);
/* close the socket of current thread */
- if( tid == cur_socket->tid ) {
+ if (tid == cur_socket->tid) {
emipc_close_email_socket(&cur_socket->socket_fd);
EM_SAFE_FREE(cur_socket);
GList *del = cur;
cur = g_list_next(cur);
- socket_head = g_list_remove_link(socket_head, del);
+ socket_head = g_list_delete_link(socket_head, del);
break;
}
EM_SAFE_FREE(cur_socket);
GList *del = cur;
cur = g_list_next(cur);
- socket_head = g_list_remove_link(socket_head, del);
+ socket_head = g_list_delete_link(socket_head, del);
continue;
}
cur = g_list_next(cur);
}
+ g_list_free(socket_head);
+ socket_head = NULL;
LEAVE_CRITICAL_SECTION(proxy_mutex);
return true;
/* return true, when event occurred
* false, when select error
*/
+
+#define MAX_PROXY_EPOLL_EVENT 100
+
static bool wait_for_reply (int fd)
{
- int err = -1;
- fd_set fds;
- struct timeval tv;
-
if (fd < 0) {
EM_DEBUG_EXCEPTION("Invalid file description : [%d]", fd);
return false;
}
+#if 0
+ int err = -1;
+ fd_set fds;
+ struct timeval tv;
FD_ZERO(&fds);
FD_SET(fd, &fds);
}
if (FD_ISSET(fd, &fds)) return true;
+#endif
+
+ int i = 0;
+ int ret = false;
+ int proxy_epfd = -1;
+ int event_num = 0;
+ int timeout = 20000; /* 20 seconds */
+ char errno_buf[ERRNO_BUF_SIZE] = {0};
+ struct epoll_event proxy_ev = {0};
+ struct epoll_event proxy_ev_events[MAX_PROXY_EPOLL_EVENT] = {{0}, };
+
+ proxy_epfd = epoll_create(MAX_PROXY_EPOLL_EVENT);
+ if (proxy_epfd < 0) {
+ EM_DEBUG_EXCEPTION("epoll_create failed : [%d][%s]", errno, EM_STRERROR(errno_buf));
+ goto FINISH_OFF;
+ }
+
+ proxy_ev.data.fd = fd;
+ proxy_ev.events = EPOLLIN | EPOLLONESHOT;
+
+ if (epoll_ctl(proxy_epfd, EPOLL_CTL_ADD, fd, &proxy_ev) == -1) {
+ EM_DEBUG_EXCEPTION("epoll_ctl wait : [%d][%s]", errno, EM_STRERROR(errno_buf));
+ goto FINISH_OFF;
+ }
+
+ EM_DEBUG_LOG("Wait for response poll_fd:[%d], proxy_fd:[%d]", proxy_epfd, fd);
+ event_num = epoll_wait(proxy_epfd, proxy_ev_events, MAX_PROXY_EPOLL_EVENT, timeout);
+ if (event_num == -1) {
+ EM_DEBUG_EXCEPTION("epoll_wait failed : [%d][%s]", errno, EM_STRERROR(errno_buf));
+ goto FINISH_OFF;
+ } else if (event_num == 0) {
+ EM_DEBUG_EXCEPTION("Occured timeout proxy_fd[%d]", fd);
+ goto FINISH_OFF;
+ } else {
+ for (i = 0; i < event_num; i++) {
+ if (proxy_ev_events[i].events & EPOLLIN) {
+ EM_DEBUG_LOG("Received event to stub");
+ ret = true;
+ }
+ }
+ }
+
+FINISH_OFF:
+
+ if (proxy_epfd >= 0)
+ close(proxy_epfd);
- return false;
+ return ret;
}
return EMAIL_ERROR_IPC_SOCKET_FAILURE;
}
- if( !wait_for_reply(socket_fd) ) {
+ if (!wait_for_reply(socket_fd)) {
return EMAIL_ERROR_IPC_SOCKET_FAILURE;
}
#include "email-core-utils.h"
#include "email-core-mime.h"
-#define MAIL_TEMP_BODY "/tmp/utf8"
-#define HTML_TEMP_BODY "/tmp/utf8.htm"
+#define MAIL_TEMP_BODY "/tmp/utf-8"
+#define HTML_TEMP_BODY "/tmp/utf-8.htm"
/*
static void testapp_test_print_sorting_menu()