diff --git a/core/Makefile.dep b/core/Makefile.dep index a183d9b..7df507d 100755 --- a/core/Makefile.dep +++ b/core/Makefile.dep @@ -18,26 +18,27 @@ app.o: ../notify/notifythread.h ../core/basethread.h synchro.h app.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h app.o: ugcontainer.h lastcontainer.h mounts.h mount.h mountparser.h users.h app.o: groups.h group.h loadavg.h sessionmanager.h sessioncontainer.h -app.o: ../functions/functions.h ../functions/functionbase.h ../core/request.h -app.o: ../core/system.h ../core/synchro.h ../functions/functionparser.h -app.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h -app.o: ../functions/privchanger.h ../functions/chown.h -app.o: ../functions/ckeditor.h ../functions/cp.h ../functions/createthread.h -app.o: ../functions/default.h ../functions/download.h ../functions/emacs.h -app.o: ../functions/last.h ../functions/login.h ../functions/logout.h -app.o: ../functions/ls.h ../functions/mkdir.h ../functions/mv.h -app.o: ../functions/node.h ../functions/priv.h ../functions/reload.h -app.o: ../functions/rm.h ../functions/run.h ../functions/stat.h -app.o: ../functions/subject.h ../functions/funthread.h -app.o: ../functions/template.h ../functions/tinymce.h ../functions/uname.h -app.o: ../functions/upload.h ../functions/uptime.h ../functions/who.h -app.o: ../functions/vim.h ../core/htmlfilter.h ../templates/templates.h +app.o: basethread.h ../functions/functions.h ../functions/functionbase.h +app.o: ../core/request.h ../core/system.h ../core/synchro.h +app.o: ../functions/functionparser.h ../functions/adduser.h +app.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h +app.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h +app.o: ../functions/createthread.h ../functions/default.h +app.o: ../functions/download.h ../functions/emacs.h ../functions/last.h +app.o: ../functions/login.h ../functions/logout.h ../functions/ls.h +app.o: ../functions/mkdir.h ../functions/mv.h ../functions/node.h +app.o: ../functions/priv.h ../functions/reload.h ../functions/rm.h +app.o: ../functions/run.h ../functions/stat.h ../functions/subject.h +app.o: ../functions/funthread.h ../functions/template.h +app.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h +app.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h +app.o: ../core/htmlfilter.h ../templates/templates.h app.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h app.o: ../core/httpsimpleparser.h ../core/log.h ../templates/indexpatterns.h app.o: ../core/sessionmanager.h compress.h getparser.h httpsimpleparser.h app.o: postparser.h cookieparser.h postmultiparser.h acceptencodingparser.h app.o: acceptbaseparser.h plugin.h pluginmsg.h -basethread.o: basethread.h synchro.h log.h textstream.h +basethread.o: basethread.h log.h textstream.h bbcodeparser.o: bbcodeparser.h htmlfilter.h compress.o: compress.h log.h textstream.h config.o: config.h confparser.h htmlfilter.h log.h textstream.h plugin.h @@ -58,12 +59,12 @@ config.o: ../templates/htmltextstream.h ../notify/notifythread.h config.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h config.o: ../core/config.h ../core/users.h ugcontainer.h lastcontainer.h config.o: mounts.h mount.h mountparser.h users.h groups.h group.h loadavg.h -config.o: sessionmanager.h sessioncontainer.h ../functions/functions.h -config.o: ../functions/functionbase.h ../core/request.h ../core/system.h -config.o: ../core/synchro.h ../functions/functionparser.h -config.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h -config.o: ../functions/privchanger.h ../functions/chown.h -config.o: ../functions/ckeditor.h ../functions/cp.h +config.o: sessionmanager.h sessioncontainer.h basethread.h +config.o: ../functions/functions.h ../functions/functionbase.h +config.o: ../core/request.h ../core/system.h ../core/synchro.h +config.o: ../functions/functionparser.h ../functions/adduser.h +config.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h +config.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h config.o: ../functions/createthread.h ../functions/default.h config.o: ../functions/download.h ../functions/emacs.h ../functions/last.h config.o: ../functions/login.h ../functions/logout.h ../functions/ls.h @@ -156,7 +157,7 @@ mounts.o: ../templates/htmltextstream.h ../notify/notifythread.h mounts.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h mounts.o: ../core/config.h ../core/users.h ugcontainer.h lastcontainer.h mounts.o: mountparser.h plugin.h pluginmsg.h system.h users.h groups.h -mounts.o: group.h loadavg.h sessionmanager.h sessioncontainer.h +mounts.o: group.h loadavg.h sessionmanager.h sessioncontainer.h basethread.h mounts.o: ../functions/functions.h ../functions/functionbase.h mounts.o: ../core/request.h ../core/system.h ../core/synchro.h mounts.o: ../functions/functionparser.h ../functions/adduser.h @@ -193,12 +194,12 @@ plugin.o: ../templates/htmltextstream.h ../notify/notifythread.h plugin.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h plugin.o: ../core/config.h ../core/users.h ugcontainer.h lastcontainer.h plugin.o: mounts.h mount.h mountparser.h users.h groups.h group.h loadavg.h -plugin.o: sessionmanager.h sessioncontainer.h ../functions/functions.h -plugin.o: ../functions/functionbase.h ../core/request.h ../core/system.h -plugin.o: ../core/synchro.h ../functions/functionparser.h -plugin.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h -plugin.o: ../functions/privchanger.h ../functions/chown.h -plugin.o: ../functions/ckeditor.h ../functions/cp.h +plugin.o: sessionmanager.h sessioncontainer.h basethread.h +plugin.o: ../functions/functions.h ../functions/functionbase.h +plugin.o: ../core/request.h ../core/system.h ../core/synchro.h +plugin.o: ../functions/functionparser.h ../functions/adduser.h +plugin.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h +plugin.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h plugin.o: ../functions/createthread.h ../functions/default.h plugin.o: ../functions/download.h ../functions/emacs.h ../functions/last.h plugin.o: ../functions/login.h ../functions/logout.h ../functions/ls.h @@ -231,7 +232,7 @@ plugindata.o: ../notify/notifythread.h ../core/basethread.h synchro.h plugindata.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h plugindata.o: ugcontainer.h lastcontainer.h mounts.h mount.h mountparser.h plugindata.o: users.h groups.h group.h loadavg.h sessionmanager.h -plugindata.o: sessioncontainer.h ../functions/functions.h +plugindata.o: sessioncontainer.h basethread.h ../functions/functions.h plugindata.o: ../functions/functionbase.h ../core/request.h ../core/system.h plugindata.o: ../core/synchro.h ../functions/functionparser.h plugindata.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h @@ -275,12 +276,12 @@ request.o: ../templates/htmltextstream.h ../notify/notifythread.h request.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h request.o: ../core/config.h ../core/users.h ugcontainer.h lastcontainer.h request.o: mounts.h mount.h mountparser.h users.h groups.h group.h loadavg.h -request.o: sessionmanager.h sessioncontainer.h ../functions/functions.h -request.o: ../functions/functionbase.h ../core/request.h ../core/system.h -request.o: ../core/synchro.h ../functions/functionparser.h -request.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h -request.o: ../functions/privchanger.h ../functions/chown.h -request.o: ../functions/ckeditor.h ../functions/cp.h +request.o: sessionmanager.h sessioncontainer.h basethread.h +request.o: ../functions/functions.h ../functions/functionbase.h +request.o: ../core/request.h ../core/system.h ../core/synchro.h +request.o: ../functions/functionparser.h ../functions/adduser.h +request.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h +request.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h request.o: ../functions/createthread.h ../functions/default.h request.o: ../functions/download.h ../functions/emacs.h ../functions/last.h request.o: ../functions/login.h ../functions/logout.h ../functions/ls.h @@ -299,13 +300,13 @@ sessioncontainer.o: sessioncontainer.h session.h item.h error.h user.h sessioncontainer.o: plugindata.h rebus.h lastcontainer.h request.h sessioncontainer.o: requesttypes.h config.h confparser.h htmlfilter.h sessioncontainer.o: textstream.h ../templates/htmltextstream.h -sessioncontainer.o: ../core/textstream.h misc.h log.h +sessioncontainer.o: ../core/textstream.h misc.h basethread.h log.h sessionmanager.o: sessionmanager.h sessioncontainer.h session.h item.h sessionmanager.o: error.h user.h plugindata.h rebus.h lastcontainer.h sessionmanager.o: request.h requesttypes.h config.h confparser.h htmlfilter.h sessionmanager.o: textstream.h ../templates/htmltextstream.h -sessionmanager.o: ../core/textstream.h misc.h system.h dirs.h dircontainer.h -sessionmanager.o: ../db/db.h ../db/dbbase.h ../db/dbconn.h +sessionmanager.o: ../core/textstream.h misc.h basethread.h system.h dirs.h +sessionmanager.o: dircontainer.h ../db/db.h ../db/dbbase.h ../db/dbconn.h sessionmanager.o: ../db/dbtextstream.h ../core/error.h log.h sessionmanager.o: ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h sessionmanager.o: ../core/user.h ../core/group.h ../core/thread.h @@ -348,7 +349,7 @@ sessionparser.o: sessionparser.h session.h item.h error.h user.h plugindata.h sessionparser.o: rebus.h sessioncontainer.h lastcontainer.h request.h sessionparser.o: requesttypes.h config.h confparser.h htmlfilter.h sessionparser.o: textstream.h ../templates/htmltextstream.h -sessionparser.o: ../core/textstream.h misc.h users.h log.h +sessionparser.o: ../core/textstream.h misc.h basethread.h users.h log.h synchro.o: synchro.h system.o: system.h dirs.h item.h dircontainer.h ../db/db.h ../db/dbbase.h system.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h misc.h diff --git a/core/app.cpp b/core/app.cpp index 781fbe6..45f4786 100755 --- a/core/app.cpp +++ b/core/app.cpp @@ -67,6 +67,7 @@ App::App() session_manager.SetConfig(&config); session_manager.SetRequest(&request); session_manager.SetSystem(&system); + session_manager.SetSynchro(&synchro); post_multi_parser.SetConfig(&config); } @@ -218,10 +219,6 @@ void App::ProcessRequestThrow() } SendAnswer(); - - // it's better to remove sessions at the end of a request - // as it can take a little time - session_manager.DeleteOldSessions(); } @@ -994,6 +991,7 @@ void App::WaitForThreads() //pthread_join(signal_thread, 0); system.notify.WaitForThread(); + session_manager.WaitForGC(); } @@ -1027,7 +1025,8 @@ sigset_t set; app->synchro.was_stop_signal = true; FCGX_ShutdownPending(); Ezc::WideToUTF8(app->config.base_url, app->url_to_fetch_on_exit); - app->system.notify.SendSignalToThread(); + app->system.notify.PrepareToStopThread(); + app->session_manager.PrepareToStopGC(); app->Unlock(); // this thread will hang on this method @@ -1057,6 +1056,9 @@ sigset_t set; // thread for notifications system.notify.StartThread(); + + // gc for sessions + session_manager.StartGC(); } diff --git a/core/basethread.cpp b/core/basethread.cpp index dd80482..033dbf2 100755 --- a/core/basethread.cpp +++ b/core/basethread.cpp @@ -12,11 +12,11 @@ #include "log.h" -BaseThread::BaseThread() +BaseThread::BaseThread() : thread_signal(PTHREAD_COND_INITIALIZER) { synchro = 0; - thread_signal = 0; thread_id = 0; + work_mode = 0; } @@ -25,9 +25,11 @@ void BaseThread::SetSynchro(Synchro * psynchro) synchro = psynchro; } -void BaseThread::SetSignal(pthread_cond_t * psignal) + + +void BaseThread::Mode(int mode) { - thread_signal = psignal; + work_mode = mode; } @@ -117,12 +119,19 @@ void BaseThread::BaseDo() // use it with Lock and Unlock bool BaseThread::WaitForSignal() { - return pthread_cond_wait(thread_signal, &synchro->mutex) == 0; + return pthread_cond_wait(&thread_signal, &synchro->mutex) == 0; +} + + +void BaseThread::WakeUpThread() +{ + // you should use it with: synchro->Lock() and Unlock() + pthread_cond_signal(&thread_signal); } // use it with Lock and Unlock -// it breaks only if there was a stop signal a the time has expired +// it breaks only if there was a stop signal or the time has expired bool BaseThread::WaitForSignalSleep(time_t second) { timespec t; @@ -133,7 +142,7 @@ int res; do { - res = pthread_cond_timedwait(thread_signal, &synchro->mutex, &t); + res = pthread_cond_timedwait(&thread_signal, &synchro->mutex, &t); } while( res == 0 && !synchro->was_stop_signal ); // above condition means there was a signal @@ -149,7 +158,7 @@ void BaseThread::WaitForThread() } -void BaseThread::StartRoutine() +void BaseThread::SignalLoop() { bool make_do; @@ -177,11 +186,15 @@ void * BaseThread::StartRoutine(void * this_object) { BaseThread * base = reinterpret_cast(this_object); - if( base->synchro && base->thread_signal ) + if( base->synchro ) { if( base->BaseInit() ) { - base->StartRoutine(); + if( base->work_mode == 0 ) + base->SignalLoop(); + else + base->Work(); + base->BaseUninit(); } } diff --git a/core/basethread.h b/core/basethread.h index 9ee9f39..f04a61a 100755 --- a/core/basethread.h +++ b/core/basethread.h @@ -21,51 +21,74 @@ public: BaseThread(); - // these method must be called before starting the thread + // synchro object (must be set) void SetSynchro(Synchro * psynchro); - void SetSignal(pthread_cond_t * psignal); - // starting the thread + // work mode + // we have two modes: + // 0 - there is a loop with SignalReceived() and Do() + // if SignalReceived() returns true then Do() is called + // 1 - only Work() method is called + // the thread exits after Work() has finished + // default: 0 + void Mode(int mode); + + // starting the second thread bool StartThread(); + // wake up the second thread + // (if it waits for the signal) + // you should use it with: synchro->Lock() and Unlock() + // if the thread doesn't wait on a signal then nothing is done + void WakeUpThread(); + // waiting until the thread exits + // you should call WakeUpThread() before void WaitForThread(); - + // virtual methods which should/can be inherited by your class // the methods will be called from the other thread // initialize the thread // (global objects are locked) - // if it returns false then the thread immediately exists - virtual bool Init() { return false; } + // if it returns false then the thread immediately exits + // default: true + virtual bool Init() { return true; } // uninitialize the thread // this is called before the thread is prepare to detach // (global objects are locked) + // it's called only if Init() returned true virtual void Uninit() {} - // signal came + // signal came (work mode = 0 - default) + // signal comes when an other thread calls WakeUpThread() method // check specific job and return true to call Do() next // (global objects are locked -- copy some global objects to local variables) virtual bool SignalReceived() { return false; }; // if SignalReceived() returned true then this method is called - // global object are *not* locked -- use only your local variables + // global objects are *not* locked -- use only your local variables // if you have to do something on global objects use synchro->Lock() and synchro->Unlock() virtual void Do() {} + // this method is called after Init() when Mode(1) is used + // this is for long-time job + // this method is called only once + // global objects are *not* locked + virtual void Work() {} + protected: - // this pointers must be set Synchro * synchro; - pthread_cond_t * thread_signal; + pthread_t thread_id; // thread id - set by StartThread() + pthread_cond_t thread_signal; + int work_mode; - pthread_t thread_id; // thread id - set automatically - - void StartRoutine(); + void SignalLoop(); static void * StartRoutine(void *); bool BaseInit(); void BaseUninit(); diff --git a/core/sessioncontainer.cpp b/core/sessioncontainer.cpp index e3b17b2..ef90f61 100755 --- a/core/sessioncontainer.cpp +++ b/core/sessioncontainer.cpp @@ -17,6 +17,7 @@ SessionContainer::SessionContainer() { request = 0; table_size = 0; + work_mode = 1; // threading work mode } @@ -28,27 +29,27 @@ void SessionContainer::SetRequest(Request * prequest) } +void SessionContainer::SetConfig(Config * pconfig) +{ + config = pconfig; +} + + void SessionContainer::Clear() { -Table::iterator inext, i = table.begin(); +Table::iterator i = table.begin(); // don't use table.clear(); // because plugins session data would not be erased while( i != table.end() ) { - inext = i; - ++inext; - request->session = &(*i); - table.erase(i); - - i = inext; + table.erase(i++); } - // erasing all indexes + // erasing indexes index_id.clear(); - index_time.clear(); table_size = 0; request->session = 0; } @@ -60,7 +61,7 @@ void SessionContainer::SetLastContainer(LastContainer * plast_container) } -SessionContainer::TableSize SessionContainer::Size() +size_t SessionContainer::Size() { // don't use table.size() as it has O(n) complexity on FreeBSD return table_size; @@ -88,13 +89,16 @@ Session & SessionContainer::Back() bool SessionContainer::PushBack(const Session & session) { - if( index_id.find(session.id) != index_id.end() ) - // that element already exists + std::pair index_id_res = index_id.insert( std::make_pair(session.id, table.end()) ); + + if( !index_id_res.second ) + { + // that element already exists (was not inserted now) return false; - + } + Iterator last = table.insert(table.end(), session); - index_id.insert( std::make_pair(session.id, last) ); - index_time.insert( std::make_pair(session.last_time, last) ); + index_id_res.first->second = last; table_size += 1; log << log3 << "SC: added session, id: " << session.id << logend; @@ -119,93 +123,92 @@ return i->second; -size_t SessionContainer::DelFirstByTimeInterval(time_t interval, size_t how_many_max, bool skip_remember_flag) + + + + + +/* + * + * + * sessions gc (another thread) + * + * + */ +void SessionContainer::Work() { -IndexTime::iterator i = index_time.begin(); -IndexTime::iterator iold; -time_t limit = std::time(0) - interval; -Session * old_session = request->session; -size_t deleted = 0; +bool exit = false; +IndexId::iterator i; - while( i != index_time.end() && i->second->last_time < limit && deleted < how_many_max ) + Lock(); + i = index_id.begin(); + Unlock(); + + while( !exit ) { - //long id = i->second->id; // !! for logs (not used now) - iold = i; - ++i; // incrementing before deleting old one - - if( skip_remember_flag && iold->second->puser && iold->second->remember_me ) - // don't delete sessions which have 'remember_me' flag (and a user is logged) - continue; + Lock(); - if( iold->second->puser ) - last_container->UserLogout(iold->second->puser->id, iold->second->id); - - // we're logging session.id (call this before table.erase()) - DelFromIdIndex(iold->second); + if( i == index_id.end() ) + { + i = index_id.begin(); + WaitForSignalSleep(30); + } + else + { + if( IsSessionOutdated(*i->second) ) + DeleteSession(i++); + else + ++i; + } - request->session = &(*iold->second); - table.erase(iold->second); - index_time.erase(iold); - table_size -= 1; - request->session = 0; - deleted += 1; - - //log << log3 << "SC: deleted index_time for session id: " << id << logend; - //log << log3 << "SC: deleted session, id: " << id << logend; + exit = synchro->was_stop_signal; + Unlock(); } +} + + + +// it's called from the other thread (with Lock and Unlock) +bool SessionContainer::IsSessionOutdated(const Session & s) const +{ +bool outdated; + + if( s.remember_me ) + outdated = s.last_time < std::time(0) - config->session_remember_max_idle; + else + outdated = s.last_time < std::time(0) - config->session_max_idle; + +return outdated; +} + + + +// it's called from the other thread (with Lock and Unlock) +void SessionContainer::DeleteSession(SessionContainer::IndexId::iterator i) +{ +Session * old_session = request->session; + + request->session = &(*i->second); + + //log << log3 << "SessionContainer: deleting outdated session, id: " << i->second->id << logend; + + if( i->second->puser ) + last_container->UserLogout(i->second->puser->id, i->second->id); + + table.erase(i->second); + index_id.erase(i); + table_size -= 1; request->session = old_session; - -return deleted; } - - - - - - -void SessionContainer::DelFromIdIndex(SessionContainer::Iterator iter) -{ -IndexId::iterator i; - for(i = index_id.begin() ; i!=index_id.end() ; ++i) - { - if( i->second == iter ) - { - index_id.erase(i); - //log << log3 << "SC: deleted index_id for session id: " << iter->id << logend; - - break; - } - } -} +/* + * + * + * end of sessions gc + * + * + */ - -void SessionContainer::UpdateLastTime(SessionContainer::Iterator iter, time_t new_time) -{ - IndexTime::iterator i = index_time.lower_bound(iter->last_time); - bool found = false; - - for( ; i != index_time.end() ; ++i) - { - if( i->second == iter ) - { - index_time.erase(i); - index_time.insert( std::make_pair(new_time, iter) ); - - iter->last_time = new_time; - iter->tm_last_time = Time(new_time); - - //log << log3 << "SC: last time and the time index for session id: " << iter->id << " updated" << logend; - log << log3 << "SC: last time for session id: " << iter->id << " updated" << logend; - found = true; - break; - } - } - - - if( !found ) - log << log1 << "SC: cannot update the time, time index not found for session id: " << iter->id << logend; -} diff --git a/core/sessioncontainer.h b/core/sessioncontainer.h index fccb922..1b6b50b 100755 --- a/core/sessioncontainer.h +++ b/core/sessioncontainer.h @@ -10,7 +10,6 @@ #ifndef headerfilecmslucoresessioncontainer #define headerfilecmslucoresessioncontainer - #include #include #include @@ -18,62 +17,58 @@ #include "session.h" #include "lastcontainer.h" #include "request.h" +#include "basethread.h" +#include "config.h" -class SessionContainer + +class SessionContainer : public BaseThread { public: + // when deleting Sessions you should set request.session into the session object // this allows to delete plugins session data // because a session object has plugin_data object // and in its destructor the plugin.Call(WINIX_SESSION_REMOVE) is called - typedef std::list Table; - typedef Table::iterator Iterator; - typedef Table::size_type TableSize; - + typedef std::list Table; + typedef Table::iterator Iterator; typedef std::map IndexId; - typedef std::multimap IndexTime; + + SessionContainer(); + + void SetRequest(Request * prequest); + void SetConfig(Config * pconfig); void SetLastContainer(LastContainer * plast_container); + void Clear(); + + size_t Size(); + Iterator Begin(); + Iterator End(); + Session & Back(); + bool PushBack(const Session & session); + Iterator FindById(long); + + private: LastContainer * last_container; Table table; IndexId index_id; - IndexTime index_time; Request * request; - void DelFromIdIndex(Iterator iter); + Config * config; + //void DelFromIdIndex(Iterator iter); + virtual void Work(); + bool IsSessionOutdated(const Session & s) const; + void DeleteSession(IndexId::iterator i); // in FreeBSD implementation (GCC) list::size() has linear complexity // so we use our own table_size with O(1) size_t table_size; -public: - - - SessionContainer(); - - void SetRequest(Request * prequest); - - void Clear(); - - TableSize Size(); - - Iterator Begin(); - Iterator End(); - - Session & Back(); - - bool PushBack(const Session & session); - Iterator FindById(long); - - size_t DelFirstByTimeInterval(time_t interval, size_t how_many_max, bool skip_remember_flag = true); - - void UpdateLastTime(Iterator iter, time_t new_time); - }; diff --git a/core/sessionmanager.cpp b/core/sessionmanager.cpp index cdac39d..b173f52 100755 --- a/core/sessionmanager.cpp +++ b/core/sessionmanager.cpp @@ -22,7 +22,6 @@ SessionManager::SessionManager() { - session_checker = 0; } @@ -36,6 +35,7 @@ void SessionManager::SetRequest(Request * prequest) void SessionManager::SetConfig(Config * pconfig) { config = pconfig; + session_tab.SetConfig(pconfig); } @@ -50,6 +50,12 @@ void SessionManager::SetLastContainer(LastContainer * plast_container) } +void SessionManager::SetSynchro(Synchro * psynchro) +{ + session_tab.SetSynchro(psynchro); +} + + size_t SessionManager::Size() { return session_tab.Size(); @@ -105,6 +111,7 @@ void SessionManager::CreateTemporarySession() { Session s; s.id = 0; + s.new_session = true; session_tab.PushBack(s); request->session = &session_tab.Back(); @@ -112,6 +119,7 @@ void SessionManager::CreateTemporarySession() else { request->session = &(*i); + request->session->new_session = false; } } @@ -158,8 +166,9 @@ bool SessionManager::SetSessionFromCookie(const std::string & cookie) // that session is in the table request->session = &(*s); - request->session->new_session = false; - session_tab.UpdateLastTime(s, std::time(0)); + request->session->new_session = false; + request->session->last_time = std::time(0); + request->session->tm_last_time = Time(request->session->last_time); if( request->method == Request::get ) request->session->last_time_get = request->session->last_time; @@ -225,48 +234,11 @@ SessionContainer::Iterator SessionManager::SessionEnd() -void SessionManager::DeleteOldSessions() -{ -size_t deleted; - - deleted = session_tab.DelFirstByTimeInterval(config->session_max_idle, 100); // !! dodac do konfiga - - if( ++session_checker > 1000 ) - { - // we make the test after 1000 requests - //log << log3 << "SM: checking sessions which have 'remember me' flag set" << logend; - - session_checker = 0; - deleted += session_tab.DelFirstByTimeInterval(config->session_remember_max_idle, 100, false); - } - - if( deleted > 0 ) - log << log3 << "SM: deleted " << deleted << " outdated sessions" << logend; -} - void SessionManager::DeleteSessions() { - // first we delete all plugins date - /* - SessionContainer::Iterator i = session_tab.Begin(); - - Session * old_session = request->session; - - for( ; i!=session_tab.End() ; ++i ) - { - request->session = &(*i); - i->plugin_data.DeleteAll(); - } - - request->session = old_session; - */ - // and now we delete all sessions - - session_tab.Clear(); - } @@ -335,5 +307,24 @@ void SessionManager::SaveSessions() +void SessionManager::StartGC() +{ + session_tab.StartThread(); +} + + +// use it with Lock() and Unlock(); +void SessionManager::PrepareToStopGC() +{ + session_tab.WakeUpThread(); +} + + +void SessionManager::WaitForGC() +{ + session_tab.WaitForThread(); +} + + diff --git a/core/sessionmanager.h b/core/sessionmanager.h index 5b0808a..1963d15 100755 --- a/core/sessionmanager.h +++ b/core/sessionmanager.h @@ -18,6 +18,7 @@ #include "request.h" #include "lastcontainer.h" #include "system.h" +#include "synchro.h" @@ -35,7 +36,6 @@ class SessionManager void CreateTemporarySession(); void CreateSession(); bool SetSessionFromCookie(const std::string & cookie); - int session_checker; public: @@ -45,10 +45,13 @@ public: void SetConfig(Config * pconfig); void SetSystem(System * psystem); void SetLastContainer(LastContainer * plast_container); + void SetSynchro(Synchro * psynchro); void SetSession(); void DeleteSessions(); // deleting all sessions - void DeleteOldSessions(); + void StartGC(); + void PrepareToStopGC(); + void WaitForGC(); void LoadSessions(); void SaveSessions(); diff --git a/functions/Makefile.dep b/functions/Makefile.dep index 06868db..b5d7ed3 100755 --- a/functions/Makefile.dep +++ b/functions/Makefile.dep @@ -270,7 +270,7 @@ emacs.o: ../core/synchro.h ../templates/templates.h emacs.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h emacs.o: ../core/httpsimpleparser.h ../core/log.h emacs.o: ../templates/indexpatterns.h ../core/sessionmanager.h -emacs.o: ../core/sessioncontainer.h ../core/system.h +emacs.o: ../core/sessioncontainer.h ../core/basethread.h ../core/system.h functionbase.o: functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h functionbase.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h functionbase.o: ../core/misc.h ../core/item.h ../core/error.h ../core/log.h @@ -363,10 +363,11 @@ functions.o: template.h tinymce.h uname.h upload.h uptime.h who.h vim.h functions.o: ../core/htmlfilter.h ../core/log.h ../core/misc.h functions.o: ../core/plugin.h ../core/pluginmsg.h ../core/system.h functions.o: ../core/sessionmanager.h ../core/sessioncontainer.h -functions.o: ../functions/functions.h ../templates/templates.h -functions.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h -functions.o: ../core/httpsimpleparser.h ../core/log.h -functions.o: ../templates/indexpatterns.h ../core/sessionmanager.h +functions.o: ../core/basethread.h ../functions/functions.h +functions.o: ../templates/templates.h ../templates/patterncacher.h +functions.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h +functions.o: ../core/log.h ../templates/indexpatterns.h +functions.o: ../core/sessionmanager.h funthread.o: ../core/misc.h funthread.h functionbase.h ../core/item.h funthread.o: ../db/db.h ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h funthread.o: ../core/textstream.h ../core/misc.h ../core/item.h @@ -660,7 +661,7 @@ reload.o: ../core/synchro.h ../templates/templates.h reload.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h reload.o: ../core/httpsimpleparser.h ../core/log.h reload.o: ../templates/indexpatterns.h ../core/sessionmanager.h -reload.o: ../core/sessioncontainer.h ../core/system.h +reload.o: ../core/sessioncontainer.h ../core/basethread.h ../core/system.h rm.o: rm.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h rm.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h ../core/misc.h rm.o: ../core/item.h ../core/error.h ../core/log.h ../core/textstream.h @@ -687,7 +688,7 @@ rm.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h ../core/users.h rm.o: ../core/groups.h ../core/group.h ../core/loadavg.h ../core/synchro.h rm.o: ../core/plugin.h ../core/pluginmsg.h ../core/system.h rm.o: ../core/sessionmanager.h ../core/sessioncontainer.h -rm.o: ../functions/functions.h ../templates/templates.h +rm.o: ../core/basethread.h ../functions/functions.h ../templates/templates.h rm.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h rm.o: ../core/httpsimpleparser.h ../core/log.h ../templates/indexpatterns.h rm.o: ../core/sessionmanager.h ../core/misc.h diff --git a/main/Makefile.dep b/main/Makefile.dep index 7ddd992..22bbd87 100755 --- a/main/Makefile.dep +++ b/main/Makefile.dep @@ -22,21 +22,22 @@ main.o: ../core/config.h ../core/users.h ../core/ugcontainer.h main.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h main.o: ../core/mountparser.h ../core/users.h ../core/groups.h main.o: ../core/group.h ../core/loadavg.h ../core/sessionmanager.h -main.o: ../core/sessioncontainer.h ../functions/functions.h -main.o: ../functions/functionbase.h ../core/request.h ../core/system.h -main.o: ../core/synchro.h ../functions/functionparser.h -main.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h -main.o: ../functions/privchanger.h ../functions/chown.h -main.o: ../functions/ckeditor.h ../functions/cp.h ../functions/createthread.h -main.o: ../functions/default.h ../functions/download.h ../functions/emacs.h -main.o: ../functions/last.h ../functions/login.h ../functions/logout.h -main.o: ../functions/ls.h ../functions/mkdir.h ../functions/mv.h -main.o: ../functions/node.h ../functions/priv.h ../functions/reload.h -main.o: ../functions/rm.h ../functions/run.h ../functions/stat.h -main.o: ../functions/subject.h ../functions/funthread.h -main.o: ../functions/template.h ../functions/tinymce.h ../functions/uname.h -main.o: ../functions/upload.h ../functions/uptime.h ../functions/who.h -main.o: ../functions/vim.h ../core/htmlfilter.h ../templates/templates.h +main.o: ../core/sessioncontainer.h ../core/basethread.h +main.o: ../functions/functions.h ../functions/functionbase.h +main.o: ../core/request.h ../core/system.h ../core/synchro.h +main.o: ../functions/functionparser.h ../functions/adduser.h +main.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h +main.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h +main.o: ../functions/createthread.h ../functions/default.h +main.o: ../functions/download.h ../functions/emacs.h ../functions/last.h +main.o: ../functions/login.h ../functions/logout.h ../functions/ls.h +main.o: ../functions/mkdir.h ../functions/mv.h ../functions/node.h +main.o: ../functions/priv.h ../functions/reload.h ../functions/rm.h +main.o: ../functions/run.h ../functions/stat.h ../functions/subject.h +main.o: ../functions/funthread.h ../functions/template.h +main.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h +main.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h +main.o: ../core/htmlfilter.h ../templates/templates.h main.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h main.o: ../core/httpsimpleparser.h ../core/log.h ../templates/indexpatterns.h main.o: ../core/sessionmanager.h ../core/compress.h ../core/getparser.h diff --git a/notify/Makefile.dep b/notify/Makefile.dep index 9ae4696..245001e 100755 --- a/notify/Makefile.dep +++ b/notify/Makefile.dep @@ -26,12 +26,13 @@ notify.o: ../core/dirs.h ../core/dircontainer.h ../notify/notify.h notify.o: ../core/mounts.h ../core/mount.h ../core/mountparser.h notify.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h notify.o: ../core/sessionmanager.h ../core/sessioncontainer.h -notify.o: ../core/system.h ../core/dirs.h ../core/synchro.h ../core/plugin.h -notify.o: ../core/pluginmsg.h ../core/sessionmanager.h -notify.o: ../functions/functions.h ../functions/functionbase.h -notify.o: ../functions/functionparser.h ../functions/adduser.h -notify.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h -notify.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h +notify.o: ../core/basethread.h ../core/system.h ../core/dirs.h +notify.o: ../core/synchro.h ../core/plugin.h ../core/pluginmsg.h +notify.o: ../core/sessionmanager.h ../functions/functions.h +notify.o: ../functions/functionbase.h ../functions/functionparser.h +notify.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h +notify.o: ../functions/privchanger.h ../functions/chown.h +notify.o: ../functions/ckeditor.h ../functions/cp.h notify.o: ../functions/createthread.h ../functions/default.h notify.o: ../functions/download.h ../functions/emacs.h ../functions/last.h notify.o: ../functions/login.h ../functions/logout.h ../functions/ls.h @@ -108,4 +109,4 @@ templatesnotify.o: ../core/httpsimpleparser.h ../core/log.h templatesnotify.o: ../templates/indexpatterns.h ../templates/localefilter.h templatesnotify.o: ../templates/locale.h ../templates/htmltextstream.h templatesnotify.o: ../core/sessionmanager.h ../core/sessioncontainer.h -templatesnotify.o: ../core/lastcontainer.h +templatesnotify.o: ../core/lastcontainer.h ../core/basethread.h diff --git a/notify/notify.cpp b/notify/notify.cpp index c37a481..5bdb0ad 100755 --- a/notify/notify.cpp +++ b/notify/notify.cpp @@ -19,7 +19,7 @@ -Notify::Notify() : thread_signal(PTHREAD_COND_INITIALIZER) +Notify::Notify() { } @@ -62,9 +62,7 @@ void Notify::Init() notify_thread.SetUsers(users); notify_thread.SetNotifyPool(¬ify_pool); notify_thread.SetPatterns(&patterns); - notify_thread.SetSynchro(synchro); - notify_thread.SetSignal(&thread_signal); notify_template_cms = AddTemplate(L"notify_email_cms.txt"); // !! do konfiga notify_template_thread = AddTemplate(L"notify_email_thread.txt"); @@ -133,7 +131,7 @@ void Notify::ItemChanged(int notify_code, const Item & item) void Notify::ItemChanged(const NotifyMsg & msg) { notify_pool.Add(msg); - SendSignalToThread(); // we are in the first locked thread + notify_thread.WakeUpThread(); // we are in the first locked thread } @@ -145,6 +143,13 @@ void Notify::StartThread() } +void Notify::PrepareToStopThread() +{ + // synchro->was_stop_signal is true + notify_thread.WakeUpThread(); +} + + void Notify::WaitForThread() { notify_thread.WaitForThread(); @@ -186,8 +191,3 @@ static std::wstring tmp_path; -void Notify::SendSignalToThread() -{ - // you should use it with: synchro->Lock() and Unlock() - pthread_cond_signal(&thread_signal); -} diff --git a/notify/notify.h b/notify/notify.h index 1eabca6..853e242 100755 --- a/notify/notify.h +++ b/notify/notify.h @@ -39,7 +39,7 @@ public: void Init(); void StartThread(); - void SendSignalToThread(); // use it in lock/unlock + void PrepareToStopThread(); void WaitForThread(); size_t AddTemplate(const std::wstring & file_name); @@ -60,9 +60,6 @@ private: NotifyMsg msg; NotifyPool notify_pool; - // conditional variable - pthread_cond_t thread_signal; - size_t notify_template_cms; size_t notify_template_thread; diff --git a/plugins/stats/Makefile.dep b/plugins/stats/Makefile.dep index dc77369..0e5ea20 100755 --- a/plugins/stats/Makefile.dep +++ b/plugins/stats/Makefile.dep @@ -28,28 +28,28 @@ init.o: ../../core/ugcontainer.h ../../core/lastcontainer.h init.o: ../../core/mounts.h ../../core/mount.h ../../core/mountparser.h init.o: ../../core/users.h ../../core/groups.h ../../core/group.h init.o: ../../core/loadavg.h ../../core/sessionmanager.h -init.o: ../../core/sessioncontainer.h ../../functions/functions.h -init.o: ../../functions/functionbase.h ../../core/system.h -init.o: ../../core/synchro.h ../../functions/functionparser.h -init.o: ../../functions/adduser.h ../../functions/cat.h -init.o: ../../functions/chmod.h ../../functions/privchanger.h -init.o: ../../functions/chown.h ../../functions/ckeditor.h -init.o: ../../functions/cp.h ../../functions/createthread.h -init.o: ../../functions/default.h ../../functions/download.h -init.o: ../../functions/emacs.h ../../functions/last.h -init.o: ../../functions/login.h ../../functions/logout.h ../../functions/ls.h -init.o: ../../functions/mkdir.h ../../functions/mv.h ../../functions/node.h -init.o: ../../functions/priv.h ../../functions/reload.h ../../functions/rm.h -init.o: ../../functions/run.h ../../functions/stat.h -init.o: ../../functions/subject.h ../../functions/funthread.h -init.o: ../../functions/template.h ../../functions/tinymce.h -init.o: ../../functions/uname.h ../../functions/upload.h -init.o: ../../functions/uptime.h ../../functions/who.h ../../functions/vim.h -init.o: ../../core/htmlfilter.h ../../templates/templates.h -init.o: ../../templates/patterncacher.h ../../templates/ckeditorgetparser.h -init.o: ../../core/httpsimpleparser.h ../../core/log.h -init.o: ../../templates/indexpatterns.h ../../core/sessionmanager.h -init.o: statssession.h ../../core/plugindata.h +init.o: ../../core/sessioncontainer.h ../../core/basethread.h +init.o: ../../functions/functions.h ../../functions/functionbase.h +init.o: ../../core/system.h ../../core/synchro.h +init.o: ../../functions/functionparser.h ../../functions/adduser.h +init.o: ../../functions/cat.h ../../functions/chmod.h +init.o: ../../functions/privchanger.h ../../functions/chown.h +init.o: ../../functions/ckeditor.h ../../functions/cp.h +init.o: ../../functions/createthread.h ../../functions/default.h +init.o: ../../functions/download.h ../../functions/emacs.h +init.o: ../../functions/last.h ../../functions/login.h +init.o: ../../functions/logout.h ../../functions/ls.h ../../functions/mkdir.h +init.o: ../../functions/mv.h ../../functions/node.h ../../functions/priv.h +init.o: ../../functions/reload.h ../../functions/rm.h ../../functions/run.h +init.o: ../../functions/stat.h ../../functions/subject.h +init.o: ../../functions/funthread.h ../../functions/template.h +init.o: ../../functions/tinymce.h ../../functions/uname.h +init.o: ../../functions/upload.h ../../functions/uptime.h +init.o: ../../functions/who.h ../../functions/vim.h ../../core/htmlfilter.h +init.o: ../../templates/templates.h ../../templates/patterncacher.h +init.o: ../../templates/ckeditorgetparser.h ../../core/httpsimpleparser.h +init.o: ../../core/log.h ../../templates/indexpatterns.h +init.o: ../../core/sessionmanager.h statssession.h ../../core/plugindata.h stats.o: stats.h ../../core/config.h ../../core/log.h ../../core/textstream.h stats.o: ../../core/misc.h ../../core/item.h ../../../ezc/src/utf8.h templates.o: templates.h ../../core/plugin.h ../../core/pluginmsg.h @@ -78,29 +78,30 @@ templates.o: ../../core/mounts.h ../../core/mount.h ../../core/error.h templates.o: ../../core/mountparser.h ../../core/users.h ../../core/groups.h templates.o: ../../core/group.h ../../core/rebus.h ../../core/loadavg.h templates.o: ../../core/sessionmanager.h ../../core/sessioncontainer.h -templates.o: ../../core/session.h ../../functions/functions.h -templates.o: ../../functions/functionbase.h ../../core/request.h -templates.o: ../../core/requesttypes.h ../../core/textstream.h -templates.o: ../../core/misc.h ../../templates/htmltextstream.h -templates.o: ../../core/system.h ../../core/synchro.h -templates.o: ../../functions/functionparser.h ../../functions/adduser.h -templates.o: ../../functions/cat.h ../../functions/chmod.h -templates.o: ../../functions/privchanger.h ../../functions/chown.h -templates.o: ../../functions/ckeditor.h ../../functions/cp.h -templates.o: ../../functions/createthread.h ../../functions/default.h -templates.o: ../../functions/download.h ../../functions/emacs.h -templates.o: ../../functions/last.h ../../functions/login.h -templates.o: ../../functions/logout.h ../../functions/ls.h -templates.o: ../../functions/mkdir.h ../../functions/mv.h -templates.o: ../../functions/node.h ../../functions/priv.h -templates.o: ../../functions/reload.h ../../functions/rm.h -templates.o: ../../functions/run.h ../../functions/stat.h -templates.o: ../../functions/subject.h ../../functions/funthread.h -templates.o: ../../functions/template.h ../../functions/tinymce.h -templates.o: ../../functions/uname.h ../../functions/upload.h -templates.o: ../../functions/uptime.h ../../functions/who.h -templates.o: ../../functions/vim.h ../../core/htmlfilter.h -templates.o: ../../templates/templates.h ../../templates/patterncacher.h +templates.o: ../../core/session.h ../../core/basethread.h +templates.o: ../../functions/functions.h ../../functions/functionbase.h +templates.o: ../../core/request.h ../../core/requesttypes.h +templates.o: ../../core/textstream.h ../../core/misc.h +templates.o: ../../templates/htmltextstream.h ../../core/system.h +templates.o: ../../core/synchro.h ../../functions/functionparser.h +templates.o: ../../functions/adduser.h ../../functions/cat.h +templates.o: ../../functions/chmod.h ../../functions/privchanger.h +templates.o: ../../functions/chown.h ../../functions/ckeditor.h +templates.o: ../../functions/cp.h ../../functions/createthread.h +templates.o: ../../functions/default.h ../../functions/download.h +templates.o: ../../functions/emacs.h ../../functions/last.h +templates.o: ../../functions/login.h ../../functions/logout.h +templates.o: ../../functions/ls.h ../../functions/mkdir.h +templates.o: ../../functions/mv.h ../../functions/node.h +templates.o: ../../functions/priv.h ../../functions/reload.h +templates.o: ../../functions/rm.h ../../functions/run.h +templates.o: ../../functions/stat.h ../../functions/subject.h +templates.o: ../../functions/funthread.h ../../functions/template.h +templates.o: ../../functions/tinymce.h ../../functions/uname.h +templates.o: ../../functions/upload.h ../../functions/uptime.h +templates.o: ../../functions/who.h ../../functions/vim.h +templates.o: ../../core/htmlfilter.h ../../templates/templates.h +templates.o: ../../templates/patterncacher.h templates.o: ../../templates/ckeditorgetparser.h templates.o: ../../core/httpsimpleparser.h ../../core/log.h templates.o: ../../templates/indexpatterns.h ../../core/sessionmanager.h diff --git a/plugins/ticket/Makefile.dep b/plugins/ticket/Makefile.dep index c1d4feb..9072903 100755 --- a/plugins/ticket/Makefile.dep +++ b/plugins/ticket/Makefile.dep @@ -157,26 +157,26 @@ init.o: ../../core/plugindata.h ../../templates/htmltextstream.h init.o: ../../core/synchro.h editticket.h createticket.h ../../core/log.h init.o: ../../core/plugin.h ../../core/pluginmsg.h ../../core/system.h init.o: ../../core/sessionmanager.h ../../core/sessioncontainer.h -init.o: ../../functions/functions.h ../../functions/functionbase.h -init.o: ../../functions/functionparser.h ../../functions/adduser.h -init.o: ../../functions/cat.h ../../functions/chmod.h -init.o: ../../functions/privchanger.h ../../functions/chown.h -init.o: ../../functions/ckeditor.h ../../functions/cp.h -init.o: ../../functions/createthread.h ../../functions/default.h -init.o: ../../functions/download.h ../../functions/emacs.h -init.o: ../../functions/last.h ../../functions/login.h -init.o: ../../functions/logout.h ../../functions/ls.h ../../functions/mkdir.h -init.o: ../../functions/mv.h ../../functions/node.h ../../functions/priv.h -init.o: ../../functions/reload.h ../../functions/rm.h ../../functions/run.h -init.o: ../../functions/stat.h ../../functions/subject.h -init.o: ../../functions/funthread.h ../../functions/template.h -init.o: ../../functions/tinymce.h ../../functions/uname.h -init.o: ../../functions/upload.h ../../functions/uptime.h -init.o: ../../functions/who.h ../../functions/vim.h ../../core/htmlfilter.h -init.o: ../../templates/templates.h ../../templates/patterncacher.h -init.o: ../../templates/ckeditorgetparser.h ../../core/httpsimpleparser.h -init.o: ../../core/log.h ../../templates/indexpatterns.h -init.o: ../../core/sessionmanager.h +init.o: ../../core/basethread.h ../../functions/functions.h +init.o: ../../functions/functionbase.h ../../functions/functionparser.h +init.o: ../../functions/adduser.h ../../functions/cat.h +init.o: ../../functions/chmod.h ../../functions/privchanger.h +init.o: ../../functions/chown.h ../../functions/ckeditor.h +init.o: ../../functions/cp.h ../../functions/createthread.h +init.o: ../../functions/default.h ../../functions/download.h +init.o: ../../functions/emacs.h ../../functions/last.h +init.o: ../../functions/login.h ../../functions/logout.h ../../functions/ls.h +init.o: ../../functions/mkdir.h ../../functions/mv.h ../../functions/node.h +init.o: ../../functions/priv.h ../../functions/reload.h ../../functions/rm.h +init.o: ../../functions/run.h ../../functions/stat.h +init.o: ../../functions/subject.h ../../functions/funthread.h +init.o: ../../functions/template.h ../../functions/tinymce.h +init.o: ../../functions/uname.h ../../functions/upload.h +init.o: ../../functions/uptime.h ../../functions/who.h ../../functions/vim.h +init.o: ../../core/htmlfilter.h ../../templates/templates.h +init.o: ../../templates/patterncacher.h ../../templates/ckeditorgetparser.h +init.o: ../../core/httpsimpleparser.h ../../core/log.h +init.o: ../../templates/indexpatterns.h ../../core/sessionmanager.h tdb.o: tdb.h ticket.h ../../db/dbbase.h ../../db/dbconn.h tdb.o: ../../db/dbtextstream.h ../../core/textstream.h ../../core/misc.h tdb.o: ../../core/item.h ../../core/error.h ../../core/log.h @@ -213,25 +213,26 @@ templates.o: ../../templates/htmltextstream.h ../../core/synchro.h templates.o: createticket.h ../../core/misc.h ../../core/plugin.h templates.o: ../../core/pluginmsg.h ../../core/system.h templates.o: ../../core/sessionmanager.h ../../core/sessioncontainer.h -templates.o: ../../functions/functions.h ../../functions/functionbase.h -templates.o: ../../functions/functionparser.h ../../functions/adduser.h -templates.o: ../../functions/cat.h ../../functions/chmod.h -templates.o: ../../functions/privchanger.h ../../functions/chown.h -templates.o: ../../functions/ckeditor.h ../../functions/cp.h -templates.o: ../../functions/createthread.h ../../functions/default.h -templates.o: ../../functions/download.h ../../functions/emacs.h -templates.o: ../../functions/last.h ../../functions/login.h -templates.o: ../../functions/logout.h ../../functions/ls.h -templates.o: ../../functions/mkdir.h ../../functions/mv.h -templates.o: ../../functions/node.h ../../functions/priv.h -templates.o: ../../functions/reload.h ../../functions/rm.h -templates.o: ../../functions/run.h ../../functions/stat.h -templates.o: ../../functions/subject.h ../../functions/funthread.h -templates.o: ../../functions/template.h ../../functions/tinymce.h -templates.o: ../../functions/uname.h ../../functions/upload.h -templates.o: ../../functions/uptime.h ../../functions/who.h -templates.o: ../../functions/vim.h ../../core/htmlfilter.h -templates.o: ../../templates/templates.h ../../templates/patterncacher.h +templates.o: ../../core/basethread.h ../../functions/functions.h +templates.o: ../../functions/functionbase.h ../../functions/functionparser.h +templates.o: ../../functions/adduser.h ../../functions/cat.h +templates.o: ../../functions/chmod.h ../../functions/privchanger.h +templates.o: ../../functions/chown.h ../../functions/ckeditor.h +templates.o: ../../functions/cp.h ../../functions/createthread.h +templates.o: ../../functions/default.h ../../functions/download.h +templates.o: ../../functions/emacs.h ../../functions/last.h +templates.o: ../../functions/login.h ../../functions/logout.h +templates.o: ../../functions/ls.h ../../functions/mkdir.h +templates.o: ../../functions/mv.h ../../functions/node.h +templates.o: ../../functions/priv.h ../../functions/reload.h +templates.o: ../../functions/rm.h ../../functions/run.h +templates.o: ../../functions/stat.h ../../functions/subject.h +templates.o: ../../functions/funthread.h ../../functions/template.h +templates.o: ../../functions/tinymce.h ../../functions/uname.h +templates.o: ../../functions/upload.h ../../functions/uptime.h +templates.o: ../../functions/who.h ../../functions/vim.h +templates.o: ../../core/htmlfilter.h ../../templates/templates.h +templates.o: ../../templates/patterncacher.h templates.o: ../../templates/ckeditorgetparser.h templates.o: ../../core/httpsimpleparser.h ../../core/log.h templates.o: ../../templates/indexpatterns.h ../../core/sessionmanager.h diff --git a/templates/Makefile.dep b/templates/Makefile.dep index a64a03a..b019ae3 100755 --- a/templates/Makefile.dep +++ b/templates/Makefile.dep @@ -23,7 +23,7 @@ adduser.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h adduser.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h adduser.o: ../core/mountparser.h ../core/users.h ../core/groups.h adduser.o: ../core/group.h ../core/loadavg.h ../core/sessionmanager.h -adduser.o: ../core/sessioncontainer.h ../core/system.h +adduser.o: ../core/sessioncontainer.h ../core/basethread.h ../core/system.h dir.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h dir.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h ../../ezc/src/item.h dir.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h @@ -46,8 +46,8 @@ dir.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h dir.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h dir.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h dir.o: ../core/loadavg.h ../core/sessionmanager.h ../core/sessioncontainer.h -dir.o: ../core/system.h ../core/misc.h ../functions/functions.h -dir.o: ../functions/functionbase.h ../core/synchro.h +dir.o: ../core/basethread.h ../core/system.h ../core/misc.h +dir.o: ../functions/functions.h ../functions/functionbase.h ../core/synchro.h dir.o: ../functions/functionparser.h ../functions/adduser.h dir.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h dir.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h @@ -83,7 +83,7 @@ doc.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h doc.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h doc.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h doc.o: ../core/loadavg.h ../core/sessionmanager.h ../core/sessioncontainer.h -doc.o: ../core/system.h ../core/request.h ../core/misc.h +doc.o: ../core/basethread.h ../core/system.h ../core/request.h ../core/misc.h htmltextstream.o: htmltextstream.h ../core/textstream.h misc.h localefilter.h htmltextstream.o: locale.h ../core/confparser.h ../../ezc/src/ezc.h htmltextstream.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h @@ -120,8 +120,9 @@ item.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h item.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h item.o: ../core/mount.h ../core/mountparser.h ../core/users.h item.o: ../core/groups.h ../core/group.h ../core/loadavg.h -item.o: ../core/sessionmanager.h ../core/sessioncontainer.h ../core/system.h -item.o: ../core/misc.h ../core/bbcodeparser.h +item.o: ../core/sessionmanager.h ../core/sessioncontainer.h +item.o: ../core/basethread.h ../core/system.h ../core/misc.h +item.o: ../core/bbcodeparser.h last.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h last.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h last.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h @@ -144,8 +145,9 @@ last.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h last.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h last.o: ../core/mount.h ../core/mountparser.h ../core/users.h last.o: ../core/groups.h ../core/group.h ../core/loadavg.h -last.o: ../core/sessionmanager.h ../core/sessioncontainer.h ../core/system.h -last.o: ../core/lastcontainer.h ../core/request.h ../core/misc.h +last.o: ../core/sessionmanager.h ../core/sessioncontainer.h +last.o: ../core/basethread.h ../core/system.h ../core/lastcontainer.h +last.o: ../core/request.h ../core/misc.h locale.o: locale.h ../core/confparser.h ../core/log.h ../core/textstream.h localefilter.o: localefilter.h locale.h ../core/confparser.h localefilter.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h @@ -175,7 +177,7 @@ ls.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h ls.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h ls.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h ls.o: ../core/loadavg.h ../core/sessionmanager.h ../core/sessioncontainer.h -ls.o: ../core/system.h ../core/request.h +ls.o: ../core/basethread.h ../core/system.h ../core/request.h misc.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h misc.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h misc.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h @@ -198,8 +200,8 @@ misc.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h misc.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h misc.o: ../core/mount.h ../core/mountparser.h ../core/users.h misc.o: ../core/groups.h ../core/group.h ../core/loadavg.h -misc.o: ../core/sessionmanager.h ../core/sessioncontainer.h ../core/system.h -misc.o: ../core/misc.h +misc.o: ../core/sessionmanager.h ../core/sessioncontainer.h +misc.o: ../core/basethread.h ../core/system.h ../core/misc.h mount.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h mount.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h mount.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h @@ -222,8 +224,8 @@ mount.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h mount.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h mount.o: ../core/mount.h ../core/mountparser.h ../core/users.h mount.o: ../core/groups.h ../core/group.h ../core/loadavg.h -mount.o: ../core/sessionmanager.h ../core/sessioncontainer.h ../core/system.h -mount.o: ../core/misc.h +mount.o: ../core/sessionmanager.h ../core/sessioncontainer.h +mount.o: ../core/basethread.h ../core/system.h ../core/misc.h patterncacher.o: patterncacher.h ../core/item.h misc.h localefilter.h patterncacher.o: locale.h ../core/confparser.h ../../ezc/src/ezc.h patterncacher.o: ../../ezc/src/utf8.h ../../ezc/src/generator.h @@ -254,8 +256,9 @@ priv.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h priv.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h priv.o: ../core/mount.h ../core/mountparser.h ../core/users.h priv.o: ../core/groups.h ../core/group.h ../core/loadavg.h -priv.o: ../core/sessionmanager.h ../core/sessioncontainer.h ../core/system.h -priv.o: ../core/misc.h ../functions/functions.h ../functions/functionbase.h +priv.o: ../core/sessionmanager.h ../core/sessioncontainer.h +priv.o: ../core/basethread.h ../core/system.h ../core/misc.h +priv.o: ../functions/functions.h ../functions/functionbase.h priv.o: ../core/synchro.h ../functions/functionparser.h priv.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h priv.o: ../functions/privchanger.h ../functions/chown.h @@ -291,7 +294,8 @@ rebus.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h rebus.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h rebus.o: ../core/mount.h ../core/mountparser.h ../core/users.h rebus.o: ../core/groups.h ../core/group.h ../core/loadavg.h -rebus.o: ../core/sessionmanager.h ../core/sessioncontainer.h ../core/system.h +rebus.o: ../core/sessionmanager.h ../core/sessioncontainer.h +rebus.o: ../core/basethread.h ../core/system.h stat.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h stat.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h stat.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h @@ -314,8 +318,8 @@ stat.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h stat.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h stat.o: ../core/mount.h ../core/mountparser.h ../core/users.h stat.o: ../core/groups.h ../core/group.h ../core/loadavg.h -stat.o: ../core/sessionmanager.h ../core/sessioncontainer.h ../core/system.h -stat.o: ../core/misc.h +stat.o: ../core/sessionmanager.h ../core/sessioncontainer.h +stat.o: ../core/basethread.h ../core/system.h ../core/misc.h sys.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h sys.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h ../../ezc/src/item.h sys.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h @@ -338,7 +342,8 @@ sys.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h sys.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h sys.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h sys.o: ../core/loadavg.h ../core/sessionmanager.h ../core/sessioncontainer.h -sys.o: ../core/system.h ../core/request.h ../core/version.h +sys.o: ../core/basethread.h ../core/system.h ../core/request.h +sys.o: ../core/version.h template.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h template.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h template.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h @@ -363,7 +368,7 @@ template.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h template.o: ../core/mount.h ../core/mountparser.h ../core/users.h template.o: ../core/groups.h ../core/group.h ../core/loadavg.h template.o: ../core/sessionmanager.h ../core/sessioncontainer.h -template.o: ../core/system.h ../core/misc.h +template.o: ../core/basethread.h ../core/system.h ../core/misc.h templates.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h templates.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h templates.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h @@ -389,8 +394,8 @@ templates.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h templates.o: ../core/mount.h ../core/mountparser.h ../core/users.h templates.o: ../core/groups.h ../core/group.h ../core/loadavg.h templates.o: ../core/sessionmanager.h ../core/sessioncontainer.h -templates.o: ../core/system.h ../core/misc.h ../core/plugin.h -templates.o: ../core/pluginmsg.h ../core/sessionmanager.h +templates.o: ../core/basethread.h ../core/system.h ../core/misc.h +templates.o: ../core/plugin.h ../core/pluginmsg.h ../core/sessionmanager.h templates.o: ../functions/functions.h ../functions/functionbase.h templates.o: ../core/synchro.h ../functions/functionparser.h templates.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h @@ -429,11 +434,12 @@ thread.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h thread.o: ../core/mount.h ../core/mountparser.h ../core/users.h thread.o: ../core/groups.h ../core/group.h ../core/loadavg.h thread.o: ../core/sessionmanager.h ../core/sessioncontainer.h -thread.o: ../core/system.h ../core/misc.h ../functions/functions.h -thread.o: ../functions/functionbase.h ../core/synchro.h -thread.o: ../functions/functionparser.h ../functions/adduser.h -thread.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h -thread.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h +thread.o: ../core/basethread.h ../core/system.h ../core/misc.h +thread.o: ../functions/functions.h ../functions/functionbase.h +thread.o: ../core/synchro.h ../functions/functionparser.h +thread.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h +thread.o: ../functions/privchanger.h ../functions/chown.h +thread.o: ../functions/ckeditor.h ../functions/cp.h thread.o: ../functions/createthread.h ../functions/default.h thread.o: ../functions/download.h ../functions/emacs.h ../functions/last.h thread.o: ../functions/login.h ../functions/logout.h ../functions/ls.h @@ -467,7 +473,7 @@ upload.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h upload.o: ../core/mount.h ../core/mountparser.h ../core/users.h upload.o: ../core/groups.h ../core/group.h ../core/loadavg.h upload.o: ../core/sessionmanager.h ../core/sessioncontainer.h -upload.o: ../core/system.h ../core/request.h +upload.o: ../core/basethread.h ../core/system.h ../core/request.h uptime.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h uptime.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h uptime.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h @@ -491,7 +497,7 @@ uptime.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h uptime.o: ../core/mount.h ../core/mountparser.h ../core/users.h uptime.o: ../core/groups.h ../core/group.h ../core/loadavg.h uptime.o: ../core/sessionmanager.h ../core/sessioncontainer.h -uptime.o: ../core/system.h +uptime.o: ../core/basethread.h ../core/system.h user.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h user.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h user.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h @@ -514,8 +520,9 @@ user.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h user.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h user.o: ../core/mount.h ../core/mountparser.h ../core/users.h user.o: ../core/groups.h ../core/group.h ../core/loadavg.h -user.o: ../core/sessionmanager.h ../core/sessioncontainer.h ../core/system.h -user.o: ../core/request.h ../core/misc.h +user.o: ../core/sessionmanager.h ../core/sessioncontainer.h +user.o: ../core/basethread.h ../core/system.h ../core/request.h +user.o: ../core/misc.h who.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h who.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h ../../ezc/src/item.h who.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h @@ -538,7 +545,7 @@ who.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h who.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h who.o: ../core/mountparser.h ../core/users.h ../core/groups.h ../core/group.h who.o: ../core/loadavg.h ../core/sessionmanager.h ../core/sessioncontainer.h -who.o: ../core/system.h ../core/misc.h +who.o: ../core/basethread.h ../core/system.h ../core/misc.h winix.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h winix.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h winix.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h @@ -561,8 +568,9 @@ winix.o: ../core/synchro.h ../notify/templatesnotify.h ../core/users.h winix.o: ../core/ugcontainer.h ../core/lastcontainer.h ../core/mounts.h winix.o: ../core/mount.h ../core/mountparser.h ../core/users.h winix.o: ../core/groups.h ../core/group.h ../core/loadavg.h -winix.o: ../core/sessionmanager.h ../core/sessioncontainer.h ../core/system.h -winix.o: ../core/plugin.h ../core/pluginmsg.h ../core/sessionmanager.h +winix.o: ../core/sessionmanager.h ../core/sessioncontainer.h +winix.o: ../core/basethread.h ../core/system.h ../core/plugin.h +winix.o: ../core/pluginmsg.h ../core/sessionmanager.h winix.o: ../functions/functions.h ../functions/functionbase.h winix.o: ../core/synchro.h ../functions/functionparser.h winix.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h