summaryrefslogtreecommitdiffstats
path: root/ChangeLog
blob: 7244bbe3081f17c8ce5f4c33a9fe3f91d3d23f19 (plain)
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
2010-03-05  Pawel Salek <pawsa@fedorapeople.org>

	* examples/mail-file.c: allow testing submission to smtps service.
	* libesmtp-private.h: add negotiate_ssl() prototype.
	* libesmtp.h: add  Starttls_OVER_SSL to starttls_option enum.
	* protocol.h: enable SSL on connection whenever selected.
	* smtp-tls.c: share negotiate_ssl().

2005-12-16 Stable Version 1.0.4 released
----------------------------------------
2005-12-16 	Brian Stafford	<brian@stafford.uklinux.net>
      * headers.c
	Replaced static counter used when generating the default Message-Id
	header with getpid() to minimise the risk of 2 processes generating
	the same Message-Id.  If the platform provides gettimeofday() this is
	used to further reduce the possibility of collision.
	Thanks to Dmitry Maksyoma <dmaks@esphion.com> for spotting this and
	suggesting the fix.

      * Makefile.am */Makefile.am
	Replace CFLAGS with AM_CFLAGS to silence warning from automake.
	
      * Makefile.am COPYING COPYING.LIB
	Fixed the names of the files with the GPL and LGPL.  It seems
	the LGPL version of COPYING got zapped by autoconf at some time
	in the past.

2005-08-29	Brian Stafford	<brian@stafford.uklinux.net>
      * acinclude.m4
	Fix underquoted definition of ACX_WHICH_GETHOSTBYNAME_R.  Thanks
	to Matthias Andree <matthias.andree@gmx.de>.

2005-07-25	Brian Stafford	<brian@stafford.uklinux.net>
      * errors.c
	Added #ifdefs for some of the EAI_ constants used by getaddrinfo()
	which are not defined by OSX.
	Thanks to Thomas Deselaers <deselaers@gmail.com>

2005-07-21	Brian Stafford	<brian@stafford.uklinux.net>
      * acinclude.m4
	Fix cross compiling issue when detecting snprintf as suggested by
	Chris Richards <Chris.Richards@red-m.com>

2005-07-02	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-api.c
	Plug memory leaks in smtp_destroy_session() and smtp_set_server().
	Thanks to Bas ten Berge <sam.ten.berge@hccnet.nl> for report and patch.
	Also reported by Heikki Lindholm <heikki.lindholm@ipnetworks.fi>

2005-02-03 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c
	exts was set with the wrong flag (DSN) when checking if CHUNKING
	is a required extension.

2004-07-16 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-tls.c
	Applied OpenSSL patch from Pawel Salek when checking subjectAltName.

2004-04-20 Stable Version 1.0.3 released
----------------------------------------
2004-04-20 	Brian Stafford	<brian@stafford.uklinux.net>
      * memrchr.c configure.in
	Added memrchr() implementation for systems that don't have one.

      * smtp-tls.c
	Applied patches from Pawel Salek to check subjectAltName for
	wildcarded domain name when validating server certificate.


2004-01-06 Stable Version 1.0.2 released
--------------------------------------
2003-12-01 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-tls.c examples/mail-file.c
	Applied patch from Pawel Salek.

      * smtp-tls.c
        Fixed typo in check_file() which prevented it from doing quite
	the right thing.
	The domain name check for the server certificate is now implemented
	using the wildcard match described in RFC 2818.
	Check_file() and check_directory() return different values for
	unusable vs absent files.

2003-09-12 Stable Version 1.0.1 released
--------------------------------------
2003-09-11 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c smtp-auth.c smtp-bdat.c smtp-etrn.c smtp-tls.c
	More thoroughly check return value from read_smtp_response().

      * libesmtp.h errors.c
        Added new "Client error" error code.  This is just a cop-out,
        used when an API called by libesmtp fails.

      * base64.c
	Make conversions immune to NULL source data,

      * examples/mail-file.c
	Cleaned up some compiler warnings

2003-09-02 	Brian Stafford	<brian@stafford.uklinux.net>
      * siobuf.[hc]
	Added a few extra sio_ calls.  Not actually used in libESMTP though.

2003-07-29 	Brian Stafford	<brian@stafford.uklinux.net>
      * concatenate.c errors.c getaddrinfo.c headers.c htable.c
      * protocol.c siobuf.c
	Don't perform zero length operations using the memxxx() functions.
	This may avoid segfaults on some platforms or libraries.

      * siobuf.c
        Improved handling of flushes in sio_write() particularly in the
        case where data would exactly fill remaining space in the buffer.

2003-07-27 	Brian Stafford	<brian@stafford.uklinux.net>
      * rfc2822date.c
	Correct leap year compensation for January and February in
	libesmtp_mktime().

2003-07-27 	Brian Stafford	<brian@stafford.uklinux.net>
      * examples/Makefile
	Changed compiler flags from -ansi to -std=c99 and added -W

2003-03-04 	Brian Stafford	<brian@stafford.uklinux.net>
      * headers.c
	Eliminated bug where find_header() could pass -1 to the length
	argument of memchr() causing a core dump on some architectures.

2003-02-26 	Brian Stafford	<brian@stafford.uklinux.net>
      * libesmtp-private.h protocol.c smtp-bdat.c
	M$ Exchange does not accept a chunk size of 0 in BDAT 0 LAST as
	explicitly permitted by RFC 3030, *sigh*.  Hackish workaround
	implemented.

