91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
# File 'lib/thin/connection.rb', line 91
def post_process(result)
return unless result
result = result.to_a
return if result.first == AsyncResponse.first
@response.status, @response., @response.body = *result
log_error("Rack application returned nil body. " \
"Probably you wanted it to be an empty string?") if @response.body.nil?
@response.body = EMPTY_BODY if @request.head?
@response.persistent! if @request.persistent?
@response.each do |chunk|
trace chunk
send_data chunk
end
rescue Exception => e
unexpected_error(e)
close_connection
ensure
if @response.body.respond_to?(:callback) && @response.body.respond_to?(:errback)
@response.body.callback { terminate_request }
@response.body.errback { terminate_request }
else
terminate_request unless result && result.first == AsyncResponse.first
end
end
|