File: DONE-OLD

package info (click to toggle)
prayer 1.3.5-dfsg1-8
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 6,596 kB
  • sloc: ansic: 43,163; makefile: 817; sh: 445; perl: 166
file content (2037 lines) | stat: -rw-r--r-- 54,696 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
$Cambridge: hermes/src/prayer/docs/DONE-OLD,v 1.2 2008/09/16 09:59:56 dpc22 Exp $

10/01/2002
==========

Lots of undocumented work cleaning up the user interface. This file
probably now redundant!


18/11/2001
==========

Folder delete with confirmation disabled --> bang

prayer process could end up hanging if far end gets stuck:
  added (long) timeout as countermeasure.

<h3> --> <strong> on login and logout page until we can come up with
something better. (and later fixed stray </h3>: sigh).

Added (sometimes rather large) timeouts to all iostreams.

Search for closest map in zoommap.

Fixed logout screen

Added html_session_message to help screen.

Why does postmaster --> postmaster@hermes expansion work correctly even
though no entry in map? Suspect some help from c-client here...
  - postmaster alias defined: need to include in map!

list/unmark finds "closest" message before unmarking
  => no silly jumping around.

Add "Sender:" to messages if/when From address changed.

QP decoding on messages when Reply/ Forward: check closely!

16/11/2001
==========

Post message with invalid address --> boom.
  - Was failing to catch NIL response.

Run through validator.
  - Done (check on live system tomorrow!).

config file for accountd? Need to lift out stuff e.g: password strings.
  - First pass achieved

Run through filter file test.

Test QP engine again!

Silly little bugs:
  Added "cc" to short header list for compose and display. Doh!

  rfc1522_decode stuff not working correctly in msg list screen?

  Refresh no longer pushs to last message in folder if new mail.

  Cc not copied when forwarding messages.

  "Compose new message" on abook_lookup screen not getting on well with
  roles.

15/11/2001
==========

Reply -> Linewrap -> send causes reproducible crash.
  - Fixed: rfc1522_encode being painful..

Restart from list with substitution: garbage in output
  - response_redirect has to discard any accumulated body data.

Bugs:
  Sucessful passwd change crashes engine compare and contrast.
  Need to spot empty .MSforward upload
    - suggest read into array and then scan before writing file!

Reverse arrival sort was broken.

14/11/2001
==========

Negotiate filter_restrict on login 

13/11/2001
==========

Send binary downloads as HTTP/1.0 with use_persist disabled.
  - should work will all browsers this way.

Need background colour set on some frontend pages:
  set of utility routines?

Work out why icons pulled _every_ time that someone logs in from new session.
  - No idea: ask Jon

Add foreground, link colours to documents

Switched back to using text links rather than form entries on various
folder screens: appears that forms within tables are illegal in HTML 4.01!
  - See Interface Changes

Passed all screens through HTML validator looking for HTML markup bugs.

12/11/2001
==========

"-- " optimisations.

IP address lock now selective.

06/11/2001
==========

Check/rationalise ping events:
  SSL Key generate. Log cycling. CDB reopen.

Check error handling esp. logging of invalid input

Fixed abook import stuff

Save options more:
 After initial user interface level selection. Whenever abook updated.
 Done: may wish to only save when exiting abook_list screen?

02/11/2001
==========

BUG: Crash if sorting switched on in empty mailbox
  mail_sort doesn't like being passed an empty list? Fixed with special case.

prayer-session crashes if ispell not present
  - catch error condition.

Lost core dumps?
  - "daemon" option in Redhat init.d scripts disables this
  - Solution: just run prayer by hand


01/11/2001
==========

Fix rename -> Cancel bug

__ICONS__ == /icons/ 

Need log rotation script

User Preferences: Should have use_welcome and confirm logout on novice mode
  - help text correct?

30/10/2001
==========

Fix Date headers

Fix check_cookie -> fail case. Simple redirection

Lost core dumps?
  - No: just need to set ulimit -c unlimited
      - How do this portably?

Help text on preferences screen should update immediately if user-level
changed.

26/10/2001
==========

Sort out logging code (again):
  Either reopen log file for every entry or record inode and check it
  every couple of minutes
   ("struct log" as wrapper might help).

25/10/2001
==========