2003-01-27 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in Makefile.am
	Added DIST_SUBDIRS macro to make sure tarball gets built properly.
	This one slipped past 'make distcheck' last time for some reason
	but then autoconf & friends are totally inscruitable.

      * ntlm/ntlmdes.c
        OpenSSL 0.9.7 changes some typedefs.  Changed to suit, should
        still be compatible with previous OpenSSL versions.

2002-11-09 Stable Version 1.0 released
--------------------------------------
2002-11-09 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in
      	All version 1.0 features enabled by default.
	--enable-isoc now sets -std=c99 instead of -ansi

      * headers.c
	Added missing check for NULL pointer in destroy_header_table.
	Reversed order of freeing header structures and hash table to
	avoid referencing freed memory. (Wally Yau)

2002-06-24 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-etrn.c
	Compilation fails with `./configure --enable-more-warnings=picky
	--disable-etrn'.  Added missing __attribute__ ((unused)) markers
	to offending function arguments to avoid this.

2002-06-24 Version 1.0rc1 released
----------------------------------
2002-06-24 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in Makefile.am protocol.c protocol-states.h
      * smtp-api.c smtp-bdat.c libesmtp.h libesmtp-private.h
        Added experimental support for the SMTP CHUNKING extension.

      * configure.in
	Enable non-standard AUTH= response by default.

2002-05-31 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c smtp-api.c libesmtp.h libesmtp-private.h
      	Added API call to permit protocol timeouts to be set.

      * ntlm/ntlmstruct.c
        Replaced use of byteswap.h and bswap_{16,32} with locally defined
        functions.

2002-04-24 Version 0.8.12 released
----------------------------------
2002-03-14 	Brian Stafford	<brian@stafford.uklinux.net>
      * headers.c
	Setting Hdr_PROHIBIT did not work properly.  Thanks to Ronald
	F. Guilmette for pointing this out.

2002-03-13 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c smtp-api.c libesmtp.h configure.in
      	Revoked deprecated status from smtp_option_require_all_recipients
      	and remove the corresponding --enable-require-all-recipients
      	parameter to configure.

2002-03-07 	Brian Stafford	<brian@stafford.uklinux.net>
      * libesmtp.h libesmtp-private.h protocol.c smtp-tls.c
      	RFC 2487 is obsoleted by RFC 3207.  Updated references.

      * protocol.c
      	The check for required STARTTLS was omitted when processing the
      	HELO command.  If a server did not implement EHLO the session
      	would proceed instead of quitting.  Check added and the event
      	callback added to report the missing extension to the
      	application.

2002-03-06 Version 0.8.11 released
----------------------------------

2002-03-04 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c
        Fix buffer overflow problem in read_smtp_response.  This
        overflow could be exploited by a malicious SMTP server to
        overwrite the stack and hence a carefully crafted response could
        cause arbitrary code to be executed.  Also took the opportunity
        to add a related check for a potential DoS attack which makes
        use of excessively long SMTP responses.  Thanks to Colin Phipps
        for detecting this.

      * concatenate.[ch]
        New function cat_shrink to shrink-wrap the allocated buffer.

      * libesmtp.h errors.c
        New unterminated response error code and description.

      * ntlm/ntlmstruct.c configure.in crammd5/md5.h
        stdint.h does not yet seem to be widely available causing
        compilation to fail on some platforms.  Changed uint{16,32}_t to
        unsigned{16,32}_t, detect correct sizes with autoconf and added
        typedefs in ntlmstruct.c.  Changed detection types from int to
        unsigned int in configure.in and made corresponding changes in
        crammd5/md5.h.  Thanks to Ronald F. Guilmette for spotting this.


2002-02-12 	Brian Stafford	<brian@stafford.uklinux.net>
      * strcasecmp.c strncasecmp.c
      	These now return the correct sign of result for differing strings.

2002-01-30 Version 0.8.10p1 released
------------------------------------

2002-01-29 	Brian Stafford	<brian@stafford.uklinux.net>
      * ntlm/Makefile.am
	Added ntlm.h to list of sources.  This omission stopped 0.8.10
	form building.

2002-01-29 Version 0.8.10 released
----------------------------------

2002-01-26 	Brian Stafford	<brian@stafford.uklinux.net>
      * various files
	Copyright messages now show the correct year.
	Minor tweaks to kill warnings when compiling with
	--enable-more-warnings=picky.  In a few cases this meant adding
	a few casts which superficially look unnecessary.  In other
	cases this meant adding a number of #undefs to get a vanilla
	ISOC environment.

      * missing.h
      	Added missing.h which has declarations for Posix/SUS functions
      	which may be missing from system libraries on some platforms.

      * snprintf.c configure.in
        Detect broken or missing snprintf() implementations and replace
        if necessary.  N.B. the replacement snprintf.c is taken from the
        libmutt distro and it too, is broken.  However, it *does*
        correctly truncate and \0 terminate output which is too long to
        fit in the buffer and that is the behaviour I rely on.

      * strdup.c
	Added strdup() for systems which don't have it.

      * examples/mail-file.c
      	Check for errors when smtp_start_session returns.  Fixed
      	authinteract so that responses are not accidentally overwritten.

2002-01-24 	Brian Stafford	<brian@stafford.uklinux.net>
      * htable.c configure.in strndup.c
      	Altered code to avoid the use of strndup.  strndup.c is removed
      	from the distribution.

2002-01-16 	Brian Stafford	<brian@stafford.uklinux.net>
      * ntlm/* configure.in
	Added NTLM auhentication module.

2002-01-07 	Brian Stafford	<brian@stafford.uklinux.net>
      * concatenate.c errors.c siobuf.c
      	Check return value from snprintf.

2002-01-03 Version 0.8.9 released
---------------------------------

2002-01-02 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in
      	Added -lsocket to list of libraries searched for getaddrinfo().

2001-12-29 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c configure.in
	Added hack for stupid SMTP servers that advertise AUTH using
	non-standard syntax from an internet draft that never made it
	into RFC 2554.	Because this feature is non-standard, it must
	be explicitly enabled when configuring.
	rsp_{helo,ehlo}() now reset the auth mechanism list before
	processing the result.	Previously this was done only when AUTH
	was advertised.

      * smtp-auth.c
	set_auth_mechanisms no longer resets the mechanism list
	before processing.  Added a test to avoid duplicates in the
	mechanism list.  select_auth_mechanism now guarantees to select
	the *first* usable mechanism.  The net effect of these changes
	is that multiple calls to set_auth_mechanisms accumulate.

      * auth-client.c
        Rearranged code in auth_set_mechanisms and load_client_plugin
        avoiding the need to repeat the test for plugin acceptability.

2001-12-24 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in
	Compiling with picky warnings turned on was broken.  Also,
	recent glibc versions seem to have decided that strcasecmp and
	a few other functions are GNU extensions causing compiles to
	fail because of missing declarations.  Naturally, autoconf does
	not detect this.  Added a _GNU_SOURCE define to fix this on
	potentially affected systems.  No, I don't like it either.

      * strcasecmp.c strncasecmp.c strndup.c
	Added these functions in case some systems don't provide them.

2001-12-21 	Brian Stafford	<brian@stafford.uklinux.net>
      * htable.[ch]
      	h_insert now returns a void pointer to the data instead of a
      	struct h_node eliminating the need for the h_dptr macro and
      	for code using hash tables to maintain two pointers instead
      	of one.

      * headers.c
	Updated to use the simpler hash table interface.

2001-12-10 	Brian Stafford	<brian@stafford.uklinux.net>
      * auth-client.c
	Use dlsym and friends directly on platforms that have it.

      * configure.in Makefile.am
        Detect dlsym, fall back to using libltdl for other platforms.
        libltdl is no longer distributed significantly reducing tarball
        size.

2001-12-10 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in
        A missing comma caused the test for getipnodebyname to fail on
        systems which provide it.

2001-12-06 Version 0.8.8 released
---------------------------------

2001-11-30 	Brian Stafford	<brian@stafford.uklinux.net>
      * crammd5/md5.h
      	The len parameter of md5_update differed in type between
      	prototype and definition, preventing compilation if size_t
      	is not an unsigned int.

2001-11-29 	Brian Stafford	<brian@stafford.uklinux.net>
      * crammd5/*.[ch]
      	Moved include of config.h from hmacmd5.h to hmacmd5.c.  Make
      	sure sys/types.h is included since size_t is used.

      * configure.in
      	Added some extra nonsense for systems which redefine
      	getaddrinfo to something else in netdb.h

2001-11-27 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in errors.c
	Add test for broken strerror_r on OSF-1.

2001-11-12 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in
	Updated the tests for pthreads.  Should now supply the correct
	compiler flags on more systems.

2001-11-07 Version 0.8.7 released
---------------------------------

2001-11-05 	Brian Stafford	<brian@stafford.uklinux.net>
      * errors.h libesmtp.h
	Improve handling of error codes from getaddrinfo.  Delay mapping
	of codes to make debugging easier.  libesmtp.h defines new error
	codes for the relevant EAI_XXX codes from getaddrinfo.
	smtp_strerror will use gai_strerror if appropriate.

2001-10-31 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in
	Added test for sun platforms and define __EXTENSIONS__ so that
	sun's netdb.h will declare the getaddrinfo stuff. (James McPherson)

      * crammd5/md5.[ch]
	Type sanity: change u_intXX_t to uintXX_t.  Also changed the
	argument for the buffer and length to void * and size_t
	respectively in md5_update.  Buffer for md5_final is now
	unsigned char.

2001-10-17 	Brian Stafford	<brian@stafford.uklinux.net>
      * headers.c
	Fixed a core dump bug which strikes when existing headers in a
	message are substituted.
	
      * Makefile.am
	Reinstated libesmtp.spec into tarballs.

2001-08-17 Version 0.8.6 released
---------------------------------

2001-10-17 	Brian Stafford	<brian@stafford.uklinux.net>
      * libesmtp-config.in
	Corrected output for --cflags.  Added --numeric-version to make it
	simpler for configure scripts to compare version numbers.

      * configure.in libesmtp-spec.in
      	Merged changes from Cristophe Lambin.  Spec file now creates
      	libesmtp and libesmtp-devel packages.  If OpenSSL is used
      	spec file will have openssl dependencies added.

      * Makefile.am
	Make sure libesmtp.spec and config.h do not make their way into
	tarballs.  These confused the build on some platforms.

2001-10-16 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in
      	Added --with-openssl[=DIR] option, removed --enable-starttls.
      	OpenSSL dependent features are now enabled or disabled en masse
      	using --with-openssl.

      * crammd5/md5.[ch] crammd5/Makefile.am
	Added public domain MD5 implementation to crammd5 module.  This
	enables the CRAM-MD5 mechanism to be built, even if OpenSSL is
	not available.

      * smtp-tls.c
      	Applied patch from James McPherson correcting __attribute to
      	__attribute__

2001-08-05 Version 0.8.5 released
---------------------------------

2001-10-05 	Brian Stafford	<brian@stafford.uklinux.net>
      * libesmtp.spec.in
      	Make sure libesmtp-config gets installed!

      * configure.in
	Removed STARTTLS's experimental status.  The code works and just
	needs debugging.  Certificate management is basic but usable.
      	Set defines for strict iso/posix/xopen in headers only when
      	--enable-isoc is in force.  This helps avoid disabling the
      	tm_gmtoff member in the BSD struct tm unnecessarily.

      * siobuf.[ch]
	sio_read/write use void buffers rather than char.

2001-09-28 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-tls.c
        Use the event callback to report STARTTLS in use if the security
        level was OK.

      * rfc2822date.c
	Provide a function to portably calculate the timezone offset
	when struct tm does not provide tm_gmtoff.

      * configure.in
      	Don't bother to check for gmtime[_r] since it isn't used any more.

2001-09-26 	Brian Stafford	<brian@stafford.uklinux.net>
      * headers.c
	Make sure set_to accepts NULL for the mailbox value.  Added set_cc
	which is same as set_to except it fails with a NULL mailbox.

      * Most files.
        Changed references to RFC 821/822 to RFC 2821/2822 respectively.

2001-09-24 	Brian Stafford	<brian@stafford.uklinux.net>
      * headers.c
	RFC 2822 requires only the originator and date headers to
	be present in a message.  In particular, the presence of the To:
	header is no longer required.  RFC 2822's restriction that
	headers may not appear multiple times in a messge is enforced
	respecting certain special exceptions.

      * examples/mail-file.c
        Added API call to make sure a To: header is generated if not
        in the message.

2001-09-14 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in acinclude.m4 acconfig.h
	Reverted to configure.in, reinstated acconfig.h and added
	some compatibility stuff to acinclude.m4.  All this to try
	and be compatible with autoconf 2.5 *and* 2.13.  I really
	hate autoconf.

2001-09-05 	Brian Stafford	<brian@stafford.uklinux.net>
      * getaddrinfo.c
	Check if NO_ADDRESS is defined and different to NO_DATA

2001-08-27 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c smtp-tls.c
      	Move some detail of selecting STARTTLS to smtp-tls.c

      * smtp-tls.c
	Changed STARTTLS policy for Starttls_ENABLED.  If a server offers
	STARTTLS, then it must be used and all security requirements must
	be met.  If STARTTLS is not offered the session continues in
	cleartext.  Previously, Starttls_ENABLED permitted a session to
	continue with possibly compromised security.

2001-08-22 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-tls.c libesmtp.h
        More certificate management.  Added TLS event reporting.

      * smtp-auth.c
      	Fixed behaviour for zero length responses to server challenges.

      * base64.c
	Zero length passwords caused an assertion failure in
	base64_encode.  base64_decode did not correctly strip blanks
	from strings not terminated by \0.  Neither did it correctly
	handle zero length strings.

2001-08-21 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-tls.c libesmtp.h
      	Added preliminary code for client certificate management.

      * siobuf.[ch]
	Changed sio_set_tlsclient_ctx to sio_set_tlsclient_ssl.  This
	makes things slightly more flexible for supplying different
	client certificates according to the remote host.

2001-08-20 	Brian Stafford	<brian@stafford.uklinux.net>
      * message-source.c
	Fixed memory leak in msg_source_destroy. (Pawel Salek)

2001-08-16 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.ac Makefile.am
      	Change from using LIBOBJS to LTLIBOBJS.  This prevents the
      	wrong objects from being linked by libtool when building
      	dynamic libraries.  Added code to configure.ac to correctly
      	set LTLIBOBJS and LTALLOCA.

      * smtp-api.c protocol.c errors.c libesmtp-private.h configure.ac
        Code now exclusively uses getaddrinfo.  Removed #ifdef code for
	gethostbyname.  Added conditionals for using alternative lwres
	library distributed with recent versions of bind.  Delete
	--enable-gethostbyname option.  Add --enable-emulate-getaddrinfo.

2001-08-14 	Brian Stafford	<brian@stafford.uklinux.net>
      * siobuf.c
	Remove unnecessary socket include files.

      * getaddrinfo.[ch]
	Added emulation of the RFC 2553 getaddrinfo resolver interface
	for systems that don't have it.

2001-08-13 Version 0.8.4 released
---------------------------------

2001-08-13 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c
      	Completely ignore TLS extension if TLS is already in use.

      * smtp-tls.c
      	Fix wrong comparison when initialising OpenSSL mutexes.  Record
      	the fact that TLS is in use.  Change a numeric constant to its
      	symbolic equivalent.

      * crammd5/client-crammd5.c
        Correct a typo which prevented the hmac computation being
        correctly rendered in hexadecimal.

      * examples/mail-file.c
      	Added --tls and --require-tls options and supporting code.

2001-07-31 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.ac
        Make plugin directory consistent with RPM.

      * libesmtp.spec
      	Applied patch from Pawel Salek to run ldconfig after installing.

2001-07-30 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c configure.ac
	Check for uname and use it in preference to gethostname which
	is not Posix.

2001-07-19 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.ac
      	Check for the presence of the OpenSSL headers as well as
      	the libraries.  Remove --enable-callbacks option.

      * smtp-api.c libesmtp.h
        Added smtp_version API call.

      * message-callbacks.c
      	Removed callbacks which did \n -> CRLF translation.

      * examples/mail-file.c
        Use libESMTP provided callback unless the --crlf option is
        supplied.

2001-07-07 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c smtp-api.c
      	Only include netinet/in.h if it is actually needed.

2001-07-06 Version 0.8.3 released
---------------------------------

2001-07-06 	Brian Stafford	<brian@stafford.uklinux.net>
      * examples/mail-file.c
        Made --help more helpful.  Undocumented --no-crlf now renamed
        to --crlf and documented.  When prompting for authentication
        now reads /dev/tty instead of stdin.

      * configure.ac
        Check for -lsocket.

      * protocol.c siobuf.c
        Zero errno before calling certain functions.  Normally the value
        of errno is only tested if the preceeding system call or function
        wrapping the system call failed.  However, in a few cases, the
        functions are called in a loop and the value of errno might
        be tested after a successful return.  This meant that a test
        on the value of errno might yield an invalid result, sometimes
        causing the connection to the server to be incorrectly dropped.
        Unfortunately this effect depended on the amount of data buffering
        provided by the server!

2001-06-29 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c et al.
	Added support for sendmail specific XUSR extension.  This informs
	sendmail the message is a user submission instead of relay,
	so it makes sense to issue the command.  Whether it actually
	does anything ...

      * siobuf.c
	Fixed return from poll in raw_read and raw_write so that EINTR
	is correctly handled.

2001-06-26 	Brian Stafford	<brian@stafford.uklinux.net>
      * auth-client.c
	Fixed a signed/unsigned comparison that stops compilation
	when using -Werror.

2001-06-26 Version 0.8.2 released
---------------------------------

2001-06-26 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c siobuf.c
      	Resolved a problem related to blocking/non-blocking polling
      	for server events.  This could lead to deadlock with certain
      	servers.

2001-06-24 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.ac  most C sources
      	Added --disable-isoc option.  When using gcc, -ansi -pedantic
      	are now specified by default since the code compiles without
      	warnings when using both flags.
      	Added --enable-debug option to control DEBUG and NDEBUG
      	definitions.  Assert macros used to check arguments to
      	most internal functions.

2001-06-23 	Brian Stafford	<brian@stafford.uklinux.net>
      * message-source.c
	msg_gets now checks for both \r and \n when searching for line
	endings.

      * errors.c
	API function now includes ommitted the arguments check.

2001-06-22 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c smtp-api.c configure.ac
	Now uses RFC 2553 / Posix protocol independent getaddrinfo where
	possible instead of gethostbyname family of resolver functions.

      * gethostbyname.c configure.ac
      	Added ability to use getipnodebyname and corresponding test
      	for configure.

2001-06-18 	Brian Stafford	<brian@stafford.uklinux.net>
      * auth-client.c
        More thorough argument checking on the auth_xxx APIs.
	Added some missing malloc return value checking.
	When loading a plugin, make sure it provides a response()
	function.

      * smtp-auth.c
	Added some missing malloc return value checking.

      * various sources
	Changed some 'int' types to 'size_t'

      * message-source.c
      	In msg_gets, an inconsistent pointer could cause a segfault
      	after a realloc which moved the original memory block.
      	Increased sizes of malloc/realloc so that RFC 2821 maximium
      	line length will not cause realloc.
	Added missing malloc/realloc return value checking.

      * protocol.c
	If an error occurs while copying the message to the SMTP
	server drop the connection without terminating the message.

2001-06-15 Version 0.8.1 released
---------------------------------

2001-06-13 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in
        is now configure.ac to suit autoconf 2.5
	Eliminated some redundant stuff concerned with libtool.
	Now uses AC_HELP_STRING macro where appropriate.
	Now use standard AC_FUNC_STRERROR_R macro.
	Improved checking for time.h and sys/time.h.

      * libesmtp-config.in
	If libltdl was installed, the list of libraries was set to the
	wrong thing.

      * errors.c
        Only use strerror_r if it actually works.

      * rfc822date.c
      	Try sys/time for struct tm just in case!

2001-06-12 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in
      	Now checks -lnsl when seraching for gethostbyname_r.
      	Only print a warning if strerror_r is not found.
      	Chose much more picky compiler warnings when using gcc - this
      	has knock on effects through many files.  Compiles should now
      	be much cleaner on more platforms.

      * siobuf.h
        Gcc will now check sio_printf()'s argument types against the
        format string.

      * headers.c
	Eliminated a variable which was set but not used.
	The as yet unimplemented smtp_set_resent_headers API will
	succeed if `onoff' is zero.

      * protocol.c
	Eliminated variables which were set but not used.
	Fixed an uninitialised variable bug which might strike if the
	EHLO command received a 5xx status code.  This is likely with
	older servers and may result in libESMTP dropping the connection
	instead of trying HELO.
	Fixed an uninitialised variable bug which could cause the protocol
	to QUIT inadvertently after processing the response to EHLO.

      * errors.c
        Rewrote handling of the thread specific data.

