Fossil SCM
Compress content in the emailblob table.
Commit
98400909bca9b7c592e44d44745b263209b9acf3a916c58f5e792f7a670fd21b
Parent
8dc832e69d57cc6…
2 files changed
+5
-2
+3
-1
+5
-2
| --- src/smtp.c | ||
| +++ src/smtp.c | ||
| @@ -893,21 +893,23 @@ | ||
| 893 | 893 | ){ |
| 894 | 894 | db_begin_transaction(); |
| 895 | 895 | if( p->idTranscript==0 ) smtp_server_schema(0); |
| 896 | 896 | db_prepare(&s, |
| 897 | 897 | "INSERT INTO emailblob(ets,etime,etxt)" |
| 898 | - " VALUES(:ets,now(),:etxt)" | |
| 898 | + " VALUES(:ets,now(),compress(:etxt))" | |
| 899 | 899 | ); |
| 900 | 900 | if( !bFinish && p->idTranscript==0 ){ |
| 901 | 901 | db_bind_null(&s, ":ets"); |
| 902 | 902 | db_bind_null(&s, ":etxt"); |
| 903 | 903 | db_step(&s); |
| 904 | 904 | db_reset(&s); |
| 905 | 905 | p->idTranscript = db_last_insert_rowid(); |
| 906 | 906 | }else if( bFinish ){ |
| 907 | 907 | if( p->idTranscript ){ |
| 908 | - db_multi_exec("UPDATE emailblob SET etxt=%Q WHERE emailid=%lld", | |
| 908 | + db_multi_exec( | |
| 909 | + "UPDATE emailblob SET etxt=compress(%Q)" | |
| 910 | + " WHERE emailid=%lld", | |
| 909 | 911 | blob_str(&p->transcript), p->idTranscript); |
| 910 | 912 | }else{ |
| 911 | 913 | db_bind_null(&s, ":ets"); |
| 912 | 914 | db_bind_str(&s, ":etxt", &p->transcript); |
| 913 | 915 | db_step(&s); |
| @@ -964,10 +966,11 @@ | ||
| 964 | 966 | verify_all_options(); |
| 965 | 967 | if( g.argc!=3 ) usage("DBNAME"); |
| 966 | 968 | zDbName = g.argv[2]; |
| 967 | 969 | zDbName = enter_chroot_jail(zDbName, 0); |
| 968 | 970 | db_open_repository(zDbName); |
| 971 | + add_content_sql_commands(g.db); | |
| 969 | 972 | smtp_server_send(&x, "220 %s ESMTP https://fossil-scm.org/ %s\r\n", |
| 970 | 973 | zDomain, MANIFEST_VERSION); |
| 971 | 974 | while( smtp_server_gets(&x, z, sizeof(z)) ){ |
| 972 | 975 | if( strncmp(z, "EHLO", 4)==0 && fossil_isspace(z[4]) ){ |
| 973 | 976 | smtp_server_send(&x, "250 ok\r\n"); |
| 974 | 977 |
| --- src/smtp.c | |
| +++ src/smtp.c | |
| @@ -893,21 +893,23 @@ | |
| 893 | ){ |
| 894 | db_begin_transaction(); |
| 895 | if( p->idTranscript==0 ) smtp_server_schema(0); |
| 896 | db_prepare(&s, |
| 897 | "INSERT INTO emailblob(ets,etime,etxt)" |
| 898 | " VALUES(:ets,now(),:etxt)" |
| 899 | ); |
| 900 | if( !bFinish && p->idTranscript==0 ){ |
| 901 | db_bind_null(&s, ":ets"); |
| 902 | db_bind_null(&s, ":etxt"); |
| 903 | db_step(&s); |
| 904 | db_reset(&s); |
| 905 | p->idTranscript = db_last_insert_rowid(); |
| 906 | }else if( bFinish ){ |
| 907 | if( p->idTranscript ){ |
| 908 | db_multi_exec("UPDATE emailblob SET etxt=%Q WHERE emailid=%lld", |
| 909 | blob_str(&p->transcript), p->idTranscript); |
| 910 | }else{ |
| 911 | db_bind_null(&s, ":ets"); |
| 912 | db_bind_str(&s, ":etxt", &p->transcript); |
| 913 | db_step(&s); |
| @@ -964,10 +966,11 @@ | |
| 964 | verify_all_options(); |
| 965 | if( g.argc!=3 ) usage("DBNAME"); |
| 966 | zDbName = g.argv[2]; |
| 967 | zDbName = enter_chroot_jail(zDbName, 0); |
| 968 | db_open_repository(zDbName); |
| 969 | smtp_server_send(&x, "220 %s ESMTP https://fossil-scm.org/ %s\r\n", |
| 970 | zDomain, MANIFEST_VERSION); |
| 971 | while( smtp_server_gets(&x, z, sizeof(z)) ){ |
| 972 | if( strncmp(z, "EHLO", 4)==0 && fossil_isspace(z[4]) ){ |
| 973 | smtp_server_send(&x, "250 ok\r\n"); |
| 974 |
| --- src/smtp.c | |
| +++ src/smtp.c | |
| @@ -893,21 +893,23 @@ | |
| 893 | ){ |
| 894 | db_begin_transaction(); |
| 895 | if( p->idTranscript==0 ) smtp_server_schema(0); |
| 896 | db_prepare(&s, |
| 897 | "INSERT INTO emailblob(ets,etime,etxt)" |
| 898 | " VALUES(:ets,now(),compress(:etxt))" |
| 899 | ); |
| 900 | if( !bFinish && p->idTranscript==0 ){ |
| 901 | db_bind_null(&s, ":ets"); |
| 902 | db_bind_null(&s, ":etxt"); |
| 903 | db_step(&s); |
| 904 | db_reset(&s); |
| 905 | p->idTranscript = db_last_insert_rowid(); |
| 906 | }else if( bFinish ){ |
| 907 | if( p->idTranscript ){ |
| 908 | db_multi_exec( |
| 909 | "UPDATE emailblob SET etxt=compress(%Q)" |
| 910 | " WHERE emailid=%lld", |
| 911 | blob_str(&p->transcript), p->idTranscript); |
| 912 | }else{ |
| 913 | db_bind_null(&s, ":ets"); |
| 914 | db_bind_str(&s, ":etxt", &p->transcript); |
| 915 | db_step(&s); |
| @@ -964,10 +966,11 @@ | |
| 966 | verify_all_options(); |
| 967 | if( g.argc!=3 ) usage("DBNAME"); |
| 968 | zDbName = g.argv[2]; |
| 969 | zDbName = enter_chroot_jail(zDbName, 0); |
| 970 | db_open_repository(zDbName); |
| 971 | add_content_sql_commands(g.db); |
| 972 | smtp_server_send(&x, "220 %s ESMTP https://fossil-scm.org/ %s\r\n", |
| 973 | zDomain, MANIFEST_VERSION); |
| 974 | while( smtp_server_gets(&x, z, sizeof(z)) ){ |
| 975 | if( strncmp(z, "EHLO", 4)==0 && fossil_isspace(z[4]) ){ |
| 976 | smtp_server_send(&x, "250 ok\r\n"); |
| 977 |
+3
-1
| --- src/webmail.c | ||
| +++ src/webmail.c | ||
| @@ -45,14 +45,16 @@ | ||
| 45 | 45 | style_header("Webmail Not Available"); |
| 46 | 46 | @ <p>This repository is not configured to provide webmail</p> |
| 47 | 47 | style_footer(); |
| 48 | 48 | return; |
| 49 | 49 | } |
| 50 | + add_content_sql_commands(g.db); | |
| 50 | 51 | emailid = atoi(PD("id","0")); |
| 51 | 52 | if( emailid>0 ){ |
| 52 | 53 | blob_init(&sql, 0, 0); |
| 53 | - blob_append_sql(&sql, "SELECT etxt FROM emailblob WHERE emailid=%d", | |
| 54 | + blob_append_sql(&sql, "SELECT decompress(etxt)" | |
| 55 | + " FROM emailblob WHERE emailid=%d", | |
| 54 | 56 | emailid); |
| 55 | 57 | if( !g.perm.Admin ){ |
| 56 | 58 | blob_append_sql(&sql, " AND EXISTS(SELECT 1 FROM emailbox WHERE" |
| 57 | 59 | " euser=%Q AND emsgid=emailid)", g.zLogin); |
| 58 | 60 | } |
| 59 | 61 |
| --- src/webmail.c | |
| +++ src/webmail.c | |
| @@ -45,14 +45,16 @@ | |
| 45 | style_header("Webmail Not Available"); |
| 46 | @ <p>This repository is not configured to provide webmail</p> |
| 47 | style_footer(); |
| 48 | return; |
| 49 | } |
| 50 | emailid = atoi(PD("id","0")); |
| 51 | if( emailid>0 ){ |
| 52 | blob_init(&sql, 0, 0); |
| 53 | blob_append_sql(&sql, "SELECT etxt FROM emailblob WHERE emailid=%d", |
| 54 | emailid); |
| 55 | if( !g.perm.Admin ){ |
| 56 | blob_append_sql(&sql, " AND EXISTS(SELECT 1 FROM emailbox WHERE" |
| 57 | " euser=%Q AND emsgid=emailid)", g.zLogin); |
| 58 | } |
| 59 |
| --- src/webmail.c | |
| +++ src/webmail.c | |
| @@ -45,14 +45,16 @@ | |
| 45 | style_header("Webmail Not Available"); |
| 46 | @ <p>This repository is not configured to provide webmail</p> |
| 47 | style_footer(); |
| 48 | return; |
| 49 | } |
| 50 | add_content_sql_commands(g.db); |
| 51 | emailid = atoi(PD("id","0")); |
| 52 | if( emailid>0 ){ |
| 53 | blob_init(&sql, 0, 0); |
| 54 | blob_append_sql(&sql, "SELECT decompress(etxt)" |
| 55 | " FROM emailblob WHERE emailid=%d", |
| 56 | emailid); |
| 57 | if( !g.perm.Admin ){ |
| 58 | blob_append_sql(&sql, " AND EXISTS(SELECT 1 FROM emailbox WHERE" |
| 59 | " euser=%Q AND emsgid=emailid)", g.zLogin); |
| 60 | } |
| 61 |