| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -267,12 +267,20 @@ static void kill_server(server_instance_t *si) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						dealloc(si->data); | 
					 | 
					 | 
					 | 
						dealloc(si->data); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					static void clear_unix_msg(unix_msg_t **umsg) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (*umsg) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							free((*umsg)->buf); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							free(*umsg); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							*umsg = NULL; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static int gen_loop(proc_instance_t *pi) | 
					 | 
					 | 
					 | 
					static int gen_loop(proc_instance_t *pi) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{ | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int sockd = -1, ret = 0, selret; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						server_instance_t *si = NULL; | 
					 | 
					 | 
					 | 
						server_instance_t *si = NULL; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						bool reconnecting = false; | 
					 | 
					 | 
					 | 
						bool reconnecting = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						unixsock_t *us = &pi->us; | 
					 | 
					 | 
					 | 
						unix_msg_t *umsg = NULL; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ckpool_t *ckp = pi->ckp; | 
					 | 
					 | 
					 | 
						ckpool_t *ckp = pi->ckp; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gdata_t *gdata = ckp->data; | 
					 | 
					 | 
					 | 
						gdata_t *gdata = ckp->data; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						bool started = false; | 
					 | 
					 | 
					 | 
						bool started = false; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -280,9 +288,10 @@ static int gen_loop(proc_instance_t *pi) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						connsock_t *cs; | 
					 | 
					 | 
					 | 
						connsock_t *cs; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gbtbase_t *gbt; | 
					 | 
					 | 
					 | 
						gbtbase_t *gbt; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						char hash[68]; | 
					 | 
					 | 
					 | 
						char hash[68]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						int ret = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					reconnect: | 
					 | 
					 | 
					 | 
					reconnect: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						Close(sockd); | 
					 | 
					 | 
					 | 
						clear_unix_msg(&umsg); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (si) { | 
					 | 
					 | 
					 | 
						if (si) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							kill_server(si); | 
					 | 
					 | 
					 | 
							kill_server(si); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							reconnecting = true; | 
					 | 
					 | 
					 | 
							reconnecting = true; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -299,36 +308,24 @@ reconnect: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					retry: | 
					 | 
					 | 
					 | 
					retry: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						Close(sockd); | 
					 | 
					 | 
					 | 
						clear_unix_msg(&umsg); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ckmsgq_add(gdata->srvchk, si); | 
					 | 
					 | 
					 | 
						ckmsgq_add(gdata->srvchk, si); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						do { | 
					 | 
					 | 
					 | 
						do { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							selret = wait_read_select(us->sockd, 5); | 
					 | 
					 | 
					 | 
							umsg = get_unix_msg(pi); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (!selret && !ping_main(ckp)) { | 
					 | 
					 | 
					 | 
							if (unlikely(!umsg &&!ping_main(ckp))) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								LOGEMERG("Generator failed to ping main process, exiting"); | 
					 | 
					 | 
					 | 
								LOGEMERG("Generator failed to ping main process, exiting"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								ret = 1; | 
					 | 
					 | 
					 | 
								ret = 1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								goto out; | 
					 | 
					 | 
					 | 
								goto out; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} while (selret < 1); | 
					 | 
					 | 
					 | 
						} while (!umsg); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (unlikely(cs->fd < 0)) { | 
					 | 
					 | 
					 | 
						if (unlikely(cs->fd < 0)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							LOGWARNING("Bitcoind socket invalidated, will attempt failover"); | 
					 | 
					 | 
					 | 
							LOGWARNING("Bitcoind socket invalidated, will attempt failover"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							goto reconnect; | 
					 | 
					 | 
					 | 
							goto reconnect; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						sockd = accept(us->sockd, NULL, NULL); | 
					 | 
					 | 
					 | 
						buf = umsg->buf; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (sockd < 0) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							LOGEMERG("Failed to accept on generator socket"); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ret = 1; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							goto out; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						dealloc(buf); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						buf = recv_unix_msg(sockd); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (!buf) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							LOGWARNING("Failed to get message in gen_loop"); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							goto retry; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						LOGDEBUG("Generator received request: %s", buf); | 
					 | 
					 | 
					 | 
						LOGDEBUG("Generator received request: %s", buf); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (cmdmatch(buf, "shutdown")) { | 
					 | 
					 | 
					 | 
						if (cmdmatch(buf, "shutdown")) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ret = 0; | 
					 | 
					 | 
					 | 
							ret = 0; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -338,41 +335,41 @@ retry: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (!gen_gbtbase(cs, gbt)) { | 
					 | 
					 | 
					 | 
							if (!gen_gbtbase(cs, gbt)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								LOGWARNING("Failed to get block template from %s:%s", | 
					 | 
					 | 
					 | 
								LOGWARNING("Failed to get block template from %s:%s", | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									   cs->url, cs->port); | 
					 | 
					 | 
					 | 
									   cs->url, cs->port); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								send_unix_msg(sockd, "Failed"); | 
					 | 
					 | 
					 | 
								send_unix_msg(umsg->sockd, "Failed"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								goto reconnect; | 
					 | 
					 | 
					 | 
								goto reconnect; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} else { | 
					 | 
					 | 
					 | 
							} else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								char *s = json_dumps(gbt->json, JSON_NO_UTF8); | 
					 | 
					 | 
					 | 
								char *s = json_dumps(gbt->json, JSON_NO_UTF8); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								send_unix_msg(sockd, s); | 
					 | 
					 | 
					 | 
								send_unix_msg(umsg->sockd, s); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								free(s); | 
					 | 
					 | 
					 | 
								free(s); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								clear_gbtbase(gbt); | 
					 | 
					 | 
					 | 
								clear_gbtbase(gbt); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "getbest")) { | 
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "getbest")) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (si->notify) | 
					 | 
					 | 
					 | 
							if (si->notify) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								send_unix_msg(sockd, "notify"); | 
					 | 
					 | 
					 | 
								send_unix_msg(umsg->sockd, "notify"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (!get_bestblockhash(cs, hash)) { | 
					 | 
					 | 
					 | 
							else if (!get_bestblockhash(cs, hash)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								LOGINFO("No best block hash support from %s:%s", | 
					 | 
					 | 
					 | 
								LOGINFO("No best block hash support from %s:%s", | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									cs->url, cs->port); | 
					 | 
					 | 
					 | 
									cs->url, cs->port); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								send_unix_msg(sockd, "failed"); | 
					 | 
					 | 
					 | 
								send_unix_msg(umsg->sockd, "failed"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} else { | 
					 | 
					 | 
					 | 
							} else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if (unlikely(!started)) { | 
					 | 
					 | 
					 | 
								if (unlikely(!started)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									started = true; | 
					 | 
					 | 
					 | 
									started = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									LOGWARNING("%s generator ready", ckp->name); | 
					 | 
					 | 
					 | 
									LOGWARNING("%s generator ready", ckp->name); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} | 
					 | 
					 | 
					 | 
								} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								send_unix_msg(sockd, hash); | 
					 | 
					 | 
					 | 
								send_unix_msg(umsg->sockd, hash); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "getlast")) { | 
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "getlast")) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							int height; | 
					 | 
					 | 
					 | 
							int height; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (si->notify) | 
					 | 
					 | 
					 | 
							if (si->notify) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								send_unix_msg(sockd, "notify"); | 
					 | 
					 | 
					 | 
								send_unix_msg(umsg->sockd, "notify"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if ((height = get_blockcount(cs)) == -1) { | 
					 | 
					 | 
					 | 
							else if ((height = get_blockcount(cs)) == -1) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								send_unix_msg(sockd,  "failed"); | 
					 | 
					 | 
					 | 
								send_unix_msg(umsg->sockd,  "failed"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								goto reconnect; | 
					 | 
					 | 
					 | 
								goto reconnect; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} else { | 
					 | 
					 | 
					 | 
							} else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								LOGDEBUG("Height: %d", height); | 
					 | 
					 | 
					 | 
								LOGDEBUG("Height: %d", height); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if (!get_blockhash(cs, height, hash)) { | 
					 | 
					 | 
					 | 
								if (!get_blockhash(cs, height, hash)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									send_unix_msg(sockd, "failed"); | 
					 | 
					 | 
					 | 
									send_unix_msg(umsg->sockd, "failed"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									goto reconnect; | 
					 | 
					 | 
					 | 
									goto reconnect; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} else { | 
					 | 
					 | 
					 | 
								} else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									if (unlikely(!started)) { | 
					 | 
					 | 
					 | 
									if (unlikely(!started)) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -380,7 +377,7 @@ retry: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										LOGWARNING("%s generator ready", ckp->name); | 
					 | 
					 | 
					 | 
										LOGWARNING("%s generator ready", ckp->name); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									} | 
					 | 
					 | 
					 | 
									} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									send_unix_msg(sockd, hash); | 
					 | 
					 | 
					 | 
									send_unix_msg(umsg->sockd, hash); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									LOGDEBUG("Hash: %s", hash); | 
					 | 
					 | 
					 | 
									LOGDEBUG("Hash: %s", hash); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} | 
					 | 
					 | 
					 | 
								} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -395,16 +392,16 @@ retry: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							send_proc(ckp->stratifier, blockmsg); | 
					 | 
					 | 
					 | 
							send_proc(ckp->stratifier, blockmsg); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "checkaddr:")) { | 
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "checkaddr:")) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (validate_address(cs, buf + 10)) | 
					 | 
					 | 
					 | 
							if (validate_address(cs, buf + 10)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								send_unix_msg(sockd, "true"); | 
					 | 
					 | 
					 | 
								send_unix_msg(umsg->sockd, "true"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else | 
					 | 
					 | 
					 | 
							else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								send_unix_msg(sockd, "false"); | 
					 | 
					 | 
					 | 
								send_unix_msg(umsg->sockd, "false"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "reconnect")) { | 
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "reconnect")) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							goto reconnect; | 
					 | 
					 | 
					 | 
							goto reconnect; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "loglevel")) { | 
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "loglevel")) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							sscanf(buf, "loglevel=%d", &ckp->loglevel); | 
					 | 
					 | 
					 | 
							sscanf(buf, "loglevel=%d", &ckp->loglevel); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "ping")) { | 
					 | 
					 | 
					 | 
						} else if (cmdmatch(buf, "ping")) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							LOGDEBUG("Generator received ping request"); | 
					 | 
					 | 
					 | 
							LOGDEBUG("Generator received ping request"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							send_unix_msg(sockd, "pong"); | 
					 | 
					 | 
					 | 
							send_unix_msg(umsg->sockd, "pong"); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						goto retry; | 
					 | 
					 | 
					 | 
						goto retry; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -2734,6 +2731,8 @@ int generator(proc_instance_t *pi) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gdata = ckzalloc(sizeof(gdata_t)); | 
					 | 
					 | 
					 | 
						gdata = ckzalloc(sizeof(gdata_t)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ckp->data = gdata; | 
					 | 
					 | 
					 | 
						ckp->data = gdata; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gdata->ckp = ckp; | 
					 | 
					 | 
					 | 
						gdata->ckp = ckp; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						create_unix_receiver(pi); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (ckp->proxy) { | 
					 | 
					 | 
					 | 
						if (ckp->proxy) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							char *buf = NULL; | 
					 | 
					 | 
					 | 
							char *buf = NULL; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |