Rev 12474 | Rev 18510 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 12474 | Rev 18509 | ||
---|---|---|---|
Line 47... | Line 47... | ||
47 | /* remove idle session. */ |
47 | /* remove idle session. */ |
48 | else { |
48 | else { |
49 | struct stat fst; |
49 | struct stat fst; |
50 | char fbuf[4096],cbuf[MAX_LINELEN+1]; |
50 | char fbuf[4096],cbuf[MAX_LINELEN+1]; |
51 | char *pp; |
51 | char *pp; |
- | 52 | /* remove session inactive for more than idle_time seconds */ |
|
52 | if(session_stat.st_mtime<nowtime-idle_time || |
53 | if(session_stat.st_mtime<nowtime-idle_time || |
53 | session_stat.st_mtime>nowtime+anti_time) { |
54 | session_stat.st_mtime>nowtime+anti_time) { |
54 | remove: |
55 | remove: |
55 | if(remove_tree(session_name)!=0) { |
56 | if(remove_tree(session_name)!=0) { |
56 | if(strstr(session_name,"chroot")!=NULL) { |
57 | if(strstr(session_name,"chroot")!=NULL) { |
Line 91... | Line 92... | ||
91 | fst.st_mtime>=nowtime+anti_time) remove(dbuf); |
92 | fst.st_mtime>=nowtime+anti_time) remove(dbuf); |
92 | } |
93 | } |
93 | closedir(s2D); |
94 | closedir(s2D); |
94 | continue; |
95 | continue; |
95 | } |
96 | } |
- | 97 | /* keep sessions with _ in name unless hardcheck */ |
|
96 | if(!hardcheck || strchr(session_name,'_')!=NULL) continue; |
98 | if(!hardcheck || strchr(session_name,'_')!=NULL) continue; |
- | 99 | /* keep very new sessions (inactive for less than idle_time3 seconds) */ |
|
97 | if(session_stat.st_mtime>=nowtime-idle_time3 && |
100 | if(session_stat.st_mtime>=nowtime-idle_time3 && |
98 | session_stat.st_mtime<nowtime+anti_time) continue; |
101 | session_stat.st_mtime<nowtime+anti_time) continue; |
- | 102 | /* for sessions inactive for more than idle_time3 seconds, |
|
- | 103 | keep session if var.stat file exists */ |
|
99 | snprintf(fbuf,sizeof(fbuf),"%s/var.stat",session_name); |
104 | snprintf(fbuf,sizeof(fbuf),"%s/var.stat",session_name); |
100 | if(stat(fbuf,&fst)==0) continue; |
105 | if(stat(fbuf,&fst)==0) continue; |
- | 106 | /* sessions with no var.stat file, chech var file */ |
|
101 | wlogdaccessfile(cbuf,"r","%s/var",session_name); |
107 | wlogdaccessfile(cbuf,"r","%s/var",session_name); |
102 | if(cbuf[0]==0) goto remove; /* no var |
108 | if(cbuf[0]==0) goto remove; /* no var file, remove */ |
- | 109 | /* keep manager sessions */ |
|
103 | pp=strstr(cbuf,"\nw_wims_ismanager="); |
110 | pp=strstr(cbuf,"\nw_wims_ismanager="); |
104 | if(pp!=NULL) { |
111 | if(pp!=NULL) { |
105 | pp+=strlen("\nw_wims_ismanager="); |
112 | pp+=strlen("\nw_wims_ismanager="); |
106 | if(*pp>'0' && *pp<='9') continue; |
113 | if(*pp>'0' && *pp<='9') continue; |
107 | } |
114 | } |
- | 115 | /* remove session inactive for more than idle_time2 seconds */ |
|
108 | if(session_stat.st_mtime<nowtime-idle_time2 || |
116 | if(session_stat.st_mtime<nowtime-idle_time2 || |
109 | session_stat.st_mtime>nowtime+anti_time) goto remove; |
117 | session_stat.st_mtime>nowtime+anti_time) goto remove; |
- | 118 | /* remove unused sessions */ |
|
110 | if(session_stat.st_mtime<nowtime-idle_time3 && |
119 | if(session_stat.st_mtime<nowtime-idle_time3 && |
111 | strstr(cbuf,"\nwims_new_session=yes\n")!=NULL) goto remove; |
120 | strstr(cbuf,"\nwims_new_session=yes\n")!=NULL) goto remove; |
112 | /* popup session: 50 sec only. */ |
121 | /* remove popup session: 50 sec only. */ |
113 | if(session_stat.st_mtime<nowtime-50 && |
122 | if(session_stat.st_mtime<nowtime-50 && |
114 | strstr(cbuf,"\nw_wims_mode=popup\n")!=NULL) goto remove; |
123 | strstr(cbuf,"\nw_wims_mode=popup\n")!=NULL) goto remove; |
115 | } |
124 | } |
116 | } |
125 | } |
117 | closedir(sdir_base); |
126 | closedir(sdir_base); |