int rand_range(int min, int max) { unsigned u; unsigned r = max - min + 1; unsigned ub = UINT_MAX - (UINT_MAX % r); do { u = rand_uint(); } while (u > ub); return min + u % r; }
static void mg_join(struct mg_connection* conn, const struct mg_request_info* ri) { if(strcmp(ri->request_method, "GET") == 0) { uint new_id = rand_uint(); if(!aatree_insert(&clients, new_id, (void*)1)) goto error; mg_printf(conn, "%s", standard_reply); mg_printf(conn, "%u\n", new_id); // Invoke join_cb _invoke("join_cb", new_id, NULL); return; } error: mg_error(conn, ri); }