Fossil SCM

Compress content in the emailblob table.

drh 2018-06-30 20:51 UTC smtp
Commit 98400909bca9b7c592e44d44745b263209b9acf3a916c58f5e792f7a670fd21b
2 files changed +5 -2 +3 -1
+5 -2
--- src/smtp.c
+++ src/smtp.c
@@ -893,21 +893,23 @@
893893
){
894894
db_begin_transaction();
895895
if( p->idTranscript==0 ) smtp_server_schema(0);
896896
db_prepare(&s,
897897
"INSERT INTO emailblob(ets,etime,etxt)"
898
- " VALUES(:ets,now(),:etxt)"
898
+ " VALUES(:ets,now(),compress(:etxt))"
899899
);
900900
if( !bFinish && p->idTranscript==0 ){
901901
db_bind_null(&s, ":ets");
902902
db_bind_null(&s, ":etxt");
903903
db_step(&s);
904904
db_reset(&s);
905905
p->idTranscript = db_last_insert_rowid();
906906
}else if( bFinish ){
907907
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",
909911
blob_str(&p->transcript), p->idTranscript);
910912
}else{
911913
db_bind_null(&s, ":ets");
912914
db_bind_str(&s, ":etxt", &p->transcript);
913915
db_step(&s);
@@ -964,10 +966,11 @@
964966
verify_all_options();
965967
if( g.argc!=3 ) usage("DBNAME");
966968
zDbName = g.argv[2];
967969
zDbName = enter_chroot_jail(zDbName, 0);
968970
db_open_repository(zDbName);
971
+ add_content_sql_commands(g.db);
969972
smtp_server_send(&x, "220 %s ESMTP https://fossil-scm.org/ %s\r\n",
970973
zDomain, MANIFEST_VERSION);
971974
while( smtp_server_gets(&x, z, sizeof(z)) ){
972975
if( strncmp(z, "EHLO", 4)==0 && fossil_isspace(z[4]) ){
973976
smtp_server_send(&x, "250 ok\r\n");
974977
--- 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 @@
4545
style_header("Webmail Not Available");
4646
@ <p>This repository is not configured to provide webmail</p>
4747
style_footer();
4848
return;
4949
}
50
+ add_content_sql_commands(g.db);
5051
emailid = atoi(PD("id","0"));
5152
if( emailid>0 ){
5253
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",
5456
emailid);
5557
if( !g.perm.Admin ){
5658
blob_append_sql(&sql, " AND EXISTS(SELECT 1 FROM emailbox WHERE"
5759
" euser=%Q AND emsgid=emailid)", g.zLogin);
5860
}
5961
--- 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

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button