2001-06-12 Version 0.8.0 released
---------------------------------

2001-06-11 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c smtp-api.c
	DELIVERBY extension done - still to test.

2001-06-09 	Brian Stafford	<brian@stafford.uklinux.net>
      * message-callbacks.c libesmtp.h
        Added standard callback functions for reading messages. libesmtp.h
        provides macros to simplify using them.

2001-06-07 	Brian Stafford	<brian@stafford.uklinux.net>
      * message-source.c
	Changed the declaration of the message callback to make it clearer
	that the first argument in fact points to internal state allocated
	by the callback.  Strings returned to code reading the message
	are now const char *.

2001-05-31 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-api.c protocol.c configure,in
	Had another go at the smtp_require_all_recipients() API hack.
	The original implementation hoped the SMTP server would report
	failure on receiving a zero length message but this isn't
	reliable.  This API must be explicitly enabled by ./configure.

2001-05-28 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-auth.c
        Make sure the client won't attempt to authenticate when already
        authenticated.  This could happen if having authenticated and
        enables a security layer, the server offers AUTH again.

      * smtp-tls.c
        Make sure the client won't attempt to negotiate TLS when already
        using TLS.  Also don't use TLS if already authenticated.

      * siobuf.c
      	Make the code for non-blocking sockets + OpenSSL more robust.

      * errors.c
	Added default case for set_herrno().

