| Index: appengine/cr-buildbucket/swarming/swarming.py | 
| diff --git a/appengine/cr-buildbucket/swarming/swarming.py b/appengine/cr-buildbucket/swarming/swarming.py | 
| index 4a0f657e92f8c71d8a50f0867fb7d7ca7d8f19b2..d4970d747b035ba0e098871fb75e5a8666541f06 100644 | 
| --- a/appengine/cr-buildbucket/swarming/swarming.py | 
| +++ b/appengine/cr-buildbucket/swarming/swarming.py | 
| @@ -265,6 +265,10 @@ def create_task_def_async(swarming_cfg, builder_cfg, build): | 
| swarming_cfg.common_dimensions, | 
| builder_cfg.dimensions | 
| ) | 
| + | 
| +  if swarming_cfg.common_execution_timeout_secs > 0: | 
| +    task_properties['execution_timeout_secs'] = ( | 
| +        swarming_cfg.common_execution_timeout_secs) | 
| if builder_cfg.execution_timeout_secs > 0: | 
| task_properties['execution_timeout_secs'] = ( | 
| builder_cfg.execution_timeout_secs) | 
| @@ -418,9 +422,14 @@ def _update_build(build, result): | 
| if state == 'CANCELED': | 
| build.result = model.BuildResult.CANCELED | 
| build.cancelation_reason = model.CancelationReason.CANCELED_EXPLICITLY | 
| -    elif state in ('TIMED_OUT', 'EXPIRED'): | 
| +    elif state == 'EXPIRED': | 
| +      # Task did not start. | 
| build.result = model.BuildResult.CANCELED | 
| build.cancelation_reason = model.CancelationReason.TIMEOUT | 
| +    elif state == 'TIMED_OUT': | 
| +      # Task started, but timed out. | 
| +      build.result = model.BuildResult.FAILURE | 
| +      build.failure_reason = model.FailureReason.INFRA_FAILURE | 
| elif state == 'BOT_DIED' or result.get('internal_failure'): | 
| build.result = model.BuildResult.FAILURE | 
| build.failure_reason = model.FailureReason.INFRA_FAILURE | 
|  |