forked from apache/apr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
1559 lines (1150 loc) · 66.2 KB
/
CHANGES
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
Changes with APR 0.9.4
*) apr_socket_data_set(): allow the same key to be used for
multiple sockets in the same pool. [Jeff Trawick]
*) Add new table function apr_table_compress() and replace
red-black trees with mergesort in apr_table_overlap()
[Joe Schaefer <[email protected]>, Brian Pane]
*) Win32: Adopt Brian Havard's OS/2 rwlock implementation for
Windows [Marc Adkins, Bill Stoddard]
*) Add apr_proc_mutex_lockfile() for retrieving the name of the
file associated with a mutex. [Jeff Trawick]
*) Don't require the lock file name to be passed into
apr_proc_mutex_child_init() or apr_global_mutex_child_init().
This allows child init to work when the lock file was a temp
file created by APR. (The problem only occurred with flock-
based mutexes.) [Jeff Trawick]
*) When using a temporary file for flock- and fcntl-based mutexes,
don't let the file be deleted on close. For flock-based mutexes,
this corrects a fatal problem, since the file would disappear
when a program was spawned and cleanup-for-exec was performed,
and a subsequent attempt to perform child process mutex
initialization would fail. For fcntl-based mutexes, this was a
very minor issue that resulted in a failing unlink() when the
file was closed, since fcntl lock initialization always removes
the file immediately. [Jeff Trawick]
*) When writing to pipes with a timeout set, handle the situation
where the kernel says the pipe is writable but an attempt to
write <= PIPE_BUF bytes gets EAGAIN. APR will now write whatever
data will fit. APR applications that relied on the atomic nature
of relatively small pipe write requests may be affected.
PR 20295 [Mark Street <[email protected]>, Jeff Trawick]
*) Define _THREAD_SAFE for all compilations on AIX. Previously
those of us who used the vendor compiler had it defined
implicitly and others did not. The difference became obvious
with the recent thread safety fixes to apr_password_validate().
PR 20420 [Jeff Trawick]
*) For apr_proc_detach(APR_PROC_DETACH_FOREGROUND), don't treat
a setsid() failure as fatal, as the usual cause is that the
caller is already a process group leader. PR 18519
[Jeff Trawick]
*) Fix some problems with non-blocking socket handling on unix
that resulted in infinite timeouts being used for non-blocking
sockets with apr_socket_connect() and some read/write calls.
[Jeff Trawick]
*) Fix a bug in socket timeout handling on unix that left the
socket non-blocking after disabling the timeout.
[Jacob Craig Lewallen <[email protected]>]
*) Added flag APR_FILE_ATTR_HIDDEN for manipulating the "hidden"
file attribute on Windows and OS/2. [Branko Cibej]
*) SECURITY [CAN-2003-0245]: Fixed a bug that could be triggered
remotely through mod_dav and possibly other mechanisms, causing
an Apache child process to crash. The crash was first reported
by David Endler <[email protected]> and was researched and
fixed by Joe Orton <[email protected]>. Details will be released
on 30 May 2003.
*) apr_proc_wait(): Handle interrupted waitpid(2) calls by calling
it repeatedly until it succeeds or fails with errno other than
EINTR. This hides this UNIX-specific behavior from APR clients.
*) Removed the solaris-specific atomic code, due to licence
concerns (it was MPL 1.0, and the author could not be contacted)
[Ian Holsman]
*) apr_file_gets(): Return APR_SUCCESS if any characters are
returned. Any I/O errors or EOF will be reported on the
next call. Callers that are coded to expect returned
data + APR_EOF when there is no final newline are affected
by this change. [Jeff Trawick]
*) apr_proc_create() on Unix: Make the APR_SHELLCMD mode work
when there is more than one program argument passed in.
[Jeff Trawick]
*) Add --cc and --cpp flags to apr-config. [Jeff Trawick]
*) Don't segfault trying to close a file in error paths of flock
and fcntl mutex creation. PR 19036 [Jeff Trawick]
*) Add %pT support to apr_snprintf() for printing an apr_os_thread_t.
[Jeff Trawick]
*) Add APR_TCP_NODELAY_INHERITED & APR_O_NONBLOCK_INHERITED to apr.hw
[Allan Edwards]
*) Add APR_UINT64_T_HEX_FMT. [Jeff Trawick]
*) Add parameter to APR_SUBDIR_CONFIG to drop options passed to configure
before the subdir's configure is invoked.
[Jeff Trawick, Justin Erenkrantz]
*) Implement APR_SO_RCVBUF socket option on Unix.
[Adam Sussman <[email protected]>]
*) Don't add the math library (-lm) if the modf() function
is already available via libc. [Roy Fielding]
*) Solaris cc: Don't use the -mt option for threaded builds. That
is for non-Posix threading, and the use of it prevented us from
linking with -lpthread, which in turn caused weird problems for
APR applications. [Kristofer Spinka <[email protected]>]
*) OS/2: apr_stat() fixes - When a character device is stat'ed,
fill in finfo.name if it was asked for. Return APR_INCOMPLETE
when appropriate. Addresses httpd incident [CAN-2003-0134].
[Brian Havard]
Changes with APR 0.9.3
*) Don't enable posixsem, at build time, on systems where sem_t *
won't "fit" into an int (sizeof-wise). Also, better error handling
when we fail to create a posixsem. PR 17186 [Scott Herod
<[email protected]>, Jim Jagielski]
*) Default hpux 10.x to disable threading, since if it exists at all
the pthread implementation should not be trusted, while hpux 10
had its own threads implementation that is no longer supported.
PR 9457 [William Rowe]
*) Fix error in apr-config when symlinks are involved.
[Garrett Rooney <[email protected]>]
Changes with APR 0.9.2
*) Numerous bug fixes for file and socket inheritence by child
processes on Unix, correcting bugs that affected the correct
behavior of apr_[file|socket]_inherit_[un]set() API.
[Bjoern A. Zeeb <[email protected]>, William Rowe, Joe Orton]
*) Define APR_UINT64_T_FMT and APR_UINT64_T_FMT_LEN.
Define APR_INT64_T_FMT_LEN on Windows and Netware. [Branko Cibej]
*) Correct apr_file_gets() on OS2 and Win32 so that '\r's are no longer
eaten, and apr_file_gets() -> apr_file_puts() moves the contents
uncorrupted. [William Rowe]
*) Alter Win32's handling of the apr_proc_t hproc member, so that we
close that system handle wherever an apr function would invoke the
final waitpid() against a zombie process on Unix. [William Rowe]
*) APR_MAX_SECONDS_TO_LINGER and APR_FNM_* #defines replace their
old undecorated names (missing APR_ prefix). The old names will
disappear with APR 1.0.0.
[Craig Rodrigues <[email protected]>, William Rowe]
*) When generating a semaphore name for posixsem locking, try to
be a little more robust (and unique). [Jim Jagielski]
*) Add functions apr_env_get, apr_env_set and apr_env_delete for
manipulating the environment. [Branko Cibej]
*) Fix APR_LAYOUT to work with layout files with no preceding blank lines
and emit errors when layout is not found. PR 15679.
[Justin Erenkrantz]
*) Add functions apr_filepath_list_split and apr_filepath_list_merge
for managing search paths. [Branko Cibej]
*) Introduce Release mode debugging symbols for Win32 builds of apr.
All library builds gain /Zi for debug symbols (which are discarded
at link time if some flavor of the /debug flag isn't passed to link)
and .dll builds gain .pdb symbols. [Allen Edwards, William Rowe]
*) Add two new proc attributes to improve diagnostics for
apr_proc_create() failures on platforms where fork()+exec() is used.
See the doc for apr_procattr_child_errfn_set() and
apr_procattr_error_check_set(). [Jeff Trawick]
*) Rename rules.mk to apr_rules.mk and make apr_rules.mk be installed.
[Thom May]
*) Fix a bug in apr_proc_create() that could cause a new child process
to run the parent's code if setrlimit() fails. [Jeff Trawick]
*) Disable apr_socket_sendfile() on 64-bit AIX to avoid an apparent
system problem. PR 11408. [Jeff Trawick]
*) Add --includedir flag to apr-config. [Justin Erenkrantz]
*) Only include sys/syslimits.h if we don't have limits.h
[Craig Rodrigues <[email protected]>, Garrett Rooney
<[email protected]>, Thom May]
*) Allow apr-config to work in symlinked install directories when
'realpath' is available. [Justin Erenkrantz]
*) Namespace protect the header files in include/arch
[Thom May]
*) Add function apr_filepath_encoding and associated constants.
[Branko Cibej]
*) Allow apr_hash to have greater than int number of elements.
[Justin Erenkrantz]
*) Allow generation of dependencies by non-GCC compilers.
[Justin Erenkrantz]
*) Prevent obscenely large values of precision in apr_vformatter
from clobbering a buffer. [Sander Striker, Jim Jagielski]
*) limit the renames performed in apr_rename.pl to the most recent renames.
[Thom May]
*) Changed apr_mmap_dup() and friends so that there's no longer any
is_owner concept on the mmaped region, but rather something more
along the lines of a reference count. This allows the old apr_mmap_t
to still be used safely when the new apr_mmap_t is in a disjoint pool.
[Cliff Woolley, Sander Striker]
*) Fix a bug in apr_hash_merge() which caused the last entry in the
overlay hash to be lost. PR 10522 [Jeff Trawick]
*) Add DougM's apr_rename.pl script into helpers, and update for the new
batch of updates [Thom May]
*) Renames done (deprecated functions wrapped):
apr_filename_of_pathname -> apr_filepath_name_get
apr_get_groupid -> apr_gid_get
apr_get_groupname -> apr_gid_name_get
apr_compare_groups -> apr_gid_compare
apr_parse_addr_port -> apr_port_addr_parse
apr_shutdown -> apr_socket_shutdown
apr_bind -> apr_socket_bind
apr_listen -> apr_socket_listen
apr_accept -> apr_socket_accept
apr_connect -> apr_socket_connect
apr_send -> apr_socket_send
apr_sendv -> apr_socket_sendv
apr_sendto -> apr_socket_sendto
apr_implode_gmt -> apr_time_exp_gmt_get
apr_get_home_directory -> apr_uid_homepath_get
apr_get_userid -> apr_uid_get
apr_current_userid -> apr_uid_current
apr_compare_users -> apr_uid_compare
apr_get_username -> apr_uid_name_get
apr_recvfrom -> apr_socket_recvfrom
apr_sendfile -> apr_socket_sendfile
apr_recv -> apr_socket_recv
[Thom May]
*) Add APR_IPV6_V6ONLY socket option. [Jeff Trawick]
*) Update timeout algorithm in free_proc_chain. If a subprocess
did not exit immediately, the thread would sleep for 3 seconds
before checking the subprocess exit status again. In a very
common case when the subprocess was an HTTP server CGI script,
the CGI script actually exited a fraction of a second into the 3
second sleep, which effectively limited the server to serving one
CGI request every 3 seconds across a persistent connection.
[Bill Stoddard, [email protected]]
*) Update doxygen tags. [Justin Erenkrantz]
*) NetWare: implemented a file IO path context scheme to directly
reference directory paths and files in the file system rather
than having to traverse the file system on every stat() or
open() call. (Performance enhancement) [Brad Nicholes]
*) ReliantUnix: recognize that dlsym() is in libdl and dlopen() is in
libc. The check is generic so maybe this fixes some other system.
PR 14189 [Jeff Trawick]
*) Win32: Fix APR_APPEND file i/o. [Bill Stoddard]
*) Fix a problem retrieving the remote socket address for sockets
created via apr_os_sock_put() or apr_os_sock_make(). [Jeff Trawick]
*) Add recognition of and socket API support for the SCTP protocol.
[Randall Stewart <[email protected]>]
*) Win32: apr_shutdown was not honoring apr_shutdown_how_e and
always shutting down the socket for read. This could result
in Apache HTTPD 2.0 clients getting early connection closures
because lingering_close() was broken. [Bill Stoddard, Allan Edwards]
*) Add apr_atomic_casptr() to support atomic compare-and-swap
of pointers [Brian Pane]
*) Add apr_socket_create_ex() to allow protocol to be specified for the
socket. With APR 1.0, this function will be removed and apr_socket_create()
will have the additional parameter.
[Randall Stewart <[email protected]>]
*) Fix the detection of INT64_C() when defined in <stdint.h>.
[Joe Orton <[email protected]>]
*) Don't use whitespace before preprocessor directives in the configure
logic. Such whitespace breaks with some older preprocessors; a
particularly nasty break occurs on Tru64 4.0f where APR_CHECK_DEFINE
will always succeed. [Joe Orton <[email protected]>]
*) Add APR_IPV4_ADDR_OK flag to apr_sockaddr_info_get() to allow
apps to avoid lookup of IPv6 address if IPv4 address is sufficient.
(New APR_IPV6_ADDR_OK flag is similar.) [Jeff Trawick]
*) Disable IPv6 support on Darwin. The current IPv6 support has a
problem in getnameinfo() which breaks certain applications.
[Sander Temme <[email protected]>, Jeff Trawick]
*) Support for SCO OpenServer Release 5 [Kean Johnston <[email protected]>]
*) Faster (inline and mutex-free) implementations of all apr_atomic
operations for Linux/x86 (requires a 486 or later; to enable,
configure APR with --enable-nonportable-atomics=yes ) [Brian Pane]
*) Add --bindir option to apr-config. [Justin Erenkrantz]
*) Begin to rehash the test suite. There is now a new test program called
testall. This program currently runs testtime and teststr with the
CuTest framework. The stand-alone programs for testtime and teststr
can be built, but only if a special flag is specified when building.
[Ryan Bloom]
*) Fix a broken check for a failure to read from the random device file.
PR 12615 [[email protected]]
*) Print informative link errors on Darwin. [Justin Erenkrantz]
Changes with APR 0.9.1
*) Fixed usage of alloca in apr_poll() on Tru64
[Dave Hill <[email protected]>]
*) Running "make check" in the toplevel directory or the test/ directory
will build and run all test programs. [Aaron Bannert]
*) Add apr_array_pop(). [Justin Erenkrantz]
*) Fixed the native SPARC v8plus version of apr_atomic_dec
to match the semantics of the default C version [Brian Pane]
Changes with APR 0.9.0
*) If the length argument to apr_snprintf is 0, then we should return the
length that the string would be if we actually were going to fill it out.
However, if the length argument is 0, we can also accept a NULL string.
Also, added a test case for this. [Ryan Bloom]
*) Printing a string with apr_snprintf can seg fault, if a precision is
specified for the string, and the string being printed doesn't have a
trailing '\0'. Fix that seg fault by not calling strlen if a precision
is specified when printing a string. Also add a test to the test suite
for this case.
[R Samuel Klatchko <[email protected]>]
*) handle leak related to threads on Windows2000/XP
[INOUE Seiichiro <[email protected]>]
*) Includes moved to INCLUDEDIR/apr-{major} (e.g. /usr/include/apr-0)
[Greg Stein]
*) libtool versioning is used to give the library sonames a real
value. The libraries will be libapr-{major}.so.0.{minor}.{patch}
[Greg Stein]
*) Fix apr_tokenize_to_argv() to remove the escape character
(backslash) from the argument tokens. PR 11793 [Paul J. Reder]
*) Add APR_PARSE_ARGUMENTS and APR_LAYOUT macros for better layout
support. [Thom May]
*) Add parallel-apr layout which utilizes the major version number in
directories and library names. [Justin Erenkrantz]
*) Add a version number to the library name (e.g. libapr-1.so) so
that apps can do things like: -lapr-1 or -lapr-2, depending on
which version they want to use and link against. [Greg Stein]
*) Add --version to apr-config so that apps can retrieve the version
information of the (installed) APR. [Greg Stein]
*) Remove the APRVARS system; apps should use apr-config. [Greg Stein]
*) EBCDIC: fix compile failure in strings/apr_strings.c in
httpd-2.0.40 with the following error message:
CANNOT COMPILE apr_strtoi64(), only ASCII and EBCDIC supported
*) In apr_signal_thread() remove synchronous signals from the mask
passed to sigwait(). It is never valid for them to be there.
Some platforms silently ignore them, some return EINVAL, some
don't process it as desired. [Jeff Trawick]
*) Change config.nice generation to always expand variables.
[Justin Erenkrantz]
*) Renamed apr_strtoll()/apr_atoll() to follow int64 convention,
so these new helpers are apr_strtoi64/apr_atoi64(), since
'll' (long long) is a nonportable and aspecific construct.
Used ac/m4 tests to choose the appropriate fn behind strtoi64.
[William Rowe]
*) don't perform a strlen on that name value without checking for NULL
first (in getopt)
[David Waite <[email protected]>, Ian Holsman]
*) Added apr_strtoll() and apr_atoll() to strings lib.
[Shantonu Sen <[email protected]>, Wilfredo Sanchez]
*) Added a lightweight internal index to apr_table_t to speed up
table lookup operations [Brian Pane]
*) initalize handle members to invalid before calling createprocess
on win32 [Rob Saccoccio <[email protected]>]
*) Removed apr/i18n to apr-util/xlate for inclusion of apr-iconv
as required by missing libiconv. [William Rowe]
*) Removed apr/md5 and apr/uuid into apr-util/crypto. [William Rowe]
*) Add APR_BUFFERED support to apr_os_file_put(). [Justin Erenkrantz]
*) Fix misinterpretation of timeout for select() on Win32/Netware.
Identified by [TANAKA Koichi <[email protected]>]
*) Re-write apr_poll() on Unix. This improves the performance by
giving the user back control over the memory in the pollset.
[Ryan Bloom]
*) Added APR_LIMIT_NOFILE option to apr_procattr_limit_set() to
control the file descriptor limit on platforms that support
RLIMIT_NOFILE. [Brian Pane]
*) FreeBSD: change apr_sendfile to accomodate a 4.6 kernel patch.
[Greg Ames]
*) Faster code for the apr_table get/set functions [Brian Pane]
*) Fix the userid functions on Irix to handle the way that Irix
reports a failure from getpwnam_r(). PR 10095.
[Robert I. Cowles <[email protected]>, Jeff Trawick]
*) apr_table_do() and apr_table_vdo() now return an int rather than
void to indicate whether or not any of its iterations returned 0.
[Cliff Woolley]
*) Fix the definition of union semun so that it is valid on systems
where sizeof(long) != sizeof(int). This resolves a hang on
HP-UX/Itanium.
[Madhusudan Mathihalli <[email protected]>]
*) Correct shared library support on Darwin to not fatally error out
when a shared library does not exist. [Justin Erenkrantz]
*) Added optimized atomic CAS support for Linux/x86 (available only
when APR is configured with --enable-nonportable-atomics=yes)
[Brian Pane]
*) Fix a compile error in the EGD support in rand.c on older Solaris
versions. PR 9976 [Jim Morris <[email protected]>]
*) Fixed apr_file_seek() to unset the eof_hit flag. [Stas Bekman]
*) Removed --disable-atomics flag and added --enable-nonportable-atomics,
thereby defaulting to portable binaries on those systems that could
be optimized at the expense of portability. PR: 9507 [Aaron Bannert]
*) Added 2 additional lock functions: apr_proc_mutex_name and
apr_proc_mutex_defname which returns the type name of the mutex
(eg: "sysvsem") as well as the default mutex type (APR_LOCK_DEFAULT).
Mostly useful under Unix were the locktypes are selectable.
[Jim Jagielski]
*) Fixed apr_generate_random_bytes() for Win32 on Win NT or 9x by
dropping the 0x40 bit (CRYPT_SILENT) for earlier OS'es.
PR 9286 [William Rowe]
*) Added --with-devrandom=[DEV] configure flag which allows a particular
"/dev/random"-compatible device to be specified, overriding the
default search path (/dev/random then /dev/arandom then /dev/urandom).
Also, if --with-egd=<path> is specified, it now implies
--without-devrandom. [Cliff Woolley]
*) Darwin/Mac OS X: Don't leave zombie processes when the app calls
apr_signal(SIGCHLD, SIG_IGN). This fixes a problem with Apache's
mod_cgid. PR 9168. [Jeff Trawick]
*) Win32: Fix bug where apr_sendfile() was incorrectly returning
APR_SUCCESS on a TransmitFile call that was interrupted by
the client closing its end of the connection. Always call
GetOverlappedResults() to get results of async TransmitFile()
completion notification. [Bill Stoddard]
*) Renamed APR_XtOffset -> APR_OFFSET and APR_XtOffsetOf -> APR_OFFSETOF.
[Cliff Woolley]
*) Cygwin: the unix version of apr_file_open() must respect the
APR_BINARY flag if the underlying platform requires it (in
which case we assume O_BINARY is defined). PR 9185.
[Cliff Woolley]
*) Linux, AIX: Use crypt_r() instead of crypt() because the native
crypt() is not thread-safe. The misuse of crypt() led to
intermittent failures with Apache basic authentication when crypt
passwords were being used. [Jeff Trawick]
*) AIX: Global mutexes don't need an intraprocess mutex when SysV
sems are used for the crossprocess mutex.
Darwin: The same optimization was applied for Posix sems.
[Jeff Trawick]
*) Fix a problem with global mutexes on OS/390 when something other
than the default mechanism (SysV sem) was used. The mutexes didn't
necessarily block out other threads in the same process.
[Jeff Trawick]
*) Fixed apr_strfsize formatting of values over 1 gig
[Matsuzaki Yoshinobu <[email protected]>]
*) Renamed --disable-atomics as --disable-optimized-atomics,
since it doesn't really disable the atomics. [Aaron Bannert]
*) Converted apr_pcalloc to a macro [Brian Pane]
*) Fixed APR_STATUS_IS_ETIMEDOUT macro.
[Dagfinn Aarvaag <[email protected]>]
*) Add --disable-atomics switch to override our handcoded assembly
optimizations. Note that this has no effect if your operating
system has a userspace atomic interface. [Justin Erenkrantz]
*) Remove Linux atomic support since it does not have a usable
userspace atomic interface. [Justin Erenkrantz]
*) Don't require that the DNS can map 127.0.0.1 when checking for
the presence/usability of getnameinfo(). PR 7642. [Jeff Trawick]
*) Remove APR_WANT_SIGNAL from apr_want.h because code must include
apr_signal.h in order to get consistent definitions. [Roy Fielding]
*) Don't try to use /dev/zero and mmap on platforms that don't
support that (such as HP-UX). PR 8537. [Justin Erenkrantz]
*) Reduce the number of apr_sendfile calls on AIX and OS/390 by
remembering when the kernel tells us the next one will block.
[Jeff Trawick]
*) Reduce the number of apr_sendfile calls on FreeBSD by remembering
when the kernel tells us the next one will block. [Greg Ames]
*) To support modules like PHP, which implement their own
loaded extensions, Darwin needs to place their public
symbols in the global table. [Marko Karppinen <[email protected]>,
Jim Jagielski]
*) Rename apr_get_groupname to apr_group_name_get.
[Thom May <[email protected]>]
*) Allow VPATH builds to properly build dependencies and switch to
a .deps dependency model to mimic httpd-2.0. [Justin Erenkrantz]
*) Tru64: Stop leaving zombies in APR apps like mod_cgid which
tell APR to ignore SIGCHLD.
[Dave Hill <[email protected]>]
*) Ensure that the ATOMIC_HASH can not be negative.
[Joe Orton <[email protected]>]
*) Fix a problem with eof reporting with Unix file I/O on
unbuffered files. [Stas Bekman <[email protected]>]
*) Rename apr_explode_time to apr_time_exp_tz.
[Thom May <[email protected]>]
*) Rename apr_explode_localtime to apr_time_exp_lt.
[Thom May <[email protected]>]
*) Set precompiler for Solaris atomics when using GNU binutils.
PR 7876. [[email protected] (Marvin Solomon)]
*) AIX: Fix breakage with 64-bit builds on versions of AIX prior
to 5L. PR 7957 [Jeff Trawick]
*) On socket write functions (apr_sendfile, apr_send, apr_sendv),
added a select to wait for writability on the socket if the
previous write was incomplete. [Jeff Trawick, Brian Pane]
*) Deprecated the apr_lock.h API. Please see the following files
for the improved thread and process locking and signaling:
apr_proc_mutex.h, apr_thread_mutex.h, apr_thread_rwlock.h,
apr_thread_cond.h, and apr_global_mutex.h. [Aaron Bannert]
*) Fix some daylight savings time breakage on (at least) AIX,
Solaris, and HP-UX. [Jeff Trawick]
*) Added support for Posix semaphores (sem_open, et.al.) for mutex
locking. We use named semaphores in this implementation. The
default priority is between pthread and sysvsem.
[Jim Jagielski]
*) Get flock-based mutexes to work in apps like Apache. Use the
same permissions on flock- and fcntl-based mutexes as Apache
1.3. [Jeff Trawick]
*) Fix apr-config so that it will not attempt to cd to a non-existent
directory. [Justin Erenkrantz]
*) Change the ordering of the apr_lock implementation method to
better match what's done in Apache 1.3. The ordering is
now (highest to lowest): pthread -> sysvsem -> fcntl -> flock.
[Jim Jagielski]
*) Improve detection of the INT64_C macro to prevent problems
with HP-UX's ANSI C compiler. PR 8932. [Justin Erenkrantz]
*) Make sure gethostbyname() can handle 255.255.255.255 if we
are to trust it to handle numeric address strings in
apr_sockaddr_info_get(). This fixes a problem on HP-UX
which led to an assertion failure at Apache startup when
using vhosts. [Jeff Trawick]
*) Don't mask SIGUSR2 [Jin Hong <[email protected]>]
*) Load libraries if they not MH_BUNDLE, but if they are not, it
just attempts to link them as shared libs.
[Pier Fumagalli <[email protected]>]
*) apr_atomic_dec now returns a zero value if the value of
the atomic is zero, non-zero otherwise [Ian Holsman]
*) When opening a file, only create an internal thread mutex
if APR_XTHREAD is set. [Brian Pane]
*) Move the kill_conditions enum in apr_thread_proc.h into the
APR namespace. kill_after_timeout et al have been renamed
appropriately (e.g., APR_KILL_AFTER_TIMEOUT). [Jeff Trawick]
*) Fix a segfault in apr_thread_rwlock_destroy() on Win32.
[INOUE Seiichiro <[email protected]>]
*) configure now checks to see if we can change DNS timeout values
[Ian Holsman]
*) Fix a bug in apr_file_seek() on Unix when using buffered
files. PR 10003 [Jeff Trawick]
*) Small table performance optimization: eliminate the
zero-fill of newly allocated elements when expanding
a table's size. [Brian Pane]
*) Allow APR to install its generated libtool(s) via the
--with-installbuilddir option (defaults to ${datadir}/build).
[Justin Erenkrantz]
*) renames: apr_ansi_time_to_apr_time becomes apr_time_ansi_put
ap_exploded_time_t becomes apr_time_exp_t
[Thom May <[email protected]>]
*) Add the APR_FILE_NOCLEANUP flag to apr_file_open().
Adding the flag will prevent the file from being closed
when the pool passed in on apr_file_open() is destroyed.
This feature is useful when using apr_os_file_get|put()
to manage the apr_os_file_t in apr_file_t (ie, file handle
caching in the HTTP server) [Bill Stoddard]
*) Win32: Fix APR_XTHREAD problems in apr_file_read()
and apr_file_write(). Multiple threads were using the
same overlapped structure and io event handle created
in the open call, which could cause unpredictable
file i/o results. [Bill Stoddard]
*) Win32: apr_proc_mutex_trylock and apr_proc_mutex_lock were
incorrectly returning APR_BUSY if the lock was previously
held by a thread that exited before releasing the lock
(ie, if the process holding the lock segfaults). The MSDN
doc says when WaitForSingleObject returns WAIT_ABANDONED,
the calling thread takes ownership of the mutex, so these
two routines should return APR_SUCCESS in this case, not
APR_BUSY. [Bill Stoddard]
*) Added a new m4 function APR_EXPAND_VAR that will iteratively
interpolate the contents of a variable, such as $sysconfdir,
for use in a borne script. [Aaron Bannert]
*) apr-atomic support for old-sparc's and gas on solaris
[Dale Ghent <[email protected]>, jean-frederic clere, Ian Holsman]
*) Change apr_proc_detach to take a parameter that can enable/disable
automatic forking (aka, to "daemonize").
[Jos Backus <[email protected]>, Aaron Bannert]
*) Implement apr_global_lock_foo() on Win32
[Bill Stoddard]
*) Fix select() argument call when waiting for IO. PR 9674.
[David MacKenzie <[email protected]>]
*) Add a new lock API (apr_global_mutex_t) to provide guaranteed
cross-process AND cross-thread mutual exclusion. [Aaron Bannert]
*) Note: We are in the process of deprecating the apr_lock.h API.
The new and improved lock/synchronization APIs now reside
in apr_thread_mutex.h, apr_proc_mutex.h, apr_thread_rwlock.h,
and apr_thread_cond.h. [Aaron Bannert]
*) Enable autoconf 2.52{f,g} build support.
[Blair Zajac <[email protected]>]
*) Added new functions for atomic operations. These are experimental
at the moment, so use in apps is discouraged [Ian Holsman]
*) Correct serious problems with the Win32 apr_file_dup2
and apr_file_open_stdxxx() fns. [William Rowe]
*) Begin implementation of the WinCE port.
[Mladen Turk <[email protected]>]
*) Disable SHMEM_MMAP_ZERO on HPUX 11.x where it is not supported.
Use SHMEM_SHMGET_ANON instead. [Aaron Bannert]
*) Fix a few attempts to add to a void * ptr in the Unix shared
memory support code. PR #9710 Per Ekman [[email protected]]
*) In the Linux apr_sendfile(), fix the types of some parameters
to apr_send() and apr_recv(). Breakage was seen in 64-bit mode
on s/390. PR #9712 [[email protected]]
*) added APR_PROGRAM_ENV and APR_PROGRAM_PATH options for starting
processes via apr_proc_create() [Greg Stein]
*) Deprecated apr_pool_free_blocks_num_bytes() [Sander Striker]
*) Add --enable-pool-debug to make it easier for people to
enable pool debug mode. Removed the APR_POOL_DEBUG_VERBOSE
define that was previously being used. [Sander Striker]
*) Changed the apr_file_dup2() function prototype. It can only
take and reuse an apr_file_t*, and will no longer create one
if *new_file == NULL (use apr_file_dup() for that). [Aaron Bannert]
*) Implemented name-based shared memory on Unix. [Aaron Bannert]
*) Fix spelling mistakes in APRDesign.
[Blair Zajac <[email protected]>]
*) Ensure that apr_file_mktemp creates the temp file if it isn't there.
[John Sterling <[email protected]>]
*) Make sure to pre-mark anon SysV shared memory segments as
removed. [Jim Jagielski]
*) Add --with-efence to allow usage of Electric Fence.
[Justin Erenkrantz]
*) Updated the pools debug code. Check if a pool is still
valid on the most common apr_pool_xxx functions.
Fix the way APR_POOL_DEBUG_VERBOSE was using stderr.
Make the output somewhat nicer in this debug mode. [Sander Striker]
*) Add new define APR_POOL_DEBUG_VERBOSE which spits out info
about pool creation/destruction [Ian Holsman]
*) Fix GMT offset adjustments for platforms that do not have native
GMT offset adjustments. [Jon Travis <[email protected]>]
*) Add new apr_shm_t API and remove old apr_shmem_t API. The new
API handles both anonymous and name-based shared memory. Anonymous
shared memory segments are only usable on systems with process
inheritance, and so the new API with name-based segments is
usable on platforms like Win32. [Aaron Bannert and William Rowe
with much help from Justin Erenkrantz and Sander Striker]
*) Add --with-egd to support EGD-compatible entropy gatherers for
those platforms without native support. [Justin Erenkrantz]
*) apr_lock_create() and apr_proc_mutex_create() now have an
additional parameter for specifying the lock mechanism.
apr_lock_create_np() and apr_proc_mutex_create_np() have been
removed. [Jeff Trawick]
*) Change the prototype of apr_thread_exit() so that the apr_status_t
is no longer a pointer. It was difficult and sometimes hazardous
to return a apr_status_t* at times, and this allows us to return
the APR_* error codes directly. [Aaron Bannert]
*) Add apr_sockaddr_equal() for comparing APR sockaddrs.
[Jeff Trawick]
*) Win32: apr_sendfile() should return APR_ENOTIMPL if
oslevel < WINNT. [Bill Stoddard]
*) Put new pools code in place which allows applications to
switch off locking on pools operations in case a pool is
guaranteed to never being used in more than one thread
at the same time. We've seen a significant performance
improvement over the old code. [Sander Striker]
*) Add apr-config - a shell script to allow third-party programs
easy access to APR configuration parameters. [Justin Erenkrantz]
*) Add find_apr.m4 to allow third-party programs that use APR to
have a standard m4 macro for detection. [Greg Stein]
*) SEGV in apr_table_overlap [Brian Pane]
*) apr_array_copy speedup by removing the zero-fill [Brian Pane]
*) Fix build breakage on systems with getaddrinfo() but not
gai_strerror() (e.g., RedHat 5.2). [Jeff Trawick]
*) Fix a problem in Unix apr_file_dup() which caused 0 to be returned
by the first read. [Stas Bekman <[email protected]>]
*) Fix a buglet that caused APR_FILE_BASED_SHM to be set inadvertently
on some platforms (e.g., Linux, AIX). [Jeff Trawick]
*) Speed up apr_table operations by using a cache/checksum and a
red-black tree in the overlay.
[Brian Pane <[email protected]>, Cliff Woolley]
*) Speed up apr_pool_userdata_set[n] by letting hash_set figure out
the strings length. [Brian Pane <[email protected]>]
*) New function apr_mmap_dup. This is called in the mmap_setaside.
[Brian Pane <[email protected]>]
*) Speed up the apr_hash_t implementation's handling of APR_HASH_KEY_STRING.
[Brian Pane <[email protected]>]
*) Tweak apr_gethostname() so that it detects truncation of the
name and returns an error. [Jeff Trawick]
*) Fix bug in Darwin DSO code. [Sander Temme]
*) Fix apr_setup_signal_thread() to grab the right error code from
a sigprocmask() failure. This only affects platforms that use
sigprocmask() in lieu of pthread_sigmask(). [Jeff Trawick]
*) Fix the Unix HAVE_POLL flavor of apr_poll_socket_mask() so that
it doesn't segfault. Avoid some wasted storage in a poll-related
APR structure. [INOUE Seiichiro <[email protected]>]
*) Fix apr_setup_signal_thread() so that threads don't block
synchronous signals (e.g., SIGSEGV). It is a programming error
to do so, and some platforms (e.g., Solaris, AIX) don't call any
registered signal handler when such signals are blocked.
[Jeff Trawick]
*) Change the apr_table_elts macro so that it provides access via
a const pointer instead of a non-const pointer.
[Brian Pane <[email protected]>]
*) Use strerror_r() where available, since strerror() isn't always
thread-safe. Example systems where strerror() isn't thread-safe:
Linux+glibc, AIX [Jeff Trawick]
*) Fix some file cleanup problems in apr_proc_create() which could
result in the pipes for stdin/stdout/stderr being closed
immediately. [Jeff Trawick]
*) New functions apr_hash_[merge|copy], change to overlay fn
so that it calls merge, which does a inline iteration instead
of calling the iterator function. [Brian Pane <[email protected]>]
*) Introduce the apr_pool_userdata_setn() variant that doesn't
strdup the key. Allows both the _setn() and _set() variant to
accept NULL for the cleanup. [Brian Pane <[email protected]>]
*) Re-vamp the apr_proc_wait and apr_proc_wait_all functions. We
now return the exit code from the program and a reason that the
program died, either normal exit or signalled.
[Jeff Trawick and Ryan Bloom]
*) Implement portable accessors for proc mutex. These are equivalent
to apr_os_lock_get/set, but they work for apr_proc_mutex_t types
instead. [Aaron Bannert]
*) Added a new parameter to apr_thread_mutex_init(). Now, by default,
thread mutexes are not nested (sometimes called "recursive"). To
enable nested mutexes, a flag must be passed to the init script.
Non-nested mutexes are much faster than nested ones.
[Aaron Bannert]
*) read_with_timeout in apr/file_io/win32/readwrite.c incorrectly
returned APR_SUCCESS instead of APR_EOF when PeekNamedPipe failed
and the result from GetLastError() was ERROR_BROKEN_PIPE. Because
of this, the pipe wasn't closed as soon as it could be.
[Tim Costello <[email protected]>]
*) Fix a problem in the Win32 pipe creation code called by
apr_proc_create(): It didn't register cleanups for either the
read or the write ends of the pipe, so file handles (and event
handles for pipes with asynchronous I/O mode set) are never
closed. [Tim Costello <[email protected]>]
*) Add support for QNX 6. [J.T. Conklin <[email protected]>]
*) We now create exports.c and export_vars.h, which in turn create
exports.c. From this we generate two more files with different
purposes: apr.exp - list of exported symbols; and exports.lo
(exports.o) - an object file that can be linked with an executable
to force resolution of all apr symbols. [Aaron Bannert]
*) Add the apr_thread_cond_timedwait function to the condition
variable API. [Aaron Bannert]
*) Fixed apr_file_mktemp on systems without mkstemp (Win32, etc).
[Mladen Turk, Cliff Woolley]
*) Fix a segfault in apr_poll_clear on Unix. Also fix the logic
for the case where there are multiple events ORed together in
the events list. [Jamshid Mahdavi <[email protected]>]
*) Files opened on Unix with the flag APR_DELONCLOSE are now
not unlinked until they are actually closed, rather than as
soon as they're opened. The old approach worked but made
handling temp files harder. [Cliff Woolley]
*) Fix potential segfault when closing a file on Unix. If
apr_file_close() was called and it failed, it would not
deregister the file cleanup. Therefore the cleanup would
be run again later on a now-invalid descriptor. [Cliff Woolley]
*) Introduce apr_pool_lock for debugging, in combination with
ALLOC_USE_MALLOC + DEBUG_WITH_MPROTECT. Only implemented
on Win32 today, very effective for debugging pool constness.
[William Rowe]
*) Optimize apr_pstrcat by caching lengths of first 6 strings
[Brian Pane <[email protected]>]
*) Add pool accessors to the apr_thread_mutex_t datatype.
[Aaron Bannert <[email protected]>]
*) Add the apr_file_mktemp function. This creates and opens a
temporary file, for use by the program. This file is created
delete_on_close. The initial implementation only works on
Unix, but Windows is coming soon. [Ryan Bloom]
*) Make the unix version of apr_proc_wait_all_procs a simple wrapper
around apr_proc_wait, and which extracts the exit code from the
status returned by waitpid.
[Kevin Pilch-Bisson <[email protected]>]
*) Add process locking API to APR. [Aaron Bannert <[email protected]>]
*) Add condition variables for Windows. [Ryan Bloom]
*) Add condition variables to the APR set of locking functions.
This does Unix, and provides stubs for all other platforms.
[Aaron Bannert <[email protected]>]
*) Don't search for IPv6 names in apr_sockaddr_info_get() if the
application doesn't specify the family (i.e., the application
passes in AF_UNSPEC) and APR isn't built with IPv6 support.
[Jeff Trawick]
*) Fix the API for the apr_proc_create() call on Win32. Several
bad assumptions are gone, including a mismatch between unix and
win32, where win32 was defaulting to create detached. Also fixes
the apr_proc_t's pid member to a real pid (identity that works
across processes) instead of the handle (which is a new hproc
member value.) [William Rowe]
*) Modify the external apr_filepath_get() fn to take a flags arg,
currently only for APR_FILEPATH_NATIVE. This returns c:\foo
format on Win32, and should do the same on OS2, or sys\vol:\foo
on Netware. Primarily for internals, but possibly useful to
others (and it mirrors some of the other apr_filepath_*() calls.)
[William Rowe]
*) Add the new thread read/write lock API to APR.
[Aaron Bannert <[email protected]>]
*) Add the new thread mutex lock API to APR.
[Aaron Bannert <[email protected]>]
*) Cache GMT offset on platforms that don't store it in the tm struct.
This offset is normalized to be independent of daylight savings
time. [Brian Pane <[email protected]>]
*) Initial support for cygwin. [Stipe Tolj <[email protected]>]
*) Fix a problem with buffered files on Unix. [Brian Havard]
*) Fix the bungling of getaddrinfo() error codes. [Jeff Trawick]
*) Add an apr_thread_once function to APR. This allows a
program to ensure that a function is only called once.
[Ryan Bloom]
*) APR Documentation is now in Doxygen format.
[Ian Holsman]
*) Get apr_ungetc() to work with buffered files on Unix.
[Jeff Trawick]