+ /* Timing out reading or writing. Pop the timeout error from the
+ stack and continue the loop. */
+ rs_err_conn_pop (request->conn);
+
+ gettimeofday (&now, NULL);
+ if (++count > MRC || timercmp (&now, &end, >))
+ {
+ r = rs_err_conn_push_fl (request->conn, RSE_TIMEOUT,
+ __FILE__, __LINE__, NULL);
+ break; /* Timeout. */
+ }
+
+ /* rt = 2 * rt + rand_rt (rt, RAND); */
+ timeradd (&rt, &rt, &rt);
+ _rand_rt (&tmp_tv, IRT, RAND);
+ timeradd (&rt, &tmp_tv, &rt);
+ if (timercmp (&rt, &mrt_tv, >))
+ _rand_rt (&rt, MRT, RAND);
+ }
+
+ timerclear (&rt);
+ rs_conn_set_timeout (conn, &rt);
+
+ rs_debug (("%s: returning %d\n", __func__, r));
+ return r;
+}
+
+struct rs_packet *
+rs_request_get_reqmsg (const struct rs_request *request)
+{
+ assert (request);
+ return request->req_msg;