rekeying = "Initiating key re-exchange (data limit lowered)";
rekeying = "data limit lowered";
static void ssh_reconfig(void *handle, Config *cfg){    Ssh ssh = (Ssh) handle;    char *rekeying = NULL, rekey_mandatory = FALSE;    unsigned long old_max_data_size;    pinger_reconfig(ssh->pinger, &ssh->cfg, cfg);    ssh_setup_portfwd(ssh, cfg);    if (ssh->cfg.ssh_rekey_time != cfg->ssh_rekey_time &&	cfg->ssh_rekey_time != 0) {	long new_next = ssh->last_rekey + cfg->ssh_rekey_time*60*TICKSPERSEC;	long now = GETTICKCOUNT();	if (new_next - now < 0) {	    rekeying = "Initiating key re-exchange (timeout shortened)";	} else {	    ssh->next_rekey = schedule_timer(new_next - now, ssh2_timer, ssh);	}    }    old_max_data_size = ssh->max_data_size;    ssh->max_data_size = parse_blocksize(cfg->ssh_rekey_data);    if (old_max_data_size != ssh->max_data_size &&	ssh->max_data_size != 0) {	if (ssh->outgoing_data_size > ssh->max_data_size ||	    ssh->incoming_data_size > ssh->max_data_size)	    rekeying = "Initiating key re-exchange (data limit lowered)";    }    if (ssh->cfg.compression != cfg->compression) {	rekeying = "Initiating key re-exchange (compression setting changed)";	rekey_mandatory = TRUE;    }    if (ssh->cfg.ssh2_des_cbc != cfg->ssh2_des_cbc ||	memcmp(ssh->cfg.ssh_cipherlist, cfg->ssh_cipherlist,	       sizeof(ssh->cfg.ssh_cipherlist))) {	rekeying = "Initiating key re-exchange (cipher settings changed)";	rekey_mandatory = TRUE;    }    ssh->cfg = *cfg;		       /* STRUCTURE COPY */    if (rekeying) {	if (!ssh->kex_in_progress) {	    do_ssh2_transport(ssh, rekeying, -1, NULL);	} else if (rekey_mandatory) {	    ssh->deferred_rekey_reason = rekeying;	}    }}