Refactor the address parsing bits of adcrush.

This commit is contained in:
Jan Vidar Krey 2009-10-06 17:25:38 +02:00
parent 7472e9ae4a
commit 582bb58ff9
1 changed files with 11 additions and 42 deletions

View File

@ -18,15 +18,14 @@
#define LVL_VERBOSE 3 #define LVL_VERBOSE 3
static int cfg_mode = 0; // See enum operationMode static int cfg_mode = 0; // See enum operationMode
static char* cfg_host = 0; static const char* cfg_uri = 0; // address
static int cfg_port = 0;
static int cfg_debug = 0; /* debug level */ static int cfg_debug = 0; /* debug level */
static int cfg_level = 1; /* activity level (0..3) */ static int cfg_level = 1; /* activity level (0..3) */
static int cfg_chat = 0; /* chat mode, allow sending chat messages */ static int cfg_chat = 0; /* chat mode, allow sending chat messages */
static int cfg_quiet = 0; /* quiet mode (no output) */ static int cfg_quiet = 0; /* quiet mode (no output) */
static int cfg_clients = ADC_CLIENTS_DEFAULT; /* number of clients */ static int cfg_clients = ADC_CLIENTS_DEFAULT; /* number of clients */
static struct sockaddr_in saddr;
static int running = 1; static int running = 1;
@ -120,6 +119,7 @@ static void bot_output(struct ADC_client* client, int level, const char* format,
} }
} }
#if 0
static size_t get_wait_rand(size_t max) static size_t get_wait_rand(size_t max)
{ {
static size_t next = 0; static size_t next = 0;
@ -128,7 +128,7 @@ static size_t get_wait_rand(size_t max)
return ((size_t )(next / 65536) % max); return ((size_t )(next / 65536) % max);
} }
#if 0
static void perf_result(struct ADC_client* client, sid_t target, const char* what, const char* token); static void perf_result(struct ADC_client* client, sid_t target, const char* what, const char* token);
static void perf_chat(struct ADC_client* client, int priv) static void perf_chat(struct ADC_client* client, int priv)
@ -352,7 +352,7 @@ void runloop(size_t clients)
ADC_client_create(c, nick, "stresstester"); ADC_client_create(c, nick, "stresstester");
ADC_client_set_callback(c, handle); ADC_client_set_callback(c, handle);
ADC_client_connect(c, "adc://adc.extatic.org:1511"); ADC_client_connect(c, cfg_uri);
} }
while (running) while (running)
@ -441,39 +441,13 @@ int parse_mode(const char* arg)
int parse_address(const char* arg) int parse_address(const char* arg)
{ {
char* split; if (!arg || strlen(arg) < 9)
struct hostent* dns; return 0;
struct in_addr* addr;
if (strncmp(arg, "adc://", 6) && strncmp(arg, "adcs://", 7))
if (!arg)
return 0; return 0;
if (strlen(arg) < 9) cfg_uri = arg;
return 0;
if (strncmp(arg, "adc://", 6))
return 0;
split = strrchr(arg+6, ':');
if (split == 0 || strlen(split) < 2 || strlen(split) > 6)
return 0;
cfg_port = strtol(split+1, NULL, 10);
if (cfg_port <= 0 || cfg_port > 65535)
return 0;
split[0] = 0;
dns = gethostbyname(arg+6);
if (dns)
{
addr = (struct in_addr*) dns->h_addr_list[0];
cfg_host = strdup(inet_ntoa(*addr));
}
if (!cfg_host)
return 0;
return 1; return 1;
} }
@ -567,16 +541,11 @@ int main(int argc, char** argv)
hub_log_initialize(NULL, 0); hub_log_initialize(NULL, 0);
hub_set_log_verbosity(1000); hub_set_log_verbosity(1000);
memset(&saddr, 0, sizeof(saddr));
saddr.sin_family = AF_INET;
saddr.sin_port = htons(cfg_port);
net_string_to_address(AF_INET, cfg_host, &saddr.sin_addr);
runloop(cfg_clients); runloop(cfg_clients);
shutdown_signal_handlers(); shutdown_signal_handlers();
net_destroy(); net_destroy();
free(cfg_host);
return 0; return 0;
} }