@@ -125,7 +125,7 @@ func (s *FCGIRequester) GetValues() error {
125
125
// env should be a slice of name=value pairs. It blocks until the application has finished.
126
126
func (s * FCGIRequester ) Request (env []string , stdin io.Reader , stdout io.Writer , stderr io.Writer ) error {
127
127
// Get a request. We may have to wait for one to free up.
128
- r , err := s .newRequest ()
128
+ r , err := s .newRequest (stdout , stderr )
129
129
if err != nil {
130
130
return err
131
131
}
@@ -143,8 +143,6 @@ func (s *FCGIRequester) Request(env []string, stdin io.Reader, stdout io.Writer,
143
143
}
144
144
params .Close ()
145
145
146
- r .Stdout = stdout
147
- r .Stderr = stderr
148
146
// Send stdin.
149
147
reqStdin := newStreamWriter (r .conn .netconn , fcgiStdin , r .id )
150
148
io .Copy (reqStdin , stdin )
@@ -174,7 +172,7 @@ func (s *FCGIRequester) numRequests() int {
174
172
return n
175
173
}
176
174
177
- func (s * FCGIRequester ) newRequest () (* request , error ) {
175
+ func (s * FCGIRequester ) newRequest (stdout io. Writer , stderr io. Writer ) (* request , error ) {
178
176
// We may have to wait for one to become available
179
177
s .reqLock .Lock ()
180
178
defer s .reqLock .Unlock ()
@@ -187,8 +185,11 @@ func (s *FCGIRequester) newRequest() (*request, error) {
187
185
return nil , err
188
186
}
189
187
conn := newConn (s , netconn )
188
+ r := conn .newRequest ()
189
+ r .Stdout = stdout
190
+ r .Stderr = stderr
190
191
go conn .Run ()
191
- return conn . newRequest () , nil
192
+ return r , nil
192
193
}
193
194
194
195
func (s * FCGIRequester ) releaseRequest (r * request ) {
0 commit comments