Fossil SCM
Pop3 server sends a final +OK after QUIT.
Commit
065070385a51e584d4ba8e45b043c7841c837474c49e8b341c716d110a211f3c
Parent
644931632362bd7…
1 file changed
+10
-8
+10
-8
| --- src/smtp.c | ||
| +++ src/smtp.c | ||
| @@ -1397,10 +1397,20 @@ | ||
| 1397 | 1397 | if( pLog ) fprintf(pLog, "C: %s", zIn); |
| 1398 | 1398 | zCmd = zIn; |
| 1399 | 1399 | zA1 = pop3d_arg(zCmd); |
| 1400 | 1400 | zA2 = zA1 ? pop3d_arg(zA1) : 0; |
| 1401 | 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 | + } | |
| 1402 | 1412 | if( strcmp(zCmd,"capa")==0 ){ |
| 1403 | 1413 | static const char *azCap[] = { |
| 1404 | 1414 | "TOP", "USER", "UIDL", |
| 1405 | 1415 | }; |
| 1406 | 1416 | int i; |
| @@ -1438,22 +1448,14 @@ | ||
| 1438 | 1448 | zUser |
| 1439 | 1449 | ); |
| 1440 | 1450 | goto cmd_ok; |
| 1441 | 1451 | } |
| 1442 | 1452 | } |
| 1443 | - if( strcmp(zCmd,"quit")==0 ) break; | |
| 1444 | 1453 | /* Fossil cannot process APOP since the users clear-text password is |
| 1445 | 1454 | ** unknown. */ |
| 1446 | 1455 | goto cmd_error; |
| 1447 | 1456 | }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 | 1457 | if( strcmp(zCmd,"stat")==0 ){ |
| 1456 | 1458 | db_prepare(&q, "SELECT count(*), sum(esz) FROM pop3 WHERE NOT isDel"); |
| 1457 | 1459 | if( db_step(&q)==SQLITE_ROW ){ |
| 1458 | 1460 | pop3_print(pLog, "+OK %d %d", |
| 1459 | 1461 | db_column_int(&q,0), db_column_int(&q,1)); |
| 1460 | 1462 |
| --- 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 |