]> git.pld-linux.org Git - packages/squid.git/blame - squid-2.5.STABLE5-CONNECT_timeout.patch
- updated to 2.5.STABLE13
[packages/squid.git] / squid-2.5.STABLE5-CONNECT_timeout.patch
CommitLineData
657376c6 1Index: squid/src/ssl.c
2diff -c squid/src/ssl.c:1.118.2.4 squid/src/ssl.c:1.118.2.5
3*** squid/src/ssl.c:1.118.2.4 Wed Aug 6 07:49:02 2003
4--- squid/src/ssl.c Mon Mar 29 02:59:44 2004
5***************
6*** 218,224 ****
7 if (!ignoreErrno(errno))
8 comm_close(fd);
9 } else if (len == 0) {
10! comm_close(sslState->server.fd);
11 }
12 if (cbdataValid(sslState))
13 sslSetSelect(sslState);
14--- 218,224 ----
15 if (!ignoreErrno(errno))
16 comm_close(fd);
17 } else if (len == 0) {
18! comm_close(fd);
19 }
20 if (cbdataValid(sslState))
21 sslSetSelect(sslState);
22***************
23*** 376,385 ****
24--- 376,388 ----
25 {
26 SslStateData *sslState = data;
27 assert(sslState != NULL);
28+ /* temporary lock to save our own feets (comm_close -> sslClientClosed -> Free) */
29+ cbdataLock(sslState);
30 if (sslState->client.fd > -1)
31 comm_close(sslState->client.fd);
32 if (sslState->server.fd > -1)
33 comm_close(sslState->server.fd);
34+ cbdataUnlock(sslState);
35 }
36
37
38***************
39*** 432,437 ****
40--- 435,467 ----
41 }
42 }
43
44+ static void
45+ sslConnectTimeout(int fd, void *data)
46+ {
47+ SslStateData *sslState = data;
48+ request_t *request = sslState->request;
49+ ErrorState *err = NULL;
50+ if (sslState->servers->peer)
51+ hierarchyNote(&sslState->request->hier, sslState->servers->code,
52+ sslState->servers->peer->host);
53+ else if (Config.onoff.log_ip_on_direct)
54+ hierarchyNote(&sslState->request->hier, sslState->servers->code,
55+ fd_table[sslState->server.fd].ipaddr);
56+ else
57+ hierarchyNote(&sslState->request->hier, sslState->servers->code,
58+ sslState->host);
59+ comm_close(fd);
60+ err = errorCon(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE);
61+ *sslState->status_ptr = HTTP_SERVICE_UNAVAILABLE;
62+ err->xerrno = ETIMEDOUT;
63+ err->host = xstrdup(sslState->host);
64+ err->port = sslState->port;
65+ err->request = requestLink(request);
66+ err->callback = sslErrorComplete;
67+ err->callback_data = sslState;
68+ errorSend(sslState->client.fd, err);
69+ }
70+
71 CBDATA_TYPE(SslStateData);
72 void
73 sslStart(clientHttpRequest * http, size_t * size_ptr, int *status_ptr)
74***************
75*** 526,532 ****
76 sslState);
77 commSetTimeout(sslState->server.fd,
78 Config.Timeout.connect,
79! sslTimeout,
80 sslState);
81 peerSelect(request,
82 NULL,
83--- 556,562 ----
84 sslState);
85 commSetTimeout(sslState->server.fd,
86 Config.Timeout.connect,
87! sslConnectTimeout,
88 sslState);
89 peerSelect(request,
90 NULL,
This page took 0.036039 seconds and 4 git commands to generate.