2001-05-25 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-auth.c
      	On authentication failure the same mechanism was selected again
      	instead of moving on to the next one.  This caused an infinite
      	loop of failing AUTH exchanges.

2001-05-24 	Brian Stafford	<brian@stafford.uklinux.net>
      * libesmtp.spec.in
      	Changed "-a 0" option in %setup macro to "-T -b 0"

      * configure.in
	Removed -Werror from --enable-more-warnings=yes as this can be
	bothersome for punters.  Added --enable-more-warnings=picky to
	stop gcc from using internal prototypes for builtin functions;
	also turns on -Werror.

      * protocol.c
	free_ghbnctx() was called twice if connect() failed, potentially
	causing a SIGSEGV.  This bug was introduced with support for
	gethostbyname_r.

2001-05-23 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in
	Incremented library version and reset the age.  This is important
	because the event callback semantics have changed.
	Detect IPv6 sockaddr structure in <netinet/in.h>.

      * protocol.c
      	Added 8BITMIME support.  New API call smtp_8bitmime_set_body().
      	Report extensions after final set is known.  STARTTLS or AUTH
      	can change the set of extensions advertised by the server.
        Typo meant the RET=FULL/HDRS parameter was printed as
        SIZE=FULL/HDRS in MAIL FROM: (D'oh!)

      * errors.c
	Changed prototype for smtp_strerror() to allow use of strerror_r.

2001-05-22 	Brian Stafford	<brian@stafford.uklinux.net>
      * siobuf.c
        Fixed calls to encode/decode callbacks and added explanation of
        their semantics.  This eliminates potential for a buffer
        overflow bug when decoding expands data read from the socket.

      * libesmtp.spec.in
	Fixed inconsistency between package name and tarball.
	Use the bz2 version of the tarball as the source.

      * Makefile.am
      	Added libesmtp.spec to extra distribution files.

      * gethostbyname.c
	Added missing #include <string.h> (gcc builtin prototypes
	again - grumble....)

