bool MCSessionExpireCookie() { MCAutoStringRef t_session_name; /* UNCHECKED */ MCS_get_session_name(&t_session_name); return MCServerSetCookie(*t_session_name, MCSTR("EXPIRE"), MCS_time() - 60 * 60 * 24, nil, nil, false, true); }
bool MCSessionStart(MCStringRef p_session_id, MCSessionRef &r_session) { bool t_success = true; MCSessionIndexRef t_index = NULL; MCSession *t_session = NULL; MCSession *t_index_session = NULL; t_success = MCSessionOpenIndex(t_index); if (t_success) { if (p_session_id != NULL && MCSessionFindMatchingSession(t_index, p_session_id, t_index_session)) { t_success = MCSessionCopySession(t_index_session, t_session); } else { t_success = MCSessionCreateSession(t_index, p_session_id, t_session); } MCAutoStringRef t_session_name; if (t_success) t_success = MCS_get_session_name(&t_session_name); if (t_success) { MCAutoStringRef t_session_id_str; /* UNCHECKED */ MCStringCreateWithCString(t_session->id, &t_session_id_str); t_success = MCServerSetCookie(*t_session_name, *t_session_id_str, 0, nil, nil, false, true); } if (t_success) t_success = MCSessionOpenSession(t_index, t_session); if (t_success) MCSessionRefreshExpireTime(t_session); } if (t_index != NULL) t_success &= MCSessionCloseIndex(t_index, t_success); if (t_success) r_session = t_session; else { if (t_session != NULL) MCSessionCloseSession(t_session, false); } return t_success; }
Exec_stat MCPut::exec_cookie(MCExecPoint &ep) { char *t_name = NULL; char *t_value = NULL; char *t_path = NULL; char *t_domain = NULL; uint32_t t_name_len = 0; uint32_t t_value_len = 0; uint32_t t_path_len = 0; uint32_t t_domain_len = 0; uint32_t t_expires = 0; bool t_success = true; t_value = ep.getsvalue().clone(); t_value_len = ep.getsvalue().getlength(); t_success = (ES_NORMAL == name->eval(ep)); if (t_success) { t_name = ep.getsvalue().clone(); t_name_len = ep.getsvalue().getlength(); if (expires != NULL) t_success = expires->eval(ep); } if (t_success && expires) t_success = ep.isempty() || MCU_stoui4(ep.getsvalue(), t_expires); if (t_success && path) { t_success = path->eval(ep); if (t_success) { t_path = ep.getsvalue().clone(); t_path_len = ep.getsvalue().getlength(); } } if (t_success && domain) { t_success = domain->eval(ep); if (t_success) { t_domain = ep.getsvalue().clone(); t_domain_len = ep.getsvalue().getlength(); } } if(t_success) t_success = MCServerSetCookie(MCString(t_name, t_name_len), MCString(t_value, t_value_len), t_expires, MCString(t_path, t_path_len), MCString(t_domain, t_domain_len), is_secure, is_httponly); MCCStringFree(t_name); MCCStringFree(t_value); MCCStringFree(t_path); MCCStringFree(t_domain); if (!t_success) { MCeerror->add(EE_PUT_CANTSETINTO, line, pos); return ES_ERROR; } ep.clear(); return ES_NORMAL; }