File tree 1 file changed +10
-12
lines changed
1 file changed +10
-12
lines changed Original file line number Diff line number Diff line change @@ -177,26 +177,24 @@ func wait(waitChan <-chan struct{}, timeout time.Duration) error {
177
177
// immediately. If you want wait forever you must supply negative timeout.
178
178
// Returns exit code, that was passed to SetStopped
179
179
func (s * State ) WaitStop (timeout time.Duration ) (int , error ) {
180
- s . Lock ()
181
- if ! s . Running {
182
- exitCode := s . ExitCodeValue
183
- s . Unlock ( )
184
- return exitCode , nil
180
+ ctx := context . Background ()
181
+ if timeout >= 0 {
182
+ var cancel func ()
183
+ ctx , cancel = context . WithTimeout ( ctx , timeout )
184
+ defer cancel ()
185
185
}
186
- waitChan := s .waitChan
187
- s .Unlock ()
188
- if err := wait (waitChan , timeout ); err != nil {
186
+ if err := s .WaitWithContext (ctx ); err != nil {
187
+ if status , ok := err .(* StateStatus ); ok {
188
+ return status .ExitCode (), nil
189
+ }
189
190
return - 1 , err
190
191
}
191
- s .Lock ()
192
- defer s .Unlock ()
193
- return s .ExitCode (), nil
192
+ return 0 , nil
194
193
}
195
194
196
195
// WaitWithContext waits for the container to stop. Optional context can be
197
196
// passed for canceling the request.
198
197
func (s * State ) WaitWithContext (ctx context.Context ) error {
199
- // todo(tonistiigi): make other wait functions use this
200
198
s .Lock ()
201
199
if ! s .Running {
202
200
state := newStateStatus (s .ExitCode (), s .Error ())
You can’t perform that action at this time.
0 commit comments