OSDN Git Service

#30993: gcc4.6以降でのコンパイルエラー対処
authorHiroaki Nakano <nakano.hiroaki@nttcom.co.jp>
Mon, 10 Jun 2013 05:07:05 +0000 (14:07 +0900)
committerHiroaki Nakano <nakano.hiroaki@nttcom.co.jp>
Mon, 10 Jun 2013 05:07:05 +0000 (14:07 +0900)
 * 余計なforwarded-forチェックは消し。
 * 意味不明コードも消し。
 * コンストラクタと変数定義を勘違いしたコードは修正。
 * ファイルロックのエラー処理に任せるのでreadlinkのエラーチェックは省略。
 * UMのホストネーム引けなくてもエラーにはしないようにする。
 * スレッドのパラメータ設定は、エラー処理を追加。
getとset共通のエラーであるESRCHは該当スレッドが落ちてたりしたときなので、
そのときは再度スレッドプールからスレッドをとって来るように。
setのときのEPERMはroot権限ないときなので、その旨をログ出力して例外を投げて
エラー終了させる。
そのほかにはEINVALが返るともあるが、どうせSEGV時のエラーなのでcoreを吐くだろうと
思ってスルー。
 * cpu_maskは一応、使うかもしれないんでメモ代わりに残しておくことに。

Signed-off-by: Hiroaki Nakano <nakano.hiroaki@nttcom.co.jp>
l7vsd/include/session_thread_control.h
l7vsd/module/protocol/protocol_module_ip.cpp
l7vsd/module/protocol/protocol_module_ip.h
l7vsd/module/protocol/protocol_module_sessionless.cpp
l7vsd/src/l7vsadm.cpp
l7vsd/src/logger_impl.cpp
l7vsd/src/session_thread_control.cpp
l7vsd/src/virtualservice_base.cpp
l7vsd/src/virtualservice_tcp.cpp

index fa830b7..29d15df 100644 (file)
@@ -120,7 +120,7 @@ public:
         }
 
         //! create up down thread
-        void start_thread();
+        int start_thread();
 
         //! session shared ptr getter
         //! @return session shared ptr
index 2d3ec46..397a5c7 100644 (file)
@@ -324,7 +324,6 @@ protocol_module_base::check_message_result protocol_module_ip::check_parameter(c
         bool timeout_flag = false;
         bool reschedule_flag = false;
         bool no_reschedule_flag = false;
-        bool forward_checked = false;
         bool sorryuri_checked = false;
         bool stats_checked = false;
 
@@ -447,11 +446,6 @@ protocol_module_base::check_message_result protocol_module_ip::check_parameter(c
                                         break;
                                 }
                         }
-                        //option string = "-F"
-                        else if (*it == "-F" || *it == "--forwarded-for") {
-                                //set forward flag  ON
-                                forward_checked = true;
-                        }
                         //option string = "-S"
                         else if (*it == "-S" || *it == "--sorry-uri") {
                                 //set sorryURI flag OFF
@@ -5657,11 +5651,6 @@ bool protocol_module_ip::put_data_into_sendbuffer(
                         buffer_element.first += sendbuffer_rest_size;
                         buffer_element.second -= sendbuffer_rest_size;
                         sendbuffer_rest_size = 0;
-
-                        //add remain item
-                        data_ptr->buffer_sequence.push_back(buffer_element);
-                        //delete the item
-                        data_ptr->buffer_sequence.pop_front();
                         break;
                 }
         }
index 50d064b..54af5f7 100644 (file)
@@ -93,8 +93,8 @@ protected:
                         hash = cl_endpoint.address().to_v4().to_ulong() * GOLDEN_RATIO_PRIME;
                 } else {
                         boost::asio::ip::address_v6::bytes_type v6_bytes = cl_endpoint.address().to_v6().to_bytes();
-                        boost::asio::ip::address_v4::bytes_type v4_bytes = {{v6_bytes[12], v6_bytes[13], v6_bytes[14], v6_bytes[15]}};
-                        boost::asio::ip::address_v4::address_v4 v4_address = boost::asio::ip::address_v4::address_v4(v4_bytes);
+                        const boost::asio::ip::address_v4::bytes_type v4_bytes = {{v6_bytes[12], v6_bytes[13], v6_bytes[14], v6_bytes[15]}};
+                        boost::asio::ip::address_v4 v4_address(v4_bytes);
                         hash = v4_address.to_ulong() * GOLDEN_RATIO_PRIME;
 
                 }
index d042afb..e44c90e 100644 (file)
@@ -356,7 +356,6 @@ protocol_module_base::check_message_result protocol_module_sessionless::check_pa
         //set check result true
         check_message_result check_result;
         check_result.flag = true;
-        bool forward_checked = false;
         bool sorryuri_checked = false;
         bool stats_checked = false;
 
@@ -405,13 +404,8 @@ protocol_module_base::check_message_result protocol_module_sessionless::check_pa
                 vec_str_it it_end = args.end();
                 //loop option strings
                 for (; it != it_end; ++it) {
-                        //option string = "-F"
-                        if (*it == "-F" || *it == "--forwarded-for") {
-                                //set forward flag  ON
-                                forward_checked = true;
-                        }
                         //option string = "-S"
-                        else if (*it == "-S" || *it == "--sorry-uri") {
+                        if (*it == "-S" || *it == "--sorry-uri") {
                                 //set sorryURI flag OFF
                                 if (!sorryuri_checked) {
                                         //next item exist
index b63d573..fb38259 100644 (file)
@@ -2957,9 +2957,8 @@ bool l7vs::l7vsadm::execute(int argc, char *argv[])
 
         // Get l7vsadm execute file path from /proc/(pid)/exe (symbolic link)
         char l7vsadm_file_path[256];
-        ssize_t retsize;
         memset(l7vsadm_file_path, 0, sizeof(l7vsadm_file_path));
-        retsize = readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_path));
+        readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_path));
 
         // L7vsadm command conflict check. (Try l7vsadm execute file lock)
         file_lock lock(l7vsadm_file_path, l7vsadm_err);
