| 172 | #endif |
| 173 | |
| 174 | void parse_checksum_choice(int final_call) |
| 175 | { |
| 176 | if (valid_checksums.negotiated_nni) |
| 177 | xfer_sum_nni = file_sum_nni = valid_checksums.negotiated_nni; |
| 178 | else { |
| 179 | const char *cp = checksum_choice ? strchr(checksum_choice, ',') : NULL; |
| 180 | if (cp) { |
| 181 | xfer_sum_nni = parse_csum_name(checksum_choice, cp - checksum_choice); |
| 182 | file_sum_nni = parse_csum_name(cp+1, -1); |
| 183 | } else |
| 184 | xfer_sum_nni = file_sum_nni = parse_csum_name(checksum_choice, -1); |
| 185 | if (am_server && checksum_choice) |
| 186 | validate_choice_vs_env(NSTR_CHECKSUM, xfer_sum_nni->num, file_sum_nni->num); |
| 187 | } |
| 188 | xfer_sum_len = csum_len_for_type(xfer_sum_nni->num, 0); |
| 189 | file_sum_len = csum_len_for_type(file_sum_nni->num, 0); |
| 190 | #ifdef USE_OPENSSL |
| 191 | xfer_sum_evp_md = csum_evp_md(xfer_sum_nni); |
| 192 | file_sum_evp_md = csum_evp_md(file_sum_nni); |
| 193 | #endif |
| 194 | |
| 195 | file_sum_extra_cnt = (file_sum_len + EXTRA_LEN - 1) / EXTRA_LEN; |
| 196 | |
| 197 | if (xfer_sum_nni->num == CSUM_NONE) |
| 198 | whole_file = 1; |
| 199 | |
| 200 | /* Snag the checksum name for both write_batch's option output & the following debug output. */ |
| 201 | if (valid_checksums.negotiated_nni) |
| 202 | checksum_choice = valid_checksums.negotiated_nni->name; |
| 203 | else if (checksum_choice == NULL) |
| 204 | checksum_choice = xfer_sum_nni->name; |
| 205 | |
| 206 | if (final_call && DEBUG_GTE(NSTR, am_server ? 3 : 1)) { |
| 207 | rprintf(FINFO, "%s%s checksum: %s\n", |
| 208 | am_server ? "Server" : "Client", |
| 209 | valid_checksums.negotiated_nni ? " negotiated" : "", |
| 210 | checksum_choice); |
| 211 | } |
| 212 | } |
| 213 | |
| 214 | int csum_len_for_type(int cst, BOOL flist_csum) |
| 215 | { |
no test coverage detected