Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Per /chat discussion, replace load_control() calls in selective pages with nice() and move load_control() into process_one_web_page(). There is still work to do here, e.g. allowing certain pages through (namely /chat, to facilitate coordination of site defense) and perhaps checking credentials if the load is too high and always allowing admin users. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | load-control-rework |
| Files: | files | file ages | folders |
| SHA3-256: |
9b0ebcaf23572a78e4a842dcde6dba40 |
| User & Date: | stephan 2022-04-14 16:58:36.711 |
Context
|
2022-04-14
| ||
| 17:03 | Added a fossil_nice() call to /vpatch. ... (check-in: 1cc86c16a2 user: stephan tags: load-control-rework) | |
| 16:58 | Per /chat discussion, replace load_control() calls in selective pages with nice() and move load_control() into process_one_web_page(). There is still work to do here, e.g. allowing certain pages through (namely /chat, to facilitate coordination of site defense) and perhaps checking credentials if the load is too high and always allowing admin users. ... (check-in: 9b0ebcaf23 user: stephan tags: load-control-rework) | |
|
2022-04-13
| ||
| 16:27 | On the /info view for a checkin which has a branch/branch-name wiki page, correct the Edit Wiki link to use /wikiedit instead of /wiki if permissions allow, otherwise the /wiki page's automatic redirection of branch/branch-name wiki pages to the timeline makes it impossible to get to the editor for a branch-specific wiki page. ... (check-in: 82510672b8 user: stephan tags: trunk) | |
Changes
Changes to src/diff.c.
| ︙ | ︙ | |||
3592 3593 3594 3595 3596 3597 3598 |
unsigned clr1, clr2, clr;
int bBlame = g.zPath[0]!='a';/* True for BLAME output. False for ANNOTATE. */
/* Gather query parameters */
login_check_credentials();
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
if( exclude_spiders() ) return;
| | | 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 |
unsigned clr1, clr2, clr;
int bBlame = g.zPath[0]!='a';/* True for BLAME output. False for ANNOTATE. */
/* Gather query parameters */
login_check_credentials();
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
if( exclude_spiders() ) return;
fossil_nice_default();
zFilename = P("filename");
zRevision = PD("checkin",0);
zOrigin = P("origin");
zLimit = P("limit");
showLog = PB("log");
fileVers = PB("filevers");
ignoreWs = PB("w");
|
| ︙ | ︙ |
Changes to src/info.c.
| ︙ | ︙ | |||
1180 1181 1182 1183 1184 1185 1186 |
int graphFlags = 0;
Blob qp;
int bInvert = PB("inv");
login_check_credentials();
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
login_anonymous_available();
| | | 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 |
int graphFlags = 0;
Blob qp;
int bInvert = PB("inv");
login_check_credentials();
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
login_anonymous_available();
fossil_nice_default();
blob_init(&qp, 0, 0);
diffType = preferred_diff_type();
zRe = P("regex");
if( zRe ) re_compile(&pRe, zRe, 0);
zBranch = P("branch");
if( zBranch && zBranch[0]==0 ) zBranch = 0;
if( zBranch ){
|
| ︙ | ︙ |
Changes to src/json.c.
| ︙ | ︙ | |||
737 738 739 740 741 742 743 | /* ** Returns non-zero if the json_bootstrap_early() function has already ** been called. In general, this function should be used sparingly, ** e.g. from low-level support functions like fossil_warning() where ** there is genuine uncertainty about whether (or not) the JSON setup ** has already been called. */ | | | | 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 |
/*
** Returns non-zero if the json_bootstrap_early() function has already
** been called. In general, this function should be used sparingly,
** e.g. from low-level support functions like fossil_warning() where
** there is genuine uncertainty about whether (or not) the JSON setup
** has already been called.
*/
int json_is_bootstrapped_early(void){
return ((g.json.gc.v != NULL) && (g.json.gc.a != NULL));
}
/*
** Initializes some JSON bits which need to be initialized relatively
** early on. It should be called by any routine which might need to
** call into JSON relatively early on in the init process.
** Specifically, early on in cgi_init() and json_cmd_top(), but also
** from any error reporting routines which might be triggered (early
** on in those functions).
**
** Initializes g.json.gc and g.json.param. This code does not (and
** must not) rely on any of the fossil environment having been set
** up. e.g. it must not use cgi_parameter() and friends because this
** must be called before those data are initialized.
**
** If called multiple times, calls after the first are a no-op.
*/
void json_bootstrap_early(void){
cson_value * v;
if(g.json.gc.v!=NULL){
/* Avoid multiple bootstrappings. */
return;
}
g.json.timerId = fossil_timer_start();
|
| ︙ | ︙ |
Changes to src/main.c.
| ︙ | ︙ | |||
1870 1871 1872 1873 1874 1875 1876 |
}
}
}
/* At this point, the appropriate repository database file will have
** been opened.
*/
| | | 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 |
}
}
}
/* At this point, the appropriate repository database file will have
** been opened.
*/
load_control();
/*
** Check to see if the first term of PATH_INFO specifies an
** alternative skin. This will be the case if the first term of
** PATH_INFO begins with "draftN/" where N is an integer between 1
** and 9. If so, activate the skin associated with that draft.
*/
|
| ︙ | ︙ |
Changes to src/stat.c.
| ︙ | ︙ | |||
961 962 963 964 965 966 967 |
** user without check-in privileges, to prevent excessive usage by
** robots and random passers-by on the internet
*/
if( !g.perm.Write && !db_get_boolean("artifact_stats_enable",0) ){
login_needed(g.anon.Write);
return;
}
| | | 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 |
** user without check-in privileges, to prevent excessive usage by
** robots and random passers-by on the internet
*/
if( !g.perm.Write && !db_get_boolean("artifact_stats_enable",0) ){
login_needed(g.anon.Write);
return;
}
fossil_nice_default();
style_set_current_feature("stat");
style_header("Artifact Statistics");
style_submenu_element("Repository Stats", "stat");
style_submenu_element("Artifact List", "bloblist");
gather_artifact_stats(1);
|
| ︙ | ︙ |
Changes to src/tar.c.
| ︙ | ︙ | |||
754 755 756 757 758 759 760 |
Glob *pInclude = 0; /* The compiled in= glob pattern */
Glob *pExclude = 0; /* The compiled ex= glob pattern */
Blob tarball; /* Tarball accumulated here */
const char *z;
login_check_credentials();
if( !g.perm.Zip ){ login_needed(g.anon.Zip); return; }
| | | 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 |
Glob *pInclude = 0; /* The compiled in= glob pattern */
Glob *pExclude = 0; /* The compiled ex= glob pattern */
Blob tarball; /* Tarball accumulated here */
const char *z;
login_check_credentials();
if( !g.perm.Zip ){ login_needed(g.anon.Zip); return; }
fossil_nice_default();
zName = fossil_strdup(PD("name",""));
z = P("r");
if( z==0 ) z = P("uuid");
if( z==0 ) z = tar_uuid_from_name(&zName);
if( z==0 ) z = "trunk";
g.zOpenRevision = zRid = fossil_strdup(z);
nRid = strlen(zRid);
|
| ︙ | ︙ |
Changes to src/util.c.
| ︙ | ︙ | |||
894 895 896 897 898 899 900 |
break;
}
}
}
#endif
return zBrowser;
}
| > > > > > > > > > > > > > > > > > > > | 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 |
break;
}
}
}
#endif
return zBrowser;
}
/*
** On non-Windows systems, calls nice(2) with the given level. Errors
** are ignored. On Windows this is a no-op.
*/
void fossil_nice(int level){
#ifndef _WIN32
nice(level);
#else
(void)level;
#endif
}
/*
** Calls fossil_nice() with a default level.
*/
void fossil_nice_default(void){
fossil_nice(20);
}
|
Changes to src/zip.c.
| ︙ | ︙ | |||
919 920 921 922 923 924 925 |
if( fossil_strcmp(g.zPath, "sqlar")==0 ){
eType = ARCHIVE_SQLAR;
zType = "SQL";
}else{
eType = ARCHIVE_ZIP;
zType = "ZIP";
}
| | | 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 |
if( fossil_strcmp(g.zPath, "sqlar")==0 ){
eType = ARCHIVE_SQLAR;
zType = "SQL";
}else{
eType = ARCHIVE_ZIP;
zType = "ZIP";
}
fossil_nice_default();
zName = fossil_strdup(PD("name",""));
z = P("r");
if( z==0 ) z = P("uuid");
if( z==0 ) z = tar_uuid_from_name(&zName);
if( z==0 ) z = "trunk";
nName = strlen(zName);
g.zOpenRevision = zRid = fossil_strdup(z);
|
| ︙ | ︙ |