Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix an extra call to db_end_transaction() in "fossil config pull ticket". |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
f5eb03f5e585cdd5678888f4479178ef |
User & Date: | drh 2018-06-25 18:43:45.465 |
Context
2018-06-25
| ||
19:26 | More random and slightly incoherient notes on the www/emaildesign.md document. ... (check-in: 6f0e0598 user: drh tags: trunk) | |
18:43 | Fix an extra call to db_end_transaction() in "fossil config pull ticket". ... (check-in: f5eb03f5 user: drh tags: trunk) | |
18:20 | Fix another SQL error on the receiver side of "fossil config pull" ... (check-in: 0b6d3eaf user: drh tags: trunk) | |
Changes
Changes to src/configure.c.
︙ | ︙ | |||
34 35 36 37 38 39 40 | #define CONFIGSET_TKT 0x000004 /* Ticket configuration */ #define CONFIGSET_PROJ 0x000008 /* Project name */ #define CONFIGSET_SHUN 0x000010 /* Shun settings */ #define CONFIGSET_USER 0x000020 /* The USER table */ #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */ #define CONFIGSET_XFER 0x000080 /* Transfer configuration */ #define CONFIGSET_ALIAS 0x000100 /* URL Aliases */ | | | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #define CONFIGSET_TKT 0x000004 /* Ticket configuration */ #define CONFIGSET_PROJ 0x000008 /* Project name */ #define CONFIGSET_SHUN 0x000010 /* Shun settings */ #define CONFIGSET_USER 0x000020 /* The USER table */ #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */ #define CONFIGSET_XFER 0x000080 /* Transfer configuration */ #define CONFIGSET_ALIAS 0x000100 /* URL Aliases */ #define CONFIGSET_SCRIBERS 0x000200 /* Email subscribers */ #define CONFIGSET_FORUM 0x000400 /* Forum posts */ #define CONFIGSET_ALL 0x0007ff /* Everything */ #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */ /* |
︙ | ︙ | |||
68 69 70 71 72 73 74 | "Web interface appearance settings" }, { "/css", CONFIGSET_CSS, "Style sheet" }, { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" }, { "/ticket", CONFIGSET_TKT, "Ticket setup", }, { "/user", CONFIGSET_USER, "Users and privilege settings" }, { "/xfer", CONFIGSET_XFER, "Transfer setup", }, { "/alias", CONFIGSET_ALIAS, "URL Aliases", }, | | | | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | "Web interface appearance settings" }, { "/css", CONFIGSET_CSS, "Style sheet" }, { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" }, { "/ticket", CONFIGSET_TKT, "Ticket setup", }, { "/user", CONFIGSET_USER, "Users and privilege settings" }, { "/xfer", CONFIGSET_XFER, "Transfer setup", }, { "/alias", CONFIGSET_ALIAS, "URL Aliases", }, { "/subscribers", CONFIGSET_SCRIBERS,"Email notification subscriber list" }, /* { "/forum", CONFIGSET_FORUM, "Forum posts", }, */ { "/all", CONFIGSET_ALL, "All of the above" }, }; /* ** The following is a list of settings that we are willing to ** transfer. |
︙ | ︙ | |||
159 160 161 162 163 164 165 | { "@concealed", CONFIGSET_ADDR }, { "@shun", CONFIGSET_SHUN }, { "@alias", CONFIGSET_ALIAS }, | | | 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | { "@concealed", CONFIGSET_ADDR }, { "@shun", CONFIGSET_SHUN }, { "@alias", CONFIGSET_ALIAS }, { "@subscriber", CONFIGSET_SCRIBERS }, { "xfer-common-script", CONFIGSET_XFER }, { "xfer-push-script", CONFIGSET_XFER }, { "xfer-commit-script", CONFIGSET_XFER }, { "xfer-ticket-script", CONFIGSET_XFER }, }; |
︙ | ︙ | |||
233 234 235 236 237 238 239 | zName++; n -= 2; } for(i=0; i<count(aConfig); i++){ if( strncmp(zName, aConfig[i].zName, n)==0 && aConfig[i].zName[n]==0 ){ int m = aConfig[i].groupMask; if( !g.perm.Admin ){ | | | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 | zName++; n -= 2; } for(i=0; i<count(aConfig); i++){ if( strncmp(zName, aConfig[i].zName, n)==0 && aConfig[i].zName[n]==0 ){ int m = aConfig[i].groupMask; if( !g.perm.Admin ){ m &= ~(CONFIGSET_USER|CONFIGSET_SCRIBERS); } if( !g.perm.RdForum ){ m &= ~(CONFIGSET_FORUM); } if( !g.perm.RdAddr ){ m &= ~CONFIGSET_ADDR; } |
︙ | ︙ | |||
322 323 324 325 326 327 328 | ** designate what types of configuration we are allowed to receive. ** ** NEW FORMAT: ** ** zName is one of: ** ** "/config", "/user", "/shun", "/reportfmt", "/concealed", | | | 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 | ** designate what types of configuration we are allowed to receive. ** ** NEW FORMAT: ** ** zName is one of: ** ** "/config", "/user", "/shun", "/reportfmt", "/concealed", ** "/subscriber", ** ** zName indicates the table that holds the configuration information being ** transferred. pContent is a string that consist of alternating Fossil ** and SQL tokens. The First token is a timestamp in seconds since 1970. ** The second token is a primary key for the table identified by zName. If ** The entry with the corresponding primary key exists and has a more recent ** mtime, then nothing happens. If the entry does not exist or if it has |
︙ | ︙ | |||
348 349 350 351 352 353 354 | ** /reportfmt $MTIME $TITLE owner $VALUE cols $VALUE sqlcode $VALUE ** /concealed $MTIME $HASH content $VALUE ** /subscriber $SMTIME $SEMAIL suname $V ... */ void configure_receive(const char *zName, Blob *pContent, int groupMask){ int checkMask; /* Masks for which we must first check existance of tables */ | | | 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 | ** /reportfmt $MTIME $TITLE owner $VALUE cols $VALUE sqlcode $VALUE ** /concealed $MTIME $HASH content $VALUE ** /subscriber $SMTIME $SEMAIL suname $V ... */ void configure_receive(const char *zName, Blob *pContent, int groupMask){ int checkMask; /* Masks for which we must first check existance of tables */ checkMask = CONFIGSET_SCRIBERS; if( zName[0]=='/' ){ /* The new format */ char *azToken[24]; int nToken = 0; int ii, jj; int thisMask; Blob name, value, sql; |
︙ | ︙ | |||
401 402 403 404 405 406 407 | if( aType[ii].zName[0]=='/' ){ thisMask = configure_is_exportable(azToken[1]); }else{ thisMask = configure_is_exportable(aType[ii].zName); } if( (thisMask & groupMask)==0 ) return; if( (thisMask & checkMask)!=0 ){ | | | 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 | if( aType[ii].zName[0]=='/' ){ thisMask = configure_is_exportable(azToken[1]); }else{ thisMask = configure_is_exportable(aType[ii].zName); } if( (thisMask & groupMask)==0 ) return; if( (thisMask & checkMask)!=0 ){ if( (thisMask & CONFIGSET_SCRIBERS)!=0 ){ email_schema(1); } checkMask &= ~thisMask; } blob_zero(&sql); if( groupMask & CONFIGSET_OVERWRITE ){ |
︙ | ︙ | |||
583 584 585 586 587 588 589 | blob_appendf(pOut, "config /config %d\n%s\n", blob_size(&rec), blob_str(&rec)); nCard++; blob_reset(&rec); } db_finalize(&q); } | | | 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 | blob_appendf(pOut, "config /config %d\n%s\n", blob_size(&rec), blob_str(&rec)); nCard++; blob_reset(&rec); } db_finalize(&q); } if( (groupMask & CONFIGSET_SCRIBERS)!=0 && db_table_exists("repository","subscriber") ){ db_prepare(&q, "SELECT mtime, quote(semail)," " quote(suname), quote(sdigest)," " quote(sdonotcall), quote(ssub)," " quote(sctime), quote(smip)" " FROM subscriber WHERE sverified" |
︙ | ︙ | |||
650 651 652 653 654 655 656 | if( strncmp(z, &aGroupName[i].zName[1], n)==0 ){ return aGroupName[i].groupMask; } } if( notFoundIsFatal ){ fossil_print("Available configuration areas:\n"); for(i=0; i<count(aGroupName); i++){ | > | | 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 | if( strncmp(z, &aGroupName[i].zName[1], n)==0 ){ return aGroupName[i].groupMask; } } if( notFoundIsFatal ){ fossil_print("Available configuration areas:\n"); for(i=0; i<count(aGroupName); i++){ fossil_print(" %-13s %s\n", &aGroupName[i].zName[1], aGroupName[i].zHelp); } fossil_fatal("no such configuration area: \"%s\"", z); } return 0; } /* |
︙ | ︙ |
Changes to src/tkt.c.
︙ | ︙ | |||
370 371 372 373 374 375 376 | db_multi_exec( "DROP TABLE IF EXISTS ticket;" "DROP TABLE IF EXISTS ticketchng;" ); zSql = ticket_table_schema(); if( separateConnection ){ | | | 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 | db_multi_exec( "DROP TABLE IF EXISTS ticket;" "DROP TABLE IF EXISTS ticketchng;" ); zSql = ticket_table_schema(); if( separateConnection ){ if( db_transaction_nesting_depth() ) db_end_transaction(0); db_init_database(g.zRepositoryName, zSql, 0); }else{ db_multi_exec("%s", zSql/*safe-for-%s*/); } } /* |
︙ | ︙ |