Home | History | Annotate | Download | only in proxy

Lines Matching full:conn

362     RewriteConnection*  conn = (RewriteConnection*)root;
364 if (conn->slirp_fd >= 0) {
365 socket_close(conn->slirp_fd);
366 conn->slirp_fd = -1;
368 http_request_free(conn->request);
370 qemu_free(conn);
375 rewrite_connection_init( RewriteConnection* conn )
377 HttpService* service = (HttpService*) conn->root->service;
378 ProxyConnection* root = conn->root;
380 conn->slirp_fd = -1;
381 conn->state = STATE_CONNECTING;
385 PROXY_LOG("%s: connecting", conn->root->name);
394 conn->state = STATE_CREATE_SOCKET_PAIR;
400 rewrite_connection_create_sockets( RewriteConnection* conn )
405 ProxyConnection* root = conn->root;
407 if (socket_pair( &slirp_1, &conn->slirp_fd ) < 0) {
414 conn->state = STATE_REQUEST_FIRST_LINE;
421 rewrite_connection_read_request( RewriteConnection* conn )
423 ProxyConnection* root = conn->root;
426 ret = proxy_connection_receive_line(root, conn->slirp_fd);
453 if (conn->request)
454 http_request_free(conn->request);
456 conn->request = http_request_alloc( method, uri, version );
457 if (!conn->request)
467 rewrite_connection_read_reply( RewriteConnection* conn )
469 ProxyConnection* root = conn->root;
474 HttpRequest* request = conn->request;
506 rewrite_connection_read_headers( RewriteConnection* conn,
510 ProxyConnection* root = conn->root;
531 ret = http_request_add_to_last_header( conn->request, line );
545 if (http_request_add_header(conn->request, key, value) < 0)
555 rewrite_connection_rewrite_request( RewriteConnection* conn )
557 ProxyConnection* root = conn->root;
559 HttpRequest* r = conn->request;
563 proxy_connection_rewind(conn->root);
591 rewrite_connection_rewrite_reply( RewriteConnection* conn )
593 HttpRequest* r = conn->request;
594 ProxyConnection* root = conn->root;
610 rewrite_connection_get_body_length( RewriteConnection* conn,
613 HttpRequest* r = conn->request;
614 ProxyConnection* root = conn->root;
618 conn->body_mode = BODY_NONE;
619 conn->body_length = 0;
620 conn->body_total = 0;
621 conn->body_sent = 0;
622 conn->body_is_closed = 0;
623 conn->body_is_full = 0;
624 conn->body_has_data = 0;
652 conn->body_mode = BODY_KNOWN_LENGTH;
653 conn->body_length = body_len;
658 conn->body_mode = BODY_CHUNKED;
659 conn->parse_chunk_header = 0;
660 conn->parse_chunk_trailer = 0;
661 conn->chunk_length = -1;
662 conn->chunk_total = 0;
665 if (conn->body_mode == BODY_NONE) {
681 conn->body_mode = BODY_UNTIL_CLOSE;
684 root->name, conn->body_length,
685 body_mode_str[conn->body_mode]);
694 rewrite_connection_read_body( RewriteConnection* conn, int fd )
696 ProxyConnection* root = conn->root;
701 if (conn->body_is_closed) {
706 switch (conn->body_mode) {
713 if (conn->body_length == 0)
716 if (conn->body_length > MAX_BODY_BUFFER)
719 wanted = (int)conn->body_length;
728 if (conn->chunk_length < 0) {
731 if (!conn->parse_chunk_header) {
732 if (conn->body_has_data)
735 conn->parse_chunk_header = 1;
754 conn->chunk_length = length;
755 conn->chunk_total = 0;
758 conn->parse_chunk_trailer = 0;
760 conn->parse_chunk_header = 0;
764 if (conn->chunk_length == 0) {
767 if (!conn->parse_chunk_trailer) {
768 if (conn->body_has_data)
770 conn->parse_chunk_trailer = 1;
772 ret = rewrite_connection_read_headers(conn, fd);
774 conn->body_is_closed = 1;
780 if (conn->chunk_length > MAX_BODY_BUFFER)
783 wanted = (int)conn->chunk_length;
796 conn->body_is_full = 1;
806 conn->body_has_data = (str->n > 0);
807 conn->body_is_full = (str->n == MAX_BODY_BUFFER);
810 if (conn->body_mode == BODY_UNTIL_CLOSE) {
813 conn->body_total += root->str_recv;
815 root->name, conn->body_total);
816 conn->body_is_closed = 1;
823 switch (conn->body_mode) {
825 conn->chunk_total += avail;
826 conn->chunk_length -= avail;
828 if (conn->chunk_length == 0) {
830 root->name, conn->chunk_length);
831 conn->body_total += conn->chunk_total;
832 conn->chunk_total = 0;
833 conn->chunk_length = -1;
838 conn->body_length -= avail;
839 conn->body_total += avail;
841 if (conn->body_length == 0) {
843 root->name, conn->body_total);
844 conn->body_is_closed = 1;
850 conn->body_total += avail;
861 rewrite_connection_send_body( RewriteConnection* conn, int fd )
863 ProxyConnection* root = conn->root;
867 if (conn->body_has_data) {
875 conn->body_is_full = (str->n == MAX_BODY_BUFFER);
876 conn->body_has_data = (str->n > 0);
877 conn->body_sent += root->str_sent;
883 if (!conn->body_is_closed || conn->body_has_data)
887 root->name, conn->body_sent);
891 root->name, conn->body_is_closed,
892 conn->body_has_data, str->n,
904 RewriteConnection* conn = (RewriteConnection*)root;
905 int slirp = conn->slirp_fd;
908 switch (conn->state) {
925 if (!conn->body_is_closed && !conn->body_is_full)
928 if (conn->body_has_data)
942 if (conn->body_has_data)
945 if (!conn->body_is_closed && !conn->body_is_full)
957 RewriteConnection* conn = (RewriteConnection*)root;
959 int slirp = conn->slirp_fd;
965 switch (conn->state) {
969 conn->state = STATE_CREATE_SOCKET_PAIR;
975 if (rewrite_connection_create_sockets(conn) < 0) {
979 conn->state = STATE_REQUEST_FIRST_LINE;
986 ret = rewrite_connection_read_request(conn);
989 conn->state = STATE_REQUEST_HEADERS;
996 ret = rewrite_connection_read_headers(conn, slirp);
999 if (rewrite_connection_rewrite_request(conn) < 0)
1002 conn->state = STATE_REQUEST_SEND;
1011 if (rewrite_connection_get_body_length(conn, 1) < 0) {
1013 } else if (conn->body_mode != BODY_NONE) {
1016 conn->state = STATE_REQUEST_BODY;
1020 conn->state = STATE_REPLY_FIRST_LINE;
1028 ret = rewrite_connection_read_body(conn, slirp);
1031 ret = rewrite_connection_send_body(conn, proxy);
1035 conn->state = STATE_REPLY_FIRST_LINE;
1042 ret = rewrite_connection_read_reply(conn);
1045 conn->state = STATE_REPLY_HEADERS;
1052 ret = rewrite_connection_read_headers(conn, proxy);
1055 if (rewrite_connection_rewrite_reply(conn) < 0)
1058 conn->state = STATE_REPLY_SEND;
1065 ret = proxy_connection_send(conn->root, slirp);
1067 if (rewrite_connection_get_body_length(conn, 0) < 0) {
1069 } else if (conn->body_mode != BODY_NONE) {
1072 conn->state = STATE_REPLY_BODY;
1076 conn->state = STATE_REQUEST_FIRST_LINE;
1084 ret = rewrite_connection_read_body(conn, proxy);
1087 ret = rewrite_connection_send_body(conn, slirp);
1089 if (conn->body_mode == BODY_UNTIL_CLOSE) {
1095 conn->state = STATE_REQUEST_FIRST_LINE;
1115 RewriteConnection* conn;
1122 conn = qemu_mallocz(sizeof(*conn));
1123 if (conn == NULL) {
1128 proxy_connection_init( conn->root, s, address, service->root,
1133 if ( rewrite_connection_init( conn ) < 0 ) {
1134 rewrite_connection_free( conn->root );
1138 return conn->root;