2001-05-21 	Brian Stafford	<brian@stafford.uklinux.net>
      * siobuf.c
      	Restructuring of reading/writing and polling to permit use
      	of non-blocking IO.

      * protocol.c
	Revised protocol outer loop makes sure the protocol engine reads
	data as soon as it becomes available and defers buffer flushes
	until after pending data from the SMTP server has been read.  In
	conjunction with non-blocking output this avoids a potential
	deadlock described in RFC 2920 when PIPELINING is in use.

2001-05-20 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-etrn.c
	Added experimental support for the ETRN extension.

      * protocol.c smtp-api.c
      	Check for failure to create a message source and added code
      	to actually destroy it thus plugging a memory leak.
      	More thorough checking of some API function arguments.

      * siobuf.c
	Added sio_mark().  When the write buffer is flushed data written
	beyond the mark is retained and the mark is deleted.

      * protocol.c
	Added new event types for flagging required extensions not
	available or reporting extensions that provide information to
	the application.
	Command boundaries are marked in the write buffer.  This
	prevents partial commands being sent to the SMTP server.

2001-05-18 Version 0.7.1 released
---------------------------------

2001-05-18 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c
      	Added AF_INET6 support.

2001-05-17 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c gethostbyname.[ch] configure.in acinclude.m4
	gethostbyname_r() now in its own file which provides a consistent
	interface.  configure selects which version of the function to
	compile for when building threaded code.

      * configure.in auth-client.h libesmtp-config.in libesmtp.spec.in
      	Directory for installing authentication plugins is now
      	configurable.

