/*
- * $Id: errorpage.cc,v 1.208 2006/02/17 20:15:35 wessels Exp $
+ * $Id: errorpage.cc,v 1.209 2006/04/02 14:32:35 serassio Exp $
*
* DEBUG: section 4 Error Generation
* AUTHOR: Duane Wessels
HTTPMSGUNLOCK(err->request);
safe_free(err->redirect_url);
safe_free(err->url);
- safe_free(err->host);
safe_free(err->dnsserver_msg);
safe_free(err->request_hdrs);
wordlistDestroy(&err->ftp.server_msg);
/* - IP stuff */
str.Printf("ClientIP: %s\r\n", inet_ntoa(err->src_addr));
- if (err->host) {
- str.Printf("ServerIP: %s\r\n", err->host);
+ if (r && r->hier.host) {
+ str.Printf("ServerIP: %s\r\n", r->hier.host);
}
str.Printf("\r\n");
break;
case 'H':
- p = r ? r->host : "[unknown host]";
+ if (r) {
+ if (r->hier.host)
+ p = r->hier.host;
+ else
+ p = r->host;
+ } else
+ p = "[unknown host]";
break;
break;
case 'I':
- if (err->host) {
- mb.Printf("%s", err->host);
+ if (r && r->hier.host) {
+ mb.Printf("%s", r->hier.host);
} else
p = "[unknown]";
/*
- * $Id: forward.cc,v 1.136 2006/02/17 18:10:59 wessels Exp $
+ * $Id: forward.cc,v 1.137 2006/04/02 14:32:35 serassio Exp $
*
* DEBUG: section 17 Request Forwarding
* AUTHOR: Duane Wessels
anErr->xerrno = EACCES;
#endif
- if (fs->_peer) {
- anErr->host = xstrdup(fs->_peer->host);
- anErr->port = fs->_peer->http_port;
- } else {
- anErr->host = xstrdup(request->host);
- anErr->port = request->port;
- }
-
anErr->request = HTTPMSGLOCK(request);
fail(anErr);
FwdServer *fs = servers;
assert(server_fd == aServerFD);
+ if (Config.onoff.log_ip_on_direct && status != COMM_ERR_DNS && fs->code == HIER_DIRECT)
+ hierarchyNote(&request->hier, fs->code, fd_table[server_fd].ipaddr);
+
if (status == COMM_ERR_DNS) {
/*
* Only set the dont_retry flag if the DNS lookup fails on
ErrorState *anErr = errorCon(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE);
anErr->xerrno = xerrno;
- if (fs->_peer) {
- anErr->host = xstrdup(fs->_peer->host);
- anErr->port = fs->_peer->http_port;
- } else {
- anErr->host = xstrdup(request->host);
- anErr->port = request->port;
- }
-
fail(anErr);
if (fs->_peer)
void
FwdState::connectTimeout(int fd)
{
+ FwdServer *fs = servers;
+
debug(17, 2) ("fwdConnectTimeout: FD %d: '%s'\n", fd, storeUrl(entry));
assert(fd == server_fd);
+ if (Config.onoff.log_ip_on_direct && fs->code == HIER_DIRECT && fd_table[fd].ipaddr[0])
+ hierarchyNote(&request->hier, fs->code, fd_table[fd].ipaddr);
+
if (entry->isEmpty()) {
ErrorState *anErr = errorCon(ERR_CONNECT_FAIL, HTTP_GATEWAY_TIMEOUT);
anErr->xerrno = ETIMEDOUT;
commSetTimeout(fd, ctimeout, fwdConnectTimeoutWrapper, this);
+ if (fs->_peer)
+ hierarchyNote(&request->hier, fs->code, fs->_peer->host);
+ else
+ hierarchyNote(&request->hier, fs->code, request->host);
+
commConnectStart(fd, host, port, fwdConnectDoneWrapper, this);
}
FwdState::dispatch()
{
peer *p = NULL;
- FwdServer *fs = servers;
debug(17, 3) ("fwdDispatch: FD %d: Fetching '%s %s'\n",
client_fd,
RequestMethodStr[request->method],
*/
assert(server_fd > -1);
- if (fs->_peer)
- hierarchyNote(&request->hier, fs->code, fs->_peer->host);
- else if (Config.onoff.log_ip_on_direct)
- hierarchyNote(&request->hier, fs->code, fd_table[server_fd].ipaddr);
- else
- hierarchyNote(&request->hier, fs->code, request->host);
-
fd_note(server_fd, storeUrl(entry));
fd_table[server_fd].noteUse(fwdPconnPool);
/*
- * $Id: gopher.cc,v 1.193 2006/02/17 18:10:59 wessels Exp $
+ * $Id: gopher.cc,v 1.194 2006/04/02 14:32:35 serassio Exp $
*
* DEBUG: section 10 Gopher
* AUTHOR: Harvest Derived
ErrorState *err;
err = errorCon(ERR_WRITE_ERROR, HTTP_SERVICE_UNAVAILABLE);
err->xerrno = errno;
- err->host = xstrdup(gopherState->req->host);
err->port = gopherState->req->port;
err->url = xstrdup(storeUrl(entry));
gopherState->fwd->fail(err);
/*
- * $Id: tunnel.cc,v 1.159 2006/02/17 18:10:59 wessels Exp $
+ * $Id: tunnel.cc,v 1.160 2006/04/02 14:32:35 serassio Exp $
*
* DEBUG: section 26 Secure Sockets Layer Proxy
* AUTHOR: Duane Wessels
err->xerrno = ETIMEDOUT;
- err->host = xstrdup(sslState->host);
-
err->port = sslState->port;
err->request = HTTPMSGLOCK(request);
err = errorCon(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE);
*sslState->status_ptr = HTTP_SERVICE_UNAVAILABLE;
err->xerrno = xerrno;
- err->host = xstrdup(sslState->host);
err->port = sslState->port;
err->request = HTTPMSGLOCK(request);
err->callback = sslErrorComplete;