|  |  |  | @ -1163,6 +1163,13 @@ static void close_proxy_socket(proxy_instance_t *proxy, proxy_instance_t *subpro | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /* Set the disabled bool and close the socket */ | 
			
		
	
		
			
				
					|  |  |  |  | static void set_proxy_disabled(proxy_instance_t *proxy) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 	proxy->disabled = true; | 
			
		
	
		
			
				
					|  |  |  |  | 	close_proxy_socket(proxy->parent, proxy); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /* Remove the subproxy from the proxi list and put it on the dead list.
 | 
			
		
	
		
			
				
					|  |  |  |  |  * Further use of the subproxy pointer may point to a new proxy but will not | 
			
		
	
		
			
				
					|  |  |  |  |  * dereference. This will only disable subproxies so parent proxies need to | 
			
		
	
	
		
			
				
					|  |  |  | @ -1243,7 +1250,7 @@ static bool parse_reconnect(proxy_instance_t *proxy, json_t *val) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	ret = true; | 
			
		
	
		
			
				
					|  |  |  |  | 	parent = proxy->parent; | 
			
		
	
		
			
				
					|  |  |  |  | 	proxy->disabled = true; | 
			
		
	
		
			
				
					|  |  |  |  | 	set_proxy_disabled(proxy); | 
			
		
	
		
			
				
					|  |  |  |  | 	if (parent != proxy) { | 
			
		
	
		
			
				
					|  |  |  |  | 		/* If this is a subproxy we only need to create a new one if
 | 
			
		
	
		
			
				
					|  |  |  |  | 		 * the url has changed. Otherwise automated recruiting will | 
			
		
	
	
		
			
				
					|  |  |  | @ -1608,7 +1615,7 @@ static void drop_proxy(gdata_t *gdata, const char *buf) | 
			
		
	
		
			
				
					|  |  |  |  | 		return; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	LOGNOTICE("Generator asked to drop proxy %d:%d", id, subid); | 
			
		
	
		
			
				
					|  |  |  |  | 	subproxy->disabled = true; | 
			
		
	
		
			
				
					|  |  |  |  | 	set_proxy_disabled(subproxy); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | static void stratifier_reconnect_client(ckpool_t *ckp, const int64_t id) | 
			
		
	
	
		
			
				
					|  |  |  | @ -1816,7 +1823,7 @@ struct cs_msg { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /* Sends all messages in the queue ready to be dispatched, leaving those that
 | 
			
		
	
		
			
				
					|  |  |  |  |  * would block to be handled next pass */ | 
			
		
	
		
			
				
					|  |  |  |  | static void send_json_msgq(gdata_t *gdata, cs_msg_t **csmsgq) | 
			
		
	
		
			
				
					|  |  |  |  | static void send_json_msgq(cs_msg_t **csmsgq) | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 	cs_msg_t *csmsg, *tmp; | 
			
		
	
		
			
				
					|  |  |  |  | 	int ret; | 
			
		
	
	
		
			
				
					|  |  |  | @ -1846,7 +1853,7 @@ static void send_json_msgq(gdata_t *gdata, cs_msg_t **csmsgq) | 
			
		
	
		
			
				
					|  |  |  |  | 				csmsg->len = 0; | 
			
		
	
		
			
				
					|  |  |  |  | 				LOGNOTICE("Proxy %d:%d %s failed to send msg in send_json_msgq, dropping", | 
			
		
	
		
			
				
					|  |  |  |  | 					  proxy->id, proxy->subid, proxy->url); | 
			
		
	
		
			
				
					|  |  |  |  | 				proxy->disabled = true; | 
			
		
	
		
			
				
					|  |  |  |  | 				set_proxy_disabled(proxy); | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  |  | 			csmsg->ofs += ret; | 
			
		
	
		
			
				
					|  |  |  |  | 			csmsg->len -= ret; | 
			
		
	
	
		
			
				
					|  |  |  | @ -1917,7 +1924,7 @@ static void *proxy_send(void *arg) | 
			
		
	
		
			
				
					|  |  |  |  | 		mutex_unlock(&gdata->psend_lock); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (!msg) { | 
			
		
	
		
			
				
					|  |  |  |  | 			send_json_msgq(gdata, &csmsgq); | 
			
		
	
		
			
				
					|  |  |  |  | 			send_json_msgq(&csmsgq); | 
			
		
	
		
			
				
					|  |  |  |  | 			continue; | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -1981,7 +1988,7 @@ static void *proxy_send(void *arg) | 
			
		
	
		
			
				
					|  |  |  |  | 				"method", "mining.submit"); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		add_json_msgq(&csmsgq, subproxy, &val); | 
			
		
	
		
			
				
					|  |  |  |  | 		send_json_msgq(gdata, &csmsgq); | 
			
		
	
		
			
				
					|  |  |  |  | 		send_json_msgq(&csmsgq); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	return NULL; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | @ -2979,7 +2986,7 @@ static void parse_ableproxy(gdata_t *gdata, const int sockd, const char *buf, bo | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	if (disable) { | 
			
		
	
		
			
				
					|  |  |  |  | 		/* Set disabled bool here in case this is a parent proxy */ | 
			
		
	
		
			
				
					|  |  |  |  | 		proxy->disabled = true; | 
			
		
	
		
			
				
					|  |  |  |  | 		set_proxy_disabled(proxy); | 
			
		
	
		
			
				
					|  |  |  |  | 	} else | 
			
		
	
		
			
				
					|  |  |  |  | 		reconnect_proxy(proxy); | 
			
		
	
		
			
				
					|  |  |  |  | out: | 
			
		
	
	
		
			
				
					|  |  |  | 
 |