Skip to content

Commit 086829f

Browse files
committed
check to return exit err if net/rpc call errors
1 parent 7a71769 commit 086829f

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

solverrpc/rpc.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,15 @@ func startSolver() {
8080
}()
8181
}
8282

83+
func checkExit() error {
84+
select {
85+
case <-cmdDone:
86+
return ErrSolverProcessExited
87+
default:
88+
return nil
89+
}
90+
}
91+
8392
// StartSolver starts the solver's background process. This can be used to
8493
// detect errors starting the solver process before the first call to Roots.
8594
func StartSolver() error {
@@ -95,8 +104,8 @@ func RootFactors(a []*big.Int, F *big.Int) ([]*big.Int, []int, error) {
95104
return nil, nil, err
96105
}
97106

98-
if _, ok := <-cmdDone; ok {
99-
return nil, nil, ErrSolverProcessExited
107+
if err := checkExit(); err != nil {
108+
return nil, nil, err
100109
}
101110

102111
var args struct {
@@ -111,6 +120,9 @@ func RootFactors(a []*big.Int, F *big.Int) ([]*big.Int, []int, error) {
111120
}
112121
err := client.Call("Solver.RootFactors", args, &result)
113122
if err != nil {
123+
if exitErr := checkExit(); exitErr != nil {
124+
err = exitErr
125+
}
114126
return nil, nil, err
115127
}
116128
return result.Roots, result.Exponents, nil
@@ -128,8 +140,8 @@ func Roots(a []*big.Int, F *big.Int) ([]*big.Int, error) {
128140
return nil, err
129141
}
130142

131-
if _, ok := <-cmdDone; ok {
132-
return nil, ErrSolverProcessExited
143+
if err := checkExit(); err != nil {
144+
return nil, err
133145
}
134146

135147
var args struct {
@@ -144,6 +156,9 @@ func Roots(a []*big.Int, F *big.Int) ([]*big.Int, error) {
144156
}
145157
err := client.Call("Solver.Roots", args, &result)
146158
if err != nil {
159+
if exitErr := checkExit(); exitErr != nil {
160+
err = exitErr
161+
}
147162
return nil, err
148163
}
149164
if result.RepeatedRoot != nil {

0 commit comments

Comments
 (0)