2001-05-15 	Brian Stafford	<brian@stafford.uklinux.net>
      * libesmtp.spec.in
	Added to simplify building RPM packages.

2001-05-14 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-api.c
      	Check that all messages have a callback to read the message
      	headers and body.

      * tokens.c
	Check buffer length in read_atom().
	Use of <ctype.h> eliminated.

      * headers.c
        init_header_table() checks for NULL pointers to avoid potential
        SIGSEGVs.

2001-05-13 	Brian Stafford	<brian@stafford.uklinux.net>
      * rfc822date.c configure.in
	Use localtime_r() or gmtime_r() when building a thread safe
	library.

      * concatenate.[ch]
      	Fixed incorrect shortfall caclulation in concatenate()
      	potentially leading to buffer overrun.
      	Generally tidied up code.

      * auth-client.c
      	auth_response() fails if (*context->client->init)() fails.

      * base64.c
	b64_encode() now checks the destination buffer length.

2001-05-11 	Brian Stafford	<brian@stafford.uklinux.net>
      * libesmtp-config.in Makefile.am
      	Added config script to simplify compiling and linking.

      * protocol.c configure.in
      	Use gethostbyname_r() when building a thread safe library.

2001-05-09 	Brian Stafford	<brian@stafford.uklinux.net>
      * Makefile.am configure.in
	libltdl is now part of the tarball and is installed if not
	already present.

      * protocol.c
      	do_session() will now make use of all the addresses returned
      	by gethostbyname().  This allows the DNS admin for the domain
      	to specify a number of MTAs which handle mail submission.
	Failures trying to connect or when processing the greeting or
	a response to the EHLO/HELO commands will cause a fallback server
	to be tried.  The name server will round robin the responses
	balancing the load among the servers.
      	When reading the server greeting accept only 220 otherwise the
      	connection may have been made to a non-SMTP service.

