If disconnection is detected during write failure, or "Output buffer full"
occurs, the connection is disconnected. However, if this was the right side
connection, it wasn't automatically reconnected to. This left the ring
nonworking.
static void director_disconnect_write_error(struct director_connection *conn)
{
+ struct director *dir = conn->dir;
+
director_connection_deinit(&conn, "write failure");
+ if (dir->right == NULL)
+ director_connect(dir, "Reconnecting after write failure");
}
void director_connection_send(struct director_connection *conn,