Here's where 1.6.7 fails for CGI (but 1.6.6 works fine):
In do_cgi():
/* Register the event into the worker event-loop */
ret = mk_api->ev_add(mk_api->sched_loop(),
readpipe[0],
MK_EVENT_CUSTOM, MK_EVENT_READ, r);
if (ret != 0) {
return 403; <--------------
}
because in mk_event_add():
if ((event->status & MK_EVENT_NONE) == 0) {
return -1; <--------------
}
I don't know how the event system works, so I stopped debugging at that
point.
Trace output:
~ 4.700198 [mk|mk_server/mk_server.c:97 ] mk_server_listen_handler()
[server] New connection arrived: FD 40
~ 4.703876 [mk|mk_server/mk_server.c:419] mk_server_worker_loop() [FD
40] Event READ
~ 4.703992 [mk|mk_server/mk_scheduler.c:570] mk_sched_event_read() [FD
40] Connection Handler / read
~ 4.704072 [mk|mk_server/mk_http.c:1455] mk_http_sched_read() [FD 40]
Create HTTP session
~ 4.704144 [mk|mk_server/mk_http.c:284] mk_http_handler_read() MAX
REQUEST SIZE: 32768
~ 4.704210 [mk|mk_server/mk_http.c:328] mk_http_handler_read() [FD 40]
read 411
~ 4.704253 [mk|mk_server/mk_http.c:355] mk_http_handler_read() [FD 40]
Retry total bytes: 411
~ 4.704356 [mk|mk_server/mk_http.c:1477] mk_http_sched_read() [FD 40]
HTTP_PARSER_OK
~ 4.704428 [mk|mk_server/mk_http.c:619] mk_http_init() [FD 40] HTTP
Protocol Init, session 0xb3a064e8
---- CGI file: /home/carl/monkey-1.6.7/htdocs//cgi-bin/test.cgi
~ 4.706330 [mk|mk_server/mk_header.c:395] mk_header_set_http_status()
Set HTTP status = 403
~ 4.706393 [mk|mk_server/mk_http.c:795] mk_http_init() [FD 40] STAGE_30
returned 300
~ 4.706445 [mk|mk_server/mk_header.c:395] mk_header_set_http_status()
Set HTTP status = 403
~ 4.706528 [mk|mk_server/mk_stream.c:191] mk_channel_write() [CH 40]
STREAM_IOV, wrote 318 bytes
~ 4.706816 [mk|mk_server/mk_stream.c:202] mk_stream_bytes_consumed()
[STREAM_IOV 0xb3a064f8] bytes consumed 318/318
~ 4.706889 [mk|mk_server/mk_stream.c:227] mk_channel_write() Stream
done, unlinking (channel=0xb3a05474)
~ 4.706945 [mk|mk_server/mk_stream.c:236] mk_channel_write() [CH 40]
CHANNEL_DONE
~ 4.707003 [mk|mk_server/mk_http.c:225] mk_http_request_prepare() [FD
40] HTTP Init returning 0
~ 4.707057 [mk|mk_server/mk_stream.c:174] mk_channel_write() [CH 40]
CHANNEL_EMPTY
~ 40.533664 [mk|mk_server/mk_server.c:419] mk_server_worker_loop() [FD
40] Event READ
~ 40.533796 [mk|mk_server/mk_scheduler.c:570] mk_sched_event_read() [FD
40] Connection Handler / read
~ 40.533859 [mk|mk_server/mk_http.c:284] mk_http_handler_read() MAX
REQUEST SIZE: 32768
~ 40.533939 [mk|mk_server/mk_http.c:328] mk_http_handler_read() [FD 40]
read 0
~ 40.533998 [mk|mk_server/mk_http.c:331] mk_http_handler_read() [FD 40]
broken pipe?
~ 40.534051 [mk|mk_server/mk_server.c:431] mk_server_worker_loop() [FD
40] Event FORCE CLOSE | ret = -1
~ 40.534101 [mk|mk_server/mk_scheduler.c:687] mk_sched_event_close() [FD
40] Connection Handler, closed
~ 40.534147 [mk|mk_server/mk_http.c:1511] mk_http_sched_close() [FD 40]
HTTP sched close (type=0)
~ 40.534193 [mk|mk_server/mk_http.c:1271] mk_http_session_remove() [FD
40] HTTP Session remove
~ 40.534240 [mk|mk_server/mk_http.c:1280] mk_http_session_remove()
Hangup stage30 handler
~ 40.534288 [pl|plugins/cgi/cgi.c:464] mk_cgi_stage30_hangup() CGI /
Parent connection closed (hangup)
~ 40.534339 [mk|mk_server/mk_http.c:1388] mk_http_request_free_list()
[FD 40] Free struct client_session
~ 40.534390 [mk|mk_server/mk_scheduler.c:455] mk_sched_remove_client()
[FD 40] Scheduler remove
_______________________________________________
Monkey mailing list
[email protected]
http://lists.monkey-project.com/listinfo/monkey