index 0ab72b1..6336f5d 100644 (file)
@@ -343,9 +343,8 @@ bool l7vs::LoggerImpl::init()
         }
 
         // get hostname
-        int        ret = 0;
         char    buff[HOST_NAME_MAX];
-        ret = gethostname(buff, HOST_NAME_MAX);
+        gethostname(buff, HOST_NAME_MAX);
         hostname = buff;
 
         initialized = true;
index df0c938..f549400 100644 (file)
@@ -33,18 +33,18 @@ namespace l7vs
 //
 //!    @brief create up down thread
 //
-void    session_thread_control::start_thread()
+int    session_thread_control::start_thread()
 {
 
-        int            int_val;
-
         upthread.reset(new boost::thread(&session_thread_control::upstream_run, this));        //! upstream thread create
         downthread.reset(new boost::thread(&session_thread_control::downstream_run, this));    //! downstream thread create
 
         //pthread_setschedparam
         int    retval, sched_policy;
         sched_param    scheduler_param;
-        int_val    = pthread_getschedparam(upthread->native_handle(), &sched_policy, &scheduler_param);
+        retval    = pthread_getschedparam(upthread->native_handle(), &sched_policy, &scheduler_param);
+        if (retval != 0) return retval;
+
         if (SCHED_FIFO == sched_algorithm) {
                 scheduler_param.__sched_priority    = sched_priority;
                 sched_policy    = SCHED_FIFO;
@@ -56,9 +56,12 @@ void    session_thread_control::start_thread()
         }
         if (0 <= sched_algorithm) {
                 retval            = pthread_setschedparam(upthread->native_handle(), sched_algorithm, &scheduler_param);
+                if (retval != 0 ) return retval;
                 retval            = pthread_setschedparam(downthread->native_handle(), sched_algorithm, &scheduler_param);
+                if (retval != 0 ) return retval;
         }
 
+        return retval;
 }
 
 //
index 94ab8a2..994c634 100644 (file)
@@ -481,7 +481,7 @@ cpu_set_t    l7vs::virtualservice_base::get_cpu_mask(std::string    nic_name)
         map< size_t, string >    cpu_nic_map;
         string                    buff;
         ifstream                ifs("/proc/interrupts");
-        unsigned int            target_interrupt;
+        //unsigned int            target_interrupt;
         size_t                    target_cpuid = 0;
         cpu_set_t                mask;
         sched_getaffinity(0, sizeof(cpu_set_t), &mask);
@@ -503,7 +503,8 @@ cpu_set_t    l7vs::virtualservice_base::get_cpu_mask(std::string    nic_name)
                 algorithm::split(split_vec, buff, algorithm::is_any_of(":"));
                 if (!split_vec.size()) return mask;     // cannot split interrupt
                 algorithm::trim(split_vec[0]);
-                target_interrupt = lexical_cast<unsigned int>(split_vec[0]);
+                //target_interrupt = lexical_cast<unsigned int>(split_vec[0]);
+                lexical_cast<unsigned int>(split_vec[0]);
                 for (size_t i = 0; i < cpu_nic_map.size(); ++i) {
                         size_t    start_position = 4 + (i * 11);
                         size_t    end_position = 11;
index bdb6bd6..c473186 100644 (file)
@@ -30,6 +30,7 @@
 #include <boost/format.hpp>
 #include <sys/socket.h>
 #include <linux/version.h>
+#include <pthread.h>
 
 #include "virtualservice.h"
 #include "logger_enum.h"
@@ -550,6 +551,8 @@ void l7vs::virtualservice_tcp::handle_accept(const l7vs::session_thread_control
  */
 void l7vs::virtualservice_tcp::initialize(l7vs::error_code &err)
 {
+        int ret = 0;
+
         if (unlikely(LOG_LV_DEBUG == Logger::getLogLevel(LOG_CAT_L7VSD_VIRTUALSERVICE))) {
                 boost::format formatter("in_function: void virtualservice_tcp::initialize( "
                                         "l7vs::error_code& err )");
@@ -826,7 +829,16 @@ void l7vs::virtualservice_tcp::initialize(l7vs::error_code &err)
                                 session_thread_control *p_stc = new session_thread_control(
                                         sess, vsnic_cpumask, rsnic_cpumask, -1);
 
-                                p_stc->start_thread();
+                                ret = p_stc->start_thread();
+                                if (ret == ESRCH) {
+                                        continue;
+                                } else if (ret == EPERM) {
+                                        //Error
+                                        Logger::putLogError(LOG_CAT_L7VSD_VIRTUALSERVICE, 999, "Not super user authority",
+                                                            __FILE__, __LINE__);
+                                        err.setter(true, "set pthread schedule parameter.");
+                                        throw;
+                                }
                                 while (!pool_sessions.push(p_stc)) {}
                         } catch (...) {
                                 Logger::putLogFatal(