]> git.pld-linux.org Git - packages/squid.git/blob - squid-2.5.STABLE5-CONNECT_timeout.patch
- ...and CAN-2005-0096
[packages/squid.git] / squid-2.5.STABLE5-CONNECT_timeout.patch
1 Index: squid/src/ssl.c
2 diff -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.069974 seconds and 3 git commands to generate.