예제 #1
0
파일: t_replay.c 프로젝트: PADL/krb5
static void
test_kdc_remove_lookaside_multiple(void **state)
{
    struct entry *e1;
    krb5_context context = *state;
    krb5_data req1 = string2data("I'm a test request");
    krb5_data rep1 = string2data("I'm a test response");
    krb5_data req2 = string2data("I'm a different test request");

    e1 = insert_entry(context, &req1, &rep1, 0);
    insert_entry(context, &req2, NULL, 0);

    kdc_remove_lookaside(context, &req2);

    assert_null(k5_hashtab_get(hash_table, req2.data, req2.length));
    assert_ptr_equal(k5_hashtab_get(hash_table, req1.data, req1.length), e1);
    assert_int_equal(num_entries, 1);
    assert_int_equal(total_size, entry_size(&req1, &rep1));

    kdc_remove_lookaside(context, &req1);

    assert_null(k5_hashtab_get(hash_table, req1.data, req1.length));
    assert_int_equal(num_entries, 0);
    assert_int_equal(total_size, 0);
}
예제 #2
0
파일: t_replay.c 프로젝트: PADL/krb5
static void
test_kdc_remove_lookaside_empty_cache(void **state)
{
    krb5_context context = *state;
    krb5_data req = string2data("I'm a test request");

    assert_int_equal(num_entries, 0);
    kdc_remove_lookaside(context, &req);

    assert_int_equal(num_entries, 0);
    assert_int_equal(total_size, 0);
}
예제 #3
0
파일: t_replay.c 프로젝트: PADL/krb5
static void
test_kdc_remove_lookaside(void **state)
{
    krb5_context context = *state;
    krb5_data req = string2data("I'm a test request");
    krb5_data rep = string2data("I'm a test response");

    insert_entry(context, &req, &rep, 0);
    kdc_remove_lookaside(context, &req);

    assert_null(k5_hashtab_get(hash_table, req.data, req.length));
    assert_int_equal(num_entries, 0);
    assert_int_equal(total_size, 0);
}
예제 #4
0
파일: dispatch.c 프로젝트: pexip/os-krb5
static void
finish_dispatch(void *arg, krb5_error_code code, krb5_data *response)
{
    struct dispatch_state *state = arg;
    loop_respond_fn oldrespond;
    void *oldarg;

    assert(state);
    oldrespond = state->respond;
    oldarg = state->arg;

#ifndef NOCACHE
    /* Remove our NULL cache entry to indicate request completion. */
    kdc_remove_lookaside(kdc_context, state->request);
#endif

    if (state->is_tcp == 0 && response &&
        response->length > max_dgram_reply_size) {
        krb5_free_data(kdc_context, response);
        response = NULL;
        code = make_too_big_error(&response);
        if (code)
            krb5_klog_syslog(LOG_ERR, "error constructing "
                             "KRB_ERR_RESPONSE_TOO_BIG error: %s",
                             error_message(code));
    }

#ifndef NOCACHE
    /* put the response into the lookaside buffer */
    else if (!code && response)
        kdc_insert_lookaside(state->request, response);
#endif

    free(state);
    (*oldrespond)(oldarg, code, response);
}