***************
*** 35,41 ****
  
      my_xlog(OOPS_LOG_DBG, "send_ssl(): Connecting %s:%d\n", rq->url.host, rq->url.port);
      gettimeofday(&start_tv, NULL);
!     if ( parent_port ) {
          server_so = parent_connect_silent(so, parent_host, parent_port, rq);
      } else {
          server_so = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
--- 35,41 ----
  
      my_xlog(OOPS_LOG_DBG, "send_ssl(): Connecting %s:%d\n", rq->url.host, rq->url.port);
      gettimeofday(&start_tv, NULL);
!     if ( parent_port && !is_local_dom(rq->url.host) ) {
          server_so = parent_connect_silent(so, parent_host, parent_port, rq);
      } else {
          server_so = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
***************
*** 45,60 ****
  			ERR_INTERNAL, rq);
  	goto done;
      }
!     if ( parent_port ) {
          parent_req = malloc(64 + strlen(url->host));
          if ( parent_req ) {
!             sprintf(parent_req, "CONNECT %s:%d HTTP/1.0\r\n\r\n", url->host, url->port);
              r = writet(server_so, parent_req, strlen(parent_req), READ_ANSW_TIMEOUT);
              free(parent_req);
              if ( r < 0 ) goto done;
          } else
              goto done;
      } else {
          bind_server_so(server_so, rq);
          if ( str_to_sa(url->host, (struct sockaddr*)&server_sa) ) {
  	    say_bad_request(so, "Can't translate name to address", url->host, ERR_DNS_ERR, rq);
--- 45,68 ----
  			ERR_INTERNAL, rq);
  	goto done;
      }
!     if ( parent_port && !is_local_dom(rq->url.host)) {
          parent_req = malloc(64 + strlen(url->host));
          if ( parent_req ) {
!             char *fav = NULL;
! 
!             if ( parent_auth && 
!                 (fav = format_av_pair("Proxy-Authorization: Basic", rq->peer_auth))) {
!                 sprintf(parent_req, "CONNECT %s:%d HTTP/1.0\r\n%s\r\n", url->host, url->port,fav);
!                 xfree(fav);
!             } else
!                 sprintf(parent_req, "CONNECT %s:%d HTTP/1.0\r\n\r\n", url->host, url->port);
              r = writet(server_so, parent_req, strlen(parent_req), READ_ANSW_TIMEOUT);
              free(parent_req);
              if ( r < 0 ) goto done;
          } else
              goto done;
      } else {
+         SET(rq->flags, RQ_SERVED_DIRECT);
          bind_server_so(server_so, rq);
          if ( str_to_sa(url->host, (struct sockaddr*)&server_sa) ) {
  	    say_bad_request(so, "Can't translate name to address", url->host, ERR_DNS_ERR, rq);
