Fossil SCM

Pop3 server sends a final +OK after QUIT.

drh 2018-07-18 02:19 trunk
Commit 065070385a51e584d4ba8e45b043c7841c837474c49e8b341c716d110a211f3c
1 file changed +10 -8
+10 -8
--- src/smtp.c
+++ src/smtp.c
@@ -1397,10 +1397,20 @@
13971397
if( pLog ) fprintf(pLog, "C: %s", zIn);
13981398
zCmd = zIn;
13991399
zA1 = pop3d_arg(zCmd);
14001400
zA2 = zA1 ? pop3d_arg(zA1) : 0;
14011401
for(i=0; zCmd[i]; i++){ zCmd[i] = fossil_tolower(zCmd[i]); }
1402
+ if( strcmp(zCmd,"quit")==0 ){
1403
+ if( !inAuth ){
1404
+ db_multi_exec(
1405
+ "UPDATE emailbox SET estate=2"
1406
+ " WHERE estate<2 AND ebid IN (SELECT ebid FROM pop3 WHERE isDel);"
1407
+ );
1408
+ }
1409
+ pop3_print(pLog, "+OK");
1410
+ break;
1411
+ }
14021412
if( strcmp(zCmd,"capa")==0 ){
14031413
static const char *azCap[] = {
14041414
"TOP", "USER", "UIDL",
14051415
};
14061416
int i;
@@ -1438,22 +1448,14 @@
14381448
zUser
14391449
);
14401450
goto cmd_ok;
14411451
}
14421452
}
1443
- if( strcmp(zCmd,"quit")==0 ) break;
14441453
/* Fossil cannot process APOP since the users clear-text password is
14451454
** unknown. */
14461455
goto cmd_error;
14471456
}else{
1448
- if( strcmp(zCmd,"quit")==0 ){
1449
- db_multi_exec(
1450
- "UPDATE emailbox SET estate=2"
1451
- " WHERE estate<2 AND ebid IN (SELECT ebid FROM pop3 WHERE isDel);"
1452
- );
1453
- break;
1454
- }
14551457
if( strcmp(zCmd,"stat")==0 ){
14561458
db_prepare(&q, "SELECT count(*), sum(esz) FROM pop3 WHERE NOT isDel");
14571459
if( db_step(&q)==SQLITE_ROW ){
14581460
pop3_print(pLog, "+OK %d %d",
14591461
db_column_int(&q,0), db_column_int(&q,1));
14601462
--- src/smtp.c
+++ src/smtp.c
@@ -1397,10 +1397,20 @@
1397 if( pLog ) fprintf(pLog, "C: %s", zIn);
1398 zCmd = zIn;
1399 zA1 = pop3d_arg(zCmd);
1400 zA2 = zA1 ? pop3d_arg(zA1) : 0;
1401 for(i=0; zCmd[i]; i++){ zCmd[i] = fossil_tolower(zCmd[i]); }
 
 
 
 
 
 
 
 
 
 
1402 if( strcmp(zCmd,"capa")==0 ){
1403 static const char *azCap[] = {
1404 "TOP", "USER", "UIDL",
1405 };
1406 int i;
@@ -1438,22 +1448,14 @@
1438 zUser
1439 );
1440 goto cmd_ok;
1441 }
1442 }
1443 if( strcmp(zCmd,"quit")==0 ) break;
1444 /* Fossil cannot process APOP since the users clear-text password is
1445 ** unknown. */
1446 goto cmd_error;
1447 }else{
1448 if( strcmp(zCmd,"quit")==0 ){
1449 db_multi_exec(
1450 "UPDATE emailbox SET estate=2"
1451 " WHERE estate<2 AND ebid IN (SELECT ebid FROM pop3 WHERE isDel);"
1452 );
1453 break;
1454 }
1455 if( strcmp(zCmd,"stat")==0 ){
1456 db_prepare(&q, "SELECT count(*), sum(esz) FROM pop3 WHERE NOT isDel");
1457 if( db_step(&q)==SQLITE_ROW ){
1458 pop3_print(pLog, "+OK %d %d",
1459 db_column_int(&q,0), db_column_int(&q,1));
1460
--- src/smtp.c
+++ src/smtp.c
@@ -1397,10 +1397,20 @@
1397 if( pLog ) fprintf(pLog, "C: %s", zIn);
1398 zCmd = zIn;
1399 zA1 = pop3d_arg(zCmd);
1400 zA2 = zA1 ? pop3d_arg(zA1) : 0;
1401 for(i=0; zCmd[i]; i++){ zCmd[i] = fossil_tolower(zCmd[i]); }
1402 if( strcmp(zCmd,"quit")==0 ){
1403 if( !inAuth ){
1404 db_multi_exec(
1405 "UPDATE emailbox SET estate=2"
1406 " WHERE estate<2 AND ebid IN (SELECT ebid FROM pop3 WHERE isDel);"
1407 );
1408 }
1409 pop3_print(pLog, "+OK");
1410 break;
1411 }
1412 if( strcmp(zCmd,"capa")==0 ){
1413 static const char *azCap[] = {
1414 "TOP", "USER", "UIDL",
1415 };
1416 int i;
@@ -1438,22 +1448,14 @@
1448 zUser
1449 );
1450 goto cmd_ok;
1451 }
1452 }
 
1453 /* Fossil cannot process APOP since the users clear-text password is
1454 ** unknown. */
1455 goto cmd_error;
1456 }else{
 
 
 
 
 
 
 
1457 if( strcmp(zCmd,"stat")==0 ){
1458 db_prepare(&q, "SELECT count(*), sum(esz) FROM pop3 WHERE NOT isDel");
1459 if( db_step(&q)==SQLITE_ROW ){
1460 pop3_print(pLog, "+OK %d %d",
1461 db_column_int(&q,0), db_column_int(&q,1));
1462

Keyboard Shortcuts

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