]>
Commit | Line | Data |
---|---|---|
84540b47 | 1 | /* |
b8ae064d | 2 | * Copyright (C) 1996-2023 The Squid Software Foundation and contributors |
84540b47 AJ |
3 | * |
4 | * Squid software is distributed under GPLv2+ license and includes | |
5 | * contributions from numerous individuals and organizations. | |
6 | * Please see the COPYING and CONTRIBUTORS files for details. | |
7 | */ | |
8 | ||
9 | #include "squid.h" | |
10 | #include "comm/Flag.h" | |
11 | #include "CommCalls.h" | |
12 | #include "HttpControlMsg.h" | |
13 | ||
24e1fd72 | 14 | void |
2f97ab10 | 15 | HttpControlMsgSink::doneWithControlMsg() |
24e1fd72 CT |
16 | { |
17 | if (cbControlMsgSent) { | |
18 | ScheduleCallHere(cbControlMsgSent); | |
19 | cbControlMsgSent = nullptr; | |
20 | } | |
21 | } | |
22 | ||
84540b47 AJ |
23 | /// called when we wrote the 1xx response |
24 | void | |
25 | HttpControlMsgSink::wroteControlMsg(const CommIoCbParams ¶ms) | |
26 | { | |
27 | if (params.flag == Comm::ERR_CLOSING) | |
28 | return; | |
29 | ||
30 | if (params.flag == Comm::OK) { | |
2f97ab10 | 31 | doneWithControlMsg(); |
84540b47 AJ |
32 | return; |
33 | } | |
34 | ||
35 | debugs(33, 3, "1xx writing failed: " << xstrerr(params.xerrno)); | |
36 | // no error notification: see HttpControlMsg.h for rationale and | |
37 | // note that some errors are detected elsewhere (e.g., close handler) | |
38 | ||
39 | // close on 1xx errors to be conservative and to simplify the code | |
40 | // (if we do not close, we must notify the source of a failure!) | |
41 | params.conn->close(); | |
42 | ||
43 | // XXX: writeControlMsgAndCall() should handle writer-specific writing | |
44 | // results, including errors and then call us with success/failure outcome. | |
45 | } | |
46 |