Browse Source

Parse reconnect differently for subproxies than master proxies

master
Con Kolivas 10 years ago
parent
commit
2d35d0c679
  1. 23
      src/generator.c

23
src/generator.c

@ -895,6 +895,16 @@ static bool send_pong(proxy_instance_t *proxi, json_t *val)
} }
static void prepare_proxy(proxy_instance_t *proxi); static void prepare_proxy(proxy_instance_t *proxi);
static proxy_instance_t *create_subproxy(proxy_instance_t *proxi);
static void add_subproxy(proxy_instance_t *proxi, proxy_instance_t *subproxy)
{
mutex_lock(&proxi->proxy_lock);
proxi->subproxy_count++;
HASH_ADD_INT(proxi->subproxies, id, subproxy);
proxi->client_headroom += proxi->clients_per_proxy;
mutex_unlock(&proxi->proxy_lock);
}
static bool parse_reconnect(proxy_instance_t *proxi, json_t *val) static bool parse_reconnect(proxy_instance_t *proxi, json_t *val)
{ {
@ -945,6 +955,13 @@ static bool parse_reconnect(proxy_instance_t *proxi, json_t *val)
LOGINFO("Processing reconnect request to %s", url); LOGINFO("Processing reconnect request to %s", url);
ret = true; ret = true;
/* If this isn't a parent proxy, add a new subproxy to the parent */
if (proxi != proxi->proxy) {
newproxi = create_subproxy(proxi);
add_subproxy(proxi, newproxi);
goto out;
}
newsi = ckzalloc(sizeof(server_instance_t)); newsi = ckzalloc(sizeof(server_instance_t));
mutex_lock(&gdata->lock); mutex_lock(&gdata->lock);
@ -1545,11 +1562,7 @@ static bool recruit_subproxy(proxy_instance_t *proxi)
return false; return false;
} }
mutex_lock(&proxi->proxy_lock); add_subproxy(proxi, subproxy);
proxi->subproxy_count++;
HASH_ADD_INT(proxi->subproxies, id, subproxy);
proxi->client_headroom += proxi->clients_per_proxy;
mutex_unlock(&proxi->proxy_lock);
return true; return true;
} }

Loading…
Cancel
Save