From: Kyeonghun Lee Date: Thu, 23 Jun 2016 05:10:31 +0000 (+0900) Subject: use curl_multi_wait instead of curl_multi_fdset and select X-Git-Tag: submit/tizen/20160622.235615^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ed79f9bb03c8edabefe3fff3f29f65799facdd5c;p=platform%2Fcore%2Fmessaging%2Fmsg-service.git use curl_multi_wait instead of curl_multi_fdset and select Change-Id: I42ada0437b04e275458c54262ef908af3c643b4f Signed-off-by: Kyeonghun Lee --- diff --git a/plugin/mms_plugin/MmsPluginHttp.cpp b/plugin/mms_plugin/MmsPluginHttp.cpp index 66d85e1..186fedb 100755 --- a/plugin/mms_plugin/MmsPluginHttp.cpp +++ b/plugin/mms_plugin/MmsPluginHttp.cpp @@ -24,6 +24,8 @@ #include "MsgGconfWrapper.h" #include "MmsPluginUtil.h" +#define MAX_WAIT_MSECS 30*1000 /* 30 sec */ + static void __http_print_profile(CURL *curl); static int __http_debug_cb(CURL *input_curl, curl_infotype input_info_type, char *input_data, size_t input_size, void *input_void); @@ -401,38 +403,15 @@ static int __http_multi_perform(void *session) MSG_INFO("curl_multi_perform first end : rcm = %d, still_running = %d", rcm, still_running); do { - int retval; - struct timeval timeout; - - int max_fd = -1; - fd_set fd_r; - fd_set fd_w; - fd_set fd_excp; - - FD_ZERO(&fd_r); - FD_ZERO(&fd_w); - FD_ZERO(&fd_excp); - - timeout.tv_sec = 120; - timeout.tv_usec = 0; - - curl_multi_fdset(multi_handle, &fd_r, &fd_w, &fd_excp, &max_fd); - - retval = select(max_fd+1, &fd_r, &fd_w, &fd_excp, &timeout); - - if (retval == -1) { /* select error */ - MSG_ERR("select error"); - ret = -1; + int numfds = 0; + int retval = curl_multi_wait(multi_handle, NULL, 0, MAX_WAIT_MSECS, &numfds); + if(retval != CURLM_OK) { + MSG_DEBUG("curl_multi_wait [%d]", retval); break; - } else if (retval == 0) { /* timeout */ - MSG_ERR("time out"); - ret = -1; - break; - } else { /* action */ - MSG_DEBUG("retval = %d", retval); - rcm = curl_multi_perform(multi_handle, &still_running); } + rcm = curl_multi_perform(multi_handle, &still_running); + connection_open_flag = MmsPluginCmAgent::instance()->getCmStatus(); if (connection_open_flag == false) { MSG_DEBUG("Connection Closed");