| 111 | } |
| 112 | |
| 113 | BOOL ssl_scache_store(server_rec *s, IDCONST UCHAR *id, int idlen, |
| 114 | apr_time_t expiry, SSL_SESSION *sess, |
| 115 | apr_pool_t *p) |
| 116 | { |
| 117 | SSLModConfigRec *mc = myModConfig(s); |
| 118 | unsigned char encoded[MODSSL_SESSION_MAX_DER], *ptr; |
| 119 | unsigned int len; |
| 120 | apr_status_t rv; |
| 121 | |
| 122 | /* Serialise the session. */ |
| 123 | len = i2d_SSL_SESSION(sess, NULL); |
| 124 | if (len > sizeof encoded) { |
| 125 | ap_log_error(APLOG_MARK, APLOG_ERR, 0, s, APLOGNO(01875) |
| 126 | "session is too big (%u bytes)", len); |
| 127 | return FALSE; |
| 128 | } |
| 129 | |
| 130 | ptr = encoded; |
| 131 | len = i2d_SSL_SESSION(sess, &ptr); |
| 132 | |
| 133 | if (mc->sesscache->flags & AP_SOCACHE_FLAG_NOTMPSAFE) { |
| 134 | ssl_mutex_on(s); |
| 135 | } |
| 136 | |
| 137 | rv = mc->sesscache->store(mc->sesscache_context, s, id, idlen, |
| 138 | expiry, encoded, len, p); |
| 139 | |
| 140 | if (mc->sesscache->flags & AP_SOCACHE_FLAG_NOTMPSAFE) { |
| 141 | ssl_mutex_off(s); |
| 142 | } |
| 143 | |
| 144 | return rv == APR_SUCCESS ? TRUE : FALSE; |
| 145 | } |
| 146 | |
| 147 | SSL_SESSION *ssl_scache_retrieve(server_rec *s, IDCONST UCHAR *id, int idlen, |
| 148 | apr_pool_t *p) |
no test coverage detected