Fixed (Un)Delete and (Un)Mark bugs on display screen when sorting !=
arrival (didn't use zoommap).

23/10/2001
==========

Fix log/CDB file rotation.
  - DONE

Make sure that invalid page requests return 404.

robots.txt

22/10/2001
==========

Test concurrent access to mailfolder code with MBX folders

Forward messages needs to track zoommap for sorted message

Fixed Text/HTML stuff

19/10/2001
==========

Compose: Send, Cancel, Postpone should all return to correct parent
         screen. Does compose parent exist?

Increased width of abook_xfer field

18/10/2001
==========

Folder transfer: replaced Buttons with links

Extend compose lines

Expanded welcome and user_level screen

13/10/2001
==========

User Preferences for sent-mail and postponed-msgs folders

Mailbox --> Folder on Preferences screen

14/10/2001
==========

Change preferences code to only save stuff which is != default?
  means that we can quitely change defaults if problems emerge.

  Need to extend config to add missing option!

13/10/2001
==========

Completed code documentation after 4 days. Yuck!

Need config options for sent-mail and postponed-msgs.

Mailbox --> Folder on Preferences screen

09/10/2001
==========

account.c:
  Need to fix transparent reconnection + timeouts properly.

accountd:
  Conver int -> BOOL

accountd_server: need to support "red-intramail, yellow-intramail, ..."

08/10/2001
==========

Replace config_mailbox and config_maildir with session_XXX equivalents
  -> can apply more intelligence when building server locations.

config:
  Add cdb maps for imapd, accountd server
    - DONE: Need to test, use in config_mailbox and config_dir
  Add support for separate accountd_nis server.

Accountd:
  Use prayer style logging.

config:
  Need support for
    imapd_server = "yellow-intramail : red-intramail : ..."

config:
  Improve Documentation. Rename a few options?

config:
  Parser should allocate into one pool, then copy into second to minimise
  overhead. Decided not (at least for the time being: quite a lot of work).
  Changed my mind! DONE.

Check install procedure
  - Fix silly permissions. Generate self signed certificate as part of
    install (see stunnel install scripts).

08/10/2001
==========

Document command line options prayer+prayer_session

Separate SSL startup from iostream_create: need two separate routines for
client and server size startup.

Add SSL to (both ends of) the accountd stuff
  - DONE: Need to fix + test

Fix SSL accountd support.

Accountd:
  Need config option plus accountd command line options to work around
  mail/ restriction!

06/10/2001
==========

Replaced MSconvert.pl with equivalent C. Need to test fully

03/10/2001
==========

Add config option to determine prayer_background

Prayer session needs to support all options used by prayer frontend.

Prayer -> prayer-session startup
  Close down unused sockets 
  Need config option for min servers, max servers

Session Idle mode: shut down IMAP connections after few minutes idle time.

28/09/2001
==========

Second go at install script:
  make config, edit ./Config, make, make install
   + make install-config + make install
   need proper redhat start and stop scripts.

"make clean" should clear out Emacs backup files in docs directory.

Rename prayer-backend ---> prayer-session

Document properly (user + technical documentation).
  - docs/ mostly done now (will need to review!)

25/09/2001
==========

prayer-frontend --> prayer, should fork off subprocess

First go an install scripts

25/09/2001
==========

Need correct MIME encoding when sending messages containing 8 bit chars
  - Done.

Fixed attachment upload. Still some kind of problem involving download...

Added directory cache upload button for cmd_folders and cmd_transfer.
Need on other mailbox manipulation screens.

19/09/2001
==========

Short URLs links e.g:
  "AAAD@list@34@2"  --> .../session/dpc22//AAAD@list@34@2
  "/icons/fred.gif" --> .../icons:fred.gif

Port to FreeBSD and Solaris. 
  - Factor out OS dependant code into os.c: STARTED
  - Solaris needs EDG support, maybe fake urandom daemon using pwd hashes

12/09/2001
==========

Problem with SSL and Mac Netscape 4.7X: double clicks for many operations
 - Suggest: Use old/new versions of stunnel, see if any difference.
 - Answer Mac Netscape 4.7X appears to be broken.
    - Disable user_agent use_persist for Mac Netcape 4, come back and
      be more efficient later.

10/09/2001
==========

User Interface: Back --> Mailbox on some screens. Mailboxes--> folders.
  - DONE: may need to rename list --> mailbox (tedious!).

Correct MIME encoding for ISO-latin-1 in headers please!
  - DONE: Test please!

10/09/2001
==========

string_printf() --> pool_printf().

Fix Makefile.

Fix compilation with -Wall -W?
  - No: Lots of cases involving session where we might actually want
  - to use session logs etc at some later point

05/09/2001
==========

Why no coredump when running as root?
  - Answer: programs which start out running as root are paranoid about
    leaking state on at least some operating systems . Answer would be to
    bind ports, exec subprocess as unpriveldged user.

Links should be buttons on mailboxes etc screen
  - Try one and see what it looks like.
  - Answer: looks good. Have done this everywhere.

Add "Compose New message" to abook listing screen.

Should backend_session_inet use asynchronous send as well as receive for
normal requests? Appears to work just fine with aync input, sync output.

One last go at "Undo"?
  - Undo is working correct, just not entirely intuitively.

03/09/2001
==========

Shortcuts in novice mode.

Fix line wrap algorithmn: "I have"

"Save message" needs to do a ml_check if save to open stream.

From address on list screen should be link to display, not reply

Address book import should translate: "Surname, Firstname".

Small problem with compose and postponed messages?
  - tripping over own feet.

Colour clues for Compose screen?

30/08/2001
==========

Problem with empty mail folders & compose?
  - can't duplicate!

Login screen:
  Emphasis SSL Warning.
  Enter on Login screen should be login:
    NO: Don't think that you can do this w/o Javascript?

Warning to user page: cmd_welcome
  Emphasise fact that people should log out!
  Tell them to use navigation icons on page rather than browser.

Add abook alias: should be form button. Others?

Add new addressbook entry should warn if overwriting existing alias

cmd_seach: Year as input field rather than select.

Single name rather than First Name/Last Name in addressbook

28/08/2001
==========

MIME torture test:
  Passed first time (thanks to c-client!). 
  Mozilla however falls over in a heap. <Giggles>.

See Interface Changes file.

28/08/2001
==========

Moved Favourite manipulation to subscreen of mailboxes.

Replaced Logout icon

Added "Check" icon.

Added banner to bottom of display screen. Others too?
  - New: use_tail_banner option

Switched icons on list screen around to match display screen. This might
take several attempts to get it right.

Add "check for new mail" button to list screen. Rearrange icons so that
list and display correspond better? DONE

Added "(Hermes) Webmail service" to title bar of all screens.

Paperclip on cmd_display screen

All:
  Put "Hermes Email Service: xxx" or similiar in title bar

Initial User level:
  Indicate "_Webmail_ User Interface Level".
  Logout button.

Logout screen should say logout from Hermes.

26/08/2001
==========

Improve directory cache:
  Shouldn't need to invalidate parts of cache automatically
  Need invalidate link!

Factor out os dependant code into os.c
  - Added IP address handing code

Preferences file: Need some useful way to wrap lines.
  - Can't think of terribly sensible way to do this without two stage
    parsing: string_get_lws_line followed by decode, _then_ split into tokens.
  - Lets stick with the current approach for the time being!

frontend/session should bail out on illegal option

25/08/2001
==========

Folder transfer slow:
  Use multiappend for upload. Any way to improve download speeds?
  Done. Howeer, no obvious imporvement. Sigh!

Caching problems with Mozilla, Netscape. Look at what hotmail do.
  - Answer: use Javascript to clear out history and Cache. Sigh :(.
  - Leave as is for the time being.

Hide history list: Look at Javascript?
  - Leave as is for the time being

24/08/2001
==========

Better role system: NO

Other languages: Later

Fixed ghastly SSL bug:
  SSL * can mention own local read buffer. Need to check this
  before we select().

(use_persist == NIL) broken with direct connection. Almost certainly a
problem with SSL * buffering? No: a completely separate bug. Hmmm!

Mozilla caching far too much (Expires: ignored).
  - Yep: Doesn't seem any way to stop it. Sigh!
  - Check bug database. Warning message? Seperate window?
  - Seems to be true of all browsers. Check what Hotmail do.

23/08/2001
==========

Added border to abook_list

Save deletes message

Icons:
  Prev  --> Previous on list and display pages
  Abook --> Addressbook on list and display pages

Moved Back icon on display screen to the canonical place

Added banner to reply page

Lookup --> Expand on Directory page. Need Abook search to?

Save message => mark as deleted. Should be option?

23/08/2001
==========

Abook lookups: case insensitive lookup done right at the assoc_lookup level...

Save icon replaced (need a small version).

Address Books -> Addressbooks singulat.

Save Msgs: mark messages as deleted.

Emphasis status line. (And hide if no status)

Abook --> Addressbook, Prebv --> Previous etc

22/08/2001
==========

TUS meeting.

21/08/2001
==========

  Warning on HTTP screen (infer default HTTPS channel!)
  Accountd needs to have new canon encoding

iostream.c:
  SSL_accept should not be fatal error
  Translate to be end of file

Attachment download:
  Need to translate ' ' -> '_' in URL for attachment name somehow


17/08/2001
==========

Upload/Download mail folder broken?
  - Fixed. Still some speed issues here.

Verify configuration properly!
  - Done. May need to test fully

abook.c: Use hash for lookup

Lost favourites list?

Clean up management screens when accountd disabled.
  - No: they are fine the way that they are I think

Added icons to logout and rm screens to keep vrw10 happy...

r -> request in request.c and response.c

Fixed string_get_lws and use for e.g prefences.

Added whole bunch of stuff to config file

Need length limits for method and headers as well as body
  - DONE. Also fixed the response_error stuff (again)

16/08/2001
==========

Sanity check prefs esp: From, Reply-To and alt-addresses

Session preferences handled correctly? Automatic update should take effect

Add user_agent debug page

SSL: Do we need to support DH? Yes What is DH? Still no idea!
     Separate out as module? : NO

Check Quota error handling
  - First part complete: on the right track!
  - Test things more extensively as we go on

Verify Reply-To address in role system!
 - DONE. Also fixed silly bug with empty alias!

15/08/2001
==========

Better logging:
  More session events. Log HTTP level + response code sent to broswer

09/08/2001
==========

string_canon_encode() && string_canon_decode()
  - appears to be some kind of obscure bug with '@' in URLs and
    Mozilla 0.9.2? Appeared to be specific to cmd_display and
    cmd_rawdisplay. Replace with url_encode/url_decode throughout?
  - Need to investigate some.
 - Switched string_canon_encode to use '%' rather than '@'
 - lets see if this has any unpleasant side effects!

Bugs: Folder download broken? Long delay: 
  - Downloading large folder from IMAP server takes time!
  - Some kind of feedback would be useful!

Attachment Download names silly
  - Fixed (I hope...)

Forward and reply should forward attachments too, (as an option).
  - Already does this!

Put sessions into own process group so that kill signal to server doesn't
kill everything (actually rather useful while developing!)
  - Probably not

Personalisated From as well as default domain
  - DONE

Stuff affecting UI:
  Rich headers?

Dircache invalidate root doesn't work!
  - Now fixed

Fix frontend reuse-connection stuff for ports 9090 etc
  - Need test case to show to Ben!

Check that every string printed as html goes through buffer_puts_quote_html!
  - DONE



08/08/2001
==========

Need override mechanism for session setup:
  user_agent=mozilla, netscape, ie, lynx, other
  debug
  record_telemetry.
  failsafe (equiv: disable = all)
  disable = 1.1, persist,            <-- Only one that frontend interested in
            icons, cookie, frame, 
            html_inline, html_inline_auto, preserve_mimetype
  enable  = (the same)
    - fixed silly bug with user-agent stuff

Abook lookup should convert
  hermes -> hermes.cam.ac.uk etc?
  - NO

Better hash function.
  - Look at Perl algorithm
  - No: Existing one seems fine.

Use sigaction plus robust repear everywhere.

Signal handling code:
  At very least backend master server should remove session sockets.
  - No: current arrangement works rather well thank you!

Netscape has problems if images disabled
  - but only if frame in use => Netscape bug!

Added return_path_domain config option.

06/08/2001
==========

Mike O'Donahue needs quoting.

backend_session_inet can now cope with arbitary number of simultaneous
connections to backend. Question: Do we need asynchronous responses too?

Fix ml stuff: no automatic reopen...  : DONE

Streams:
  Flush .prayer file after each prefs/abook update:
  Would need special stream. :: DONE
  Special stream for uploads/downloaded :: DONE

Crash after timeout (UIDs changed)?
  - Need to check this consistency. Check all session_redirect --> "restart"
  - FIXED: was failure to call zoommap_associate after reopen!

Need to test all ioXXX fns for error codes
   No: io fns all silently discard output on error condition
   Only need to worry about this for fns that generate lots of output.
   - Should be safe

31/07/2001
==========

Pat thinks that "maintainly maintained forward file" stuff not obvious.
  Can't distinguish "no such file" from other NO responses from accountd
  server. Propose either:

    NO [NOEXISTS] ...      or
    OK {0}           

Message sending using c-client SMTP routines
  Use c-client routines to construct message with attachments
    - less likely to break down?
    - Look at Pine code for sending messages
    - NO: own version is fine.
        - apart from CRLF -> LF conversion which is a ghastly hack.

    - Consistent use of c-client message handling code could make our life
      much easier...
  - NO: Exim handling error queue much nicer.

Abook sorting.
  Probably not.

Adopt Exim style syntax for configuration file.

30/07/2001
==========

Possible to use Keep-Alive for permanant sessions, not for icons?
  - Removes overhead associated with SSL channel startup.
  - Part of the way there: HTTP redirects are a pain...
  - DONE: separate timeouts for icons and session connections.

Use short session_prefix if User agent can cope?
  - Netscape + Outlook seem fine. Lynx chokes.
  - 12K -> 10K (cmd_list)
  - 16K -> 12K (cmd_list)
  - 30K -> 24K (cmd_mailboxes)
  - Is a 30% saving really worthwhile? :: NO, probably not!

Repeated headers in HTTP request:
  Currently concatinated,
  Any situation where this is incorrect thing to do?  
  What does Apache do in this situation?
  Check Apache behaviour in general: might learn a few useful lesons.
    - cookies only likely problem case: have list/last split
  - Do nothing, at least for the moment.

Possible to remove intermediate copies of HTTP Requests/Responses
using chunked encoding. Looks like we have to supprt chunked requests
at least properly. Sigh...
  - One case still to be dealt with. Marked in source

Rename: zoommap -> msgmap to reflect additional functionality 
  - NO: Leave it alone!

Capability database for user agents:
  Session Persist       (yes for everything which supports persistent)
  Icons Persist         (no for Netscape, ?Mozilla)
  HTTP Pipeline         (yes if we ever find a broswer which supports it!)
  Use icons             (yes by default, no for Lynx and other text only)
  Use frame             (yes if likely to be useful)
  Use Javascript        (yes if likely to be useful)
  HTTP Redirect Persist (yes if session can persist across HTTP redirect)
  HTTP POST     Persist (yes if session can persist across HTTP POST)
  Send icons over HTTP link

Need consistant way of splitting up User-Agent strings

Clean up .prayer file:
  Version number
  Wrap/unwrap long lines
  true/false rather than 0/1.
  _Some_ level of sanity checking. However current strategy of ignoring
  everything that we don't understand works reasonably well.

Password changes:
  Need to remember two passwords, switch magically
  - DONE: Still need to test properly.

Add confirmation dialogue for delete mail folder
  - DONE

29/07/2001
==========

Remove proxy (as option)
  o could run each backend server on different port,           :: DONE
    with master server a la inetd to catch requests to expired :: DONE
    slots which have not been reused.

24/07/2001
==========

  o Possible to send icons over non-https channel? : DONE as hack
     - Icons channels should only use Keep-Alive if we are
       confident that it is likely to be a benifit e.g: HTTP/1.1 pipeline
     - RAN TEST: Works in IE and Mozilla but not Netscape (sigh)
     - Need some kind of capability table for browsers...

Added extra links on cmd_list screen

Added year to Dates on cmd_list, cmd_reply eytc screens.

Use prefork at frontend

23/07/2001
==========

Need directory permissions in prayer.cf file
  - DONE

Move files to /usr/local/prayer/[version] and /var/spool/prayer/[stuff]
  - DONE

Added check_directory_perms option to check directory permissions on
$var_prefix and directories that appear under it.
  - not 100% there but should be good enough.

Automatically create directory hierachy if doesn't exist.
  - Need some way to define directory permissions in config file.

Better line wrap algorithmn
  - DONE earlier

Split frontend/backend?
  DONE!

20/07/2001
==========

iostream.c -> frontend_iostream.c & backend_iostream.c.
Only compile in SSL support if it is required!

19/07/2001
==========

Add setproctitle with some useful information.

16/07/2001
==========

Add session default preferences to config option e.g: window sizes

13/07/2001
==========

Configuration file tuning.

Address lookups:
  If unqualified address doesn't appear in abook, hermes or cam
  databases then its an invalid address: should report as such
  immediately rather than trying to send mail?

12/07/2001
==========

Configuration file.

10/07/2001
==========

Rename:
  int -> unsigned long or BOOL forall int
  printf routines should support/use lu rather than d
 - DONE. About 3 hours work!

Generic List function.
  - DONE: moved all the obvious things over to use it

Replace ioputs, bgetc, bputs etc with macros

09/07/2001
==========

Further work on Line Wrap algorithmn

Mixed cased aliases in name.

Funny interactions with Mozilla: need extra CRLFs somewhere?
  - Extra CRLF at end of each response appears to fix this
  - read RFCs a bit more closely

Sort out modal help text.

Forward as postmaster, lookup "Pat" crashes?
  - No: large amount of text in Compose window stops User Agent
  = from sending.
  - Look at RFCs, make sure that its not Prayer doing something
  - stupid with byte counts. 

session_check_streams?
  - ml_ping inbox and other if > 20 mins                     : DONE
  - close postponed, transfer and prefs streams if > 20 mins : DONE

abook_entry_to_string:
  code duplicated in one or two places:
    should try and factor out set of routines that are single place
    so that any updates can be made consistantly.

  - abook_entry_to_string() itself
  - abook_list   - should interpret strings better: See "joel" entry
  - add_address  - clone of abooj_entry_to_strin() code is marked XXX
  - DONE


05/07/2001
==========

Need better line wrap algorithmn which wraps in blocks...
  - DONE. Hurrah! That was hard work!

Date search broken
  - Fixed

04/07/2001
==========

Pat:
  has some messages that blow up Prayer
  Fixed: invalid QP messages

Roger managed to blow system up on preferences screen:
  Yes - works for me too now.  The only thing I had done in the
  previous session before attempting to change the reply-to header
  default value was to send a message.  However, doing that now
  still works.

  - Fixed: options->prefs_save = options->prefs without copy.

DPC:
  Small button loses headers. Deja vu...
  - Fixed

DPC:
  Spell check in "Large" mode corrupts headers
  - Fixed

PH:
  Fixed cmd_help() to record last help text displayed for reload.

  redirect file:
    I went to the mail redirection screen. It correctly showed my
    redirection to CUS. However, below the top line of links it said:

      Status: Account Server response: no such file

    which seems a bit odd.

    Believe that he means vacation screen, however need to check this.
    Added a few literal_catch_no
      - may be better to have server generate OK {0} for empty files.

  Added "Send" button on Large screen.

6. I did a speeling check. It picked up the error and said it was
   highlighted, but it wasn't.

   Seems to be there!
   <pre>
   <b>Hllo</b> Wrld
   </pre>

cmd_add_address wasn't dealing with:
  Joel Seymour  "Joel Seymour <addr>" in same way as main
  abook_entry -> string routine. [Have companion routine?]

CJ:
  Wants rawdisplay to rawdisplay: DONE

PH: Would like "Switch to inbox" on list screen
  Not done unless someone else asks for it.

03/07/2001
==========

Use cdb database of CRSid->Full name mapping in both places.
  - Come back and do this later
  - Can also use CRSid database to decide when unqualified filter is safe
     (dpc22 --> dpc22@*cam.ac.uk)
  - Partly (mostly!) done.

Add comment: "including XX attachments" in postpone and forward code.

Addressbook lookup bug?
  Stella -> bang?

Assorted tidying up.

Fixed mailboxes bug

Address parsing 
---------------

Default domain for outgoing messages.

Stella stuff
============

June 25 - Reply all with 1 address in cc: produces a surplus comma
          To: Stella Page <sp253@cam.ac.uk>
          Cc: , spage@kanina.freeserve.co.uk 
  - can't reproduce this

02/07/2001
==========

T/C/B links on abook_list/abook_search pages now To/Cc/Bcc

Extra checks on form input into abook_entry...

Sort out HTTP headers in response
  Current situation is overkill
  - DONE. Mozilla caches regardless :(.

Extra user options:
  Display HTML mail
  Display text/plain that start <HTML> as HTML...
  DONE

cmd_display(), cmd_reply2() and cmd_forward1():
  All call ml_fetchbody(), then immediately set initial_msg[len] = '\0';
    - is this safe?
    - better way to do this?
    - factor out common code
  - Made all consistent. 
  - Sufficient space is allocated, so string[len] = '\0'; can't hurt?

Postpone message with attachments:
  Attachements get lost?
  - can't reproduce

Fix <td nowrap> problems in mailbox etc screens
  - Possible to define single mailbox "class" that calls back defined
    routines to fill in the skeleton.

  - appears to be sorted now.

29/06/2001
==========

Replace list_add, list_remove with:
  list_push, list_pop, list_shift, list_unshift
   - use unshift in filter menu

Fix frame use: init2 shouldn't be visible!

Reverse sort toggle

28/06/2001
==========

cmd_list: Trailer banner not correct if mail folder empty.

Display HTML inline with links
  Need to do this carefully to remove scripts
  Any conventions about correct way to do this?
   - steal code from sqwebmail which appears to have the right ideas.
  - DONE

Need to improve html_secure_strip_all()
  - replace with html_to_text fn that strips all tags,
    and can translate <&amp;> style codes!
  - DONE

27/06/2001
==========

sp253 bug reports:

June 07 - problem with Addressbook Entry 
          regrettably not reliably reproducible
          After a series of actions, e.g. adding and deleting
          entries, there comes a point when an attempt to add
          an entry fails quietly - i.e. after the Add/Update entry
          button is used the user is returned to the Addressbook list
          screen but the new entry has not been added

June 07 - possible enhancement
          don't let the buggers add an address entry without an
          alias part.

June 19 - HTML buglet - Address Search
          two <form> and only one </form>

June 19 - I would like to add some general words of wisdom somewhere
          along the lines of if you don't logout and the session times
          out you'll lose any changes you made to addressbook or options.
          Could be somewhere general or could be on options and
          addressbook entry pages.  Latter easier owing to handy links
          already there.  General location would also be nice - where?

June 21 - bug in novice message list screen - remove "Mark" td in tr

June 21 - with frames off I still get a target=_top assoc with Logout
          Options screen

June 22 - problem with changing password.  After an initial couple
          of deliberate mistakes entered correct current and valid
          new.  After selecting Change Password the session "hung"
          in the sense that the only action accepted was to use
          the "Stop" button in Netscape.  
          An accountd was started on prism at the time at which
          the Change Password button used
          sp999 15271  5250  0 12:27:38 ?        0:00 ./accountd --daemon

June 25 - Message list screen.  If "Mark All" selected, then "Zoom" should
          not appear

June 25 - small buglet in message listing - to do with division of
          number of messages in mailbox by number you want to list?    
          Scenario:-
          Start with listing 20 messages
          Take a mailbox with 20 messages in it.
          Change to listing 10
          Using the Prev/Next/First/Last buttons will only show you
             1-10 and 20 (it is not possible to list 11-19)
          There is a subtly different thing if you change to, say, 9 or the 
          default 12 messages per screen, the movement through the
          mailbox using Prev/Next/First/Last is:-
           - choosing 12 messages lists 1-12 and 12-20 (rather than 13-20)
           - choosing 9 lists 1-9, 9-17, 18-20

June 25 - stray (control) characters in "ACTION=" in forms.  Unfortunately
          I can't trace when/how this started but I am now noticing it
          every time I View Source or save a page, e.g. in
          mailbox list screen 
          (not maybe the most useful bug report :-( )
  FIXED: Actually stray <form> on banner screens after favourite
         folders set up. Missing fl->form = NIL in banner_reset;

June 25 - there are some stray wrapping of text in table cells.  Examples
          include
	   - mailbox list after one or more "favourite" mailboxes selected
  - Need to fix systematically
  - single mailbox listing fn with callbacks would be very useful.

 - Moved to separate TODO list

27/06/2001
==========

Passwords, quota etc screen:
   We are missing a screen for changing passwords, checking quotas and
   setting vacation/forward messages. This is going to require some
   kind of special protocol server at the Hermes end.


21/06/2001
==========

Added:
  Password Change
  Fullname Change
  Check Quota

Added (Un)Mark All to cmd_list screen

Moved search icon from top to bottom of screen

Experimental:
  Removed nowrap from banner lines
  Switch off 'font size="2"' for time being

Added sort on To and Cc

16/06/2001
==========

Add "favorite favourite" folder
  - DONE

Add shortcuts for subscribed folders at bottom of list screen.
  - (Not convinced that we actually want to do this)
  - Save marked messages to nominated folder
  - Change to nominated folder
  - DONE!

Use HTTP/1.1 Pipelining when Mozilla/Outlook support it reliably.
  - Should be able to push lots of icons down a single connection!
  - DONE previously

14/06/2001
==========

Help text layout from Stella:
  I think the following should all be part of one page
    compose/{role_list, normal, large}

    options/{general, folder, compose, advanced}

  I am easy on search - I am quite happy to amalgamate the existing separate
  pages for Text, Date, Status and Size into the main Search page.

  You're letting novices transfer mailboxes but not addressbooks?

Folder sorting
  - new improved zoommap that combines sorting and zoom mode
  - should probably rename as "msgmap".

12/06/2001
==========

Rearranged source tree:
  src and files subdirectories...

Pine addressbook import/export
 - Partly done: have address book export/import
 - Need to switch to using Pine format address books, which appear to
   be a series of TAB separated items:

   Single item:
      alias\tName\taddress\tComment

   Distribution list:
      alias\tName\t(addr1,addr2,addr3)\tFcc\tComment

   In both cases LWS padding in use! 

  - FINISHED modulo testing. Hurrah!

Mail folder import/export (standard Unix format mail folder).
  - DONE mostly: still need to clean up a little bit.


11/06/2001
==========

Use Frame to remove history list
  - DONE

Mail folder import/export (standard Unix format mail folder).
  - DONE (need to clean up a little bit!)

Address book import/export
  - First attempt finished. Need to refine.

Record session_redirects in log!
  - DONE

Improve HTTP error page (have links back to main session?)
  - DONE

07/06/2001
==========

Added HTTP 1.1 Pipeling?
  - Need some way to test this?

Extra options:
  Autozoom   after search
  Autounzoom after aggregate operation
  "save to sent-mail" should be permanently unsettable
  Use frameset to hide history
  Use HTTP redirects
 
Check user interface:
  Add session_message() and session_log calls as appropriate.
  - DONE PARTLY come back later and see what else is possible.

Need extra abstraction level to remove duplicate calls? : NO


Make sure that every ml_ call checked for error conditions
  about 1 days work.

Do a ml_ping if session idle for more than approx 20 minutes.
  - Need separate timestamps for each MAILSTREAM.
  - ml_XXX routines can recover last access on each stream...
  - Actually now do ping and then checkpoint
  - might what to make the checkpoingt optional

Try to reduce nnumber of random cmd_restart calls?
  Possible: Make cmd_XXX fns return (T) or (NIL)
    - NIL ->  automatic redirect to cmd_restart?
  - Tried this: ended up being far more complex that needed
  - Current situation is better arrangement:
    each cmd_XXX routine will always generate a page or redirect
    even if it wasn't the page that you were expecting after a few
    transparent redirects.

Session caching
  Get rid of HTTP redirects: (as option only!)
    This causes session to disconnect.
    Netscape only: IE better behaved (sigh!)
  Better now, however POST still seems to confuse Netscape. <Sigh>.

Record session sequence number and replay last command if sequence number
doesn't match

06/06/2001
==========

Worked out why Mozilla is not using Persistent HTTP connections:
  Mozilla is broken!

Logging:
  Possible to log more information than at the moment?
    - User_Agent and other headers.


05/06/2001
==========

Help text:
  Need stubs for forms in help text. (Must be way to have inactive form!)
  Need __PREFIX__ and __SESSION_PREFIX__ substitution in help text.

11 remaining XXX comments!
  - remove 2->3, include remainder in this file for sorting.
  - DONE

Bugs:
-----

Better handling for undo.
  - Undo completely broken. Remove entirely?
  - _believe_ that this is working now. Let Stella loose on it?

Spell checker needs some work:
  Case problems.
  Why does it convert first word to lower case?
  - Appears to be okay now that we have removed a few lcases!

Remove html_table*, html_form* nonsense with minimal set of functions,
plus some macros to generate form and table elements.
  - No: current naming scheme makes much more sense.
  - Only problem is that some of the names are > 14 characters

zoommap:
  - Use memblock to avoid need to allocate, reallocate block?  : DONE
  - Partial invalidation should now be possible!
      No, typically more work to work out which parts of the zoommap
      are still valid then to you rebuild the entire thing
      (esp now malloc()/free() overhead is removed, MAILSTREAM scan
       is only remaining bottleneck).

zoommap
  - Define stream/zoommap abstraction:
  - mark message
  - unmark message
  - clear all marks
  - set all marks
     => won't need to worry about getting zm_invalidates correct
     => no main program use of elt->spae
     => may be able to optimise certain cases
  - DONE

04/06/2001
==========

Should be possible to eliminate a lot of strip_whitespaces if string
processing routines do this automatically. Does anything actually _need_
leading/trailing whitespace preserved?  Look for strip_whitespace
references.
 - Was done at some point in the past.

request_decode_get() and request_decode_post() do string_url_decode for
us. Check that we aren't duplicating this elsewhere.
 - DONE.

Need maximum Request-Size: (25 Mbytes?)
 - DONE (need to clean up error strings a bit!)

Check Makefile dependancies. makedepend?
 - DONE

cmd_dispatch():
  - Switch to use binary chop

SSL support:
  Need to regenerate RSA temporary key once an hour
  - DONE

zoommap_find(): Switch to use binary chop
  - DONE

Fixed silly bug in mark/unmark code:
  - Forgot to run zoommap invalidate
  - Would be be better to abstract out all changes to the
    zoommap -> know when to invalidate.
  - FIXED

Use STR * instead of char * for strings
  - record size in each string could make a number of string operations
    a lot more efficient
  - Lots of work:
     Think some about this.
  - Thought: I don't think that we need this. Only real use is to make
    strip_whitespace more efficient, and should be possible to do this
    automatically.
  - DISCARD

30/05/2001
==========

Need to get rid of icons on mailboxes etc screen
  - DONE

Add message status icons unless (prefs->use_icons == NIL)
  - DONE. Need combined icons for mark?

Many assorted small cleanups (Reduced XXX comment count 75 --> 12)
  - replace individual mail_flag with sequences
  - replace mail_append with mail_copy (inc sequence) when appropriate
  - ml_append does auto_create on TRYCREATE
  - add &len parameter to draft_make_recipients and draft_make_msg
      (removes silly strlens on msg)
  - paniclog <-> mm_fatal cleanup and rationalisation
    (still need to log errrors).
  - alt_addr stuff in cmd_display lifted one level
  - ml_fill_overview() [still need zoommap version!]
  - html_XXX routines renames html_XXX_table where appropriate

Replace delete/undelete etc aggregate with sequence range stuff from
cmd_list.c
  - DONE

folder object to route mail folder manipulation through one location?
  - NO

Addressbook lookup applies far too many strip_whitespaces.
  - No longer the case!

Session timeouts:
  backend should just shut down after n mins of inactivity (should be easy!)
  - Did this some time ago!

29/05/2001
==========

Added address and subject length cap (using string_prune) on cmd_compose
(postponed message) and cmd_list screens.

Replace all UID tests in
  cmd_delete etc with single call.


25/05/2001
==========

May 23 - HTML buglet - Options form
         -  <H3>General Options:</H3>
            <td><input type="hidden" name="type" value="general"></td>
            The <TD></TD> is not inside a table
         - No <P></P> round "User Interface Level:" although I agree
           this buggers the spacing.  Works with another TABLE

May 23 - HTML buglet - Options -> Roles
           Multiple occurrences of 
		<HTML>
		<HEAD><TITLE>Roles</TITLE></HEAD>
           etc.
         No <P></P> round "Options:"

May 24 - Did you say you were going to add a "Back" to the main options
         screen?

May 22 - Options form
         - What's on each sub-form in the way of "Help", "Back" etc is
           different.  There's nothing under "General", "Folder" or
           "Compose".  There's 3 GIFS under "Roles" and a "Back" input
           choice under "Personal Dictionary".
         - there doesn't seem to be an "action" defined for the POST
           at the top of the form?

May 24 - two probably thick queries about the Dictionary screen.  
         - If they can delete worms by clicking on them do they really 
           need a "Remove" field as well?
         - Won't it confuse the little dears if they enter a Worm with
           a capital and it appears as a worm without a capital and in 
           front of the all-lower-case worms?

May 22 - odd needs

- Forms in help text, if help is HTML rather than GIF based.  
  - We need a null stub for POST and GET. One to cover both that just 
    returns a "Nope, not active" type message? Named something like
       action="https://magenta.csi.cam.ac.uk:8080/actionstub"
    maybe?
  - I imagine 
       input type="submit"
    things would be dealt with as-if-by-magic if the action changed?

-------------------------------------------

May 24 - trouble with Spell Check.  My original message was:-
    
	  Morandacat and I would like to invite you to join us, that is
	  me and mirandacat at home at CB1 3LL or rather CB1 3LD.  That
	  should trigger something in the spell checker!

         By the time I'd spell checked it (a) it didn't seem to pick
         up my all my Personal Dictionary words - these contain CB1 (which
         it did accept as OK), mirandacat and 3LD (which it didn't), and 
         it changed everything to lower case thus

	 morandacat and I would like to invite you to join us, that is
	 me and mirandacat at home at CB1 3ll or rather CB1 3ld.  That 
         should trigger something in the spell checker!  

         This appears to be related to the fact that the Personal
         Dictionary screen seems to auto-convert everything to lower
         case - see point above this?


22/05/2001
==========

Add lots of help text icons, just to cheer up Stella

Delete folder fails to remove from dircache?

Message status for messages > 100 in folder not displayed correctly!!!
  - DONE (silly string -> number conversion bug !)

Fixed running against Netscape 4.08 (ghastly hack stolen from old version
of Stunnel is not required with modern versions of openssl library:
  #define SSL_CTX_set_tmp_rsa_callback(ctx,cb) \
     SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA_CB,0,(char *)cb)

Small spelling buglets 

- Compose screen reached in expert mode after "Forward marked" selected.  
  Subject:  
  ^seperate^separate

Small HTML buglets and queries

- change <img src="/icons/foo.gif etc etc> to
  <img src="https://magenta.csi.cam.ac.uk:8080/icons/foo.gif etc etc>
      fairly generic, seen in
         message list screen, mailboxes screen

- delete the </h4> after the CRSid of the logged-in-user
    screens so far - message list, mailboxes, addressbook

- in the message list screen - the first <table width=100%>
  add " " <table width="100%">
   so far seen in - message list screen

- can the blank ALT tags be filled in with something?  

- tables - 
  <tr><font size="2">
  delete the <font size> and matching </font> just before </tr> 
  bit as it's in/applicable to TDs
      screens so far - message list, mailboxes, addressbook

Stella
======

Date visible in message srceen listing changes when saving a message:
Message sent on 17th May shows as that in inbox
   20.  No   May 17   Pat Stewart   1K   An FAQ?    D S R F 
Save message to folder
Date visible in message screen listing is date of save 
  157.  No   May 18   Pat Stewart   1K   An FAQ?    D S R F 

=============================================================

Random small things

- Sometimes they're mailboxes and sometimes mail folders, e.g.
  see the "Mailboxes" screen with Subscribed "mail folders" and
  creating "mailbox".  Is there any point in standardising on one name?

21/05/2001
==========

Check running against Mozilla
  - Hangs: expecting more input that it is getting on each transaction?
    Extraneous CRLF in send_html interaction.

Something funny going on with Back button in Roles screen:

  HTTP/1.0 200 OK Date: Tue, 08 May 2001 12:18:07 GMT Server: Prayer/0.0
  MIME-Version: 1.0 Allow: GET, HEAD, POST
  Connection: Keep-Alive Content-Type: text/html; charset=iso-8859-1 Pragma:
  no-cache Cache-control: no-cache Expires:
  Tue, 08 May 2001 12:18:07 GMT Content-Length: 1589 

  blatted across the top of the screen, above the otherwise normal
  remainder of the form. A long pause showing the watch cursor ensues.
  I was going "back" from "roles" to "options". In fact it seems to be
  repeatable.

  FIXED:
    either CRLF bug or string_itoa_tmp bug

17/05/2001
==========

IMAP connection dropped after 30 minutes idle time.
  - Need automatic/transparent reconnect:: DONE

16/05/2001
==========

Transparently create sent-mail folder just like the others.
  - Should work. TRYCREATE stuff broken?
  - TRYCREATE stuff fixed, hopefully consistent.

Putting an entry such as cs-info in the addressbook shows us as cs%2Dinfo
  - Fixed: missing buffer_puts_quote_html

15/05/2001
==========

Need inactive icons on message display screen.
  - DONE

Text under icons too small.
  - Made them a bit bigger.

Draft <-> Role integration
  - Select role on compose screen
  - Trigger role based on address book.
  - NO: at least not on this interation.

09/05/2001
==========

Objective:
==========

Have something useful by next MDCM (9th May).
  - DONE!


04/05/2001
==========

Looking for silly MM bug.

Session disconnect.

03/05/2001
==========

Logging
-------

Need to log normal + abnormal events   - 2/3 days work.
  - DONE

Extra options  - about two days work.
-------------

Simple options:
 - Use icons. 
 - Size of Small and Large Compose windows: DONE

Advanced options, disabled by default: DONE using USER_LEVEL
 - Roles               : DONE
 - Postpone message    : DONE
 - Spell check         : DONE
 - Large/Small window. : DONE

Prettify the interface
 - DONE (some tweaking remains?)

Unmark after aggregate operation
 - DONE (test fully!)

02/05/2001
==========

Icons
-----

Need to apply icons
  - Need separate HTTP and HTTPS listeners!

Easy route:
 - repeat headers x 2

Harder route:
 - build up list and apply.

01/05/2001
==========

Fixed ISO-8859-1 address display. Question: other charsets?

30/04/2001
==========

Assorted things that I've decided not to do.
--------------------------------------------

Printing?
  - should be reasonably easy for plain text.
  - what to we do about inline graphics etc?
  - NO: Not unless we are specifically asked for this.

Private version of rfc822_parse_adrlist based on pool allocation
might be useful. Would remove lots of fun memory allocation.
  - Quick look suggests lots of duplication from c-client.
  - Private library of address parsing code might be appropriate!



Spelling list
-------------

 - need ability to add and remove words from the personal dictionary

Search
------

Search on date, status and size

addr.c
------

Nasty mess: must be a better way to do this!
  - DONE. (Stolen some code from Pine to estimate size of ADDR!)


Misc
----

Eliminated a few strlen and sprintf calls.

msgno should be long throughout: check.


27/04/2001
==========

Fixed include and attachments options
-------------------------------------

  - string_get_lws_line was broken. Sigh...

Fixed "reply" bug:
  Need to check Makefile dependancies are correct

Clean up session structure :: Unknown
--------------------------

Move data out into sub-structures             :: NO
  - Probably not: just clean up into groups.  :: DONE

Possible to support multiple folders?  :: DONE
  - inbox and other.

Why do we have two IMAP sessions open at the moment?
  - FIXED

Use multiple IMAP sessions:  DONE
  INBOX
  postponed messages
  One other folder != inbox

Cleaned up cmd_restart code: DONE

Cleaned up init code: only needs single IMAP session to get started

26/04/2001
==========

Postponed messages :: 2 days
------------------

Proper postponed message folder
  - "Postpone" button saves to folder
  - "Compose" looks for postponed messages (have flag)
  - "Need to check for postponed messages at startup


25/04/2001
==========

Option screens  :: 1 day  :: DONE in entirity
--------------

Make options screens work properly.
  - Need three copies of preferences data:
      initial  : In case we want to rewrite .prayer folder
      active   : Working options
      working  : for updates within options screen before commit
 - Primitives:
     Create new empty preferences list
     Generate copy of preferences
     Free up list of preferences.
 - Question: use pools?
     Preferences don't change very frequently.

Move abook and dictionary outside prefs.

Address parsing  :: 1 day
---------------

Use local versions of c-client routines for both address book lookup
and message sending. Also alt_addr stuff. DONE

Use cdb database of CRSid->Full name mapping in both places.
  - Come back and do this later

11/04/2001
==========

- Clean up folder list                  - DONE
- integrate directory cache             - DONE
- spread options over multiple screens  - DONE (Add more options!)

Address book lookup:
  Recursive aliases?                 - DONE
   Need some way to detect loops.    - DONE
   Could be more efficient!

Directory cache:                       DONE
  - at the moment invalidate whenever anything changes
  - possible to make this more efficient?

cmd_mailboxes()/cmd_save()/cmd_rename():
  - Sort out confusion and duplication
  - (suggest three separate cmd_files with common code factored out)
  - Done.



10/10/2000
==========

- "compose/fresh".

- Expunge with large numbers of messages -> out of memory
    last < first at line 236 of cmd_list_simple().

-  variant on the "Re: Re:" bug, now only applicable if the Re: is
   capitalised (RE:)

- purge in zoom mode crashes 
    need to invalidate zoom map and recalculate session->marked.

- Undisclosed Recipient list.

- Replying to 
  From: "Eburne, Katharine" <katharine.eburne@ic.ac.uk>
  strips off the quotes and sends to
  To: Eburne@cam.ac.uk, Katharine <katharine.eburne@ic.ac.uk>

- Should always download as octet/byte-stream

- Attachment names.

- Aggregate save misses stream->nmsgs

Things done by 10/10/2000
=========================

cmd_compose():
  Large window mode:                DONE
  Sort out silly interdependancies: DONE
  Add undo option:                  DONE

cmd_list():
  Should prefetch envelope data as single mail_xxx operation. Currently
  many round trips to server.

cmd_list():
  Move search stuff to bottom of screen: DONE

FULL hdrs in cmd_display

Things done by 01/10/2000
=========================

Replace popen() in cmd_send with some sane code.
  - DONE (Need to test properly!)

Add personal dictionary to spell check: DONE
  - Stage 1:
      Accept for spell check run
        - add to tmp personal dict
        - File processed line by line:
          need to remember accepts for current line (request->pool fine!)

  - Step 2:
     Add perseonal dictionary
     - Store as "Dict: " lines in prefs message.
     - send to /tmp file each time speller starts
     - record changes to personal dictionary immediately
        => don't have to parse /tmp file.

  - Try to clean up variable names used in struct speller:
      - multiple I/O streams rather confusing at the moment.

Things done by 11/08/2000
=========================

Important:
==========

Need some way to pass IP address of client on to backend to check okay.
Suggest special header line at start of request that is only allowed
on proxy connections.


DON'T worry about HTTP/1.1
  - make sure that HTTP/1.0 code is stable
  - HTTP 1.1 fron end can be bolted on afterwards,
     shouldn't affect rest of the code

Add support for Cookies.

Need unique session IDsx

Other
=====

Improve error reports.

request_* code should use any of CR, LF and CRLF for line break
  - Break on CR or LF
  - If CR swallow LF if next character
  - not urgent, should be able to replace method by method

Need to fix hash_insert

Server response 501 (Not implemented) for anything that we recognise,
don't implement.

OLD list
========

Replace message -> buffer (so name reflects actual use)
  - New methods
     bputc    (macro)
     bputchar
     buffer_seek_offset    (simple implementation)
     buffer_printf         (simple implementation: use sprintf)
     bprintf

Add simple explanatory message body to error messages
  - response_error(status)
  - All responses other than following must have Content-Length header:
      1xx (informational, not used in 1.0)
      204 (no content)
      304 (not modified)

0.9 request
  => reply with imformative message.
  DONE. Need some way to test.

%XY decoding in URLs
  - Don't think that we actually need this for Webmail only app.

Check ".." checking correct
  - don't expect ".." to be vaoid

Add nodup option to hash_update.

Need versions of hash and buffer data types which work without pool
  - suggest that NIL => no pool
  - use alloc (malloc with fatal) instead of pool_alloc
  - pool_alloc could use malloc if NIL


Get rid of ALL fixed length buffers that might involve user input?

POST requests must content Content-Length in 1.0
  - should generate 400 (bad request) if they don't

BUFFERSIZE of 0 for
   buffer_create etc should be same as iostream_create
   - use system provided default

URL encoding:
  Currently using '@XY' to encode special characters for both
  URLs and GET forms. WING only uses '@' in URLs where '%'
  might be interpreted by Apache. Do the same thing?

  DONE: %XY used everywhere apart from filenames which are embedded
  directly in URLs


HTTP 1.0 only server:
  Possible to merge iostream and buffer, reduce data copying
   only IO operations that we actually need are:
     read entire request
     write entire response.

  Actually rather messy as we need to calculate Content-Length in
  header. Simplest solution is to generate response body, then header
  and combined. Requires multiple small writes without iostream.