2001-05-06 Version 0.7.0 released
---------------------------------

2001-05-06 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c
	session->auth_mechanisms was incorrectly freed in do_session().
	This should have been done using destroy_auth_mechanisms().
	Moved initialisation of the session variables to the start
	of do_session().  This allows checks for some error conditions
	to be done before attempting to connect to the SMTP server.
	Updated code to select messages and recipients.  This is to
	permit calling smtp_start_session() more than once on a given
	session.  Second and subsequent calls should only deliver to
	recipients not successful in a previous SMTP session.  Removed
	a few FIXME comments that no longer apply.

      * smtp-api.c
        smtp_recipient_reset_status() clears the 'complete' flag so that
        the recipient will be retried on a subsequent smtp_start_session().
        Added a new API smtp_recipient_check_complete().  This is true if
        a subsequent call to smtp_start_session() would *not* attempt to
        post the message to this recipient.
        smtp_destroy_session() now frees memory allocated for remote
        server hostname.

      * protocol.c libesmtp-private.h smtp-api.c
        Renamed 'sent' in smtp_recipient_t structure to 'complete'.
        Not all completed recipients might have been sent.

      * protocol.c headers.c smtp-api.c
        Only call gethostname() once and save the result.  Also added
        new API smtp_set_hostname() to allow the application to change
        the default.

2001-05-03 	Brian Stafford	<brian@stafford.uklinux.net>
      * crammd5/Makefile.am crammd5/hmacmd5.[ch]
      	Renamed files to avoid name conflict with Cyrus SASL
      	include/ directory.

      * base64.c message-source.c
	Added missing #include <string.h>, egcs-2.91.66 didn't
	spot the missing prototypes.

      * examples/mail-file.c
        Ignore SIGPIPE.  Means the application isn't killed accidentally
        when something times out during the protocol session.

2001-05-02 	Brian Stafford	<brian@stafford.uklinux.net>
      * sasl-tls.c protocol.c
      	Added experimental support for STARTTLS

2001-04-31 	Brian Stafford	<brian@stafford.uklinux.net>
      * cram-md5/Makefile.am
	hmac-md5.h was missing from the list of sources and hence was
	not in the tarball.

2001-04-29 Version 0.6.1 released
--------------------------------

2001-04-30 	Brian Stafford	<brian@stafford.uklinux.net>
      * auth-client.c
	Fixed incorrect SSF comparison for authentication modules
	that were already loaded.

2001-04-29 Version 0.6a released
--------------------------------

2001-04-28 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in smtp-api.c example/mail-file.c
	Corrected inconsistently named API from smtp_set_auth_context()
	to smtp_auth_set_context().

2001-04-25 Version 0.6 released
--------------------------------

2001-04-25 	Brian Stafford	<brian@stafford.uklinux.net>
      * configure.in Makefile.am */Makefile.am
	Added detection of MD5 routines in OpenSSL, to enable
	the CRAM-MD5 SASL mechanism.

2001-04-25 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c
	Corrected parsing bug in parse_status_triplet().

2001-04-16 	Brian Stafford	<brian@stafford.uklinux.net>
      * api.h
	Added new header file.  This currently contains macros
	to aid argument checking for API functions.

      * libesmtp.h
	Changed name of API function argument check macro.

      * most files
      	Wrapped #include <config.h> with #ifdef HAVE_CONFIG_H

2001-04-11 	Brian Stafford	<brian@stafford.uklinux.net>
      * rfc822date.c
	Make sure the absolute value of minutes is used when
      	formatting the date.

      * protocol.c
	Fixed potential segfault when DATA fails before transferring
	a message.

      * smtp-auth.c
        Support for client authentication plugins now working.

      * protocol.c
	Support for SMTP AUTH extension.

2001-04-05 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c smtp-auth.c
	Removed 'want_enhanced' argument from read_smtp_response()
	since it was unnecessary.
	Added preliminary support for SMTP AUTH extension.

2001-04-04 	Brian Stafford	<brian@stafford.uklinux.net>
      * Many files
	Changes to accomodate stricter error checking options
	to gcc.

2001-04-03 	Brian Stafford	<brian@stafford.uklinux.net>
      * siobuf.c protocol.c
	Changed CONFIG_TLS to USE_TLS (not that it matters yet)
	Changed HAVE_LIBSASL to USE_SASL
	Mostly for consistency with autoconf convention.

      * configure.in
	Checks for pthreads and SASL.

2001-03-21 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-api.c
      	Fixed up some missing error reporting.

2001-03-15 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c
      	Now sets timeouts reccommended in RFC 1123 when waiting for
      	server responses.

      * errors.c libesmtp.h
      	Changed prefix from ES_ to SMTP_ERR_.  Edits to other files
      	to accommodate the change.

