|  |  | @ -7532,6 +7532,31 @@ static char *cmd_stats(__maybe_unused PGconn *conn, char *cmd, char *id, | 
			
		
	
		
		
			
				
					
					|  |  |  | #define ACCESS_PROXY	"x" |  |  |  | #define ACCESS_PROXY	"x" | 
			
		
	
		
		
			
				
					
					|  |  |  | #define ACCESS_CKDB	"c" |  |  |  | #define ACCESS_CKDB	"c" | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | /* The socket command format is as follows:
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *  Basic structure: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *    cmd.id.fld1=value1 FLD_SEP fld2=value2 FLD_SEP fld3=... | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   cmd is the cmd_str from the table below | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   id is a string of anything but '.' - preferably just digits and/or letters | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   FLD_SEP is a single character macro - defined in the code near the top | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *    no spaces around FLD_SEP - they are added above for readability | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *     i.e. it's really: cmd.id.fld1=value1FLD_SEPfld2... | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   fldN names cannot contain '=' or FLD_SEP | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   valueN values cannot contain FLD_SEP except for the json field (see below) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  * | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *  The reply will be id.timestamp.status.information... | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *  Status 'ok' means it succeeded | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *  Some cmds you can optionally send as just 'cmd' if 'noid' below is true | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   then the reply will be .timestamp.status.information | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   i.e. a zero length 'id' at the start of the reply | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  * | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *  Data from ckpool starts with a fld1: json={...} of field data | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *  This is assumed to be the only field data sent and any other fields after | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   it will cause a json error | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *  Any fields before it will circumvent the json interpretation of {...} and | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   the full json in {...} will be stored as text in TRANSFER under the name | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   'json' - which will (usually) mean the command will fail if it requires | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  *   actual field data | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  */ | 
			
		
	
		
		
			
				
					
					|  |  |  | static struct CMDS { |  |  |  | static struct CMDS { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	enum cmd_values cmd_val; |  |  |  | 	enum cmd_values cmd_val; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	char *cmd_str; |  |  |  | 	char *cmd_str; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |