Hi,
On 8/24/2015 9:29 AM, Stefan Eissing wrote:
I hope this works for everyone. The next weeks might be a good time to think
about it and propose any changes and correct my mistakes.
There are two things that go bump on my lowest non-eol version of MSVC.
h2_worker.c
.\h2_worker.c(113) : error C2440: 'function' : cannot convert from 'void
*(__cdecl *)(apr_thread_t *,void *)' to 'apr_thread_start_t'
.\h2_worker.c(113) : warning C4022: 'apr_thread_create' : pointer
mismatch for actual parameter 3
Casting execute to apr_thread_start_t (what apr_thread_create expects)
seems to quiet the compiler and FireFox seems to work with it.
h2_session.c
.\h2_session.c(1079) : error C2440: 'type cast' : cannot convert from
'int' to 'nghttp2_data_source'
.\h2_session.c(1081) : warning C4047: 'initializing' : 'int' differs in
levels of indirection from 'nghttp2_data_source_read_callback'
This cast to a union type, this MSVC version's docs on Unions has a note
in the comments mentioning;
We recommend that you do not use a union to cast data from one data
type to another because union members occupy the same address in memory.
There is no data-conversion support for unions. The results of
interchanging writes and reads between union members of different
types are unpredictable and depend on a variety of reasons.
They are evidently enforcing this. I just removed the cast and it builds
and Firefox seems to work.
Other nits of interest or not;
h2_stream_set.c
.\h2_stream_set.c(139) : warning C4028: formal parameter 2 different
from declaration
The function is prototyped as: h2_stream_set_match_fn *match
but in h2_stream_set.c it is: h2_stream_set_match_fn match
I get 2 different results for the $ENV{'SERVER_PROTOCOL'} in my perl
script depending on the machine. My server gives me "HTTP/1.1" and
running locally on my build machine I get "INCLUDED." Firefox says it is
HTTP/2.0 200 OK so both results in this $ENV seem incorrect. I'm not
sure why the difference as mod_h2 is configured same on both.
Regards,
Gregg