diff options
author | Minje Ahn <minje.ahn@samsung.com> | 2018-08-16 14:08:07 +0900 |
---|---|---|
committer | Minje Ahn <minje.ahn@samsung.com> | 2018-08-16 15:40:43 +0900 |
commit | 502897884409c420868f6d5ed59c6b807860d362 (patch) | |
tree | b0f1e3c1f5d0cd144eb826ab08164c6d09df1587 | |
parent | 60cb59fe31c8e61be1918d2749810aa36b885be3 (diff) | |
download | libmedia-thumbnail-502897884409c420868f6d5ed59c6b807860d362.tar.gz libmedia-thumbnail-502897884409c420868f6d5ed59c6b807860d362.tar.bz2 libmedia-thumbnail-502897884409c420868f6d5ed59c6b807860d362.zip |
Reinforce thumbnail transfersubmit/tizen_5.0/20181101.000003submit/tizen/20180816.075614accepted/tizen/unified/20180817.061815accepted/tizen/5.0/unified/20181102.015345
Change-Id: I28a1445463df8dc6ac6fb18fb1a2d395913d8264
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
-rwxr-xr-x | server/thumb-server-internal.c | 18 | ||||
-rwxr-xr-x | src/ipc/media-thumb-ipc.c | 45 |
2 files changed, 25 insertions, 38 deletions
diff --git a/server/thumb-server-internal.c b/server/thumb-server-internal.c index 32fd5a3..287a3da 100755 --- a/server/thumb-server-internal.c +++ b/server/thumb-server-internal.c @@ -37,7 +37,6 @@ #define LOG_TAG "MEDIA_THUMBNAIL_SERVER" #define THUMB_DEFAULT_WIDTH 320 #define THUMB_DEFAULT_HEIGHT 240 -#define THUMB_BLOCK_SIZE 10240 #define THUMB_COMM_SOCK_PATH tzplatform_mkpath(TZ_SYS_RUN, "media-server/media_ipc_thumbcomm.socket") #define THUMB_EMPTY_STR "" @@ -136,23 +135,18 @@ gboolean _thumb_server_read_socket(GIOChannel *src, GIOCondition condition, gpoi res_msg.dst_path[0] = '\0'; int buf_size = 0; - int sending_block = 0; - int block_size = sizeof(res_msg) - sizeof(unsigned char *); + int send_len = 0; + int send_pos = 0; unsigned char *buf = NULL; _media_thumb_set_buffer(&res_msg, &buf, &buf_size); while (buf_size > 0) { - if (buf_size < THUMB_BLOCK_SIZE) - block_size = buf_size; - - if (send(client_sock, buf+sending_block, block_size, 0) < 0) { + if ((send_len = send(client_sock, buf + send_pos, buf_size, 0)) < 0) { thumb_stderror("send failed"); + break; } - - sending_block += block_size; - buf_size -= block_size; - if (block_size < THUMB_BLOCK_SIZE) - block_size = THUMB_BLOCK_SIZE; + send_pos += send_len; + buf_size -= send_len; } SAFE_FREE(buf); diff --git a/src/ipc/media-thumb-ipc.c b/src/ipc/media-thumb-ipc.c index 354dc8e..5015be2 100755 --- a/src/ipc/media-thumb-ipc.c +++ b/src/ipc/media-thumb-ipc.c @@ -31,7 +31,6 @@ #include <grp.h> #include <pwd.h> -#define THUMB_SOCK_BLOCK_SIZE 10240 #define THUMB_IPC_PATH tzplatform_mkpath(TZ_SYS_RUN, "media-server/media_ipc_thumbcreator.socket") static GQueue *g_manage_queue = NULL; @@ -247,46 +246,46 @@ bool __media_thumb_check_cancel_for_raw(void) int _media_thumb_recv_msg(int sock, int header_size, thumbMsg *msg) { int remain_size = 0; - int block_size = THUMB_SOCK_BLOCK_SIZE; - int recv_block = 0; + int recv_len = 0; + int recv_pos = 0; unsigned char *buf = NULL; - unsigned char *block_buf = NULL; THUMB_MALLOC(buf, header_size); - THUMB_MALLOC(block_buf, THUMB_SOCK_BLOCK_SIZE); - if (buf == NULL || block_buf == NULL) { + if (buf == NULL) { thumb_err("memory allocation failed"); SAFE_FREE(buf); - SAFE_FREE(block_buf); return MS_MEDIA_ERR_OUT_OF_MEMORY; } - if (recv(sock, buf, header_size, 0) < 0) { - thumb_stderror("recv failed"); - SAFE_FREE(buf); - SAFE_FREE(block_buf); - return _media_thumb_get_error(); + while (header_size > 0) { + if ((recv_len = recv(sock, buf + recv_pos, header_size, 0)) < 0) { + thumb_stderror("recv failed"); + SAFE_FREE(buf); + return _media_thumb_get_error(); + } + header_size -= recv_len; + recv_pos += recv_len; } + header_size = recv_pos; + recv_pos = 0; + memcpy(msg, buf, header_size); SAFE_FREE(buf); if (strlen(msg->org_path) == 0 || strlen(msg->org_path) >= MAX_FILEPATH_LEN) { thumb_err("org_path size is invalid %d", strlen(msg->org_path)); - SAFE_FREE(block_buf); return MS_MEDIA_ERR_SOCKET_RECEIVE; } /* it can be empty string */ if (strlen(msg->dst_path) >= MAX_FILEPATH_LEN) { thumb_err("dst_path size is invalid %d", strlen(msg->dst_path)); - SAFE_FREE(block_buf); return MS_MEDIA_ERR_SOCKET_RECEIVE; } if (msg->thumb_size < 0) { thumb_err("recv data is wrong"); - SAFE_FREE(block_buf); return MS_MEDIA_ERR_SOCKET_RECEIVE; } @@ -294,23 +293,19 @@ int _media_thumb_recv_msg(int sock, int header_size, thumbMsg *msg) remain_size = msg->thumb_size; THUMB_MALLOC(buf, remain_size); if (buf == NULL) { - SAFE_FREE(block_buf); return MS_MEDIA_ERR_OUT_OF_MEMORY; } while (remain_size > 0) { - if (remain_size < THUMB_SOCK_BLOCK_SIZE) { - block_size = remain_size; - } - if (recv(sock, block_buf, block_size, 0) < 0) { + if ((recv_len = recv(sock, buf + recv_pos, remain_size, 0)) < 0) { thumb_stderror("recv failed"); SAFE_FREE(buf); - SAFE_FREE(block_buf); return _media_thumb_get_error(); } - memcpy(buf+recv_block, block_buf, block_size); - recv_block += block_size; - remain_size -= block_size; + + fsync(sock); + remain_size -= recv_len; + recv_pos += recv_len; } SAFE_FREE(msg->thumb_data); @@ -319,14 +314,12 @@ int _media_thumb_recv_msg(int sock, int header_size, thumbMsg *msg) memcpy(msg->thumb_data, buf, msg->thumb_size); } else { SAFE_FREE(buf); - SAFE_FREE(block_buf); return MS_MEDIA_ERR_OUT_OF_MEMORY; } } SAFE_FREE(buf); - SAFE_FREE(block_buf); return MS_MEDIA_ERR_NONE; } |