mirror of
https://git.gnunet.org/libmicrohttpd.git
synced 2026-09-25 04:09:31 +03:00
mhd2spdy: changes, still importing
This commit is contained in:
+11
-7
@@ -41,6 +41,7 @@ static int run = 1;
|
||||
|
||||
static void catch_signal(int signal)
|
||||
{
|
||||
(void)signal;
|
||||
//spdy_close = 1;
|
||||
run = 0;
|
||||
}
|
||||
@@ -122,7 +123,7 @@ run_everything ()
|
||||
if(NULL == glob_opt.spdy_connection && glob_opt.only_proxy)
|
||||
PRINT_INFO("cannot connect to the proxy");
|
||||
}
|
||||
|
||||
|
||||
//PRINT_INFO("while1");
|
||||
FD_ZERO(&rs);
|
||||
FD_ZERO(&ws);
|
||||
@@ -166,7 +167,7 @@ else{*/
|
||||
connections, MAX_SPDY_CONNECTIONS, &spdy_npollfds);
|
||||
if(maxfd_s > maxfd) maxfd = maxfd_s;
|
||||
|
||||
PRINT_INFO2("MHD timeout %i %i", timeout.tv_sec, timeout.tv_usec);
|
||||
PRINT_INFO2("MHD timeout %lld %lld", (unsigned long long)timeout.tv_sec, (unsigned long long)timeout.tv_usec);
|
||||
//TODO
|
||||
//timeout.tv_sec = 0;
|
||||
//timeout.tv_usec = 0;
|
||||
@@ -174,9 +175,10 @@ else{*/
|
||||
glob_opt.spdy_data_received = false;
|
||||
|
||||
ret = select(maxfd+1, &rs, &ws, &es, &timeout);
|
||||
PRINT_INFO2("timeout now %i %i", timeout.tv_sec, timeout.tv_usec);
|
||||
PRINT_INFO2("timeout now %lld %lld", (unsigned long long)timeout.tv_sec, (unsigned long long)timeout.tv_usec);
|
||||
|
||||
switch(ret) {
|
||||
switch(ret)
|
||||
{
|
||||
case -1:
|
||||
PRINT_INFO2("select error: %i", errno);
|
||||
break;
|
||||
@@ -184,12 +186,14 @@ else{*/
|
||||
break;
|
||||
default:
|
||||
PRINT_INFO("run");
|
||||
MHD_run_from_select(daemon,&rs, &ws, &es);
|
||||
//MHD_run_from_select(daemon,&rs, &ws, &es); //not closing FDs
|
||||
MHD_run(daemon);
|
||||
spdy_run_select(&rs, &ws, &es, connections, spdy_npollfds);
|
||||
if(glob_opt.spdy_data_received)
|
||||
{
|
||||
PRINT_INFO("MHD run again");
|
||||
MHD_run_from_select(daemon,&rs, &ws, &es);
|
||||
//MHD_run_from_select(daemon,&rs, &ws, &es); //not closing FDs
|
||||
MHD_run(daemon);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -215,7 +219,7 @@ else{*/
|
||||
}*/
|
||||
}
|
||||
while(run);
|
||||
|
||||
|
||||
//TODO exit from loop and clean
|
||||
|
||||
MHD_stop_daemon (daemon);
|
||||
|
||||
@@ -31,6 +31,7 @@ void * http_log_cb(void * cls, const char * uri)
|
||||
|
||||
PRINT_INFO2("log uri '%s'\n", uri);
|
||||
|
||||
//TODO free
|
||||
if(NULL == (http_uri = au_malloc(sizeof(struct HTTP_URI ))))
|
||||
DIE("no memory");
|
||||
//memset(http_uri, 0 , sizeof(struct HTTP_URI));
|
||||
@@ -100,6 +101,9 @@ http_response_callback (void *cls,
|
||||
|
||||
PRINT_INFO2("http_response_callback for %s", proxy->url);
|
||||
|
||||
if(proxy->error)
|
||||
return MHD_CONTENT_READER_END_WITH_ERROR;
|
||||
|
||||
if(0 == proxy->http_body_size &&( proxy->done || !proxy->spdy_active)){
|
||||
PRINT_INFO("sent end of stream");
|
||||
return MHD_CONTENT_READER_END_OF_STREAM;
|
||||
@@ -183,7 +187,6 @@ http_response_done_callback(void *cls)
|
||||
*/
|
||||
//SPDY_destroy_request(request);
|
||||
//SPDY_destroy_response(response);
|
||||
MHD_destroy_response (proxy->http_response);
|
||||
//if(!strcmp("/close",proxy->path)) run = 0;
|
||||
//free(proxy->path);
|
||||
if(proxy->spdy_active)
|
||||
@@ -349,7 +352,6 @@ http_cb_request (void *cls,
|
||||
if(MHD_NO == MHD_add_response_header (proxy->http_response,
|
||||
"Keep-Alive", "timeout=5, max=100"))
|
||||
PRINT_INFO("SPDY_name_value_add failed: ");
|
||||
|
||||
/*
|
||||
const union MHD_ConnectionInfo *info;
|
||||
info = MHD_get_connection_info (connection,
|
||||
@@ -447,4 +449,5 @@ http_create_response(struct Proxy* proxy, char **nv)
|
||||
//MHD_destroy_response (proxy->http_response);
|
||||
//PRINT_INFO2("state after %i", proxy->http_connection->state);
|
||||
//PRINT_INFO2("loop after %i", proxy->http_connection->event_loop_info);
|
||||
MHD_destroy_response (proxy->http_response);
|
||||
}
|
||||
|
||||
@@ -236,6 +236,9 @@ void spdy_cb_on_ctrl_recv(spdylay_session *session,
|
||||
//name = "SYN_REPLY";
|
||||
stream_id = frame->syn_reply.stream_id;
|
||||
break;
|
||||
case SPDYLAY_RST_STREAM:
|
||||
stream_id = frame->rst_stream.stream_id;
|
||||
break;
|
||||
case SPDYLAY_HEADERS:
|
||||
nv = frame->headers.nv;
|
||||
//name = "HEADERS";
|
||||
@@ -247,9 +250,26 @@ void spdy_cb_on_ctrl_recv(spdylay_session *session,
|
||||
}
|
||||
|
||||
proxy = spdylay_session_get_stream_user_data(session, stream_id);
|
||||
PRINT_INFO2("received headers for %s", proxy->url);
|
||||
if(NULL == proxy)
|
||||
DIE("no proxy obj");
|
||||
|
||||
switch(type) {
|
||||
case SPDYLAY_SYN_REPLY:
|
||||
PRINT_INFO2("received headers for %s", proxy->url);
|
||||
http_create_response(proxy, nv);
|
||||
break;
|
||||
case SPDYLAY_RST_STREAM:
|
||||
PRINT_INFO2("received reset stream for %s", proxy->url);
|
||||
proxy->error = true;
|
||||
break;
|
||||
case SPDYLAY_HEADERS:
|
||||
PRINT_INFO2("received headers for %s", proxy->url);
|
||||
http_create_response(proxy, nv);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
break;
|
||||
}
|
||||
glob_opt.spdy_data_received = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ parse_uri(regex_t * preg, char * full_uri, struct URI ** uri)
|
||||
void
|
||||
free_proxy(struct Proxy *proxy)
|
||||
{
|
||||
//PRINT_INFO("free proxy called");
|
||||
PRINT_INFO2("free proxy called for '%s'", proxy->url);
|
||||
free(proxy->http_body);
|
||||
free_uri(proxy->uri);
|
||||
free(proxy->url);
|
||||
|
||||
@@ -113,10 +113,12 @@ struct Proxy
|
||||
int status;
|
||||
int id;
|
||||
bool done;
|
||||
bool error;
|
||||
bool http_active;
|
||||
bool spdy_active;
|
||||
};
|
||||
|
||||
|
||||
struct HTTP_URI
|
||||
{
|
||||
char * uri;
|
||||
|
||||
Reference in New Issue
Block a user