Re: problem with apache-dynamic engine support
hi Brian,
Thanks.
iam configuring mod_ssl after pacthing, using the command
../configure --with-apache=<path to apache> --with-ssl=<path to ssl>
--enable-rule= SSL_EXPERIMENTAL
after this i am configuring apache
CFLAGS="-DSSL_EXPERIMENTAL_ENGINE -DSSL_ENGINE" ./configure
--enable-module=ssl --enable-shared=ssl
After the investigation through the problem, i figured out that there
is a slight difference b/w freebsd and linux.
in apache it will run two processes initially.
In apache when it is scanning through the httpd.conf it will save
commands
SO_PATH, ID, LOAD
into one table which is part of libssl.so
In case of freebsd
Parent opens libssl.so and makes one reference to it. afterwards as
part of LOAD command it opens engine shared library specified by
SO_PATH
then it forks one process and detaches it self.
In child it will first closes libssl.so in ap_os_dso_unload as part of
cleanups.
Then again it opens in ap_os_dso_load. so all the variable in child are
reset back to initial values.
Then it opens engine library . This is working fine
Now in case of Linux
when the parent opens engine library it is making one more reference to
libssl.so, it has now two references.
When the child unload ssl library it is decrementing reference count of
ssl library by 1. still one reference is there, it does not unload
completely.
So all the variables are inherited from the parent. when child scans
the httpd.cong, it is adding SO_PATH,ID, LOAD as new commands to
already existing table, which has three entries inherited from the
parent. in this case
total entries are now 6.
Then child executes first three commands successfully.
when child trying to execute 4th command which is SO_PATH, it is
getting failed.
I hope i have given enough info.
Thanks
Sriram
|