]> git.ipfire.org Git - thirdparty/squid.git/blob - src/HttpControlMsg.cc
Source Format Enforcement (#532)
[thirdparty/squid.git] / src / HttpControlMsg.cc
1 /*
2 * Copyright (C) 1996-2020 The Squid Software Foundation and contributors
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
14 void
15 HttpControlMsgSink::doneWithControlMsg()
16 {
17 if (cbControlMsgSent) {
18 ScheduleCallHere(cbControlMsgSent);
19 cbControlMsgSent = nullptr;
20 }
21 }
22
23 /// called when we wrote the 1xx response
24 void
25 HttpControlMsgSink::wroteControlMsg(const CommIoCbParams &params)
26 {
27 if (params.flag == Comm::ERR_CLOSING)
28 return;
29
30 if (params.flag == Comm::OK) {
31 doneWithControlMsg();
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