2001-03-14 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c libesmtp.h
        Added first lot of event monitoring callbacks.  Simplified the
        declaration for the callback function.  The callback is called
        with different arguments depending on the actual event.

2001-03-09 	Brian Stafford	<brian@stafford.uklinux.net>
      * tokens.c tokens.h protocol.c
	Added const to a few things that should have had it.  Fixed a
	corresponding declaration in protocol.c.

      * smtp-auth.c
      	Basis of the implementation of the SMTP AUTH command.  This is
      	not complete or tested yet, pending the decision about how to
      	best implement SASL.

      * siobuf.c siobuf.h
      	Added callback functions which encode or decode data just before
      	writing or after reading data between the buffers and the
      	socket.  This is for use by SASL security layers.

2001-03-07 	Brian Stafford	<brian@stafford.uklinux.net>
      * concatenate.c concatenate.h
	Added minimum_length parameter to cat_{init,reset}().

2001-03-07 	Brian Stafford	<brian@stafford.uklinux.net>
      * siobuf.c siobuf.h protocol.c
	Allow for seperate read and write file descriptors in
	sio_attach().  This is for when support for opening a pipe to
	a program running an SMTP server on its stdin/stdout is added.

      * siobuf.c siobuf.h
      	Fixed the #ifdef _buffer_h lines to #ifdef _siobuf_h (the perils
      	of cut and paste editing).

      	Added typedefs for the sio callback functions.

      	Added encoder/decoder callbacks for use with security layer parts
      	of SASL.  CONFIG_SASL stuff now gone.

2001-03-02 	Brian Stafford	<brian@stafford.uklinux.net>
      * headers.c
        Implemented the rest of destroy_header_table().

2001-02-27 Version 0.5 released
--------------------------------

2001-02-26 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c
      	Now issue RSET before MAIL FROM: if a failure response is
      	received to the DATA command.

      	Fixed possible segfaults when resetting the status in rsp_rest()
      	and rsp_quit().

      * headers.c
        Partially implemented destroy_header_table().

      * smtp-api.c
        Now calls destroy_header_table().

      * htable.c
	Allow callback in h_destroy() to be NULL.

2001-02-26 Version 0.4 released
--------------------------------

2001-02-25 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c
        Second state for the DATA command now does not transfer the
        message if there were no valid recipients.

2001-02-22 	Brian Stafford	<brian@stafford.uklinux.net>
      * smtp-api.c
        Added APIs to get/set application data in each of the opaque
        structures.

	Added protocol event callback API but only for a place holder.
	This will be used by applications which want to monitor the
	progress of the session and status changes as they happen.
	This is different from the protocol monitor which dumps the
	actual data transferred on or close to the wire.

      * headers.c
      	Added code to handle Sender:

      	Fixed From: printing; continuation lines had no leading whitespace.

      	In smtp_set_header_option() once Hdr_PROHIBIT is set, it cannot
      	be unset.  Prohibit cannot be set for headers already set.

	Added smtp_set_resent_headers() but only for a place holder.

      * protocol.c
        Correct parsing of enhanced status codes.  These are only present
        for 2xx, 4xx and 5xx SMTP status codes.

2001-02-18 Version 0.3 released
--------------------------------

2001-02-19 	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c smtp-api.c
        Port number in session structure stored in host byte order
        instead of network byte order.  This makes the port number easier
        to read in gdb.

      * protocol.c
	Removed white space which crept into the MAIL FROM: and RCPT TO:
	commands.  All the servers tested with to date have accepted
	this but it wasn't in RFC 821.

      * headers.c
	Fixed From: and Disposition-Notification-To: headers to allow
	multiple mailboxes as per RFC 822.

	Corrected syntax for default Message-Id: generation.  This
	should have been "addr-spec" per RFC 822 but didn't have an @.

      * examples/mail-file.c
      	Corrected typo that stopped --reverse-path from working.

2001-02-18 Version 0.2 released
--------------------------------
      Core libESMTP API now complete.

2001-02-18	Brian Stafford	<brian@stafford.uklinux.net>
      * examples/mail-file.c
      	Updated to tweak a few more APIs in libESMTP.
      	The example now has a very basic Makefile.

2001-02-17	Brian Stafford	<brian@stafford.uklinux.net>
      * protocol.c
        Changed use of strchr() to memchr() since strings read by the
        message callback and header functions are *not* \0 terminated.

      * headers.c
	Changed beyond all recognition. :-)
	Declaration of smtp_set_header_option() has changed.

      * New files added to support RFC 822 header processing.

2001-02-08	Brian Stafford	<brian@stafford.uklinux.net>
      * siobuf.c
      	Some additional error checking; extra thoroughness checking the
      	return value of write().

      * siobuf.c
      * protocol.c
      	Added the protocol monitor callback mechanism.

      * libesmtp.h
      * libesmtp-private.h
      * smtp-api.c
	Minor changes to the monitor callback declaration and session
	structure for the protocol monitor.

2001-02-04 Version 0.1a released
--------------------------------

2001-04-04	Brian Stafford	<brian@stafford.uklinux.net>

      * message-source.c
        Fixed a bad bug that could cause an infinite loop if a message
        was not properly terminated with a \n

2001-02-04 Version 0.1 released
-------------------------------

2001-02-04	Brian Stafford	<brian@stafford.uklinux.net>

      * Initial Release