diff options
author | Derick Rethans <derick@php.net> | 2006-01-31 08:13:31 +0000 |
---|---|---|
committer | Derick Rethans <derick@php.net> | 2006-01-31 08:13:31 +0000 |
commit | d54967b956e9fc8a8f21e91ce4c83ee06dba1b24 (patch) | |
tree | e4648eafab1a88d7b20e642de1188f0fa5793978 | |
parent | 1a62352dac6747d278d08d27e0ff8702b3d1872c (diff) | |
download | php-git-d54967b956e9fc8a8f21e91ce4c83ee06dba1b24.tar.gz |
- Moved msession to PECL.
-rw-r--r-- | ext/msession/CREDITS | 3 | ||||
-rw-r--r-- | ext/msession/README | 33 | ||||
-rw-r--r-- | ext/msession/config.m4 | 35 | ||||
-rw-r--r-- | ext/msession/msession-test.php | 126 | ||||
-rw-r--r-- | ext/msession/msession.c | 1639 | ||||
-rw-r--r-- | ext/msession/msession.php | 10 | ||||
-rw-r--r-- | ext/msession/msessionapi.h | 366 | ||||
-rw-r--r-- | ext/msession/php_msession.h | 100 | ||||
-rw-r--r-- | ext/msession/reqclient.h | 209 |
9 files changed, 0 insertions, 2521 deletions
diff --git a/ext/msession/CREDITS b/ext/msession/CREDITS deleted file mode 100644 index 4703783a74..0000000000 --- a/ext/msession/CREDITS +++ /dev/null @@ -1,3 +0,0 @@ -msession -Mark L. Woodward -mailto:mlwmohawk@mohawksoft.com diff --git a/ext/msession/README b/ext/msession/README deleted file mode 100644 index 5442e3bbab..0000000000 --- a/ext/msession/README +++ /dev/null @@ -1,33 +0,0 @@ -This is msession, it is an interface to a stand-alone session -management system. The msession daemon can be found at -Mohawk Software's web site, under Project Phoenix - -http://www.mohawksoft.com/phoenix.html - -Requirements: -Mohawk Software's Phoenix library. -Mohawk Software's msession daemon. - -Building: -In the config.m4 file you will need to specify the include -and library directories for Phoenix. The setting in config.m4 -is probably wrong. - -You will need phoenix installed and built to compile this -module. - -To use msession-test.php, msession must be the default session -handler in PHP. The easiest way to do that is in the php.ini -file as: - -[Session] -session.save_handler = msession -session.save_path = localhost - -The session.save.path is the host name of the server running -msessiond. - -12/22/2001 -Changed msession_getdata(...) to msession_get_data(...) -Changed msession_setdata(...) to msession_set_data(...) -(docs to follow) diff --git a/ext/msession/config.m4 b/ext/msession/config.m4 deleted file mode 100644 index c9b728f964..0000000000 --- a/ext/msession/config.m4 +++ /dev/null @@ -1,35 +0,0 @@ -dnl -dnl $Id$ -dnl - -PHP_ARG_WITH(msession, for msession support, -[ --with-msession[=DIR] Include msession support]) - -if test "$PHP_MSESSION" != "no"; then - if test -r $PHP_MSESSION/lib/libphoenix.so; then - PHOENIX_DIR=$PHP_MSESSION - else - AC_MSG_CHECKING(for msession in default path) - for i in /opt/mohawk /usr/local/phoenix /usr/local /usr; do - if test -r $i/lib/libphoenix.so; then - PHOENIX_DIR=$i - AC_MSG_RESULT(found in $i) - fi - done - fi - - if test -z "$PHOENIX_DIR"; then - AC_MSG_RESULT(not found) - AC_MSG_ERROR(Please reinstall the Phoenix / msession distribution) - fi - - AC_DEFINE(HAVE_MSESSION, 1, [ ]) - PHP_ADD_LIBRARY_WITH_PATH(phoenix, "$PHOENIX_DIR/lib", PHOENIX_LIB) - PHOENIX_INCLUDE="-I$PHOENIX_DIR/src" - PHP_SUBST(PHOENIX_LIB) - - PHP_REQUIRE_CXX - PHP_NEW_EXTENSION(msession, msession.c, $ext_shared) - PHP_ADD_LIBRARY(stdc++) -fi - diff --git a/ext/msession/msession-test.php b/ext/msession/msession-test.php deleted file mode 100644 index 6df6c9aaf6..0000000000 --- a/ext/msession/msession-test.php +++ /dev/null @@ -1,126 +0,0 @@ -<? -# msession-test.php -# This is a test page for msession functions. -# most msession functions are used in this page with -# the exception of msession_get_data, and msession_set_data -# which are used implicitly with the PHP session -# extension. -# -# -# - -# Start the session system, this will connect to msession -# as configured in PHP.INI. -# -# Start sessions, this will set a cookie. -session_start(); - -msession_connect('localhost','8086'); - -# Now, optional, use msession_uniq() to create a guarenteed -# uniq session name. -# -# Use uniq to create the session. This is guarenteed to be -# uniq in the server. - -if($HTTP_COOKIE_VARS["PHPSESSID"]) - $sid = $HTTP_COOKIE_VARS["PHPSESSID"]; -else - $sid = msession_uniq(32, "phpsession"); -setcookie ("PHPSESSID", $sid); -session_id($sid); -$HTTP_COOKIE_VARS["PHPSESSID"] = $sid; -# New session, set some variables -echo "Set Variable: " . msession_set($sid, 'time',time()) ."<p>\n"; -echo "Set Variable: " . msession_set($sid, 'name1','test1') ."<p>\n"; -echo "Set Variable: " . msession_set($sid, 'name2','test2') ."<p>\n"; -echo "Set Variable: " . msession_set($sid, 'name3','test3') ."<p>\n"; -echo "Set Variable: " . msession_set($sid, 'name4','test4') ."<p>\n"; -echo "Set Variable: " . msession_set($sid, 'name5','test5') ."<p>\n"; -echo "Set Variable: " . msession_set($sid, 'name6','test6') ."<p>\n"; -echo "Set Variable: " . msession_set($sid, 'name7','test7') ."<p>\n"; - - $setarray = array(); - $setarray['time']=time(); - $setarray['name1'] = 'test1'; - $setarray['name2'] = 'test2'; - $setarray['name3'] = 'test3'; - $setarray['name4'] = 'test4'; - $setarray['name5'] = 'test5'; - $setarray['name6'] = 'test6'; - $setarray['name7'] = 'test7'; - msession_set_array($sid, $setarray); - -#This makes a link between the variable $count and the -# session variable "count" - -session_register("count"); - -$count ++; - -# Output some information. -echo "sid: " . $sid . "<br>\n"; -echo "Session Count: " . $count . "<br>\n"; - -# Use msession_randstr() to produce a random string. -# A valid string of n characters of jibberish is returned. -echo "Random String: " . msession_randstr(32) . "<br>\n"; - -# This is a thread safe increment, unlike PHP's session, many web servers -# can be updating this variable and collisions are managed. -# (for this to work, older versions of msessiond must be started with "-g globals" -# newer versions create it by default) -echo "Global Count: " . msession_inc(globals, "counter") . "<br>\n"; - - -# Thread safe functions - -echo "Local Count: " . msession_add($sid, "counter", 2) . "<br>\n"; -echo "Muldiv counter * 2 / 3 :" . msession_muldiv($sid, "counter", "2", "3") . "<br>\n"; - -# This gets a count of active sessions. -echo "Total active sessions: " . msession_count() . "<br>\n"; - -# This gets all the variables for a user in an associative array. -$varray = msession_get_array($sid); - -if(!$varray) - echo "Get variable array: Failed<br>\n"; - -# Display all the user's variables -$arraykeys = array_keys($varray); -for($i=0; $arraykeys[$i]; $i++) - echo "Key: " . $arraykeys[ $i ] ." = " .$varray[$arraykeys[$i]] ."<br>\n"; - - -# Find a list of all sessions with same name/value pair -$array = msession_find('name1', 'test1'); - -#display the sessions -for($i=0; $array[$i]; $i++) - echo "Similar Sessions: " . $i . " " . $array[$i] . "<br>\n"; - -# Find all the sessions which have the variable "time" set. -$vararray = msession_listvar('time'); - -$arraykeys = array_keys($vararray); - -for($i=0; $arraykeys[$i]; $i++) - echo "Key: " . $arraykeys[ $i ] ." = " .$vararray[$arraykeys[$i]] ."<br>\n"; - -# msession can support a personality plugin, this is an escape call directly -# into the plugin's REQ_ESCAPE function. -echo "Call the plugin: " . msession_plugin($sid, 3, "test"). "<br>\n"; - -# msession also supprts function-only plugins. this is a call into the demo -# plugin (funct.so) which returns the uptime of the msessiond process. -echo "Call the function: " . msession_call('fntest', "1","2", "3", "4") ."<br>\n"; - -#List ALL sessions on the system -$sarray = msession_list(); - -for($i=0; $sarray[$i]; $i++) - echo "Sessions: " . $i . " " . $sarray[$i] . "<br>\n"; - -?> - diff --git a/ext/msession/msession.c b/ext/msession/msession.c deleted file mode 100644 index c271e7799c..0000000000 --- a/ext/msession/msession.c +++ /dev/null @@ -1,1639 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | msession 1.0 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2003 The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 2.02 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available at through the world-wide-web at | - | http://www.php.net/license/2_02.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Authors: Mark Woodward <markw@mohawksoft.com> | - | Portions copyright the PHP group. | - +----------------------------------------------------------------------+ - */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "php.h" -#include "php_ini.h" -#include "php_msession.h" -#include "msessionapi.h" -#include "ext/standard/info.h" -#include "ext/session/php_session.h" - -/* Macros and such */ -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef SID_LEN -#define SID_LEN 32 -#endif - -/* Uncomment to get debugging messages */ -// #define ERR_DEBUG - -#ifdef ERR_DEBUG -#define ELOG( str ) php_log_err( (char *)(str) ) -#else -#define ELOG( str ) -#endif - -/* Test if system is OK fror use. */ -/* Macros may be ugly, but I can globaly add debuging when needed. */ -#define IFCONNECT_BEGIN { void *t_conn; REQB t_reqb; if(MSessionGetBuffers(&t_conn, &t_reqb TSRMLS_CC)) { - -/* End IFCONNECT block with return FALSE */ -#define IFCONNECT_END MSessionReleaseBuffers(t_conn, &t_reqb TSRMLS_CC);} else { php_error(E_WARNING, s_szNoInit, get_active_function_name(TSRMLS_C)); RETURN_FALSE; }} - -/* End IFCONNECT block without return */ -#define IFCONNECT_ENDNR MSessionReleaseBuffers(t_conn, &t_reqb TSRMLS_CC);} else { php_error(E_WARNING, s_szNoInit, get_active_function_name(TSRMLS_C)); }} - -#ifndef HAVE_PHP_SESSION -#error HAVE_PHP_SESSION not defined -#endif - -static int msession_split_host_port(char *host, int cbhost, char *save_path, int def_port); -static int MSessionGetBuffers(void **pconn, REQB *preq TSRMLS_DC); -static void MSessionReleaseBuffers(void *pconn, REQB *preq TSRMLS_DC); -static void msession_logf(char *fmt, ...); -static void php_msession_init_globals(zend_msession_globals *msession_globals); -static int PHPDoRequest(void **pconn, REQB *preq TSRMLS_DC); -static void *PHPMSessionConnect(const char *szhost, int nport TSRMLS_DC); -static void PHPMSessionDisconnect(TSRMLS_DC); -static char * PHPMSessionGetString(int req, const char *session, char *name, char *value, int param TSRMLS_DC); -static int PHPMSessionGetInt(int req, char *session, char *name, char *value, int param TSRMLS_DC); -static int PHPMSessionGetArray(zval *return_value, int req, char *session, char *name, char *value, int param TSRMLS_DC); -static int PHPMSessionGetArrayPairs(zval *return_value, int req, char *session, char *name, char *value, int param TSRMLS_DC); -static int PHPMSessionExec(int req, char *session, char *name, char *value, int param TSRMLS_DC); - -/* Test if session module contains custom sesson ID patch */ -#ifdef PHP_SESSION_API -#if (PHP_SESSION_API >= 20020330) -#define HAVE_PHP_SESSION_CREATESID -#endif -#endif - -/* This sets the PHP API version used in the file. */ -/* If this module does not compile on the version of PHP you are using, look for */ -/* this value in Zend/zend_modules.h, and set appropriately */ -#if (ZEND_MODULE_API_NO <= 20001222) -#define PHP_4_0 -#define TSRMLS_CC -#define TSRMLS_DC -#define TSRMLS_FETCH() -/* Comment out this line if you wish to have msession without php sessions */ -#define HAVE_PHP_SESSION -#warning Backward compatible msession extension requires PHP sessions. If PHP compiles and links, you can ignore this warning. -#elif (ZEND_MODULE_API_NO >= 20010901) -#define PHP_4_1 -#endif - -/* - * Please do not remove backward compatibility from this module. - * this same source must also work with the 4.0.6 version of PHP. - * - * Module Variable naming hints: - * All global scope variables begin with "g_" for global. - * All static file scoped variables begin with "s_" for static. - * Zero terminated strings generally start with "sz" for "string followed by zero." - * integers that hold string or data lengths generally start with "cb" for "count of bytes." - * Also, please to not reformat braces ;-) - * -MLW - */ -#if HAVE_MSESSION -#ifdef HAVE_PHP_SESSION -#ifdef HAVE_PHP_SESSION_CREATESID -/* If the PHP Session module is compiled or available, include support */ -PS_FUNCS_SID(msession); -ps_module ps_mod_msession = { - PS_MOD_SID(msession) -}; -#else -PS_FUNCS(msession); -ps_module ps_mod_msession = { - PS_MOD(msession) -}; -#endif -#endif - -ZEND_DECLARE_MODULE_GLOBALS(msession) - -/* Static strings */ -static char s_szNoInit[]="%s(): MSession not initialized"; -static char s_szErrFmt[]="%s(): %s"; - -/* Per-process variables need by msession */ -static char s_szdefhost[]="localhost"; - -#define MAX_HOST 1024 -#define DEF_PORT 8086 - -function_entry msession_functions[] = { - PHP_FE(msession_connect,NULL) - PHP_FE(msession_disconnect,NULL) - PHP_FE(msession_lock,NULL) - PHP_FE(msession_unlock,NULL) - PHP_FE(msession_count,NULL) - PHP_FE(msession_create,NULL) - PHP_FE(msession_destroy,NULL) - PHP_FE(msession_set,NULL) - PHP_FE(msession_get,NULL) - PHP_FE(msession_find,NULL) - PHP_FE(msession_get_array,NULL) - PHP_FE(msession_save_object,NULL) - PHP_FE(msession_get_object,NULL) - PHP_FE(msession_set_array,NULL) - PHP_FE(msession_timeout,NULL) - PHP_FE(msession_inc,NULL) - PHP_FE(msession_add,NULL) - PHP_FE(msession_muldiv,NULL) - PHP_FE(msession_setdata,NULL) - PHP_FE(msession_getdata,NULL) - PHP_FE(msession_listvar,NULL) - PHP_FE(msession_list,NULL) - PHP_FE(msession_uniq,NULL) - PHP_FE(msession_randstr,NULL) - PHP_FE(msession_plugin,NULL) - PHP_FE(msession_call,NULL) - PHP_FE(msession_ctl,NULL) - {NULL, NULL, NULL} -}; - -zend_module_entry msession_module_entry = { -#ifdef PHP_4_1 - STANDARD_MODULE_HEADER, -#endif - "msession", - msession_functions, - PHP_MINIT(msession), - PHP_MSHUTDOWN(msession), - NULL, /* PHP_RINIT(msession),*/ - NULL, /* PHP_RSHUTDOWN(msession), */ - PHP_MINFO(msession), -#ifdef PHP_4_1 - NO_VERSION_YET, -#endif - STANDARD_MODULE_PROPERTIES -}; -#ifdef COMPILE_DL_MSESSION -ZEND_GET_MODULE(msession) -#endif - -// Split host port syntax: host:port -// Warning, make sure buffer is big enough! -static int msession_split_host_port(char *host, int cbhost, char *save_path, int def_port) -{ - int port; - char * szport; - strncpy(host, save_path, cbhost); - szport = strchr(host, ':'); - if(szport) - { - *szport++=0; - port = atoi(szport); - } - else - { - port = def_port; - } - return port; -} -// Called by internal functions to get buffers and connection -static int MSessionGetBuffers(void **pconn, REQB *preqb TSRMLS_DC) -{ - *pconn = (void *)MSESSION_G(conn); - AllocateRequestBuffer(preqb,2048); - if(!*pconn) - *pconn = PHPMSessionConnect(MSESSION_G(host), MSESSION_G(port) TSRMLS_CC); - return (int) *pconn; -} - -// Called after GetBuffers, updates preqb if nessisary. -// The syntax of this function, along with allows for -// flexibility of the nature of the interface changes. -static void MSessionReleaseBuffers(void *pconn, REQB *preqb TSRMLS_DC) -{ - MSESSION_G(conn) = pconn; - FreeRequestBuffer(preqb); -} -/* Uses printf syntax to write to php_log_err - * Must remain in ERR_DEBUG ifdef to ensure it - * does not get compiled into release code - */ -static void msession_logf(char *fmt, ...) -{ - va_list arglist; - char buffer[2048]; - va_start(arglist, fmt); - vsnprintf(buffer, sizeof(buffer), fmt, arglist); - va_end(arglist); - php_log_err(buffer); -} - -// Initialize global structure -static void php_msession_init_globals(zend_msession_globals *msession_globals) -{ - char host[MAX_HOST]; - int global_variable; - char *init = INI_STR("session.save_path"); - msession_globals->conn = NULL; - msession_globals->reqb = NULL; - - if(!init) - { - ELOG("Could not get session.save_path from INI_STR"); - msession_globals->host = pestrdup(s_szdefhost,1); - msession_globals->port = DEF_PORT; - } - else - { - msession_globals->port = msession_split_host_port(host, sizeof(host), init, DEF_PORT); - msession_globals->host = pestrdup(host,1); - } -} - -PHP_MINIT_FUNCTION(msession) -{ - ZEND_INIT_MODULE_GLOBALS(msession, php_msession_init_globals, NULL); -#ifdef HAVE_PHP_SESSION - php_session_register_module(&ps_mod_msession); -#endif - return SUCCESS; -} - -PHP_MSHUTDOWN_FUNCTION(msession) -{ - return SUCCESS; -} - -PHP_RINIT_FUNCTION(msession) -{ - return SUCCESS; -} - -PHP_RSHUTDOWN_FUNCTION(msession) -{ - TSRMLS_FETCH(); - void *t_conn = (void *)MSESSION_G(conn); - if(t_conn) - { - MSESSION_G(conn) = NULL; - CloseReqConn(t_conn); - t_conn = NULL; - } - return SUCCESS; -} - -PHP_MINFO_FUNCTION(msession) -{ - ELOG("PHP_MINFO"); - php_info_print_table_start(); - php_info_print_table_header(2, "msession support", "enabled"); - php_info_print_table_end(); -} - -/* The PHP Version of DoRequest */ -/* Manages connections that have been disconnected */ -static int PHPDoRequest(void **pconn, REQB *preq TSRMLS_DC) -{ - int stat = preq->req->stat; - int param = preq->req->param; - int result = DoRequest(*pconn, preq); - ELOG("PHPDoRequest"); - /* Server closed the connection! */ - if(preq->req->stat == MREQ_ERR && (result == REQE_BADCONN || result == REQE_NOSEND)) - { - /* In the case of a bad socket, this should be */ - /* all that changs! */ - preq->req->stat = stat; - preq->req->param = param; - ELOG("Connection was closed by server"); - if(ReopenReqConn(*pconn)) - result = DoRequest(*pconn, preq); - } -#ifdef ERR_DEBUG - if(preq->req->stat == MREQ_ERR && (result == REQE_BADCONN || result == REQE_NOSEND)) - ELOG("Socket reports closed"); -#endif - return result; -} -static void *PHPMSessionConnect(const char *szhost, int nport TSRMLS_DC) -{ - int fNewHost=FALSE; - int fNewPort=FALSE; - int fResult=FALSE; - void *t_conn; - REQB *preqb; - TSRMLS_FETCH(); - - ELOG("PHPMSessionConnect"); - - t_conn = (void *)MSESSION_G(conn); - - char *gszhost = MSESSION_G(host); - int gport = MSESSION_G(port); - - if(nport == 0) - nport = DEF_PORT; - - if(strcmp(gszhost, szhost)) - { - if(gszhost != s_szdefhost) - free(gszhost); - gszhost = strdup(szhost); - MSESSION_G(host) = gszhost; - fNewHost = TRUE; - } - if(nport != gport) - { - fNewPort = TRUE; - gport = nport; - MSESSION_G(port) = gport; - } - if(!fNewHost && !fNewPort && t_conn) - return t_conn; // Nothing to do, already there - - if(t_conn) - { - MSESSION_G(conn) = NULL; - CloseReqConn(t_conn); - php_log_err("Call to PHPMSessionConnect with non-null t_conn" TSRMLS_CC); - t_conn = NULL; - } - - t_conn = OpenReqConn(gszhost, gport); - - MSESSION_G(conn) = t_conn; - return t_conn; -} - -static void PHPMSessionDisconnect(TSRMLS_DC) -{ - TSRMLS_FETCH(); - void *t_conn = (void *)MSESSION_G(conn); - if(t_conn) - { - CloseReqConn(t_conn); - MSESSION_G(conn) = NULL; - t_conn = NULL; - } -} - -static char * PHPMSessionGetString(int req, const char *session, char *name, char *value, int param TSRMLS_DC) -{ - char *szvalue = NULL; - TSRMLS_FETCH(); - ELOG("PHPMSessionGetString"); - - IFCONNECT_BEGIN - FormatRequest(&t_reqb, req, (char *)session, name, value, param); - PHPDoRequest(&t_conn, &t_reqb); - - if(t_reqb.req->stat == MREQ_OK && t_reqb.req->datum[0]) - szvalue = safe_estrdup(t_reqb.req->datum); - else - php_error(E_WARNING, s_szErrFmt, get_active_function_name(TSRMLS_C), ReqbErr(&t_reqb)); - IFCONNECT_ENDNR - -#ifdef ERR_DEBUG - if(szvalue) - ELOG(szvalue); - else - ELOG("GetString returned NULL"); -#endif - return szvalue; -} - -static int PHPMSessionGetInt(int req, char *session, char *name, char *value, int param TSRMLS_DC) -{ - TSRMLS_FETCH(); - ELOG("PHPMSessionGetInt"); - IFCONNECT_BEGIN - FormatRequest(&t_reqb, req, session, name, value, param); - PHPDoRequest(&t_conn, &t_reqb); - - param = t_reqb.req->param; - - if(t_reqb.req->stat != MREQ_OK) - php_error(E_WARNING, s_szErrFmt, get_active_function_name(TSRMLS_C), ReqbErr(&t_reqb)); - - IFCONNECT_ENDNR - return param; -} -static int StringsToFixedArray(char *strings, char **array, int ceArray) -{ - int i; - char *p = strings; - int term=ceArray-1; - for(i=0; i < term; i++) - { - if(!*p) - break; - array[i] = p; - p += strlen(p)+1; - } - array[i]=0; - return i; -} -static int PHPMSessionGetArray(zval *return_value, int req, char *session, char *name, char *value, int param TSRMLS_DC) -{ - int stat=0; - TSRMLS_FETCH(); - ELOG("PHPMSessionGetArray"); - IFCONNECT_BEGIN - FormatRequest(&t_reqb, req, session, name, value, param); - PHPDoRequest(&t_conn,&t_reqb); - - if(t_reqb.cmd==MREQ_OK && t_reqb.param) - { - int i=0; - int term = 0; - int string_count = t_reqb.param + 4; - char ** strings = (char **)emalloc(sizeof(char *) * (t_reqb.param + 4)); - term = StringsToFixedArray(t_reqb.req->datum, strings, string_count); - - array_init(return_value); - for(i=0; i < term; i++) - { - ELOG(strings[i]); - add_index_string(return_value, i, safe_estrdup(strings[i]), 0); - } - efree(strings); - } - else if(t_reqb.req->stat != MREQ_OK) - php_error(E_WARNING, s_szErrFmt, get_active_function_name(TSRMLS_C), ReqbErr(&t_reqb)); - - stat = t_reqb.req->stat; - - IFCONNECT_ENDNR - return stat; -} - -static int PHPMSessionGetArrayPairs(zval *return_value, int req, char *session, char *name, char *value, int param TSRMLS_DC) -{ - int stat=0; - TSRMLS_FETCH(); - ELOG("PHPMSessionGetArrayPairs"); - IFCONNECT_BEGIN - FormatRequest(&t_reqb, req, session, name, value, param); - PHPDoRequest(&t_conn,&t_reqb); - - if(t_reqb.cmd==MREQ_OK && t_reqb.param) - { - int ndx=0; - int term = 0; - int string_count = t_reqb.param + 4; - char ** strings = (char **)emalloc(sizeof(char *) * (t_reqb.param + 4)); - term = StringsToFixedArray(t_reqb.req->datum, strings, string_count); - array_init(return_value); - if(req == MREQ_GETOBJECT) - { - ELOG("Using MREQ_GETOBJECT classname and classdata"); - add_assoc_string(return_value, safe_estrdup("classname"), safe_estrdup(strings[ndx]), 0); - ELOG(strings[ndx]); - ndx++; - add_assoc_string(return_value, safe_estrdup("classdata"), safe_estrdup(strings[ndx]), 0); - ELOG(strings[ndx]); - ndx++; - } - for(; ndx < term; ndx+=2) - { - ELOG(strings[ndx]); - ELOG(strings[ndx+1]); - add_assoc_string(return_value, safe_estrdup(strings[ndx]), - safe_estrdup(strings[ndx+1]), 0); - } - - efree(strings); - } - else - php_error(E_WARNING, s_szErrFmt, get_active_function_name(TSRMLS_C), ReqbErr(&t_reqb)); - - stat = t_reqb.req->stat; - IFCONNECT_ENDNR - - return stat; -} -static int PHPMSessionExec(int req, char *session, char *name, char *value, int param TSRMLS_DC) -{ - int stat=0; - TSRMLS_FETCH(); - ELOG("PHPMSessionExec"); - IFCONNECT_BEGIN - FormatRequest(&t_reqb, req, session, name, value, param); - PHPDoRequest(&t_conn, &t_reqb); - - stat = t_reqb.req->stat; - - if(t_reqb.req->stat != MREQ_OK) - php_error(E_WARNING, s_szErrFmt, get_active_function_name(TSRMLS_C), ReqbErr(&t_reqb)); - - IFCONNECT_ENDNR - return stat; -} -static int PHPMSessionExecData(int req, char *session, char *name, char *value, void *data, int cb, int param TSRMLS_DC) -{ - int stat=0; - TSRMLS_FETCH(); - ELOG("PHPMSessionExec"); - IFCONNECT_BEGIN - FormatRequestData(&t_reqb, req, session, name, value, data, cb, param); - PHPDoRequest(&t_conn, &t_reqb); - - stat = t_reqb.req->stat; - - if(t_reqb.req->stat != MREQ_OK) - php_error(E_WARNING, s_szErrFmt, get_active_function_name(TSRMLS_C), ReqbErr(&t_reqb)); - - IFCONNECT_ENDNR - return stat; -} -/* {{{ proto bool msession_connect(string host, string port) - Connect to msession sever */ -PHP_FUNCTION(msession_connect) -{ - char *szhost; - int nport; - zval **zhost; - zval **zport; - ELOG("msession_connect"); - if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &zhost, &zport) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(zhost); - convert_to_string_ex(zport); - szhost = Z_STRVAL_PP(zhost); - nport = atoi(Z_STRVAL_PP(zport)); - - if(PHPMSessionConnect(szhost,nport)) - { - RETURN_TRUE; - } - else - { - php_error(E_WARNING, "%s(): MSession connect failed", get_active_function_name(TSRMLS_C)); - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto void msession_disconnect(void) - Disconnect from msession server */ -PHP_FUNCTION(msession_disconnect) -{ - ELOG("msession_disconnect"); - PHPMSessionDisconnect(); - RETURN_NULL(); -} -/* }}} */ - -/* {{{ proto int msession_count(void) - Get session count */ -PHP_FUNCTION(msession_count) -{ - int count=0; - ELOG("msession_count"); - count = PHPMSessionGetInt(MREQ_COUNT, "","","",0 TSRMLS_CC); - RETURN_LONG(count); -} -/* }}} */ - -/* {{{ proto bool msession_create(string session[,string classname][,string data]) - Create a session cacheid */ -PHP_FUNCTION(msession_create) -{ - int stat=0; - int ret; - char *szsession; - zval **session; - zval **zclassname; - zval **zdata; - char *classname="phpsession"; - char *data = NULL; - int nargs = ZEND_NUM_ARGS(); - - ELOG("msession_create"); - if(nargs < 1) - { - WRONG_PARAM_COUNT; - } - - if(nargs == 2) - { - ret = zend_get_parameters_ex(2, &session, &zclassname); - convert_to_string_ex(session); - convert_to_string_ex(zclassname); - szsession = Z_STRVAL_PP(session); - classname = Z_STRVAL_PP(zclassname); - } - else if(nargs == 3) - { - ret = zend_get_parameters_ex(3, &session, &zclassname, &zdata); - convert_to_string_ex(session); - convert_to_string_ex(zclassname); - convert_to_string_ex(zdata); - szsession = Z_STRVAL_PP(session); - classname = Z_STRVAL_PP(zclassname); - data = Z_STRVAL_PP(zdata); - } - if(ret = FAILURE) - { - WRONG_PARAM_COUNT; - } - - stat = PHPMSessionExec(MREQ_CREATE, szsession,classname ,data,0 TSRMLS_CC); - - if(stat==MREQ_OK) - { - RETURN_TRUE; - } - else - { - RETURN_FALSE; - } -} -/* }}} */ -/* {{{ proto bool msession_save_object(string session, string data[, array tuples[,string classname]]) - Create a session cacheid - This function really needs to be written to handle objects and not arrays. -*/ -PHP_FUNCTION(msession_save_object) -{ - zval **session=NULL; - zval **zdata=NULL; - zval **tuples=NULL; - zval **zclassname=NULL; - HashPosition pos; - zval **entry; - char *key; - uint keylen; - ulong numndx; - int ndx=0; - char **pairs; - HashTable *htTuples; - int i; - int nargs = ZEND_NUM_ARGS(); - int res; - int countpair; - TSRMLS_FETCH(); - char *szsession; - char *classname; - char *data; - int ret; - - ELOG("msession_save_object"); - if(nargs < 2 ) - { - WRONG_PARAM_COUNT; - } - if(nargs == 2) - { - ret = zend_get_parameters_ex(2, &session, &zdata); - convert_to_string_ex(session); - convert_to_string_ex(zclassname); - szsession = Z_STRVAL_PP(session); - classname = Z_STRVAL_PP(zclassname); - } - else if(nargs == 3) - { - ret = zend_get_parameters_ex(3, &session, &zdata, &tuples); - convert_to_string_ex(session); - convert_to_string_ex(zclassname); - convert_to_string_ex(zdata); - szsession = Z_STRVAL_PP(session); - classname = Z_STRVAL_PP(zclassname); - data = Z_STRVAL_PP(zdata); - } - else if(nargs == 4) - { - ret = zend_get_parameters_ex(4, &session, &zdata, &tuples, &zclassname); - convert_to_string_ex(session); - convert_to_string_ex(zclassname); - convert_to_string_ex(zdata); - szsession = Z_STRVAL_PP(session); - classname = Z_STRVAL_PP(zclassname); - data = Z_STRVAL_PP(zdata); - } - - htTuples = Z_ARRVAL_PP(tuples); - - countpair = zend_hash_num_elements(htTuples); - - pairs = (char **)emalloc(sizeof(char *) * (countpair+1) * 2); - - if(!pairs) - { - ELOG("no pairs"); - RETURN_FALSE; - } - - ELOG("have pairs"); - - /* Initializes pos */ - zend_hash_internal_pointer_reset_ex(htTuples, &pos); - - ELOG("reset pointer"); - - for(i=0; i < countpair; i++) - { - if(zend_hash_get_current_data_ex(htTuples, (void **)&entry, &pos) != SUCCESS) - break; - - if(entry) - { - char *szentry; - convert_to_string_ex(entry); - szentry = Z_STRVAL_PP(entry); - - if(zend_hash_get_current_key_ex(htTuples,&key,&keylen,&numndx,0,&pos)== HASH_KEY_IS_STRING) - { - pairs[ndx++] = key; - pairs[ndx++] = szentry; - } - } - zend_hash_move_forward_ex(htTuples, &pos); - } - - IFCONNECT_BEGIN - ELOG("FormatMulti"); - FormatRequestStrings(&t_reqb, MREQ_CREATE | MSTAT_TYPE_OBJECT, - szsession, classname, data, ndx, pairs); - PHPDoRequest(&t_conn,&t_reqb); - - if(t_reqb.req->stat != MREQ_OK) - php_error(E_WARNING, s_szErrFmt, get_active_function_name(TSRMLS_C), ReqbErr(&t_reqb)); - efree((void *)pairs); - - IFCONNECT_END - - RETURN_TRUE; - -} -/* }}} */ -/* {{{ proto bool msession_destroy(string name) - Destroy a session */ -PHP_FUNCTION(msession_destroy) -{ - char *szsession; - zval **session; - ELOG("msession_destroy"); - if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &session) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - szsession = Z_STRVAL_PP(session); - PHPMSessionExec(MREQ_DROP, szsession, "", "", 0 TSRMLS_CC); - RETURN_TRUE; -} -/* }}} */ - -/* {{{ proto int msession_lock(string name) - Lock a session */ -PHP_FUNCTION(msession_lock) -{ - int stat; - int param; - - char *szsession; - zval **session; - - ELOG("msession_lock"); - if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &session) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - szsession = Z_STRVAL_PP(session); - - param = PHPMSessionGetInt(MREQ_SLOCK, szsession, "","",0 TSRMLS_CC); - - RETURN_LONG(param); -} -/* }}} */ - -/* {{{ proto int msession_stat(string name) - Lock a session */ -PHP_FUNCTION(msession_ctl) -{ - static char *parray[] = - { "EXIST", - "TTL", - "AGE", - "TLA", - "CTIME", - "TOUCH", - "NOW", - NULL - }; - int stat = 0; - int param; - - char *szsession; - zval **session; - zval **which; - int fn = MREQ_CTL_EXIST; - - int n = ZEND_NUM_ARGS(); - - ELOG("msession_ctl"); - if(n != 1 && n != 2) - { - WRONG_PARAM_COUNT; - } - if(zend_get_parameters_ex(n,&session,&which) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - szsession = Z_STRVAL_PP(session); - - if(n > 1) - { - char *szwhich; - int i; - convert_to_string_ex(which); - szwhich = Z_STRVAL_PP(which); - for(i=0; parray[i]; i++) - { - if(strcasecmp(parray[i], szwhich) == 0) - { - fn = i; - break; - } - } - } - param = PHPMSessionGetInt(MREQ_CTL, szsession, "", "", fn TSRMLS_CC); - RETURN_LONG(param); -} - -/* {{{ proto int msession_unlock(string session, int key) - Unlock a session */ -PHP_FUNCTION(msession_unlock) -{ - int stat; - int param; - - char *szsession; - long lkey; - zval **session; - zval **key; - - ELOG("msession_unlock"); - if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &session, &key) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - szsession = Z_STRVAL_PP(session); - convert_to_long_ex(key); - lkey = Z_LVAL_PP(key); - - param = PHPMSessionGetInt(MREQ_SUNLOCK, szsession, "", "", lkey TSRMLS_CC); - RETURN_LONG(param); -} -/* }}} */ - -/* {{{ proto bool msession_set(string session, string name, string value) - Set value in session */ -PHP_FUNCTION(msession_set) -{ - int stat; - char *szsession; - char *szname; - char *szvalue; - zval **session; - zval **name; - zval **value; - ELOG("msession_get"); - - if(ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3,&session,&name,&value) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - convert_to_string_ex(name); - convert_to_string_ex(value); - - szsession = Z_STRVAL_PP(session); - szname = Z_STRVAL_PP(name); - szvalue = Z_STRVAL_PP(value); - - stat = PHPMSessionExec(MREQ_SETVAL, szsession, szname, szvalue, 0 TSRMLS_CC); - - if(stat==MREQ_OK) - { - RETURN_TRUE; - } - else - { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto string msession_get(string session, string name, string default_value) - Get value from session */ -PHP_FUNCTION(msession_get) -{ - int stat; - char *szvalue=NULL; - char *szsession; - char *szname; - zval **session; - zval **name; - zval **value; - ELOG("msession_get"); - - if(ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3,&session,&name,&value) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - convert_to_string_ex(name); - convert_to_string_ex(value); - szsession = Z_STRVAL_PP(session); - szname = Z_STRVAL_PP(name); - szvalue = Z_STRVAL_PP(value); - - szvalue = PHPMSessionGetString(MREQ_GETVAL, szsession,szname, szvalue, 0 TSRMLS_CC); - - if(szvalue) - { - RETURN_STRING(szvalue,0) - } - else - { - RETURN_NULL(); - } -} -/* }}} */ - -/* {{{ proto string msession_uniq(int num_chars[, string classname[, string data]]) - Get uniq id */ -PHP_FUNCTION(msession_uniq) -{ - int stat=0; - int ret = FAILURE; - int cbname; - zval **session; - zval **zclassname; - zval **zdata; - char *szsession; - char *classname="phpsession"; - char *data = NULL; - int nargs = ZEND_NUM_ARGS(); - - ELOG("msession_uniq"); - if(nargs < 1) - { - WRONG_PARAM_COUNT; - } - if(nargs == 1) - { - ret = zend_get_parameters_ex(1, &session); - convert_to_string_ex(session); - szsession = Z_STRVAL_PP(session); - } - else if(nargs == 2) - { - ret = zend_get_parameters_ex(2, &session, &zclassname); - convert_to_string_ex(session); - convert_to_string_ex(zclassname); - szsession = Z_STRVAL_PP(session); - classname = Z_STRVAL_PP(zclassname); - } - else if(nargs == 3) - { - ret = zend_get_parameters_ex(3, &session, &zclassname, &zdata); - convert_to_string_ex(session); - convert_to_string_ex(zclassname); - convert_to_string_ex(zdata); - szsession = Z_STRVAL_PP(session); - classname = Z_STRVAL_PP(zclassname); - data = Z_STRVAL_PP(zdata); - } - else - { - WRONG_PARAM_COUNT; - } - - cbname = atoi(szsession); - szsession = PHPMSessionGetString(MREQ_UNIQ, NULL, classname, data,MPARM_CREATE(0,cbname) TSRMLS_CC); - - if(szsession) - { - RETURN_STRING(szsession,0) - } - else - { - RETURN_NULL(); - } -} -/* }}} */ - -/* {{{ proto string msession_randstr(int num_chars) - Get random string */ -PHP_FUNCTION(msession_randstr) -{ - int stat; - char *szvalue=NULL; - long val; - zval **param; - ELOG("msession_randstr"); - - if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,¶m) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_long_ex(param); - val = Z_LVAL_PP(param); - - szvalue = PHPMSessionGetString(MREQ_RANDSTR, "","","",val TSRMLS_CC); - - if(szvalue) - { - RETURN_STRING(szvalue,0) - } - else - { - RETURN_NULL(); - } -} -/* }}} */ - -/* {{{ proto array msession_find(string name, string value) - Find all sessions with name and value */ -PHP_FUNCTION(msession_find) -{ - int stat; - char *szname; - char *szvalue; - zval **name; - zval **value; - ELOG("msession_find"); - - if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &name, &value) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(name); - convert_to_string_ex(value); - szname = Z_STRVAL_PP(name); - szvalue = Z_STRVAL_PP(value); - - stat = PHPMSessionGetArray(return_value, MREQ_FIND, "", szname, szvalue, 0 TSRMLS_CC); - -} -/* }}} */ - -/* {{{ proto array msession_list(void) - List all sessions */ -PHP_FUNCTION(msession_list) -{ - ELOG("msession_list"); - int stat = PHPMSessionGetArray(return_value, MREQ_LIST, "", "","", 0 TSRMLS_CC); -} -/* }}} */ - -/* {{{ proto array msession_get_array(string session) - Get array of msession variables */ -PHP_FUNCTION(msession_get_array) -{ - int stat; - char *szsession; - zval **session; - ELOG("msession_getarray"); - if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &session) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - szsession = Z_STRVAL_PP(session); - - stat = PHPMSessionGetArrayPairs(return_value, MREQ_GETALL, szsession, "","", 0 TSRMLS_CC); -} -/* }}} */ -/* {{{ proto object msession_get_object(string object) - Get msession variable object */ -PHP_FUNCTION(msession_get_object) -{ -// FIXME FIXME FIXME - int stat; - char *szsession; - zval **session; - if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &session) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - szsession = Z_STRVAL_PP(session); - - stat = PHPMSessionGetArrayPairs(return_value, MREQ_GETOBJECT, szsession, NULL, NULL, 0 TSRMLS_CC); -} -/* }}} */ -/* {{{ proto bool msession_set_array(string session, array tuples) - Set msession variables from an array*/ -PHP_FUNCTION(msession_set_array) -{ - zval **session; - zval **tuples; - HashPosition pos; - zval **entry; - char *key; -#ifdef PHP_4_1 - uint keylen; -#endif -#ifdef PHP_4_0 - ulong keylen; -#endif - ulong numndx; - int ndx=0; - char **pairs; - HashTable *htTuples; - int i; - int countpair; - - ELOG("msession_set_array"); - TSRMLS_FETCH(); - - if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &session, &tuples) == FAILURE) - { - WRONG_PARAM_COUNT; - } - htTuples = Z_ARRVAL_PP(tuples); - - countpair = zend_hash_num_elements(htTuples); - - pairs = (char **)emalloc(sizeof(char *) * countpair * 2); - - if(!pairs) - { - ELOG("no pairs"); - RETURN_FALSE; - } - - ELOG("have pairs"); - - /* Initializes pos */ - zend_hash_internal_pointer_reset_ex(htTuples, &pos); - - ELOG("reset pointer"); - - for(i=0; i < countpair; i++) - { - if(zend_hash_get_current_data_ex(htTuples, (void **)&entry, &pos) != SUCCESS) - break; - - if(entry) - { - char *szentry; - convert_to_string_ex(entry); - szentry = Z_STRVAL_PP(entry); - - if(zend_hash_get_current_key_ex(htTuples,&key,&keylen,&numndx,0,&pos)== HASH_KEY_IS_STRING) - { -#ifdef ERR_DEBUG -{ - char buffer [256]; - sprintf(buffer, "%s=%s\n", key, szentry); - ELOG(buffer); -} -#endif - pairs[ndx++] = key; - pairs[ndx++] = szentry; - } - } - zend_hash_move_forward_ex(htTuples, &pos); - } - - IFCONNECT_BEGIN - ELOG("FormatMulti"); - FormatRequestStrings(&t_reqb, MREQ_SETVAL, Z_STRVAL_PP(session), NULL, NULL, ndx, pairs); - PHPDoRequest(&t_conn,&t_reqb); - - if(t_reqb.req->stat != MREQ_OK) - php_error(E_WARNING, s_szErrFmt, get_active_function_name(TSRMLS_C), ReqbErr(&t_reqb)); - efree((void *)pairs); - IFCONNECT_END - -} -/* }}} */ - -/* {{{ proto array msession_listvar(string name) - return associative array of value:session for all sessions with a variable named 'name' */ -PHP_FUNCTION(msession_listvar) -{ - int stat; - zval **name; - if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &name) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(name); - - stat = PHPMSessionGetArrayPairs(return_value, MREQ_LISTVAR, "", Z_STRVAL_PP(name),"",0 TSRMLS_CC); -} -/* }}} */ - -/* {{{ proto int msession_timeout(string session [, int param ]) - Set/get session timeout */ -PHP_FUNCTION(msession_timeout) -{ - int stat; - int param; - zval **session; - int ac = ZEND_NUM_ARGS(); - int zstat = FAILURE; - int timeout = 0; - ELOG("msession_timeout"); - if(ac == 1) - { - zstat = zend_get_parameters_ex(1, &session); - } - else if(ac == 2) - { - zval **param; - zstat = zend_get_parameters_ex(2, &session, ¶m); - convert_to_long_ex(param); - timeout = Z_LVAL_PP(param); - } - if(zstat == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - - param = PHPMSessionGetInt(MREQ_TIMEOUT, Z_STRVAL_PP(session),"","",timeout TSRMLS_CC); - - RETURN_LONG(param); -} -/* }}} */ - -/* {{{ proto string msession_inc(string session, string name) - Increment value in session */ -PHP_FUNCTION(msession_inc) -{ - int stat; - char *szvalue; - zval **session; - zval **name; - - if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &session, &name) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - convert_to_string_ex(name); - - szvalue = PHPMSessionGetString(MREQ_ADD, Z_STRVAL_PP(session), Z_STRVAL_PP(name),"1",0 TSRMLS_CC); - - if(szvalue) - { - RETURN_STRING(szvalue,0) - } - else - { - RETURN_NULL(); - } -} -/* }}} */ -/* {{{ proto string msession_add(string session, string name, string value) - Increment value in session */ -PHP_FUNCTION(msession_add) -{ - int stat; - char *szvalue; - zval **session; - zval **name; - zval **value; - ELOG("msession_add"); - - if(ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &session, &name, &value) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - convert_to_string_ex(name); - convert_to_string_ex(value); - - szvalue = PHPMSessionGetString(MREQ_ADD, Z_STRVAL_PP(session), Z_STRVAL_PP(name),Z_STRVAL_PP(value),0 TSRMLS_CC); - - if(szvalue) - { - RETURN_STRING(szvalue,0) - } - else - { - RETURN_NULL(); - } -} -/* }}} */ -/* {{{ proto string msession_muldiv(string session, string name, string mul, string div) - Increment value in session */ -PHP_FUNCTION(msession_muldiv) -{ - int stat; - char *szvalue=NULL; - zval **session; - zval **name; - zval **mul; - zval **div; - char *pdata; - ELOG("msession_muldiv"); - - if(ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &session, &name, &mul, &div) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - convert_to_string_ex(name); - convert_to_string_ex(mul); - convert_to_string_ex(div); - - pdata = Z_STRVAL_PP(div); - - IFCONNECT_BEGIN - FormatRequestData(&t_reqb, MREQ_MULDIV, - Z_STRVAL_PP(session), Z_STRVAL_PP(name), Z_STRVAL_PP(mul), pdata, strlen(pdata)+1, 0); - - PHPDoRequest(&t_conn, &t_reqb); - - if(t_reqb.req->stat == MREQ_OK) - szvalue = safe_estrdup(t_reqb.req->datum); - else - php_error(E_WARNING, s_szErrFmt, get_active_function_name(TSRMLS_C), ReqbErr(&t_reqb)); - - IFCONNECT_ENDNR - - if(szvalue) - { - RETURN_STRING(szvalue,0) - } - else - { - RETURN_NULL(); - } -} -/* }}} */ - -/* {{{ proto string msession_getdata(string session) - Get data session unstructured data. (PHP sessions use this) */ -PHP_FUNCTION(msession_getdata) -{ - char *val; - zval **session; - ELOG("msession_getdata"); - - if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &session) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - - val = PHPMSessionGetString(MREQ_DATAGET, Z_STRVAL_PP(session), "", "", 0 TSRMLS_CC); - - if(val) - { - RETURN_STRING(val, 0) - } - else - { - RETURN_NULL(); - } -} -/* }}} */ - -/* {{{ proto bool msession_setdata(string session, string value) - Set data session unstructured data. (PHP sessions use this) */ -PHP_FUNCTION(msession_setdata) -{ - int stat; - zval **session; - zval **value; - ELOG("msession_setdata"); - - if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &session, &value) == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - convert_to_string_ex(value); - char *szdata = Z_STRVAL_PP(value); - - stat = PHPMSessionExecData(MREQ_DATASET, Z_STRVAL_PP(session),NULL,NULL,szdata,strlen(szdata),0 TSRMLS_CC); - if(stat==MREQ_OK) - { - RETURN_TRUE; - } - else - { - RETURN_FALSE; - } -} -/* }}} */ - -/* {{{ proto string msession_plugin(string session, string val [, string param ]) - Call the personality plugin escape function */ -PHP_FUNCTION(msession_plugin) -{ - int ret; - char *retval=NULL; - zval **session; - zval **val; - zval **param=NULL; - char *szparam; - - ELOG("msession_plugin"); - if(ZEND_NUM_ARGS() == 3) - { - ret = zend_get_parameters_ex(3, &session, &val, ¶m); - convert_to_string_ex(param); - } - else if(ZEND_NUM_ARGS() == 2) - { - ret = zend_get_parameters_ex(2, &session, &val); - } - else - { - WRONG_PARAM_COUNT; - } - if(ret == FAILURE) - { - WRONG_PARAM_COUNT; - } - convert_to_string_ex(session); - convert_to_string_ex(val); - - ret = atoi(Z_STRVAL_PP(val)); - szparam = (param) ? Z_STRVAL_PP(param) : ""; - - retval =PHPMSessionGetString(MREQ_PLUGIN, Z_STRVAL_PP(session), Z_STRVAL_PP(val), szparam, ret TSRMLS_CC); - - if(retval) - { - RETURN_STRING(retval, 0) - } - else - { - RETURN_FALSE; - } -} -/* }}} */ -#define MAX_EXT_VAL 6 -/* {{{ proto string msession_call(string fn_name, [, string param1 ], ... [,string param4]) - Call the plugin function named fn_name */ -PHP_FUNCTION(msession_call) -{ - int n; - int i; - int ret; - char *retval=NULL; - zval **val[MAX_EXT_VAL]; - char *strings[MAX_EXT_VAL+1]; -/* zval **param=NULL; */ - - TSRMLS_FETCH(); - n = ZEND_NUM_ARGS(); - ELOG("msession_call"); - - if((n < 1) || (n > MAX_EXT_VAL)) - { - WRONG_PARAM_COUNT; - } - - ret = zend_get_parameters_ex(n, &val[0],&val[1],&val[2],&val[3],&val[4],&val[5],&val[6]); - - if(ret == FAILURE) - { - WRONG_PARAM_COUNT; - } - for(i=0; i < n; i++) - { - convert_to_string_ex(val[i]); - strings[i] = Z_STRVAL_PP(val[i]); - } - strings[i]=0; - - IFCONNECT_BEGIN - FormatRequestStrings(&t_reqb, MREQ_CALL, NULL , strings[0], NULL, n-1, (n>1) ? &strings[1] : NULL); - PHPDoRequest(&t_conn, &t_reqb); - - if(t_reqb.req->stat==MREQ_OK && t_reqb.req->len) - retval = safe_estrdup(t_reqb.req->datum); - else - php_error(E_WARNING, s_szErrFmt, get_active_function_name(TSRMLS_C), ReqbErr(&t_reqb)); - - IFCONNECT_ENDNR - - if(retval) - { - RETURN_STRING(retval, 0) - } - else - { - RETURN_FALSE; - } -} -/* }}} */ - -#ifdef HAVE_PHP_SESSION - -PS_OPEN_FUNC(msession) -{ - char *szport; - char host[MAX_HOST]; - int port = msession_split_host_port(host, sizeof(host), (char *)save_path, DEF_PORT); - - ELOG("PS_OPEN_FUNC"); - - ELOG( "ps_open_msession"); - PS_SET_MOD_DATA((void *)1); /* session.c needs a non-zero here! */ - if (PHPMSessionConnect(host, port)) { - ELOG("Success"); - return SUCCESS; - } else { - ELOG("Failure"); - return FAILURE; - } -} - -PS_CLOSE_FUNC(msession) -{ - ELOG( "ps_close_msession"); - PHPMSessionDisconnect(); - PS_SET_MOD_DATA((void *)0); - return SUCCESS; -} - -PS_READ_FUNC(msession) -{ - ELOG( "ps_read_msession"); - *val = PHPMSessionGetString(MREQ_DATAGET, (char *)key, "", "", 0 TSRMLS_CC); - if(*val) - { - *vallen = strlen(*val); - ELOG( *val ); - } - else - { - *val = emalloc(1); - **val=0; - *vallen = 0; - } - return SUCCESS; -} - -PS_WRITE_FUNC(msession) -{ - ELOG("PS_WRITE_FUNC"); - ELOG(key); - ELOG(val); - int stat = PHPMSessionExecData(MREQ_DATASET, key, NULL, NULL, val, strlen(val), 0 TSRMLS_CC); - return (stat == MREQ_OK) ? SUCCESS : FAILURE; -} - -PS_DESTROY_FUNC(msession) -{ - ELOG( "ps_destroy_msession"); - int stat = PHPMSessionExec(MREQ_DROP, (char *)key, "", "", 0 TSRMLS_CC); - return (stat == MREQ_OK) ? SUCCESS : FAILURE; -} - -PS_GC_FUNC(msession) -{ - ELOG( "ps_gc_msession"); - return SUCCESS; -} - -#ifdef HAVE_PHP_SESSION_CREATESID -PS_CREATE_SID_FUNC(msession) -{ - ELOG("PS_CREATE_SID_FUNCx"); - char * sessid = PHPMSessionGetString(MREQ_UNIQ, "","phpsess","",MPARM_CREATE(0,SID_LEN) TSRMLS_CC); - - if(!sessid || !strlen(sessid)) - ELOG("No SID returned from UNIQ"); - else - ELOG(sessid); - - if(!sessid) - sessid = php_session_create_id(mod_data, newlen TSRMLS_CC); - - ELOG(sessid); - return sessid; -} -#endif /* HAVE_PHP_SESSION_CREATESID */ -#endif /* HAVE_PHP_SESSION */ -#endif /* HAVE_MSESSION */ - diff --git a/ext/msession/msession.php b/ext/msession/msession.php deleted file mode 100644 index 4eb9d9b6cd..0000000000 --- a/ext/msession/msession.php +++ /dev/null @@ -1,10 +0,0 @@ -<? -$module = 'msession'; -$function = 'confirm_' . $module . '_compiled'; -if (extension_loaded($module)) { - $str = $function($module); -} else { - $str = "Module $module is not compiled into PHP"; -} -echo "$str\n"; -?> diff --git a/ext/msession/msessionapi.h b/ext/msession/msessionapi.h deleted file mode 100644 index fba66d54ce..0000000000 --- a/ext/msession/msessionapi.h +++ /dev/null @@ -1,366 +0,0 @@ -/* - Mohawk Software Framework by Mohawk Software - Copyright (C) 1998-2001 Mark L. Woodward - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA - - If you want support or to professionally license this library, the author - can be reached at info@mohawksoft.com - - When used as part of the PHP project this file, as present in the PHP - CVS and original source distribution is to be considered part of the - PHP package and subject to version 2.02 of the PHP license. - http://www.php.net/license/2_02.txt. - -*/ -#ifndef _MCACHE_API_ -#define _MCACHE_API_ - -#include "reqclient.h" - -#ifdef timeout -#undef timeout -#endif - -#ifdef __cplusplus -class MCache_conn : public MSock -{ - protected: - REQB m_reqb; - int m_errno; - public: - MCache_conn(char *host, int port); - ~MCache_conn(); - int Request(int stat, char *session, char *name, char *value, int param=0); - int RequestData(int stat, char *session, char *name, char *value, char *data, int cbdata, int param=0); - int RequestStrings(int stat, char *session, char *name, char *value, int n, char **strings); - char * ResultToStr(); - char ** ResultToArray(); - char ** ResultToPairs(); - Boolean create(char *session, char *classname, char *strdata); - Boolean create_pairs(char *session, char *classname, char *strdata, int count, char **pairs); - Boolean destroy(char *session); - int set(char *session, char *name, char *value); - int set_array(char *session, int count, char **pairs); - int get_int(char *session, char *name, int def); - char *get_text(char *session, char *name, char *def); - char * uniq(int cbstr, char *classname, char *strdata); - char * randstr(int cbstr); - char **get_array(char *session); - char **get_object(char *session); - char **listvar(char *name); - char **find(char *name, char *value); - char **list(); - int count(); - int lock(char *session); - int unlock(char *session, int key); - Boolean timeout(char *session, int timeout); - int inc_int(char *session, char *name); - char *inc_text(char *session, char *name); - int setdata(char *session, char *data); - char *getdata(char *session); - int setdata(char *session, char *data, int len); - char *getdata(char *session, int *len); - int call_int(char *fn,int n, char **strings); - char *call_text(char *fn,int n, char **strings); - int ctl(char *session,int type); - int plugin_int(char *session, char *nparam, char *sparam, int param); - char *plugin_text(char *session, char *nparam, char *sparam, int param); - int Sessionflush(int seconds); - int admin(int fn, char *opt); - int serialize(char *szparam); - char *exec(char *szcommand); - char *add(char *session, char *name, char *value); - char *muldiv(char *session, char *name, char *mul, char *div); - int ping(void); - static void free(void *result); - static int ctl_type(char *str); - inline Boolean StatOK(void) {return (m_reqb.req->stat == REQ_OK) ? TRUE : FALSE; } - inline int param() {return m_reqb.param; } - inline int merrno() {return m_errno;} - inline char *errtext() {return ReqbErr(&m_reqb); } - inline char *reqtext(void) {return (m_reqb.req->len > 1) ? m_reqb.req->datum : NULL; } - -}; - -typedef MCache_conn *MSCONN; - -extern "C" { -#else -typedef void * MSCONN; -#endif - -#define MAX_REQ_STRINGS 1024 -#define MREQ_TOPHANDLER -42 - -enum REQ_TYPES -{ - MREQ_CTL=2, - MREQ_SETVAL, - MREQ_GETVAL, - MREQ_CREATE, - MREQ_DROP, - MREQ_GETALL, - MREQ_FIND, - MREQ_COUNT, - MREQ_FLUSH, - MREQ_SLOCK, - MREQ_SUNLOCK, - MREQ_TIMEOUT, - MREQ_ADD, - MREQ_DATAGET, - MREQ_DATASET, - MREQ_LIST, - MREQ_LISTVAR, - MREQ_UNIQ, - MREQ_RANDSTR, - MREQ_PLUGIN, - MREQ_CALL, - MREQ_SERIALIZE, - MREQ_RESTORE, - MREQ_EXEC, - MREQ_FIND_CACHEID, - MREQ_SET_CACHEID, - MREQ_RENAME, - MREQ_GETOBJECT, - MREQ_MULDIV, - MREQ_LAST, -// These are handled by the server, not the library. - MREQ_ADMIN = REQ_INTERNAL_END, -}; -#define MREQ_OK REQ_OK -#define MREQ_ERR REQ_ERR - -#ifdef PLUGMSG_START -enum MREQ_PLUGIN_MSG -{ - MREQ_PLUGIN_PULSE=PLUGMSG_START, - MREQ_PLUGIN_SESSION_FLUSH, - MREQ_PLUGIN_SESSION_CREATE, - MREQ_PLUGIN_SESSION_INIT, - MREQ_PLUGIN_SESSION_DESTROY, - MREQ_PLUGIN_ESCAPE, - MREQ_PLUGIN_RELAY, - MREQ_PLUGIN_SERIALIZE, - MREQ_PLUGIN_RESTORE, - MREQ_PLUGIN_SESSION_SETDATA, - MREQ_PLUGIN_SESSION_SETVALUE, - MREQ_PLUGIN_SESSION_SETBLOB, - MREQ_PLUGIN_SESSION_RENAME, - MREQ_PLUGIN_LAST -}; - -#define MREQ_SESSION_INIT_FAILED -1 -#define MREQ_SESSION_INIT_HANDLED 1 -#define MREQ_SESSION_INIT_NOTHANDLED 0 -#endif - -enum MCACHE_ADMIN -{ - MADMIN_SHUTDOWN, - MADMIN_LOADDLL, - MADMIN_SETSERIAL, - MADMIN_SETVERBOSE, - MADMIN_SETMAXTHREADS, - MADMIN_SERIALIZE, - MADMIN_AUTOSAVE, - MADMIN_AUTODROP, - MADMIN_STATUS -}; - -#define MREQ_CTL_EXIST 0 -#define MREQ_CTL_TTL 1 -#define MREQ_CTL_AGE 2 -#define MREQ_CTL_TLA 3 -#define MREQ_CTL_CTIM 4 -#define MREQ_CTL_TOUCH 5 -#define MREQ_CTL_NOW 6 - - -#define MPARM_TIME_MASK 0x0000FFFF -#define MPARM_TIME_FIXED 0x0000FFFF -#define MPARAM_CBSTR_MASK 0x00FF0000 - - -#define MPARM_TIME(parm) ((parm)&MPARM_TIME_MASK) -#define MPARM_CBSTR(parm) (((parm) >> 16) & 0xFF) - -#define MPARM_CREATE(TIME, CBSTR) \ - ((TIME) | (CBSTR << 16)) - -/* Added for MCache objects */ -#define MSTAT_TYPE_SESSION 0x00000000 -#define MSTAT_TYPE_OBJECT 0x00100000 -#define MSTAT_TYPE_FAST 0x00200000 -#define MSTAT_TYPE_FIXED 0x00400000 -#define MSTAT_TYPE_MASK 0x00F00000 -#define MSTAT_CMD_MASK 0x000FFFFF - -#define MSTAT_TYPE_TEST(stat, TY) (((stat) & MSTAT_TYPE_MASK)==(TY)) -#define MSTAT_CMD(stat) ((stat) & (MSTAT_CMD_MASK)) - -// Private session flags -#define MCACHE_FIXED MSTAT_TYPE_FIXED // Fixed object, no expiration -#define MCACHE_NORMAL MSTAT_TYPE_SESSION -#define MCACHE_OBJECT MSTAT_TYPE_OBJECT -#define MCACHE_FAST MSTAT_TYPE_FAST - -#ifdef WIN32 -#define EXTAPI extern "C" __declspec(dllexport) -#else -#define EXTAPI extern "C" -#endif - -#ifndef MCACHEAPI_INTERNAL -MSCONN mcache_connect(char *host, int port); - -/** Disconnects a session from an mcache daemon. Returns nothing. */ -void mcache_disconnect(MSCONN conn); - -/** Creates a new session. Returns TRUE is successful, or FALSE if an error occured. -An error occurs if the session already exists. mcache_errno() will return REQE_DUPSESSION -if the session exists */ - -Boolean mcache_create(MSCONN conn, char *session, char *classname, char *strdata); - -/** Behaves exactly like mcache_create, except that initial data is passed to populate the session. -"pairs" is an array of string data. pairs[0] contains a name, pairs[1] contains its value, pairs[2] -contains the second name, pairs[3] containes the second value, and so on. */ - -Boolean mcache_create_pairs(MSCONN conn, char *session, char *classname, char *strdata, int count, char **pairs); - -/** Destroys a session. Returns TRUE on success, FALSE on error. */ -Boolean mcache_destroy(MSCONN conn, char *session); - -/** Sets a value in a session. Returns TRUE on success, FALSE on error */ -int mcache_set(MSCONN conn, char *session, char *name, char *value); - -int mcache_set_array(MSCONN conn, char *session, int count, char **pairs); -/** Gets a value in a session as an integer. Returns the value from the session, or -def from the argument list, if no value was found. */ -int mcache_get_int(MSCONN conn, char *session, char *name, int def); - - -/** Gets a value in a session as a string. Returns the value from the session, or -def from the argument list, if no value was found. */ -char * mcache_get_text(MSCONN conn, char *session, char *name, char *def); - - -/** Create a new session with a guaranteed unique name. Returns a string of the name */ -char * mcache_uniq(MSCONN conn, int cbstr, char *classname, char *strdata); - -/** Create a pseudo-random alphanumeric string */ -char * mcache_randstr(MSCONN conn, int cbstr); - -/** Gets all the name/value pairs from a session into a character array. The array is -formatted as an array of string data. array[0] contains a name, array[1] contains its -value, array[2] contains the second name, array[3] containes the second value, and so on. -Returns NULL on error. */ - -char ** mcache_get_array(MSCONN conn, char *session); - -char **mcache_get_object(MSCONN conn, char *session); - -/** Finds sessions which have the particular name/value property. Returns NULL -if none were found. */ -char ** mcache_find(MSCONN conn, char *name, char *value); - -int mcache_inc_int(MSCONN conn, char *session, char *name); -char *mcache_inc_text(MSCONN conn, char *session, char *name); - -char *mcache_add(MSCONN conn, char *session, char *name, char *value); -char *mcache_muldiv(MSCONN conn,char *sn,char *nam,char *mul,char *div); - -/** Lists all active sessions. */ -char ** mcache_list(MSCONN conn); - -/** Returns an associative array of session:var for all sessions which have -a setting of name. */ -char **mcache_listvar(MSCONN conn, char *name); - -/** Returns the number of active sessions */ -int mcache_count(MSCONN conn); - -/** Locks a session. Returns an integer key for the lock. -Locks remain exclusive for 30 seconds, after which someone else -can lock the session. Locks are coperative, no enforcement -is attempted. */ - -int mcache_lock(MSCONN conn, char *session); - -/** Unlocks a session */ -int mcache_unlock(MSCONN conn, char *session, int key); - - -/** Sets the timeout of a session. - * timeout = 0 means never timeout - * timeout > 0 sets session expire time in seconds - * timeout < 0 resets to default timeout -*/ -Boolean mcache_timeout(MSCONN conn, char *session, int timeout); - -/** Sets the session data string, creates a session if one does not exist */ -int mcache_setdata(MSCONN conn, char *session, char *data); - -/** Gets the session data string from a session */ -char *mcache_getdata(MSCONN conn, char *session); - -/** Returns the last error. */ -int mcache_errno(MSCONN conn); - -/** Call a function plugin, return an int */ -int mcache_call_int(MSCONN conn, char *fn,int n, char **strings); - -/** Call a function plugin, return a char */ -char *mcache_call_text(MSCONN conn, char *fn,int n, char **strings); - -/** Call to get info about a session */ -int mcache_ctl(MSCONN conn, char *session, int type); - -/** Convert a string ctl to a type for mcache_ctl */ -int mcache_ctl_type(char *str); - -/** Call the personality plugin escape function, return int */ -int mcache_plugin_int(MSCONN conn, char *session, char *nparam, char *sparam, int param); - -/** Call the personality plugin escape function, return char * */ -char *mcache_plugin_text(MSCONN conn, char *session, char *nparam, char *sparam, int param); - -int mcache_flush(MSCONN conn, int seconds); -int mcache_loaddll(MSCONN conn, char *dll); -int mcache_shutdown(MSCONN conn, char *timeout); -int mcache_serialize(MSCONN conn, char *szparam); -char * mcache_exec(MSCONN conn, char *szparam); -int mcache_setserial(MSCONN conn, char *serialize); -int mcache_setmaxthreads(MSCONN conn, char *maxt); -int mcache_setverbose(MSCONN conn, char *verbose); -int mcache_setautosave(MSCONN conn, char *autsave); -int mcache_setautodrop(MSCONN conn, char *autdrop); -int mcache_ping(MSCONN conn); -int mcache_status(MSCONN conn); -Boolean mcache_statok(MSCONN conn); - -char *mcache_text(MSCONN conn); - -/** Returns a static character string describing an error. */ -char * mcache_errtext(MSCONN conn); -#endif - -#ifdef __cplusplus -} -#endif -#endif - diff --git a/ext/msession/php_msession.h b/ext/msession/php_msession.h deleted file mode 100644 index 976bb9de2a..0000000000 --- a/ext/msession/php_msession.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | msession 1.0 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2003 The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 2.02 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available at through the world-wide-web at | - | http://www.php.net/license/2_02.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Authors: Mark Woodward <markw@mohawksoft.com> | - | Portions copyright the PHP group. | - +----------------------------------------------------------------------+ - */ - -#ifndef PHP_MSESSION_H -#define PHP_MSESSION_H - -/* You should tweak config.m4 so this symbol (or some else suitable) - gets defined. -*/ -#if HAVE_MSESSION - -extern zend_module_entry msession_module_entry; -#define phpext_msession_ptr &msession_module_entry - -#ifdef PHP_WIN32 -#define PHP_MSESSION_API __declspec(dllexport) -#else -#define PHP_MSESSION_API -#endif - -PHP_MINIT_FUNCTION(msession); -PHP_MSHUTDOWN_FUNCTION(msession); -PHP_RINIT_FUNCTION(msession); -PHP_RSHUTDOWN_FUNCTION(msession); -PHP_MINFO_FUNCTION(msession); - -PHP_FUNCTION(msession_connect); -PHP_FUNCTION(msession_disconnect); -PHP_FUNCTION(msession_lock); -PHP_FUNCTION(msession_unlock); -PHP_FUNCTION(msession_ctl); -PHP_FUNCTION(msession_count); -PHP_FUNCTION(msession_create); -PHP_FUNCTION(msession_destroy); -PHP_FUNCTION(msession_set); -PHP_FUNCTION(msession_get); -PHP_FUNCTION(msession_find); -PHP_FUNCTION(msession_get_array); -PHP_FUNCTION(msession_save_object); -PHP_FUNCTION(msession_get_object); -PHP_FUNCTION(msession_set_array); -PHP_FUNCTION(msession_timeout); -PHP_FUNCTION(msession_inc); -PHP_FUNCTION(msession_add); -PHP_FUNCTION(msession_muldiv); -PHP_FUNCTION(msession_setdata); -PHP_FUNCTION(msession_getdata); -PHP_FUNCTION(msession_listvar); -PHP_FUNCTION(msession_list); -PHP_FUNCTION(msession_uniq); -PHP_FUNCTION(msession_randstr); -PHP_FUNCTION(msession_plugin); -PHP_FUNCTION(msession_call); -PHP_FUNCTION(msession_find_cacheid); -PHP_FUNCTION(msession_set_cacheid); - -ZEND_BEGIN_MODULE_GLOBALS(msession) - int port; - char *host; - void *conn; - void *reqb; -ZEND_END_MODULE_GLOBALS(msession) - - -#ifdef ZTS -#define MSESSION_G(v) TSRMG(msession_globals_id, zend_msession_globals *, v) -#else -#define MSESSION_G(v) (msession_globals.v) -#endif -#else - -#define phpext_msession_ptr NULL - -#endif - -#endif /* PHP_MSESSION_H */ - - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - */ diff --git a/ext/msession/reqclient.h b/ext/msession/reqclient.h deleted file mode 100644 index 414854f14a..0000000000 --- a/ext/msession/reqclient.h +++ /dev/null @@ -1,209 +0,0 @@ -/* - Mohawk Software Framework by Mohawk Software - Copyright (C) 1998-2001 Mark L. Woodward - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA - - If you want support or to professionally license this library, the author - can be reached at info@mohawksoft.com -*/ -#ifndef _REQCLIENT_ -#define _REQCLIENT_ - -#ifndef REQCLIENT_VER -#define REQCLIENT_VER 051222 -#endif - -#ifndef _PHOENIX_ -typedef unsigned char Boolean; -#endif - -#if defined (__cplusplus) -extern "C" { -#endif - -// Standard request transport errors. -enum REQ_ERRORS -{ - REQE_NOERROR=0, - REQE_ERR, - REQE_NOSESSION, - REQE_DUPSESSION, - REQE_NOWLOCK, - REQE_NOVALUE, - REQE_LOCKED, - REQE_NOSEND, - REQE_NOCONNECT, - REQE_BADCONN, - REQE_BADHDR, - REQE_BADVER, - REQE_BADLEN, - REQE_BUFFER, - REQE_DENIED, - REQE_NOFN, - REQE_UNKNOWN, - REQE_PLUGIN1, - REQE_PLUGIN2, - REQE_PLUGIN3, - REQE_PLUGIN4 -}; - -#define REQ_OK 0 -#define REQ_ERR 1 -#define REQ_UNHANDLED 3 - -#define REQ_INTERNAL_BEGIN 1024 -#define REQ_POPEN 1024 -#define REQ_PCLOSE 1025 -#define REQ_PING 1026 -#define REQ_INTERNAL_END 2048 - -/** Packet version */ -#define REQV_VERSION 0x42 -#define REQV_VERMASK 0xFF - -/** Packet has array of strings */ -#define REQVF_STRINGS 0x0200 -/** Packet has binary information */ -#define REQVF_BVAL 0x0400 - - -#define REQV_ISVER(V) (((V) & REQV_VERMASK) == REQV_VERSION) -#define REQVF_TEST(V,F) (((V) & (F)) == (F)) -#define REQVSZ_VERSION "MV42" -#define REQVSZ_STRINGS "MS42" -#define REQVSZ_BVAL "MB42" - -#define REQFMT_BINARY 0 -#define REQFMT_ASCII 1 - -// An application can use this to change the default -extern unsigned int g_defReqFmt; - -/** Binary request packet */ -/** If sizeof(int) > 4 this will need to be fixed. */ -typedef struct _requestPacket -{ - int version; - int stat; - int len; - int session; - int name; - int value; - int param; - int data; - char datum[0]; -}REQ; - -/*** Ascii string version of request packet */ -typedef struct _REQSZ -{ - char version[4]; - char stat[4]; - char len[4]; - char session[4]; - char name[4]; - char value[4]; - char param[4]; - char misc[4]; - char datum[0]; -}REQSZ; -typedef struct _requestBuf -{ - unsigned int type; // Type of packet, dynamic/static - unsigned int size; // size of memory block -#if (REQCLIENT_VER >= 030113) - unsigned int fmt; // format, binary/ascii - unsigned int reserved; // Just in case -#else -#warning You are using an old Phoenix definition (pre 030113), this will have problems with a newer version -#endif -#if (REQCLIENT_VER >= 051222) - int cmd; - int param; - char * session; - char * name; - char * value; - char * data; - int cbdata; - - // To be used by library layer for bookeeping - int cb; - int count; -#endif - REQ *req; -}REQB; - -typedef struct ListWalkDataStruct -{ - REQB *reqb; - char *Key; - char *Data; - int cb; - int count; -}ListWalkData; - -#define MAX_REQ 16384 - -#define REQB_STATIC 1 -#define REQB_DYNAMIC 2 - - -#define STATIC_REQB( len ) \ - char buffer [ len ]; \ - REQB *preq = StaticRequestBuffer(buffer, len); - -#define ASCII_REQB(reqb) (REQB)->fmt = REQFMT_ASCII -#define BINARY_REQB(reqb) (REQB)->fmt = REQFMT_BINARY - -REQB *AllocateRequestBuffer(REQB *reqb, unsigned size); -void FreeRequestBuffer(REQB *req); -REQB *SizeRequestBuffer(REQB *req, unsigned int size); -REQB *StaticRequestBuffer(char *buffer, unsigned int cb); - -int FilterRequest(REQB *preq); -int FormatRequest(REQB *preq, int stat, char *session, char *name, char *value, int param); -int FormatRequestData(REQB *preq, int stat, char *session, char *name, char *value, void *data, int cbdata, int param); -int FormatRequestStrings(REQB *preq, int stat, char *session, char *name, char *value, int n, char **strings); -int FormatRequestf(REQB *preq, int stat, char *session, char *name, char *value, int param, char *fmt, ...); - -void *GetReqbDatumPtr(REQB *preq); - -int DoSingleRequest(char *hostname, int port, REQB *preq); -void *OpenReqConn(char *hostname, int port); -Boolean ReopenReqConn(void *conn); -void CloseReqConn(void *conn); -int DoRequest(void *conn, REQB *preq); -char *ReqbErr(REQB *reqb); -int LWDaddNameVal(ListWalkData *plw, char *name, char *value); -int LWDaddValue(ListWalkData *plw, char *value); - - -#define ASSERT_STAT(PREQ) if(PREQ->stat != REQ_OK) \ - {fprintf(stderr, "Error in Request %s %d %s\n", \ - __FILE__,__LINE__, ReqErr(PREQ->param)); exit(-1); } - -#if defined (__cplusplus) - // C API but with class definitions - int ReadRequestTimeout(REQB *preq, MSock *sock, int timeout); - int ReadRequest(REQB *reqb, MSock *sock); - int WriteRequest(REQB *reqb, MSock *sock); - Boolean OpenReqSock(REQB *reqb, MSock *sock, char *hostname); - void CloseReqSock(REQB *reqb, MSock *sock); -} - -#endif -#endif |