Просмотр исходного кода

fix infinite loop in mux dispatch

Darien Raymond 7 лет назад
Родитель
Сommit
db6d6a89df
1 измененных файлов с 3 добавлено и 1 удалено
  1. 3 1
      common/mux/client.go

+ 3 - 1
common/mux/client.go

@@ -25,7 +25,7 @@ type ClientManager struct {
 }
 }
 
 
 func (m *ClientManager) Dispatch(ctx context.Context, link *transport.Link) error {
 func (m *ClientManager) Dispatch(ctx context.Context, link *transport.Link) error {
-	for {
+	for i := 0; i < 16; i++ {
 		worker, err := m.Picker.PickAvailable()
 		worker, err := m.Picker.PickAvailable()
 		if err != nil {
 		if err != nil {
 			return err
 			return err
@@ -34,6 +34,8 @@ func (m *ClientManager) Dispatch(ctx context.Context, link *transport.Link) erro
 			return nil
 			return nil
 		}
 		}
 	}
 	}
+
+	return newError("unable to find an available mux client")
 }
 }
 
 
 type WorkerPicker interface {
 type WorkerPicker interface {