Mercurial Hosting > luan
comparison src/org/eclipse/jetty/server/BlockingHttpConnection.java @ 1035:898774c2cd87
remove HttpGenerator.returnBuffers()
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 03 Nov 2016 21:09:57 -0600 |
parents | 4ada7a8c128a |
children |
comparison
equal
deleted
inserted
replaced
1034:563458c4dc93 | 1035:898774c2cd87 |
---|---|
42 } | 42 } |
43 | 43 |
44 @Override | 44 @Override |
45 public void handle() throws IOException | 45 public void handle() throws IOException |
46 { | 46 { |
47 try | 47 // do while the endpoint is open |
48 // AND the connection has not changed | |
49 while (_endp.isOpen()) | |
48 { | 50 { |
49 // do while the endpoint is open | 51 try |
50 // AND the connection has not changed | |
51 while (_endp.isOpen()) | |
52 { | 52 { |
53 try | 53 // If we are not ended then parse available |
54 if (!_parser.isComplete() && !_endp.isInputShutdown()) | |
55 _parser.parseAvailable(); | |
56 | |
57 // Do we have more generating to do? | |
58 // Loop here because some writes may take multiple steps and | |
59 // we need to flush them all before potentially blocking in the | |
60 // next loop. | |
61 if (_generator.isCommitted() && !_generator.isComplete() && !_endp.isOutputShutdown()) | |
62 _generator.flushBuffer(); | |
63 | |
64 // Flush buffers | |
65 _endp.flush(); | |
66 } | |
67 catch (HttpException e) | |
68 { | |
69 if (LOG.isDebugEnabled()) | |
54 { | 70 { |
55 // If we are not ended then parse available | 71 LOG.debug("uri="+_uri); |
56 if (!_parser.isComplete() && !_endp.isInputShutdown()) | 72 LOG.debug("fields="+_requestFields); |
57 _parser.parseAvailable(); | 73 LOG.debug("",e); |
74 } | |
75 _generator.sendError(e.getStatus(), e.getReason(), null, true); | |
76 initParser(); | |
77 _endp.shutdownOutput(); | |
78 } | |
79 finally | |
80 { | |
81 // Is this request/response round complete and are fully flushed? | |
82 if (_parser.isComplete() && _generator.isComplete()) | |
83 { | |
84 // Reset the parser/generator | |
85 reset(); | |
58 | 86 |
59 // Do we have more generating to do? | 87 // TODO Is this required? |
60 // Loop here because some writes may take multiple steps and | 88 if (!_generator.isPersistent() && !_endp.isOutputShutdown()) |
61 // we need to flush them all before potentially blocking in the | 89 { |
62 // next loop. | 90 LOG.warn("Safety net oshut!!! Please open a bugzilla"); |
63 if (_generator.isCommitted() && !_generator.isComplete() && !_endp.isOutputShutdown()) | 91 _endp.shutdownOutput(); |
64 _generator.flushBuffer(); | 92 } |
65 | |
66 // Flush buffers | |
67 _endp.flush(); | |
68 } | 93 } |
69 catch (HttpException e) | 94 |
95 // If we don't have a committed response and we are not suspended | |
96 if (_endp.isInputShutdown() && _generator.isIdle()) | |
70 { | 97 { |
71 if (LOG.isDebugEnabled()) | 98 // then no more can happen, so close. |
72 { | 99 _endp.close(); |
73 LOG.debug("uri="+_uri); | |
74 LOG.debug("fields="+_requestFields); | |
75 LOG.debug("",e); | |
76 } | |
77 _generator.sendError(e.getStatus(), e.getReason(), null, true); | |
78 initParser(); | |
79 _endp.shutdownOutput(); | |
80 } | |
81 finally | |
82 { | |
83 // Is this request/response round complete and are fully flushed? | |
84 if (_parser.isComplete() && _generator.isComplete()) | |
85 { | |
86 // Reset the parser/generator | |
87 reset(); | |
88 | |
89 // TODO Is this required? | |
90 if (!_generator.isPersistent() && !_endp.isOutputShutdown()) | |
91 { | |
92 LOG.warn("Safety net oshut!!! Please open a bugzilla"); | |
93 _endp.shutdownOutput(); | |
94 } | |
95 } | |
96 | |
97 // If we don't have a committed response and we are not suspended | |
98 if (_endp.isInputShutdown() && _generator.isIdle()) | |
99 { | |
100 // then no more can happen, so close. | |
101 _endp.close(); | |
102 } | |
103 } | 100 } |
104 } | 101 } |
105 } | 102 } |
106 finally | |
107 { | |
108 _generator.returnBuffers(); | |
109 } | |
110 } | 103 } |
111 } | 104 } |