}
}
+bool suspend_socket(PgSocket *sk)
+{
+ if (!sk->suspended) {
+ if (sbuf_has_no_state(&sk->sbuf)) {
+ sbuf_pause(&sk->sbuf);
+ sk->suspended = 1;
+ } else
+ return false;
+ }
+ return true;
+}
+
/* suspend all sockets in socket list */
static int suspend_socket_list(StatList *list)
{
statlist_for_each(item, list) {
sk = container_of(item, PgSocket, head);
- if (!sk->suspended) {
- if (sbuf_has_no_state(&sk->sbuf)) {
- sbuf_pause(&sk->sbuf);
- sk->suspended = 1;
- } else
- active++;
- }
+ if (!suspend_socket(sk))
+ active++;
}
return active;
}
void config_postprocess(void);
void resume_all(void);
void per_loop_object_maint(void);
+bool suspend_socket(PgSocket *sk);
/* in suspend, dont let send query */
if (cf_pause_mode == P_SUSPEND)
- pause_client(client);
+ suspend_socket(client);
return true;
}