src/server/proxy/httpclient.c

changeset 735
902b417ab6d2
parent 732
2aeaf6f32861
equal deleted inserted replaced
734:a5f3e1e5e744 735:902b417ab6d2
330 static int client_process(HttpClient *client, Event *event) { 330 static int client_process(HttpClient *client, Event *event) {
331 client->last_event = event; 331 client->last_event = event;
332 if(client->stage < 0) { 332 if(client->stage < 0) {
333 return 0; 333 return 0;
334 } 334 }
335 log_ereport(LOG_INFORM, "client_process %d", client->stage); 335 log_ereport(LOG_DEBUG, "client_process %d", client->stage);
336 336
337 if(client->stage == 0) { 337 if(client->stage == 0) {
338 if(client->transfer_buffer_pos < client->transfer_buffer_len) { 338 if(client->transfer_buffer_pos < client->transfer_buffer_len) {
339 if(client_send_buf(client)) { 339 if(client_send_buf(client)) {
340 return client->error == 0; 340 return client->error == 0;
381 } 381 }
382 382
383 if(ret) { 383 if(ret) {
384 return client->error == 0; 384 return client->error == 0;
385 } 385 }
386 log_ereport(LOG_INFORM, "client_process end: %p", event->finish); 386 log_ereport(LOG_DEBUG, "client_process end: %p", event->finish);
387 387
388 if(event != &client->event) { 388 if(event != &client->event) {
389 // An extern event has called client_process, therefore the 389 // An extern event has called client_process, therefore the
390 // client_finished event callback is not automatically called. 390 // client_finished event callback is not automatically called.
391 // Manually shutdown the client: 391 // Manually shutdown the client:
392 log_ereport(LOG_INFORM, "client_process: manual shutdown"); 392 log_ereport(LOG_DEBUG, "client_process: manual shutdown");
393 ev_remove_poll(client->ev, client->socketfd); 393 ev_remove_poll(client->ev, client->socketfd);
394 client_finished(client->ev, &client->event); 394 client_finished(client->ev, &client->event);
395 client->event.fn = NULL; 395 client->event.fn = NULL;
396 client->event.finish = NULL; 396 client->event.finish = NULL;
397 } 397 }
485 return r == 0 || client->error ? 0 : 1; 485 return r == 0 || client->error ? 0 : 1;
486 } 486 }
487 487
488 static int client_finished(EventHandler *ev, Event *event) { 488 static int client_finished(EventHandler *ev, Event *event) {
489 HttpClient *client = event->cookie; 489 HttpClient *client = event->cookie;
490 log_ereport(LOG_INFORM, "client_finished: %p", client->response_finished); 490 log_ereport(LOG_DEBUG, "client_finished");
491 491
492 close(client->socketfd); 492 close(client->socketfd);
493 client->socketfd = -1; 493 client->socketfd = -1;
494 client->stage = -1; 494 client->stage = -1;
495 495
803 static int client_write_response(HttpClient *client) { 803 static int client_write_response(HttpClient *client) {
804 while(client->transfer2_buffer_pos < client->transfer2_buffer_len) { 804 while(client->transfer2_buffer_pos < client->transfer2_buffer_len) {
805 char *buf = client->transfer2_buffer + client->transfer2_buffer_pos; 805 char *buf = client->transfer2_buffer + client->transfer2_buffer_pos;
806 size_t len = client->transfer2_buffer_len - client->transfer2_buffer_pos; 806 size_t len = client->transfer2_buffer_len - client->transfer2_buffer_pos;
807 int ret = client->response_body_write(client, buf, len, client->response_body_write_userdata); 807 int ret = client->response_body_write(client, buf, len, client->response_body_write_userdata);
808 log_ereport(LOG_INFORM, "client_write_response: %d bytes; ret: %d", (int)len, ret); 808 log_ereport(LOG_DEBUG, "client_write_response: %d bytes; ret: %d", (int)len, ret);
809 if(ret > 0) { 809 if(ret > 0) {
810 client->transfer2_buffer_pos += ret; 810 client->transfer2_buffer_pos += ret;
811 } else if(ret == 0) { 811 } else if(ret == 0) {
812 // EOF? 812 // EOF?
813 // check if the write is incomplete, which would be an error 813 // check if the write is incomplete, which would be an error
848 } 848 }
849 } 849 }
850 } 850 }
851 851
852 if(r == 0) { 852 if(r == 0) {
853 log_ereport(LOG_INFORM, "client_read_response_body eof"); 853 log_ereport(LOG_DEBUG, "client_read_response_body eof");
854 } 854 }
855 855
856 if(r < 0) { 856 if(r < 0) {
857 if(client->stream->st.io_errno == EWOULDBLOCK) { 857 if(client->stream->st.io_errno == EWOULDBLOCK) {
858 log_ereport(LOG_INFORM, "client_read_response_body would block"); 858 log_ereport(LOG_DEBUG, "client_read_response_body would block");
859 } 859 }
860 860
861 if(client->stream->st.io_errno != EWOULDBLOCK) { 861 if(client->stream->st.io_errno != EWOULDBLOCK) {
862 client->error = 1; 862 client->error = 1;
863 } 863 }
864 return 1; 864 return 1;
865 } 865 }
866 log_ereport(LOG_INFORM, "client_read_response_body finished"); 866 log_ereport(LOG_DEBUG, "client_read_response_body finished");
867 return 0; 867 return 0;
868 } 868 }
869 869
870 /* --------------------------------- Tests --------------------------------- */ 870 /* --------------------------------- Tests --------------------------------- */
871 871

mercurial