int otype_setcookie(pblock *pb, Session *sn, Request *rq) { rq->directive_is_cacheable = 1; const char *name = pblock_findkeyval(pb_key_name, pb); if (!name) { log_error(LOG_MISCONFIG, "set-cookie", sn, rq, XP_GetAdminStr(DBT_ntransError7)); return REQ_ABORTED; } PRInt64 max_age = COOKIE_MAX_AGE_SESSION; if (const char *max_age_str = pblock_findkeyval(pb_key_max_age, pb)) max_age = util_atoi64(max_age_str); PRBool secure = PR_FALSE; if (const char *secure_str = pblock_findkeyval(pb_key_secure, pb)) secure = util_getboolean(secure_str, PR_TRUE); int res = cookie_set(sn, rq, name, pblock_findkeyval(pb_key_value, pb), pblock_findkeyval(pb_key_path, pb), pblock_findkeyval(pb_key_domain, pb), pblock_findkeyval(pb_key_expires, pb), max_age, secure); if (res != REQ_PROCEED) return res; return REQ_NOACTION; }
static void exec_asp( connection* conn ) { char key[20]; key[16] = '\0'; cookie_get( conn, "SESSIONKEY", key, 16 ); conn->session = session_get( conn->client, key ); if( !conn->session ){ conn->code = 500; }else{ if( !(*key) || strcmp( conn->session->key, key ) != 0 ) cookie_set( conn, "SESSIONKEY", "/", -1, conn->session->key ); NEW( conn->data_send, MAX_DATASEND+4 ); conn->data_size = 0; if( vdir_exec( conn->server, conn->current_dir, conn ) < 0 ){ conn->code = 404; } if( !conn->data_size ) conn->data_size = strlen( conn->data_send ); } }