还剩54页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
#include tybs/mandline h#i ncude tybs/d ir h#i ncude tybs/entropy h#i ncude tybs/f iIe hudetybs/hash h#i ncudetybs/os h#i ncudetybs/pIatform h#i ncudetybs/resource h#i ncudetybs/std io h#i ncudetybs/str i ng h#i ncudetybs/task h#i ncudetybs/timer h#i ncudetybs/utiI h#i ncudetybscc/result h、#i ncudedns/dispatch hude#i ncdns/name hude#i ncdns/resuIt hude#i ncdns/view hude#i nc#define NSMdAsItN/r1esult h#i nc#i ncude named/ns_smf_gIobaIs h#end i f#ifdef DLZudedIz/dIz dr i versh#end i fstat i c tybs_booIean_t want_stats=TYBS_FALSE;stat ic charprogram_name[TYBS_DIR_NAMEMAX]named;二static charabsolute_conf];stat ic charsaved_mand_li ne
[512];static charvers i on
[512];stat ic uns iint maxsocks=0;void gnedns_ma i n_earIywarn i ng const char*format,、、、va_list args;va_startargs,format;if ns_g_lctx!=NULL{tybs_log_vwr i tens_g_lctx,NS_LOGCATEGORY_GENERAL,NS_L0GM0DULE_MAIN,TYBS_LOG_WARNING,format,args;}eIse{fpr i ntf stderr,%s:,program_name;vfpr i ntf stderr,format,args;fpr i ntf stderr,\n;ffIush stderr;va_endargs;Vo i d ns_ma i n_earIyfata Iconst char*format,va_list args;、、、va_startargs,format;i fns_g_lctx!=NULL{tybs_log_vwr i tens_g_lctx,NS_LOGCATEGORY_GENERAL,NS_L0GM0DULE_MAIN,TYBS_LOG_CRITICAL,format,args;TYBS_LOG_NOTICE,starting BIND%s%s,ns_g_version,saved_mand_line;tybs_log_write ns_g_lctx,NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE,buiIt with%s,ns_g_configargs;voidtybs_resource_getlimittybs_resource_stacks i ze,ns_g_i n itstacks ize;voidtybs_resource_getIimit tybs_resource_datas ize,ns_g_i n itdatas ize;voi dtybs_resource_getIimittybs_resource_cores ize,ns_g_i n itcores ize;voidtybs_resource_getIimit tybs_resource_openfi les,ns_g_initopenfiIes;if!tybs_ns_g_conffiIe{result=tybs_ns_g_conffiIe,absolute_conffiIe,s izeof absoIute_conff iIe;if resultTYBS_R_SUCCESS!二ns_ma i n_earIyfata IcouIdnot construct absolute path of configuration file:%s,tybs_resuIt_totextresuIt;ns_g_conffiIe=absoIute_conff i Ie;1result=tybs_time_nowns_g_boottime;if resultTYBS_R_SUCCESS!二ns_main_earIyfata Itybs_t ime_now0failed:%s,tybs_resuIt_totextresu11;resuIt=create_managers;if resultTYBS_R_SUCCESS!二ns_main_earIyfataIcreate_managers failed:%s,tybs_resuIt_totextresuIt;ns_bu i11i n_i n i t;#ifdef DLZresult=dIz_dr i vers_init;if result!=TYBS_R_SUCCESSns_main_earIyfataIdIz_dr i vers_init failed:%s,tybs_resuIt_totextresuIt;#end i fns_server_create ns_g_mctx,ns_g_server;static voidcleanupvoid{destroy_managers0;ns_server_destroy ns_g_server;ns_builtin_deinit;#ifdef DLZd I z_dr i vers_c I ear;#end i fdns_name_destroy;tybs_log_write ns_g_lctx,NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE,exiting;ns_I og_shutdown;}——static char*memstats=NULL;vo i dns_ma i n_setmemstatsconst char*{i fmemstats!=NULL{free memstats;memstats NULL;二}if NULLreturn;二二memstats=ma I I ocstr I en+1;i fmemstatsstrcpy memstats,;1#ifdef HAVE_LIBSCFtybs_result_tns_smf_get_i nstancechar ns_name,i nt debug,tybs_mem_t*mctx scfhand Iet*h二NULL;i nt namelen;char*instance;REQUIREins_name!=NULL*ins_name NULL;二二if h=scf_handIe.createSCF_VERSI ON=NULL{i fdebugUNEXPECTED_ERROR_FI LE_,_LI NE_,nscf_handIe_create failed:%s,scf_strerrorscf_error;return TYBS_R_FAI LURE;}i fscf_handIe_b i ndh==-1{i fdebugUNEXPECTED_ERROR_FI LE_,_LI NE_,scf_handIe_bind failed:%s,scf_strerror scf_error;scf_handIe_destroyh;return TYBS_R_FAI LURE;}i fname I en scf_myname h,NULL,0==T{i fdebug二UNEXPECTED_ERROR_FI LE_,_LI NE_,scf_myname failed:%s,scf_strerrorscf_error;scf_handIe_destroyh;return TYBS_R_FAI LURE;}i f i nstance=tybs_mem_aI Iocatemctx,name Ien+1NULL UNEXPECTED_ERROR二二_F ILE_,_LINE_,nns_smf_get_i nstancememory”aI Iocationfai led:%s,tybs_result_totextTYBS_R_N0MEM0RY;scf_handIe_destroyh;return TYBS_R_FAILURE;}i fscf_myname h,i nstance,name Ien+1--1{i fdebugUNEXPECTED ERRORFILE,LINE,“scf_mynamefai led:%s”,scf_strerrorscf_error;scf_handIe_destroyh;tybs_mem_freemctx,i nstance;return TYBS_R_FAI LURE;scf_handIe_destroyh;*ins_name=instance;return TYBS_R_SUCCESS;1#end i f intma i n i nt argc,char*argv[]{tybs_resuIt_t result;#ifdef HAVE_LIBSCFchar*instance=NULL;#end i fstr Icat vers i on,#ifdef_DATE_named version:BINDVERSION_DATE_#e Isenamed version:BINDVERSION,#end i fsizeof version;result=tybs_*argv,program_name,sizeofprogram_name;if resultTYBS_R_SUCCESS!二ns_ma i n_earIyfata Iprogram nametoo Iong;i fstrcmp program_name,Iwresd0二二ns_g_lwresdonIy TYBS_TRUE;二tybs_assert i on_setcaI I backassert i on_fa iIed;tybs_error_setfataI I i brary_fatal_error;tybs_error_setunexpectedI ibrary_unexpected_error;ns_os_i nitprogram_name;dns_resuIt_register;dst_resuIt_regi ster;tybscc_resuIt_regi ster;parse_mand_lineargc,argv;if ns_g_chrootd ir!=NULL{i ntlen=str Ienns_g_chrootd ir;if strncmpns_g_chrootdi r,ns_g_conffi Ie,Ien0=二ns_g_conf]==/||ns_g_conf]==\\*ns_mai n_earIywarningconf ig-c%s containschroot path-t%s,ns_g_conff iIe,ns_g_chrootd ir;}result=tybs_mem_create0,0,ns_g_mctx;if resultTYBS_R_SUCGESS!二ns_main_earIyfata Itybs_mem_create failed:%s,tybs_resuIt_totextresuIt;tybs_mem_setname ns_g_mctx,main,NULL;setup;do{result=tybs_app_run;if result=TYBS_R_RELOAD{ns_server_reIoadwantedns_g_server;}else if result!=TYBS_R_SUCCESS{UNEXPECTED_ERROR_F ILE__,_L I NE_,ntybs_app_run:%s,tybs_resuIt_totextresuIt;result=TYBS_R_SUCCESS;}}while result!=TYBS_R_SUCCESS;#ifdef HAVE_LIBSCFi fns_smf_want_d i sab Ie==1{result=ns_smf_get_instanceinstance,1,ns_g_mctx;if result=TYBS_R_SUCCESSinstance!=NULL{i fsmf_d i sab Ie_i nstancei nstance,0!=0UNEXPECTED_ERROR_FI LE_,_L I NE_,smf_d i sab Ie_i nstanceufailed for%s:%s,i nstance,scf_strerrorscf_error;if instance!=NULL tybs_mem_freens_g_mctx,i nstance;#endif/*HAVE_LIBSCF*/c Ieanup;i fwant_stats{tybs_mem_statsns_g_mctx,stdout;tybs_mutex_stats stdout;}i fns_g_memstat i st icsmemstats!=NULL{FILE*fp=NULL;result=tybs_stdio_open memstats,w,fp;if result=TYBS_R_SUCCESS{tybs_mem_statsns_g_mctx,fp;tybs_mutex_stats fp;tybs_std io_cIosefp;tybs_mem_destroyns_g_mctx;tybs_mem_checkdestroyedstderr;ns_ma i nsetmemstatsNULL;tybs_app_f i ni sh;ns_os_cIosedevnuI I;ns_os_shutdown;return0;#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS#incIude phph#incIude std ioh#i ncIudefcntI h、#ifdef PHP_WIN32#i ncIudewi n32/t imeh#incIude win32/signaI h#incIude win32/php_win32_gIobaIs h#incIude processh#elif defined NETWARE#i ncIudesys/t imevaIh#ifdef USE_WINSOCK#incIude novsock2h#end i f#end i f#if HAVE_SYS_TIME_H#incIude sys/time h#end i f#if HAVE_UNISTD_H#incIude unistdh#end i f#if HAVE_SIGNAL_H#i ncIudes ignaI h、#end i f#if HAVE_SETLOCALE#i ncIude I oca Ieh、#end i f#incIude zendh#i ncIudezend_extens i onsh#i ncIudephp_i nih#incIude php_globaIs h#incIude php_main h#i ncIudefopen_wrappers h#i ncIudeext/standard/php_standard^h#i ncIudephp_var i abIes h#i ncIudeext/standard/cred i tsh#ifdef PHP_WIN32#incIude ioh、#i ncIudewi n32/php_regi stryh#incIude ext/standard/fIock_pat h#end i f#incIude php_sysIog h#i ncIudeZend/zend_except i ons h#if PHP_SIGCHILD#incIude sys/types h#incIude sys/wait h#end i f#incIude zend_piIe h#incIude zend_execute h#i ncIudezend_h ighIi ghth、#incIude zend_indent h#incIude zend_extensions h#i ncIudezend_i nih#i ncIudephp_content_types h#incIude nphp_ticks hH#incIude php_logos h#incIude php_streams h#incIude php_open_temporary_fi leh#include SAPKh#include urfc
1867.h/*}|}*/#ifndef ZTSphp_core_globals core_gIobaIs;#e IsePHPAPI i nt core_globals_id;#end i f#define SAFE_f ff:/*{{{PHP_INI_MH*/stat ic PHP_INl_MHOnSetPrec i s ion i nt i=atoi new_vaIue;if i=0{EGprecision i;二return SUCCESS;}eIse{return FAILURE;}stat ic PHP_INI MHOnChangeMemoryL im i ti fnew_vaIue{PG memory_Iimit=zend_atoi new_vaIue,new_vaIue_Iength;}eIse{PG memory_l imit=130;/*effect ive Iy,no I imit*/«1return zend_set_memory_IimitPGmemory_limit;}~~~stat ic void php_d i sab Ie_funct ionsTSRMLS_D char*s=NULL,*e;i f!*INI_STRd i sab Ie_funct i ons{return;e PG d i sab Ie_funct i ons strdupINl_STR di sab Ie_funct i ons;while二二*e{switch*e{case:case,:if s{*e=\0;zend_d i sab Ie_funct ion s,e-s TSRMLS_CC;s NULL;二break;default:if!s{s=e;break;1e++;1if s{zend_d i sab Ie_funct i ons,e-s TSRMLS_CC;stat ic vo i d php_d i sab Ie_cI asses TSRMLS_Dchar*s=NULL,*e;i f!*INl_STR d i sab Ie_cI asses{return;}e PG d i sab Ie_cI assesstrdupINl_STR di sab Ie_cI asses;while*e{二二switch*e{case:case,:if s{*e=\0;zend_d i sab Ie_cI ass s,e-s TSRMLS_CC;s=NULL;break;default:if!s{s=e;break;1e++;if s{zend d i sab Ie cI asss,e-sTSRMLSCC;}stat ic PHP_I Nl_MH OnllpdateTi meoutEG t i meout_seconds=atoi new_vaIue;if stage==PHP_INI_STAGE_STARTUP{/*Dont seta timeouton startup,on Iyper-request*/return SUCCESS;zend_unset_t i meout TSRMLS_C;zend_set_t imeoutEG t imeout_seconds;return SUCCESS;1stat ic i nt php_get_d i spIay_errors_mode char*vaIue,i ntvaIue_length{int mode;i f!va Iue{return PHP_DISPLAY_ERRORS_STDOUT;i f vaIue_length2!strcasecmp on,vaIue{mode=PHP_DISPLAY_ERRORS_STDOUT;=二}eIse i f vaIue_length3!strcasecmp yes,vaIue{mode=PHP_DISPLAY_ERRORS_STDOUT;=二}eIse i f vaIue_length4!strcasecmp true,vaIue{mode=PHP_DISPLAY_ERRORS_STDOUT;=二}eIse if vaIue_length6!strcasecmp vaIue,stderr{mode=PHP DISPLAY ERRORSSTDERR;=二}eIse i f vaIue_length6!strcasecmp vaIue,stdout{mode=PHP_DISPLAY_ERRORS_STDOUT;=二}eIse{mode=atoi vaIue;if modemode!=PHP_DISPLAY_ERRORS_STDOUTmode!=PHP_DISPLAY_ERRORS_STDERR mode PHP DISPLAY ERRORSSTDOUT;二7}return mode;1static PHP_INl_MHOnUpdateDispIayErrorsPG d i spIay_errors=zend_booI php_get_d i spIay_errors_modenew_vaIue,new_vaIue_Iength;return SUCCESS;static PHP_INl_DISPdispIay_errors_mode i nt mode,tmp_vaIue_Iength,cgi_or_cIi;char*tmp_vaIue;TSRMLS_FETCH;if type=ZEND_INI_DISPLAY_ORIGini_entry-modified{tmp_vaIue=i ni_entry-or ig_vaIuei ni_entry-or ig_vaIue:NULL;tmp_vaIue_Iength=i ni_entry-or ig_vaIue_Iength;}eIse i f ini_entry-vaIue{tmp_vaIue=ini_entry-vaIue;tmp_vaIue_Iength=ini_entry-vaIue_Iength;}eIse{tmp_vaIue=NULL;tmp_vaIue_Iength=0;!mode=php_get_d i spIay_errors_modetmp_vaIue,tmp_vaIue_Iength;cgi_or_cli=!strcmpsapi_module name,cIi||!strcmp sap i_moduIe name,cgi;switch mode{case PHP_DISPLAY_ERRORS_STDERR:if cgi_or_cIi{PUTS STDERR;}eIse{PUTS On;1break;case PHP_DISPLAY_ERRORS_STDOUT:if cgi_or_cIi{PUTS STDOUT;}eIse{PUTS On;break;default:PUTS Off;break;}stat ic PHP_I NIMH OnllpdateErrorLog/*On Iydo thesafemode/open_basedi r check at runtime*/if stage=PHP_INI_STAGE_RUNTIME||stage=PHP_INI_STAGE_HTACCESSstrcmp new_vaIue,nsyslog{ifPGsafe_mode!php_checkuidnew_vaIue,NULL,CHECKUID_CHECK_{return FAILURE;i f PG open_based irphp_check_open_based irnew_vaIue TSRMLS_CC{returnFAILURE;OnllpdateStr i ng entry,new_va Iue,new_va Iue_I ength,mh_arg1,mh_arg2,mh_arg3,stage TSRMLS_CC;return SUCCESS;1stat ic PHP_INl_MH OnChangeMa iIForceExtra-/*Dont allow changing it in htaccess*/if stage PHP_INI_STAGE_HTACCESS{return FAILURE;=二}return SUCCESS;#ifndef PHP_SAFE_MODE_EXEC_DIR#define PHP_SAFE_MODE_EXEC_DIR#end i f#if def ined PHP_PROG_SENDMAIL!defined NETWARE#define DEFAULT_SENDMAIL_PATH PHP_PROG_SENDMAIL-t-i#elif defined PHP_WIN32#define DEFAULT_SENDMAIL_PATH NULL#e Ise#define DEFAULT_SENDMAIL_PATH/usr/sbin/sendmaiI-t-i#end i fPHPAPI void php logerr char*1og message TSRMLS DC i ntfd=-1;char error_time_str
[128];struct tmtmbuf;time_t error_time;/*Try touse thespecified IoggingIocation*/i f PG error_log!=NULL{#ifdef HAVE_SYSLOG_Hif IstrcmpPG error_log,sysIog{php_sysIog LOG_NOTICE,%500s,log_message;return;1#end i ffd=VCWD_0PEN_M0DE PGer ror_Iog,0_CREAT|0_APPEND|0_WR0NLY,0644;if fd!=-1{char*tmp;i nt Ien;time error_t ime;strft imeerror_t ime_str,s izeoferror_t ime_str,n%d-%b-%Y%H:%M:%S,php_I oca11ime_rerror_t ime,tmbuf;Ien=sppr intftmp,0,[%s]%s%s,error_t ime_str,Iog_message,PHP EOL;#ifdef PHP_WIN32php_fIock fd,2;#end i fwr i te fd,tmp,I en;efree tmp;cIose fd;return;}/*Otherwi sefa II backto thedefau11logging Iocat ion,if wehave one*/if sapi_moduIe Iog_message{sap i_moduIe Iog_message Iog_message;!一PHPAPI i nt php_wr i te vo i d*buf,u i nt s ize TSRMLS_DC return PHPWRITEbuf,size;/*}}}*//*{{{php_pr i ntf*/PHPAPI int php_pr intfconst charformat,、、、1-va_list args;int ret;char buffer;i ntsize;TSRMLS_FETCH;va_startargs,format;size=vsppr intf buffer,0,format,args;ret=PHPWRITE buffer,size;efree buffer;va_endargs;return ret;1/*}}}*//*{{{php_verror he Ipers*//*{{{php_dur i ng_moduIe_startup*/stat ic int php_dur ing_moduIe_startupvoidreturn moduIe_startup;一/*}}}*//*{{{php_dur i ng_moduIe_shutdown*/stat ic int php_dur ing_moduIe_shutdownvoid return moduIe_shutdown;1/*}}}*//*}}}*//*{{{php_verror*//*php_verror iscal ledfrom php_error_docrefn functions、*Its purpose is tounify errormessages andautomaticaI Iygenerate clickable*html errormessages ifcorrecponding inisetting html_errors isactivated tybs_log_wr i te ns_g_lctx,NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_CRITICAL,exiting dueto ear Iy fata I error;}eIse{fpr i ntf stderr,%s:,program_name;vfpr i ntfstderr,format,args;fpr i ntf stderr,\n;ffIush stderr;}va_endargs;ex it1;static voidassert ion_faiIed const char*fi Ie,int Iine,tybs_assert iontype_t type,const char*condi fns_g_lctx!=NULL{tybs_assert i on setcaI I backNULL;tybs_log_wr i tens_g_lctx,NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_CRITlCAL,%s:%d:%s%s failed,file,Ii ne,tybs_assert ion_typetotexttype,cond;tybs_log_writens_g_lctx,NS_LOGCATEGORY_GENERAL,NS_L0GM0DULE_MAIN,TYBS_LOG_CRITICAL,“exitingdue toassertion faiIure;}eIse{fpr i ntf stderr,n%s:%d:%s%s faiIed\n,file,Ii ne,tybs_assert ion_typetotexttype,cond;ffIush stderr;}i fns_g_coreok abort;ex it1;static voidIibrary_fatal_error const char*f iIe,int Iine,const char*format,va_list argsTYBS_FORMAT_PRINTF⑶0;static voidIibrary_fatal_error const char iIe,int Iine,const char*format,va_li stargsif ns_g_lctx!=NULL{tybs_error_setfataINULL;tybs_log_wr i tens_g_lctx,NS_LOGCATEGORY_GENERAL,NS_L0GM0DULE_MAIN,TYBS_LOG_CRITICAL,%s:%d:fata Ierror:,file,Ii ne;tybs_log_vwritens_g_lctx,NS_LOGCATEGORY_GENERAL,NS_L0GM0DULE_MAIN,TYBS_LOG_CRITICAL,format,args;tybs_log_writens_g_lctx,NS_LOGCATEGORY_GENERAL,NS_L0GM0DULE_MAIN,TYBS_LOG_CRITICAL,exitingdue tofata Ierror i n I i brary;}eIse{fpr i ntf stderr,%s:%d:fata Ierror:,file,Ii ne;*See:COD ING_STANDARDS fordetails.*/PHPAPI void php_verror const char*docref,const char*params,int type,const char*format,va_li stargsTSRMLS_DCchar buffer=NULL,*docref_buf=NULL,target=NULL;char*docref_target=,*docref_root=;char*p;int buffer_len=0;char*space;char*cIass_name=get_act ive_cIass_name spaceTSRMLS_CC;char*function;int or igin_len;char origin;char*message;int is_function=0;/*get errortext intobuffer andescape forhtml if necessary*/buffer_len=vsppr intf buffer,0,format,args;if PGhtml_errors{int Ien;char*repI ace=php_escape_html_ent it i esbuffer,buffer_len,len,0,ENT_PAT,NULL TSRMLS_CC;efree buffer;buffer=rep Iace;buffer_len=Ien;}/*which funct ion caused the prob Iem ifany ata II*/i f php_dur i ng_moduIe_startup{function=PHP Startup;}eIse i f php_dur i ng_moduIe_shutdown0{function=PHP Shutdown;}eIse i f EG current_execute_data EGcur rentexecute data-opIi neEGcurrent_execute_data-opIi ne-opcode ZEND_INCLUDE_OR_EVAL二二{一一switch EGcurrent_execute_data-opIine-op2u constantvaIue IvaI{case ZEND_EVAL:、function=evaI;is_funct ion=1;break;case ZEND_INCLUDE:funct ion=i ncIude;is_function=1;break;case ZEND_INCLUDE_ONCE:funct ion=i ncIude_once;is_function=1;break;case ZEND_REQUIRE:funct ion=requi re;is_funct ion=1;break;case ZEND_REQUIRE_ONCE:funct ion=requ ire_once;is_funct ion=1;break;default:function=Unknown;}}eIse{funct ion=get_act ive_funct ion_nameTSRMLS_C;if Ifunct ion||!str Ienfunct ion{function=Unknown;}eIse{is_funct ion=1;}i fis_function{or igi n_len=sppr i ntf or igi n,0,%s%s%s%s,cIass_name,space,funct ion,params;}eIse{or igi n_len=sppr i ntf or i gin,0,%s,funct ion;}if PG html_errors{i ntlen;char*repI ace=php_escape_htmI_ent i t i es or igi n,or igi n_len,len,0,ENT_PAT,NULL TSRMLS_CC;efree or igi n;origin=rep Iace;}if docrefdocref
[0]docref_target=strchr docref,docref=NULL;二二#{}if Idocrefis_function{if space
[0]\0{二二sppr i ntf docref_buf,0,“function%s,function;、}eIse{sppr i ntfdocref_buf,0,function%s-%s,cIass_name,funct ion;whi Iepstrchrdocref_buf,!=NULL{二*P--;docref=docref_buf;}if docrefis_funct ionPGhtml_errors||str IenPG docref_root{if strncmpdocref,7{/*We donthave://so we use docref_root*/char*ref;/*temp copyfor dupIicated docref*/docref_root=PG docref_root;ref estrdup docref;if docref_buf{efree docref_buf;二docref_buf=ref;/*str ip of the target i fany*/p strrchrref,;二if p{target=estrdup p;if target{docref_target=target;*P=\0;1/*add theextension ifit isset in ini*/i f PG docref_extstr IenPG docref_ext{sppr i ntf docref_buf,0,%s%s,ref,PG docref_ext;efree ref;docref=docref_buf;1~/*display htmlformatted oron Iyshow theadd i t ionaI Ii nks*/if PGhtml_errors{sppr intf message,0,n%s[a href=%s%s%s1%s/a]:%s,or igin,docref_root,docref,docref_target,docref,buffer;}eIse sppr i ntf message,0,%s[%s%s%s]:%s,origin,docref_root,docref,docref_target,buffer;1if target{efree target;}eIse{sppr i ntfmessage,0,%s:%sn,origin,buffer;efree or igi n;i fdocref_buf{efree docref_buf;i fPG track_errorsmoduIe_i ni t i a Ii zedEG act ive_symboI_tabIe!EGuser_error_handI er||!EGuser_error_handIer_error_report i ngtype zvaI*tmp;ALL0C_INIT_ZVALtmp;ZVAL_STRINGLtmp,buffer,buffer_len,1;zend_hash_update EG act ive_symbol_tabIe,php_errormsg,s izeof php_errormsg,void**tmp,sizeof zvaI*,NULL;efree buffer;php_error type,%s,message;efree message;/*}}}*//*{{{php_error_docref0*//*See:COD ING_STANDARDS fordetails、*/PHPAPI void php_error_docrefO const char*docref TSRMLS_DC,i nttype,const charformat,、、、va_list args;va_startargs,format;php_verror docref,,type,format,args TSRMLS_CC;va_endargs;/*}}}*//*{{{php_error_docref1*//*See:COD ING_STANDARDS fordetails.*/PHPAPI void php_error_docref1const char*docref TSRMLS_DC,const char*param1,int type,const char*format,、、、va_list args;va_startargs,format;php_verrordocref,paraml,type,format,args TSRMLS_CC;va_endargs;1/*}}}*//*{{{php_error_docref2*//*See:COD ING_STANDARDS fordetails、*/PHPAPI void php_error_docref2const char*docref TSRMLS_DC,const char*param1,const char*param2,int type,const charformat,、、、{char*params;va_list args;sppr i ntf params,0,%s,%s,paraml,param2;va_startargs,format;php_verror docref,paramsparams:type,format,args TSRMLS_CC;“、、、,va_endargs;if params{efree params;1/*}}}*//*{{{php_html_puts*/PHPAPI voidphp_htmI_puts const char*str,ui nts ize TSRMLS_DC zend_htmI_putsstr,s ize TSRMLS_CC;1/*}}}*//*{{{php_suppress_errors*/PHPAPI voidphp_set_error_handI i ng error_handIi ng_t error_handIi ng,zend_cIass_entry*except ion e IassTSRMLS_DC一PG error_handIi ng=error_handling;PG except ion_cI ass=except ion_cI ass;i fPG Iast_error_message{free PG Iast_error_message;PG Iast_error_message=NULL;1~i fPG Iast_error_fiIe{free PG Iast_error_f iIe;PG Iast_error_fiIe NULL;二}PGIast_error_lineno=0;1/*}}}*//*{{{php_error_cbextended error hand Ii ng funct ion*/static voidphp_error_cbint type,const char*error_,const uint error_lineno,const char*format,va_li stargschar buffer;int buffer_len,display;TSRMLS_FETCH;buffer_len=vsppr intfbuffer,PG Iog_errors_max_len,format,args;/*check forrepeated errorsto be ignored*/i fPG ignore_repeated_errorsPG Iast_error_message{/*no check for PGlast_error_fiIe isneeded sinee it cannot*be NULLi fPG Iast_error_message is notNULL*/i fstremp PG Iast_error_message,buffer||!PG ignore_repeated_source PG Iast_error_lineno i nterror_li neno!二I|stremp PGlast_error_fi Ie,error_{display=1;}eIse{display=0;}e Isedisplay=1;1/*store theerror ifit haschanged*/i fd isp I ay{i fPGIast_error_message{free PG Iast_error_message;if PG Iast_error_fiIe{free PG Iast_error_fi Ie;}一一PG Iast_error_type type;二PG Iast_error_message=strdup buffer;PG last_error_fiIe strduperror_;二PG Iast_error_lineno=error_li neno;/*accord i ng toerror hand Ii ngmode,suppress error,throw except ionor show i t*/if PGerror_handling!=EH_N0RMAL{switch type{case EERROR:case ECOREERROR:case E_PILE_ERROR:caseE_USER_ERROR:case EPARSE:/*fata Ierrors arereaI errorsand cannotbe madeexcept i ons*/break;case E_STRI CT:/*for thesake ofBC toold damagedcode*/break;case E_N0TICE:case E_USER_N0TICE:/*notices areno errorsand arenot treatedas suchIike E_WARNINGS*/break;/*throw anexcept ioni f we are i n EHTHROW modedefauIt:*but DONOT overwr i tea pend i ng except ion*/\fPGer ror_handIi ngEH_THR0W!EG exception二二{zend_throw_error_except ion PGexcept ion_cI ass,buffer,0,typeTSRMLS_CC;}efree buffer;return;1di splay/log theerror i fnecessary*//*d ispI ayEG error_report i ngtype||typeE_C0REif PG Iog_errors||PG d i spIay_errors char||!module_initiali zed{*error_type_str;switch type{case E_ERR0R:case E_C0RE_ERR0R:case E_PILE_ERROR:case EUSER ERROR:error_type_str=FataI errorn;break;case ERECOVERABLE ERROR:error_type_str=CatchabIe fata I errorbreak;case E_WARNING:case E_CORE_WARNING:case E_PILE_WARNING:case EUSER WARN I NG:error_type_str=Warn i ng;break;case EPARSE:error_type_strParse errorbreak;case E_N0TICE:case EUSER NOTICE:error_type_str Notice;break;case ESTRICT:error_type_str“Strict Standards;break;default:}error_type_strUnknown error;ifbreak;!moduIe_i ni ti a Ii zed||PG Iog_errors{char*log_buffer;PHPWIN32if type E_C0RE_ERR0R||typeE_CORE_WARN INGPG d isp Iay_startup_er rors=二二二MessageBox NULL,buffer,error_type_str,MB_OK|ZEND_SERVICE_MB_STYLE;1sppr i ntflog_buffer,0,PHP%s:%s i n%s onI i ne%d,error_type_str,buffer,error_li#ee rnrd ori f neno;php_log_errlog_buffer TSRMLS_CC;efreeIog_buffer;if PGdi spIay_errors module_initial ized!PG dur ing_request_startup||PGd ispIay_startup_errors OGphp_body_wr i te-php_def auI t_output_f unc IIOG php_body_wr ite--php_ub_body_wr ite_no_header IIOGphp_body_wr i te--php_ub_body_wr ite{if PGxmlrpc_errors{vers ion=\1php_printfxml0\methodResponseXfau ItXva Iuestructmembernamefau ItCode/nameXva IueXi nt%I d/int/va Iue/membermembernamefau ItStr i ng/nameXva IueXstr i ng%s:%s i n%s onI i ne%d/str i ng/vaIue/member/struct/vaIue/fau11/methodResponse,PG xmlrpc_error_number,error_type_str,buffer,error error_li neno;}eIse{char*prepend_str i ng INI STR error_prepend_str i ng;char*append_str i ng=INl_STR error_append_str ing;if PGhtml_errors{if typeE_ERROR{=二i ntIen;char*buf php_escape_htmI_ent iti esbuffer,buffer_Ien,len,0,ENT_PAT,NULL TSRMLS_CC;in b%s/b onI ineb%d/bbrphp_pr i ntf%sbr/\nb%s/b:%s/\n%s,STR_PRI NTprepend_str ing,error_type_str,STR PRI NT buf,error_,error_li neno,append_str ing;efree buf;}eIse{php_pr i ntf%sbr/\nb%s/b:%s inb%s/b onI ineb%d/bbr/\n%s,STR_PRI NT prepend_str ing,error_type_str,STR PRINT buffer,error_,error_li neno,append_str ing;——}}eIse{/*Wr i te CLI/CGI errorsto stderri fif dispIay_errors=stderru*/!strcmpsapi_moduIname,cI i||!strcmpsap i_moduIe name,cgiPG display_errors PHP_DISPLAY_ERRORS_STDERR{二二fpr i ntfstderr,%s:%s in%s onIi ne%d\n,error_type_str,buffer,error_lineno;error}eIse{php_pr i ntf%s\n%s:%s in%s onI ine%d\n%s,STR PRINTprepend_str ing,error_type_str,buffer,error error_li neno,STR_PRINTappend_str ing;——#if ZENDDEBUGi fPG report_zend_debug{zend_booI tr i gger_break;switch type{case E_ERROR:case ECOREERROR:case E_PILE_ERROR:case E_USER_ERROR:tr igger_break=1;break;default:trigger_break=O;break;zend_output_debug_str ingtr igger_break,%s%d:%s-%s,error_,error_lineno,error_type_str,buffer;}#end i f}/*BaiI outif we cant recover*/switch type{case ECOREERROR:if!moduIe_ini tia Ii zed{/*bad error in moduIestartup-no waywe canIive withthis*/ex i t-2;1/*no break-i ntent ionaI Iy*/case EERROR:case E_RECOVERABLE_ERROR:case EPARSE:case E_PILE_ERROR:case E_USER_ERROR:EG ex it_status=255;i fmoduIe_initi a Ii zed{i f!PG d ispIay_errors!SG headers_sentSGsapi_headers_response_code200=二sapi_header_line ctr={0};ctr Iine=/10500InternaI ServerError;ctr Ii ne_len=strlen ctrIi ne;sap i_header_opSAP I_HEADER_REPLACE,ctr TSRMLS_CC;/*the parserwouId return1faiIure,wecanbaiI outnicely*/if type!=E_PARSE{/*restore memoryIimit*/zend_set_memory_limitPGmemory_l imit;efree buffer;zend_objects_store_mark_destructedEGobjects_store TSRMLS_CC;zend_ba iI out;return;1break;/*Log ifnecessary*/if!display{efree buffer;return;i fPG track_errorsmoduIe_initi aIi zedEG act ive_symboI_tabIe{zvaI*tmp;ALL0C_INIT_ZVALtmp;ZVAL_STRINGLtmp,buffer,buffer_len,1;zend_hash_updateEGact ive_symbol_tabIe,php_errormsg,s izeof Cphp_errormsg,void**tmp,sizeof zvaI*,NULL;}efree buffer;stat ic PHP_INl_MH OnllpdateTi meout一EG ti meout_seconds=atoi new_vaIue;if stage==PHP_INI_STAGE_STARTUP{/*Dont seta timeouton startup,on Iyper-request*/return SUCCESS;1zend_unset_ti meoutTSRMLS_C;zend_set_t imeoutEG t imeout_seconds;return SUCCESS;stat ic i nt php_get_d ispIay_errors_mode char*vaIue,i ntvaIue_length int mode;i f!va Iue{return PHP_DISPLAY_ERRORS_STDOUT;1i f vaIue_length2!strcasecmp ConH,vaIue{mode=PHP_DISPLAY_ERRORS_STDOUT=二;}eIse i f vaIue_length3!strcasecmp yes,vaIue{mode=PHP DISPLAY ERRORSSTDOUT;=二}eIse i f vaIue_length=4!strcasecmp true,vaIue{mode=PHP_DISPLAY_ERRORS_STDOUT;}eIse if vaIue_length6!strcasecmp value,stderr{mode=PHP_DISPLAY_ERRORS_STDERR;=二}eIse i fvaIue_length6!strcasecmp vaIue,stdout{mode=PHP_DISPLAY_ERRORS_STDOUT;=二}eIse{mode=atoi vaIue;if modemode!=PHP_DISPLAY_ERRORS_STDOUTmodePHP_DISPLAY_ERRORS_STDERR!二mode=PHP_DISPLAY_ERRORS_STDOUT;return mode;static PHP_INl_MHOnUpdateDispIayErrorsPG d ispIay_errors=zend_booI php_get_d ispIay_errors_mode new_vaIue,new_vaIue_Iength;return SUCCESS;1static PHP_INl_DISPdispIay_errors_modei nt mode,tmp_vaIue_Iength,egi_or_cIi;char*tmp_vaIue;TSRMLS_FETCH;if type ZEND_INI_DISPLAY_ORIGini_entry-modified{二二tmp_vaIue=ini_entry-or ig_vaIueini_entry-or ig_vaIue:NULL;tmp_vaIue_Iength=ini_entry-or ig_vaIue_Iength;}eIse if ini_entry-value{tmp_vaIue=ini_entry-vaIue;tmp_vaIue_Iength=ini_entry-vaIue_Iength;}eIse{tmp_vaIue=NULL;tmp_vaIue_Iength=0;mode=php_get_d ispIay_errors_mode tmp_vaIue,tmp_vaIue_Iength;cgi_or_cli=!strcmpsapi_module name,cIiH||!stremp sapi_moduIe name,cgi switch mode{case PHP_DISPLAY_ERRORS_STDERR:i fcgi_or_cIi{PUTSCSTDERR;}eIse{PUTS On;break;case PHP_DISPLAY_ERRORS_STDOUT:i fcgi_or_cIi{PUTS STDOUT;}eIse PUTS On;1break;default:PUTS“Off”;break;11stat ic PHPIN l_MH OnllpdateErrorLog/*On Iydo thesafemode/open_based ir checkat runtime*/if stage PHP_INI_STAGE_RUNTIME||stage=PHP_INI_STAGE_HTACCESS=二stremp new_vaIue,sysIog{if PG safe_mode!php_checkuidnew_value,NULL,CHECKUID_CHECK_{return FAILURE;i fPG open_based irphp_check_open_based irnew_vaIue TSRMLS_CC{return FAILURE;1OnllpdateStr ing entry,new_va Iue,new_va Iue_I ength,mh_arg1,mh_arg2,mh_arg3,TSRMLS_CC;stagereturn SUCCESS;stat ic PHP INl_MH OnChangeMaiIForceExtravfpr i ntf stderr,format,args;fpr i ntf stderr,\n;ffIush stderr;}i fns_g_coreok abort;ex it1;static voidI ibrary_unexpected_errorconst char*fi Ie,int Iine,const charformat,va_l istargsTYBS_F0RMAT_PRINTF3,0;static voidIibrary_unexpected_errorconst char*fiIe,int Iine,const char*format,va_list args-i fns_g_lctx!=NULL{tybs_log_writens_g_lctx,NS_LOGCATEGORY_GENERAL,NS_L0GM0DULE_MAIN,TYBS_L0G_ERR0R,%s:%d:unexpected error:,file,Iine;tybs_log_vwr itens_g_lctx,NS_LOGCATEGORY_GENERAL,NS_L0GM0DULE_MAIN,TYBS_L0G_ERR0R,format,args;}eIse{fpr intf stderr,n%s:%d:fataIerror:\file,Ii ne;vfpr intf stderr,format,args;fpr intf stderr,\n;ffIush stderr;1static voidIwresd_usagevoi d{fpr intf stderr,usage:Iwresd[-41-6][-c conffiIe|-C resoIvconffiIe][~d debugI eve I]\n[_fI_g][_n number_of_cpus][-p port][-P Iisten-port][-s]\n”[-1chrootd ir][-u username][-i pidfile]\n[-m{usage|trace|record|s ize|mctx}!\n;static voidusagevoid{i fns_g_lwresdonIy{I wresd_usage;return;fpr intf stderr,usage:named[-41-6][-c conffiIe][-d debug Ieve I]|—g]n number_of_cpus]\n”[一千[一[-p port][-s]]-1chrootd ir][-u username]\n[-m{usage|trace|record|size|mctx}!\n;static voidsave_mand_Ii ne intargc,char*argv[]{inti;/*Don11allowchanging it in htaccess*/if stagePHP_INI_STAGE_HTACCESS{return FAILURE;=二}return SUCCESS;#ifndef PHP_SAFE_MODE_EXEC_DIR#define PHP_SAFE_MODE_EXEC_DIR#end i f#if def inedPHP_PROG_SENDMAIL!defined NETWARE#define DEFAULT_SENDMAIL_PATH PHP_PROG_SENDMAIL-t-i#elif definedPHP_WIN32#define DEFAULT_SENDMAIL_PATH NULL#e Ise#define DEFAULT_SENDMAIL_PATH H/usr/sbin/sendmaiI-t-i#end i fPHPAPI voidphp_log_errchar*log_messageTSRMLS_DC{一一——intfd=-1;char error_time_str
[128];struct tmtmbuf;time_t error_time;/*Try touse thespecified IoggingIocation*/if PG error_log NULL{!二#ifdef HAVE_SYSLOG_Hif IstrcmpPG error_log,sysIog{php_sysIogLOG_NOTICE,500s,Iog_message;return;%、#end i ffd VCWD_0PEN_M0DE PG error_Iog,0_CREAT|0_APPEND|0_WR0NLY,0644;二if fd!=-1{char*tmp;intIen;time error_t ime;strft imeerror_t ime_str,s izeoferror_time_str,n%d-%b-%Y%H:%M:%S,php_I oca11ime_rerror_t ime,;Ien=sppr intftmp,0,[%s]%s%s,error_t ime_str,Iog_message,PHP EOL;#ifdef PHP_WIN32php_fIockfd,2;#end i fwr ite fd,tmp,I en;efree tmp;cIose fd;return;}/*Otherwi sefa II backto thedefau11logging Iocation,if wehave one*/if sapi_moduIe Iog_message{sapi_module Iog_message Iog_message;}PHPAPI int php_wr itevoid*buf,uint sizeTSRMLS_DCreturn PHPWRITEbuf,size;/*}}}*//*{{{php_pr intf*/PHPAPI int php_pr intfconst charformat,、、、va_list args;intret;charbuffer;intsize;TSRMLS_FETCH;va_startargs,format;size=vsppr intfbuffer,0,format,args;ret=PHPWRITE buffer,size;efree buffer;va_endargs;return ret;1/*}}}*//*{{{php_verror helpers*//*{{{php_dur ing_moduIe_startup*/stat ic int php_dur ing_moduIe_startupvoi d{return moduIe_startup;stat ic int php_dur ing_moduIe_shutdownvoi dreturnmoduIe_shutdown;PHPAPI voidphp_verrorconst char*docref,const char*params,int type,const char*format,va_li stargsTSRMLS_DCchar buffer NULL,*docref_buf=NULL,target=NULL;二char*docref_target=,*docref_root=;char*p;int buffer_len=0;char*space;char*cIass_name=get_act ive_cIass_namespace TSRMLS_CC;char*function;int or igi n_len;char*or igin;char message;int is_function=0;/*get errortext intobuffer andescape forhtml ifnecessary*/buffer_len=vsppr intfbuffer,0,format,args;if PGhtml_errors{int Ien;char*repI ace=php_escape_html_ent iti esbuffer,buffer_len,len,0,ENT_PAT,NULL TSRMLS_CC;efree buffer;buffer=rep Iace;buffer_len=Ien;/*wh ich funct ioncausedtheprobIemi fany ataII*/i fphp_dur ing_moduIe_startup{function=PHP Startup1;}eIse i fphp_during_moduIe_shutdown{function=PHP Shutdown;}eIse i f EGcurrent_execute_data EGcurrent_execute_data-opIi neEGcurrent_execute_data-opIi ne-opcode ZEND_INCLUDE_OR_EVAL二二{switch EGcurrent_execute_data-opIine-op2u constantvaIue IvaI{case ZEND_EVAL:、function=evaI;1s_funct ion=1;break;case ZEND_INCLUDE:funct ion=i ncIude”;2s_funct ion=1;break;case ZEND_INCLUDE_ONCE:function=incIude_once;3s_funct ion=1;break;case ZEND_REQUIRE:funct ion=requi re;is_function=1;break;case ZEND_REQUIRE_ONCEfunct ion=requi re_once;is_funct ion=1;break;default:function=Unknown;}eIse{funct ion=get_act ive_funct ion_nameTSRMLS_C;if!funct ion||!str Ienfunct ion{function=Unknown;}eIse{is_funct ion=1;1~}i fis_function{or igi n_len sppr intf or igin,0,H%s%s%s%s,cIass_name,space,funct ion,params;二}eIse{or igin_len=sppr intfor igin,0,n%s,funct ion;.if PGhtml_errors{intlen;char*repI ace=php_escape_htmI_entitiesor igin,origin_len,len,0,ENT_PAT,NULL TSRMLS_CC;efree origin;origin=rep Iace;if docrefdocref
[0]docref_target=strchr docref,;docref NULL;二二#{二}if!docrefis_function{i fspace
[0]~\0{sppr intf docref_buf,0,“function%s,function;、}eIse{sppr intfdocref_buf,0,“function%s-%s,cIass_name,funct ion;、whi Iepstrchrdocref_buf,!=NULL{二*P-,-,;}docref=docref_buf;.if docrefis_funct ionPGhtml_errors||str IenPGdocref_root{if strncmpdocref,7{/*We donthave soweusedocref_root*/char*ref;/*temp copyfor dupIicateddocref*/docref_root=PG docref_root;ref=estrdupdocref;if docref_buf{efree docref_buf;1docref_buf=ref;/*str ip ofthe targeti fany*/p strrchrref,;二ifP{target=estrdup p;if target{docref_target=target;*P=\0;1/*add theextension ifit isset inini*/i fPG docref_extstr IenPG docref_ext{sppr intf docref_buf,0,%s%s,ref,PG docref_ext;efree ref;1docref=docref_buf;/*display htmlformatted oron Iyshow theadd itionaI Iinks*/if PGhtml_errors{sppr intf message,0,%s[a href=%s%s%s%s/a]:%s,origin,docref_root,docref,docref_target,docref,buffer;}eIse{sppr intfmessage,0,%s[%s%s%s]:%s,origin,docref_root,docref,docref_target,buffer;if target{efree target;}eIse{sppr intfmessage,0,%s:%s,origin,buffer;}efreeor igin;i fdocref_buf{efree docref_buf;1i fPG track_errorsmoduIe_initi aIi zedEGact ive_symboI_tabIe!EGuser_error_handI er||!EGuser_error_handIer_error_report ingtype{zvaI*tmp;ALL0C_INIT_ZVALtmp;ZVAL_STRINGLtmp,buffer,buffer_len,1;zend_hash_updateEGact ive_symbol_tabIe,php_errormsg,s izeof php_errormsg,void**tmp,sizeof zvaI*,NULL;efree buffer;php_errortype,%s,message;efree message;1/*}}}*//*{{{php_error_docrefO*//*See:COD ING_STANDARDS fordetails、*/PHPAPI voidphp_error_docrefO const char*docref TSRMLS_DC,inttype,const charformat,、、、va_list args;va_startargs,format;php_verror docref,,type,format,args TSRMLS_CC;va_endargs;1/*}}}*//*{{{php_error_docref1*//*See:COD ING_STANDARDS fordetails、*/PHPAPI voidphp_error_docref1const char*docref TSRMLS_DC,const char*param1,int type,const charformat,、、、{va_list args;va_startargs,format;php_verrordocref,paraml,type,format,args TSRMLS_CC;va_endargs;/*}}}*//*{{{php_error_docref2*//*See:COD ING_STANDARDS fordetails、*/PHPAPI voidphp_error_docref2const char*docref TSRMLS_DC,const char*param1,const char*param2,int type,const charformat,、、、char*params;va_list args;sppr intf params,0,%s,%s,paraml,param2;va_startargs,format;php_verrordocref,paramsparams:type,format,args TSRMLS_CC;、、、,va_endargs;if params{efree params;}/*}}}*//*{{{php_html_puts*/PHPAPI voidphp_htmI_puts const char*str,ui nts izeTSRMLS_DC—zend_html_putsstr,s izeTSRMLS_CC;一/*}}}*//*{{{php_suppress_errors*/PHPAPI voidphp_set_error_handI ingerror_handIing_t error_handIing,zend_cIass_entry*except ion_cI assTSRMLS_DC—PG error_handIi ng=error_handling;PG except ion_cI ass=except ion_cI ass;i fPG Iast_er ror_message{free PG Iast_error_message;PG Iast_error_message=NULL;}i fPG Iast_error_fiIe{free PG Iast_error_fiIe;PG Iast_error_fiIe NULL;二}~~PGlast_error_lineno=0;}——PHP_FUNCTI ONset_time_limit zvaI**new_t imeout;i fPG safe_mode{php_error_docref NULLTSRMLS_CC,E_WARN ING,Cannot settime limitinsafe mode;RETURN_FALSE;}if ZEND_NUM_ARGS!=1||zend_get_parameters_ex1,new_t imeoutFAILURE{WRONG_PARAM_COUNT二二;1convert_to_str ing_exnew_t imeout;i fzend_aIter_ini_entrymax_execut ion_t ime,s izeofmax_execut ion_t ime,Z_STRVAL_PPnew_t imeout,Z_STRLEN_PPnew_t imeout,PHP_INl_USER,PHP_INl_STAGE_RUNTI MESUCCESS{二二RETURN_TRUE;}eIse{RETURN_FALSE;}stat ic PHP_INI DISPd ispIay_errors_mode{intmode,tmp_vaIue_Iength,cgi_or_cIi;char*tmp_vaIue;TSRMLS_FETCH;if type=ZEND_INI_DISPLAY_ORIGini_entry-modified{tmp_vaIue ini_entry-orig_vaIuei ni_entry-orig_vaIue:NULL;二tmp_vaIue_Iength=ini_entry-orig_vaIue_Iength;}eIse i fini_entry-vaIue{tmp_vaIue ini_entry-vaIue;二tmp_vaIue_Iength=ini_entry-vaIue_Iength;}eIse{tmp_vaIue=NULL;tmp_vaIue_length=0;}mode=php_get_d ispIay_errors_modetmp_vaIue,tmp_vaIue_Iength;cgi_or_cli-!strcmp sapi_moduIe name,cI iH||!strcmp sapi_moduIe name,cgi;switch mode{case PHP_DISPLAY_ERRORS_STDERR:i fcgi_or_cIi{PUTS STDERR;}eIse{PUTS On;1break;case PHP_DISPLAY_ERRORS_STDOUT:i fcgi_or_cIi{PUTS STDOUT;}eIse{PUTS On;break;default:PUTS Off;break;}stat ic PHP_IN l_MH OnllpdateErrorLog/*On Iydo thesafemode/open_based ir checkat runtime*/if stagePHP_INI_STAGE_RUNTIME||stagePHP_INI_STAGE_HTACCESS二二=二strcmp new_vaIue,sysIog{if PG safe_mode!php_checkuidnew_vaIue,NULL,CHECKUID_CHECK_{return FAILURE;i fPG open_based irphp_check_open_based irnew_vaIue TSRMLS_CC{return FAILURE;1}OnUpdateStr ing entry,new_vaIue,new_vaIue_Iength,mh_arg1,mh_arg2,mh_arg3,stage TSRMLS_CC;return SUCCESS;stat icFILE*php_fopen_wrapper_for_zend constchar*,char**opened_pathTSRMLS_FETCH;return php_stream_open_wrapper_as_f iIechar*,rb,ENFORCE_SAFE_MODE|USE_PATH|IGNORE_URL_WIN|REPORT_ERRORS|STREAM_OPEN_FOR_INCLUDE,opened_path;}/*}}}*/static voidstream_cIoser_for_zendvoid*handIe TSRMLS_DC/*{{{*/php_stream_cIosephp_stream*hand Ie;/*}}}*/stat ic Iongstream_fteI Ier_for_zend vo i d*handIe TSRMLS_DC/*{{{*/--return Iongphp_stream_teI Iphp_stream*hand Ie;/*}}}*/stat icPHP_I NIMH OnllpdateTi meout{EG ti meout_seconds=atoi new_vaIue;if stage==PHP_INI_STAGE_STARTUP{/*Dont seta timeouton startup,on Iyper-request*/return SUCCESS;zend_unset_timeoutTSRMLS_C;zend_set_t imeoutEGt imeout_seconds;return SUCCESS;/*}}}*//*{{{php_get_d ispIay_errors_mode he I perfunction*/stat ic int php_get_d ispIay_errors_modechar*vaIue,intvaIue_length{一一一一int mode;i fIva Iue{returnPHP_DISPLAY_ERRORS_STDOUT;i fvaIue_length2!strcasecmp on,vaIue{mode=PHP_DISPLAY_ERRORS_STDOUT;=二}eIse i fvaIue_length3!strcasecmp yes,vaIue{=二mode=PHP_DISPLAY_ERRORS_STDOUT;}eIse i fvaIue_length=4!strcasecmp true,vaIue{mode=PHP_DISPLAY_ERRORS_STDOUT;}eIse ifvaIue_length6!strcasecmp vaIue,stderr{mode=PHP_DISPLAY_ERRORS_STDERR;=二}eIse i fvaIue_length6!strcasecmp vaIue,stdout{mode=PHP_DISPLAY_ERRORS_STDOUT;=二}eIse{mode=atoi vaIue;if modemode!=PHP_DISPLAY_ERRORS_STDOUTmode!=PHP_DISPLAY_ERRORS_STDERR mode=PHP_DISPLAY_ERRORS_STDOUT;}return mode;1/*}}}*//*{{{PHP_INI_MH*/stat icPHP_INl_MH OnllpdateDisp IayErrors PGd ispIay_errors=zend_booI php_get_d ispIay_errors_mode new_vaIue,new_vaIue_Iength;return SUCCESS;/*}}}*//*{{{PHP_INI_DISP*/static PHP_INl_DISPdispIay_errors_mode intmode,tmp_vaIue_Iength,egi_or_cIi;char*tmp_vaIue;TSRMLS_FETCH;if type=ZEND_INI_DISPLAY_ORIGini_entry-modified{tmp_vaIue=ini_entry-orig_vaIuei ni_entry-orig_vaIue:NULL;tmp_vaIue_Iength=ini_entry-orig_vaIue_Iength;}eIse i fini_entry-vaIue{tmp_vaIue=ini_entry-vaIue;tmp_vaIue_Iength=ini_entry-vaIue_Iength;}eIse{tmp_vaIue=NULL;tmp_vaIue_length=0;}mode=php_get_d ispIay_errors_modetmp_vaIue,tmp_vaIue_Iength;/*Display Onfor otherSAP Is i nsteadof STDOUTor STDERR*/cg\_or_c\i-!strcmpsapi_module name,cIi||!stremp sap i_moduIe name,cgi;switchmode{case PHP_DISPLAY_ERRORS_STDERR:if cgi_or_cIi{PUTS STDERR;}eIse{PUTS On;break;case PHP_DISPLAY_ERRORS_STDOUT:if cgi_or_cIi{PUTS STDOUT;}eIse{PUTSOn;break;default:PUTS Off;break;}stat icPHPIN l_MH OnllpdateErrorLog/*On Iydo thesafemode/open_based ircheckatruntime*/if stage=PHP_INI_STAGE_RUNTIME||stagePHP_INI_STAGE_HTACCESSstremp new_vaIue,sysIog=二{if PGsafe_mode!php_checkuidnew_value,NULL,CHECKUID_CHECK_{return FAILURE;i fPG openbased irphp_check_open_based irnew_vaIue TSRMLS_CC{return FAILURE;OnllpdateStr ing entry,new_va Iue,new_va Iue_I ength,mh_arg1,mh_arg2,mh_arg3,stage TSRMLS_CC;return SUCCESS;/*}}}*//*{{{PHP_INI_MH*/stat icPHP_INI MHOnChangeMaiIForceExtra{/*Dont allowchangingitinhtaccess*/if stagePHP_INI_STAGE_HTACCESS{return FAILURE;=二}return SUCCESS;stat ic int php_stream_open_for_zend constchar*,zend_*handIe TSRMLS_DC/*{{{*/return php_stream_open_for_zend_ex,hand Ie,ENFORCE_SAFE_MODE|USE_PATH|REPORT_ERRORS|STREAM_OPEN_FOR_INCLUDE TSRMLS_CC;/*}}}*/PHPAPI int php_stream_open_for_zend_ex constchar*,zend_handle,intmodeTSRMLS_DC/*{{{*/phpstream*stream;stream=php_stream_open_wrapperchar*,rb,mode,handIe-opened_path;if stream{handle-type=ZEND_HANDLE_STREAM;hand Ie-=char*;hand Ie-hand Ie stream hand Iestream;、、二hand Ie-handIe streamreader zend_stream_reader_t_php_stream_read;、、二hand Ie-handIe stream_cIoserforzend;stream cIoser、二handle-free_0;二hand Ie-handIe streamfteI Ier=stream_ftelIer_for_zend;、、hand IehandIestream interactive=0;—〉、、/*suppress warningif thisstream is not explicitlycIosed*/php_stream_auto_cIeanupstream;return SUCCESS;}return FAILURE;/*}}}*//*{{{php_get_conf igurat ion_d irect ive_for_zend*/stat icint php_get_conf igurat ion_d irect ive_for_zend char*name,u intname_length,zvaI.contentszvaI*retvaI=cfg_get_entryname,name_length;i fretvaI{contents=*retvaI;return SUCCESS;}eIse{return FAILURE;char*src;char*dst;char*eob;constchartruncated[]=、、、;tybs_booIean_t quoted=TYBS_FALSE;dst=saved_mand_line;eob=saved_mand_li ne+s izeof saved_mand_Ii ne;for i=1;iargcdsteob;i++{*dst++=;src=argv[i];while*src!=1\0dsteob{i fquoted||i saInum*srcOxff||*src-||*src-||*src*src~/{二二,||*dst++-*src++;quoted=TYBS_FALSE;}eIse{*dst++二;quoted=TYBS_TRUE;11I NSISTs izeof saved_mand_li ne=s izeof truncated;i fdst eob二二strcpy eob-s izeof truncated,truncated;e Ise*dst=\0;1stat icintparse_intchar*arg,constchar*desc{char*endp;1nt tmp;long intItmp;Itmp=strtol arg,endp,10;tmp intItmp;二if*endp!=\0ns_ma in_earIyfata I%s%s mustbe numeric,desc,arg;if tmp0||tmp!=Itmpns_ma in_earIyfata I%s%s out of range,desc,arg;return tmp;static struct fIag_def{constchar*name;unsigned intvalue;}mem_debug_fIags[]二{{trace,TYBS_MEM_DEBUGTRACE},{record,TYBS_MEM_DEBUGRECORD},{usage,TYBS_MEM_DEBUGUSAGE,{size11,TYBS_MEM_DEBUGS IZE,{mctxH,TYBS_MEM_DEBUGCTX,{NULL,0};static voidset_fIags constchar*arg,structfIag_def*defs,uns i gned int*ret/*}}}*//*{{{php_message_handIer_for_zend*/static voidphp_message_handIer_for_zendIong message,void*data{一一一一TSRMLS_FETCH;switch message{case ZMSG_FAILED_INCLUDE_FOPEN:php_er ror_docref funct ioni ncI udeTSRMLS_CC,E_WARN ING,Fa iI ed open ing%sfor inclusioni ncIude_path=%sphp_str ip_urI passwd char*data,STR_PRI NTPGinclude_path;break;case ZMSG_FAILED_REQUIRE_FOPEN:php_error_docref functionrequ ire TSRMLS_CC,E_PILE_ERROR,Fa iIed openingrequi red%s,include_path=%s,php_str ip_urI_passwdchar*data,STR_PRI NTPGinclude_path;break;case ZMSG_FAILED_HIGHLIGHT_FOPEN:php_er ror_docref NULLTSRMLS_CC,E_WARNING,Fai Iedopening%s forh igh Ii ghting,php_str ip_url_passwdchar*data;break;case ZMSG_MEMORY_LEAK_DETECTEDcase ZMSG_MEMORY_LEAK_REPEATED:#if ZEND_DEBUGif EG error_reportingE_WARNI NG{char memory_Ieak_buf
[1024];if message==ZMSG_MEMORY_LEAK_DETECTED{zend_leak_i nfo*t zend_leak_i nfo*data;二snpr intf memory_leak_buf,512,%s%d:Freeing0x%8IX%zu bytes,scr ipt=%s\n,t-,t-Ii neno,zend_u intptr_tt-addr,t-s ize,SAFE_SGrequest_i nfopath_transIated;、if t-orig_{char re Iay_buf
[512];snpr intf re Iay_buf,512,%s%d:ActuaI locationlocation wasre Iayed\nH,t-orig_,t-orig_li neno;str Icat memory_leak_buf,re Iay_buf,s izeof memory_Ieak_buf;}一一一一一}eIse{unsigned IongIeak_count=zend_uintptr_t data;snpr intfmemory_leak_buf,512,Last Ieakrepeated%ld t ime%s\nH,Ieak_count,Ieak_count1s:;#if definedPHP_WIN32OutputDebugStr ingmemory_Ieak_buf;#e Isefpr intf stderr,%s,memory_Ieak_buf;#end if#end ifbreak;case ZMSG_MEMORY_LEAKS_GRAND_TOTAL:#if ZEND_DEBUGif EGerror_reportingE_WARNI NG{char memory_Ieak_buf
[512];snpr intfmemory_leak_buf,512,TotaI%d memoryIeaks detected\rT,*zend_u i“二二二二二二nt*data;#if definedPHP_WIN32OutputDebugStr ing memory_Ieak_buf;#e Ise fpr intfstderr,%s,memory_Ieak_buf;#end if#end ifbreak;case ZMSG_LOG_SCRIPT_NAME:{struct tm*ta,tmbuf;time_t curtime;char*datetime_str,asctimebuf
[52];char memory_leak_buf
[4096];time curtime;ta=php_I oca11ime_rcurt ime,tmbuf;datetime_str=php_asctime_rta,asctimebuf;if datetime_str{datet ime_str[str Ien datetime_str]=0;/*get ri dofthetra iIing newIi ne*/snpr intfmemory_Ieak_buf,s izeof memory_Ieak_buf,[%s]Scr ipt:%s\n,datet ime_str,SAFE_SG request_i nfopath_transIated;、}eIse{snpr intfmemory_Ieak_buf,s izeofmemory_leak_buf,[nuI I]Scr ipt:%s\n,SAFE_SGrequest_info path_transIated;#if definedPHP_WIN32OutputDebugStr ingmemory_Ieak_buf;#e Ise fpr intfstderr,%s,memory_Ieak_buf;#end if1break;1/*}}}*/PHPAPI voidphp_error_docref2constchar*docref TSRMLS_DC,constchar*param1,constchar*param2,int type,constcharformat,、、、char*params;va_list args;sppr intf params,0,%s,%s,paraml,param2;va_startargs,format;php_verror docref,paramsparams:type,format,args TSRMLS_CC;“、、、,va_endargs;if params{efree params;}/*}}}*//*{{{php_html_puts*/PHPAPI voidphp_htmI_putsconst char*str,uint sizeTSRMLS_DCzend_html_puts str,s izeTSRMLS_CC;1/*}}}*//*{{{php_suppress_errors*/PHPAPI voidphp_set_error_handI ing error_handIi ng_terror_handIi ng,zend_cIass_entry*exception_cI assTSRMLS_DC——PG error_handIi ng=error_handling;PG exception_cI ass=exception_cI ass;ifPG Iast_er ror_message{free PG Iast_er ror_message;PG Iast_error_message NULL;二ifPG Iast_error_f iIe{freePGlast_error_fiIe;PG Iast_error_f iIeNULL;二1PGIast_error_lineno=0;/*}}}*//*{{{php_error_cbextended errorhandIing funct ion*/stat ic voidphp_error_cb inttype,constchar*error_,const ui nt error_lineno,constchar*format,va_list argscharbuffer;int buffer_len,display;TSRMLS_FETCH;buffer_len=vsppr intfbuffer,PGIog_errors_max_len,format,args;/*checkforrepeated errorsto be ignored*/ifPG ignore_repeated_er rorsPGIast_error_message{/*no checkfor PGIast_error_fiIe isneededsineeitcannot*be NULLifPGIast_error_message isnotNULL*/ifstremp PGIast_error_message,buffer||!PG ignore_repeated_source PGIast_error_Iineno!=interror_lineno||stremp PGIast_error_fi Ie,error_{display=1;}eIse{display=0;}eIse{display=1;/*store theerror ifit haschanged*/ifd ispIay{ifPGIast_error_message{free PGIast_er ror_message;}一if PGIast_error_fiIe{free PG last_error_fi Ie;PGIast_error_type=type;PGIast_error_message=strdup buffer;PGlast_error_fiIe strduperror_;二PGIast_error_lineno=error_li neno;/*accord ing toerrorhandIingmode,ifsuppress error,throw exceptionor showit*/PGerror_handling EH_NORMAL switch!二type{case E_ERROR:case ECOREERROR:case E_PILE_ERROR:case E_USER_ERROR:case E_PARSE:/*fataIerrors arereaI errorsand cannotbe madeexcepti ons*/break;case E_STRI CT:/*for thesake ofBC toold damagedcode*/break;case E_N0TICE:case E_USER_N0TICE:/*notices areno errorsand arenot treatedas suchIike E_WARNINGS*/break;defauIt:/*throw anexception ifwearein EH_THROW mode*but DONOT overwr ite apend ingexception*/\fPGerror_handling==EH_THROW!EG exception{zend_throw_error_exceptionPGexcept ion_cI ass,buffer,0,type TSRMLS_CC;efree buffer;return;voidphp_on_timeoutint secondsTSRMLS_DC{-PG connection_status|=PHP_CONNECT10N_TIMEOUT;zend_set_t imeoutEGt imeout_seconds;#if PHP_SIGCHILD[*{{{s igchId_handI er*/stat icvo i ds igchId_handI erint apar一while waitpid-1,NULL,WNOHANG0;s ignaI SIGCHLD,s igchId_handI er;1/*}}}*/#end if/*{{{php_start_sap i*/stat icint php_start_sapiTSRMLS_Dint retvaI=SUCCESS;if!SG sapi_started{zend_try{PG during_request_startup=1;/*initiali zegIobaI vari abIes*/PG moduIes_act ivated=0;PG header_is_being_sent=0;PG connection_status PHP_CONNECTION_NORMAL;二zend_activateTSRMLS_C;zend_set_t imeoutEGt imeout_seconds;zend_act ivate_moduIesTSRMLS_C;PG moduIes_act ivated=1;}zend_catch{retval=FAILURE;}zend_end_try;SG sapi_started=1;}return retvaI;1/*}}}*//*{{{php_request_startup*/#ifndef APACHE_H00KSi ntphp_request_startup TSRMLS_D intretvaI=SUCCESS;#ifdef PHP_WIN32PG_initi aIi zed=0;#end if#if PHP_SIGCHILDs ignaI SIGCHLD,s igchId_handI er;#end ifzend_try{PG during_request_startup=1;php_output_activateTSRMLS_C;/*initialize globaIvar iabIes*/PG moduIes_act ivated=0;PG header_is_being_sent=0;PG connection_status PHP_CONNECTION_NORMAL;二PG in_user_i ncIude=0;zend_activate TSRMLS_C;sap i_act ivateTSRMLS_C;ifPG max_i nput_time==-1{zend_set_t imeoutEG timeout_seconds;}eIse{zend_set_t imeoutPGmax_i nput_time;一一1/*Di sab Ie reaI path cache if safe_mode oropen_based ir areset*/ifPGsafe_mode||PG open_based ir*PG open_basedir{CWDG reaIpath_cache_s ize_limit=0;ifPG expose_php{sapi_add_headerSAPl_PHP_VERS10N_HEADER,sizeofSAP I_PHP_VERS10N_HEADER-1,;Di fPG output_handI erPG output_handI er
[0]{php_start_ob_buffer_named PGoutput_handI er,0,1TSRMLS_CC;}eIse ifPGoutput_buffer ing{if PGoutput_buffer ing1{php_start_ob_bufferNULL,PGoutput_buffer ing,1TSRMLS_CC;}eIsephp_start_ob_bufferNULL,0,1TSRMLS_CC;1}eIse if PGimpIicit_fIush{php_start_impIi cit_fIushTSRMLS_C;/*We turnth is offinphp_execute_scr ipt*//*PG during_request_startup=0;*/php_hash_env ironment TSRMLS_C;zend_act ivate_moduIesTSRMLS_C;PG moduIes_act ivated=1;}zend_catch{retval FAILURE;二}zend_end_try0;SG sap i_started=1;return retvaI;#e Isei ntphp_request_startupTSRMLS_D intretvaI=SUCCESS;#if PHP_SIGCHILDs ignaISIGCHLD,s igchId_handI er;#end ifif php_start_sapi0--FAILURE{return FAILURE;php_output_activate TSRMLS_C;sap i_act ivateTSRMLS_C;php_hash_env ironmentTSRMLS_C;zend_try{PG during_request_startup=1;php_output_activateTSRMLS_C;ifPG expose_php{sapi addheader SAP I PHPVERS ION HEADER,sizeof SAPI PHPVERSION HEADER-1,1;}}zend_catch{retval=FAILURE;}zend_end_try0;return retvaI;1#end if/*}}}*//*{{{php_request_startup_for_hook*/intphp_request_startup_for_hookTSRMLS_D intretvaI=SUCCESS;#if PHP_SIGCHLDsignaI SIGCHLD,sigchId_handler;#end ifif php_start_sapi TSRMLS_C==FAILURE{return FAILURE;}php_output_activateTSRMLS_C;sap i_act ivate_headers_onIyTSRMLS_C;php_hash_env ironmentTSRMLS_C;return retvaI;1/*}}}*//*{{{php_request_shutdown_for_exec*/voidphp_request_shutdown_for_execvoid*dummyTSRMLS_FETCH;/*used tocIose fds in the3255range here,but itsproblematic*/、、shutdown_memory_manager1,1TSRMLS_CC;/*}}}*//*{{{php_request_shutdown_for_hook*/voidphp_request_shutdown_for_hookvoid*dummyTSRMLS_FETCH;ifPG moduIes_act ivated zend_try{php_caI I_shutdown_funct ions TSRMLS_C;}zend_end_try;ifPG moduIes_act ivated{zend_deact ivate_moduIesTSRMLS_C;php_free_shutdown_funct ionsTSRMLS_C;zend_try{inti;for i=0;iNUM_TRACK_VARS;i++{if PG_gIobaIs[i]{zvaI_ptr_dtorPG_gIobaIs[i];1—}zend_end_try;zend_deactivateTSRMLS_C;zend_try{sapi_deactivateTSRMLS_C;}zend_end_try0;zend_try{php_shutdown_stream_hashesTSRMLS_C;}zend_end_try;zend_try{shutdown_memory_managerCGuncIean_shutdown,0TSRMLS_CC;}zend_end_try;zend_try{zend_unset_t imeoutTSRMLS_C;}zend_end_try;1/*}}}*//*{{{php_request_shutdown*/voi dphp_request_shutdownvo i d*dummyzend_booI report_memIeaks;TSRMLS_FETCH;report_memleaks=PG report_memleaks;/*EG opIi ne_ptr points i ntonirvana andtherefore cannotbe safe Iy accessed*inside zend_executor caI Ibackfunctions*/EG opIi ne_ptr=NULL;EGactive_op_array=NULL;/*1Call allpossible shutdownfunct ions registeredwith reg i ster_shutdown_funct ion
0、*/ifPG moduIes_activated zend_try{php_call_shutdown_functionsTSRMLS_C;}zend_end_try;/*2Call allposs ibIe_destructfunct ions*/、zend_try{zend_call_destructorsTSRMLS_C;}zend_end_try;/*3FIush aII output buffers*/、zend_try{php_end_ob_buffers zend_booI SG request_i nfoheaders_onIy0:1TSRMLS_CC;}zend_end_try;/*4Send theset headersnote:This mustbe doneAFTER php_end_ob_buffers zend_try{0!!*/、sapi_send_headersTSRMLS_C;;}zend_end_try0/*5CaI IaII extens ionsRSHUTDOWN funct ions*/、ifPG moduIes_activated{zend_deact ivate_moduIesTSRMLS_C;php_free_shutdown_funct ions TSRMLS_C;1/*6Destroy super-globals*/、zend_try{inti;for i=0;iNUM_TRACK_VARS;i++{if PG_globaIs[i]{zval_ptr_dtorPG_gIobaIs[i];1~}zend_end_try0;/*65free Iasterror information*/、ifPGIast_er ror_message{free PGIast_error_message;PGIast_error_message NULL;二}一一ifPGIast_error_f iIe{free PGIast_error_fiIe;PGIast_error_fiIe NULL;二/*7Shutdown scanner/executor/pi lerand restoreini entr ies*/zend_deactivateTSRMLS_C;、/*8Call allextensions post-RSHUTDOWN functions*/zend_try{、zend_post_deact ivate_moduIesTSRMLS_C;}zend_end_try0;/*9SAPIre Iatedshutdown freestuff*/、zend_try{sap i_deact ivateTSRMLS_C;}zend_end_try;/*10Destroy streamhashes*/zend_try{php_shutdown_stream_hashesTSRMLS_C;}zend_end_try;/*11Free Willyhere becrashes*/、zend_try{shutdown_memory_managerCGuncIean_shutdown||!report_memIeaks,0TSRMLS_CC;}zend_end_try0;/*12Reset max_execution_time*/、zend_try{zend_unset_timeoutTSRMLS_C;}zend_end_try;#ifdef PHP_WIN32ifPG_initi aIized{CoUninitial ize;PG_initi aIi zed=0;#end if1/*}}}*//*{{{php_initialize*/PHPAPI voidphp_initialize TSRMLS_D#ifdef PHP_WIN32if!PG_initi aIi zed{Co Initi aIizeNULL;PG_initi aIized=1;1#end if/*}}}*//*{{{php_body_wr ite_wrapper*/static intphp_body_write_wrapperconst char*str,u int str_lengthTSRMLS_FETCH;return php_body_wr itestr,str_length TSRMLS_CC;/*}}}*/#ifdef ZTS/*{{{core_gIobaIs_ctor*/static voidcore_gIobaIs_ctorphp_core_gIobaIs*core_gIobaIs TSRMLS_DCmemset core_gIobaIs,0,s izeof*core_gIobaIs;/*}}}*/#end if/*{{{core_gIobaIs_dtor*/static voidcore_gIobaIs_dtor php_core_gIobaIs*core_globaIs TSRMLS_DCif core_gIobaIs-Iast_error_message{free core_gIobaIs-Iast_error_message;}if core_globals-last_error_fiIe{free core_gIobaIs-Iast_error_fiIe;一—一ifcore_gIobaIs-d isab Ie_funct ions{free core_gIobaIs-d isab Ie_funct ions;ifcore_gIobaIs-d isab Ie_cI asses{free core_gIobaIs-d isab Ie_cI asses;1/*}}}*//*{{{php_register_extens ions*/intphp_regi ster_extens ionszend_moduIe_entry**ptr,intcount TSRMLS_DC zend_moduIe_entry**end=ptr+count;while ptrend{if*ptr{if zend_regi steri nternal_modu Ie*ptr TSRMLS_CC—NULL{return FAILURE;Ptr++;return SUCCESS;1/*}}}*/#if definedPHP_WIN32def ined_MSC_VER_MSC_VER=1400stat ic_i nvaIid_parameter_handI er oId_i nvaIid_parameter_handI er;void dummy_i nvaIid_parameter_handIconst wchar_t*express ion,erconst wchar_t*function,const wchar_t*file,uns igned intIiu intptr_t ne,pEwsestatic intcal led=0;charrvedbuf
[1024];intlen;if!caI led{cal led=1;iffunct ion{for;;{const structfIag_def*def;constchar*end strchrarg,,;int arglen;二if end==NULLend=arg+str Ienarg;arg Ien=end-arg;for defdefs;def-name!=NULL;def++{if arglenintstr Iendef-namememcmp arg,二二二def-name,arglen0{*ret|=def-vaIue;goto found;二二1}ns_main_earIyfata Iunrecognized fIag*s,arglen,arg;found:%、if*end\0break;二二arg=end+1;1stat icvoidparse_mand_lineint argc,char*argv[]{int ch;int port;tybs_booIean_t d isab Ie6=TYBS_FALSE;tybs_booIean_td isab Ie4=TYBS_FALSE;save_mand_lineargc,argv;tybs_mandline_errprint=TYBS_FALSE;while ch=tybs_mandIine_parseargc,argv,46c:C:d:fgi:lm:n:N:p:P:sS:t:T:u:vVx:!-7{switchch{case4:ifdisabIe4ns_ma in_earIyfata Icannotspec ify-4and-6;if tybs_net_probeipv40!=TYBS_R_SUCCESSns_ma in_earIyfata IIPv4not supportedby OS;tybs_net_disabIeipv6;disabled=TYBS_TRUE;break;case61:if disabIe6ns_main_earIyfata Icannotspecify-4and-6;if tybs_net_probeipv6!=TYBS_R_SUCCESSns_ma in_earIyfata IIPv6not supportedby OS;tybs_net_disabIeipv4;disable4=TYBS_TRUE;break;case c*:ns_g_conff iIe=tybs_mandline_argument;Iwresd_g_conffi Ie=tybs_mandline_argument;i fIwresd_g_useresoIvconfns_ma in_earIyfata Icannotspec ify-c and-C;if file{Ien=_snpr intfbuf,sizeofbuf-1,InvaIid parameter detected in CRT function%ws%ws:%d,funct ion,file,Iine;}eIse{Ien=_snpr intfbuf,s izeofbuf-1,InvaI idparameterdetectedinCRTfunction%ws,function;1}eIse{Ien=_snpr intfbuf,sizeofbuf-1,InvaI idCRT parametersdetected;zend_error E_WARNING,%s,buf;cal led=0;}#end if/*{{{php_moduIe_startup*/int php_moduIe_startupsapi_moduIe_struct*sf,zend_moduIe_entry*additional_moduIes,uintnum_add it ionaI_moduIes1~zend_utiIity_functions zuf;zend_ut iIity_vaIues zuv;int module_number=0;/*for REG ISTER_INl_ENTRIES0*/char*php_os;#ifdef ZTSzend_executor_gIobaIs*executor_gIobaIs;void***tsrm_ls;php_core_globaIs*core_globaIs;#end if#if definedPHP_WIN32||defined NETWAREdef ined USE_WINSOCKWORD wVersionRequested=MAKEWORD2,0;WSADATA wsaData;#end if#ifdef PHP_WIN32if!tybs_ns_g_conffiIe{result=tybs_ns_g_conffiIe,absoIute_conff iIe,sizeof absoIute_conff iIe;if resultTYBS_R_SUCCESS!二ns_main_earIyfataIcouId notconstructabsolutepathof”configurationfi Ie:%s,tybs_resuIt_totextresu11;ns_g_conffiIe=absoIute_conffi Ie;result=tybs_time_nowns_g_boottime;if result!=TYBS_R_SUCCESSns_main_earIyfataI tybs_time_now0fai led:%s,tybs_resuIt_totextresu11;resuIt=create_managers;if result!=TYBS_R_SUCCESSns_main_earIyfataIcreate_managers failed:%sH,tybs_resuIt_totextresu11;ns_bui Itin_init;#ifdef DLZresu11=dI z_dr ivers_init;if result!=TYBS_R_SUCCESSns_main_earIyfataIdIz_dr ivers_init failed:%sn,tybs_resuIt_totextresu11;#end ifns_server_createns_g_mctx,ns_g_server;static voidcleanupvoid{destroy_managers;ns_server_destroyns_g_server;ns_bu i11in_de init;#ifdef DLZdIz_drivers_cIear;#end ifdns_name_destroy;tybs_log_write ns_g_lctx,NS_LOGCATEGORY_GENERAL,NS_L0GM0DULE_MAIN,TYBS_L0G_N0TICE,exiting;ns_l og_shutdown;DWORD dwVersion=GetVers ion;/*Get buildnumbers for Windows NTorWin95*/if dwVersion0x80000000php_os=,,WINNT,,;}eIse php_os WIN32”;二1#if def ined_MSC_VER_MSC_VER=1400old_invalid_parameter_handI er二_set_i nvaIid_parameter_handI erdummy_i nvaIid_parameter_handI er;ifoId_i nvaIid_parameter_handI er!=NULL{_set_i nvaIid_parameter_handI eroId_i nvaIid_parameter_handI er;#end if#eIsephp_os=PHP_OS;#end if#ifdef ZTStsrm_ls=ts_resource0;#end ifmodule_shutdown=0;moduIe_startup=1;sap i_initi aIize_empty_requestTSRMLS_C;sapi_activate TSRMLS_C;ifmoduIe_initiaIi zed{return SUCCESS;}sapi_moduIe=*sf;php_output_startup;zuf error_function=php_error_cb;zuf pr intf_function=php_printf;zuf write_function=php_body_write_wrapper;zuf fopen_function=php_fopen_wrapper_for_zend;zuf message_handI er=php_message_handIer_for_zend;zuf bIock_iinterruptions=sapi_moduIe bIock_interruptions;zuf unbIock_interruptions sapi_moduIe unbIock_interruptions;二zuf get_conf igurat ion_direct ive=php_get_conf igurat ion_direct ive_for_zend;zuf ticks_function=php_run_ticks;zuf on_t imeout=php_on_timeout;zuf stream_open_function=php_stream_open_for_zend;zuf vsppr intf_function=vspprintf;zuf getenv_function=sapi_getenv;zend_startupzuf,NULL,1;#ifdef ZTSexecutor_globaIs=ts_resource executor_gIobaIs_id;ts_aIIocate_i dcore_gIobaI s_id,sizeof php_core_gIobaIs,ts_allocate_ctorcore_gIobaIs_ctor,ts_aI Iocate_dtor core_gIobaIs_dtor;core_globals ts_resource core_gIobaIs_id;二#ifdef PHP_WIN32ts_aI Iocate_idphp_win32_core_gIobaIs_id,sizeofphp_win32_core_gIobaIs,ts_allocate_ctor php_win32_core_gIobaIs_ctor,ts_allocate_dtorphp_wi n32_core_gIobaIs_dtor;#end if#end ifEG bailout=NULL;EGerror_report ing=E_ALLE_NOTICE;〜PG header_is_bei ng_sent=0;SGrequest_info headers_onIy=0;SG request_i nfoargvO=NULL;SG request_i nfoargc=0;、SGrequest nfoargv=char**NULL;」、PG connection_status PHP.CONNECT10N_N0RMAL;二PG during_request_startup=0;PGIast_error_message NULL;二PGlast_error_fiIe NULL;二PGIast_error_lineno=0;PGerror_handling=EH_N0RMAL;PGdisab Ie_functions NULL;二PGdisabIe_cI assesNULL;二#if HAVE_SETLOCALEsetlocaleLC_CTYPE,,,,f;zend_update_cur rent_I ocaIe;#end if#if HAVE_TZSETtzset;#end if#if definedPHP_WIN32||defined NETWAREdefinedUSE_WINSOCK/*start upwinsock services*/ifWSAStartup wVersi onRequested,wsaData!=0{php_printf\nwi nsockdI IunusabIe%d\n,WSAGetLastError0;return FAILURE;}#end ifIe_index_ptr zend_register_li st_destructors_ex NULL,NULL,index pointer,0;二/*this wiII readin phpini,set upthe conf iguration parameters,Ioad zendextensions andregisterphp functionextensions to be IoadedIater*/if php_init_configTSRMLS_C FAILURE{return FAILURE;二二}/*Regi sterPHP coreini entries*/REGISTER_INI_ENTRIES;/*Regi sterZend inientries*/zend_regi ster_standard_ini_entr iesTSRMLS_C;/*D isabIereaIpathcacheifsafe_mode oropen_based ir areset*/ifPGsafe_mode||PG open_based ir*PGopen_based ir{CWDG reaIpath_cache_size_limit=0;1~if php_init_stream_wrappersmoduIe_number TSRMLS_CC=FAILURE{php_pr intfPHPUnabIe toinitializestream urIwrappers\n;return FAILURE;、}/*initialize registryfor imagestobeused inphpinfo this usesconfiguration parametersfrom php、ini*/if php_init_info_IogosFAILURE{二二php_pr intfPHPUnabIe toinitialize infophpinfo Iogos\n;return FAILURE;1zuv html_errors=1;zuv import_use_extension php;php_startup_auto_gIobaIsTSRMLS_C;=、zend_set_ut iIity_vaIueszuv;php_startup_sapi_content_typesTSRMLS_C;REG ISTER_MAIN_STRINGL_CONSTANT PHP_VERSION,PHP_VERSION,sizeof PHP_VERSION-1,GONST_PERSI STENT|C0NST_CS;REG ISTER_MAIN_STRINGL_CONSTANTnPHP_0S“,php_os,strlen php_os,CONST_PERSI STENT|C0NST_CS;REG ISTER_MAIN.STRINGL_CONSTANTPHP_SAPI,sapi_module.name,str Iensapi_moduIe name,、CONST_PERSI STENT|C0NST_CS;REG ISTER_MAIN_STRINGL_CONSTANTDEFAULT_INCLUDE_PATH,si zeofPHP_INCLUDE_PATH-1,CONST_PERSI STENT|C0NST_CS;REG ISTER_MAIN_STRINGL_CONSTANTPEAR_INSTALL_DIR,sizeofPEAR_INSTALLDIR-1,CONST_PERSI STENT|C0NST_CS;REG ISTER_MAIN_STRINGL_CONSTANTPEAR_EXTENSION_DIR,sizeofPHP_EXTENS10N_DIR-1,CONST_PERSISTENT|C0NST_CS;PHP_INCLUDE_PATH,REG ISTER_MAIN_STRINGL_CONSTANTnPHP_EXTENSION_DIR,si zeofPHP_EXTENS10N_DIR-1,CONST_PERSI STENT|C0NST_CS;PEAR_INSTALLDIR,REG ISTER_MAIN_STRINGL_CONSTANTPHP_PREFIX,CONST_PERSI STENT|C0NST_CS;REG ISTER_MAIN_STRINGL_CONSTANTPHP_BI NDIR,CONST_PERSI STENT|C0NST_CS;PHP_EXTENSI0N_DIR,REG ISTER_MAIN_STRINGL_CONSTANTPHP.LIBDIR,CONST_PERSI STENT|C0NST_CS;REG ISTER_MAIN_STRINGL_CONSTANT HPHP_DATADIR,CONST_PERSI STENT|C0NST_CS;PHP_EXTENSI0N_DIR,REG ISTER_MAIN_STRINGL_CONSTANTnPHP_SYSCONFDIRn,sizeofPHP_SYSCONFDIR-1,CONST_PERSI STENT|C0NST_CS;PHP PREFIX,sizeof PHP_PREF1X-1,REG ISTER_MAIN.STRINGL_CONSTANTPHP_LOCALSTATEDIR,s izeof PHP_LOCALSTATEDIR-1,CONST_PERSI STENT|C0NST_CS;PHP_BINDIR,sizeof PHP_BINDIR-1,REG ISTER_MAIN_STRINGL_CONSTANTPHP.CONFIG_,PHP_C0NFIG_,PHP_LIBDIR,sizeofPHP_LIBDIR-1,CONST_PERSI STENT|CONST_CS;REGISTER MAINSTRINGL CONSTANT PHP CONF IG,PHP CONFIG,PHP_DATADIR,sizeofPHP_DATADIR-1,sizeof PHPCONF IG-1,CONST_PERSI STENT|CONST_CS;REG ISTER_MAIN_STRINGL_CONSTANTPHP_SHLIB_SUFFIX,PHP_SYSCONFDIR,sizeofPHP_SHLIB_SUFF1X-1,CONST_PERSI STENT|CONST_CS;PHP LOCALSTATEDIR,REG ISTER_MAIN_STRINGL_CONSTANTn PHP_EOL,PHP_EOL,sizeof PHP_EOL-1,CONST_PERSISTENT|CONST_CS;strlenPHP_CONFIG_,REG ISTER_MAIN_LONG_CONSTANTPHP_INT_MAX,LONG_MAX,CONST_PERSI STENT|CONST_CS;REGISTER_MAIN_LONG_CONSTANTPHP_INT_SI ZE,sizeof Iong,CONST_PERSI STENT|CONST_CS;php_output_regi ster_constantsTSRMLS_C;php_rfc1867_regi ster_constantsTSRMLS_C;if php_startup_ticksTSRMLS_C FAILURE{二二php_printfUnabIe tostart PHPticks\n;return FAILURE;}zend_regi ster_defauIt_cI assesTSRMLS_C;if php_register_internal_extensions TSRMLS_C FAILURE{二二php_printfUnabIe tostart bui11inmoduIes\n;return FAILURE;1php_regi ster_extens ionsadd itionaI_moduIes,num_additionaI_moduIes TSRMLS_CC;php_ini_regi ster_extens ionsTSRMLS_C;zend_startup_moduIes TSRMLS_C;php_disabIe_funct ionsTSRMLS_C;php_disabIe_cI assesTSRMLS_C;/*start Zendextens ions*/zend_startup_extens ions;#ifdef ZTSzend_post_startupTSRMLS_C;#end ifmodule_initialized=1;sapi_deact ivateTSRMLS_C;moduIe_startup=0;shutdown_memory_manager1,0TSRMLS_CC;/*we*re done*/return SUCCESS;1voidphp_moduIe_shutdown_for_execvo id/*used tocIose fdsin therange3255here,but itsproblematic*/、intphp_moduIe_shutdown_wrappersapi_moduIe_struct*sapi_gIobaIs TSRMLS_FETCH;php_moduIe_shutdownTSRMLS_C;return SUCCESS;voidphp_moduIe_shutdownTSRMLS_D intmodule_number=0;/*for UNREGISTER_INl_ENTRIES*/moduIe shutdown=1;if!moduIe_initiaIized{return;}#ifdef ZTSts_free_worker_threads;#end if#if definedPHP_WIN32||definedNETWAREdefinedUSE_WINSOCK/*cIose winsock*/WSACIeanup;#end ifphp_shutdown_ticksTSRMLS_C;sapi_flushTSRMLS_C;zend_shutdownTSRMLS_C;php_shutdown_stream_wrappers moduIe_number TSRMLS_CC;php_shutdown_i nfo_Iogos;UNREGISTER_INI_ENTRIES;php_shutdown_conf ig;#ifndef ZTSzend_ini_shutdownTSRMLS_C;shutdown_memory_manager CGuncIean_shutdown,1TSRMLS_CC;core_gIobaIs_dtorcore_gIobaIs TSRMLS_CC;#eIsezend_ini_global_shutdownTSRMLS_C;ts_free_idcore_globaIs_id;#end ifphp_shutdown_temporary_directory;moduIe initialized=0;#if definedPHP_WIN32defined_MSC_VER_MSC_VER=1400ifold_inval id_parameter_handI er二NULL{二_set_i nvaIid_parameter_handI eroId_i nvaIid_parameter_handI er;}#end if1PHPAPI intphp_execute_scr iptzend_*pr imary_zend_*prepend_fi le_p,*append_f iIe_p;zend_prepend_fi Ie={0},append_fi Ie={0};#if HAVE_BROKEN_GETCWD intold_cwd_fd=-1;#eIsechar*oId_cwd;#end ifint retvaI=0;EG exit_status=0;ifphp_handIe_spec ial_quer iesTSRMLS_C{zend_pr imary_fiIe;return0;}#ifndef HAVE_BROKEN_GETCWD#define OLD_CWD_SI ZE4096oId_cwd=do_aI Ioca OLD_CWD_SI ZE;oId_cwd
[0]=AO;#end ifzend_try{char reaI];#ifdef PHP_WIN32Update IniFromRegistrypr imary_file-TSRMLS_CC;#end ifPG during_request_startup=0;if primary_fi le-type=ZEND_HANDLE_||primary_fi le-typeZEND_HANDLE_STREAMpr二二imary_file-{»#if HAVE_BROKEN_GETCWD/*th is Iooksnasty tome*/o Id_cwd_fd=open C\,0;#eIseVCWD_GETCWDold_cwd,0LD_CWD_SI ZE-1;#end ifVCWD_CHDIR_;»}ifpr imary_file-primary_fiIe-opened_path NULL二二primary_file-type!=ZEND_HANDLE_{1nt reaI;2nt dummy=1;i expand_pr imary_fiIe-,reaI{千reaI=str IenreaIf iIe;zend_hash_addEGincIuded_f iIes,reaIfiIe,reaI,void*dummy,sizeof int,NULL;primary_fi Ie-opened_path=estrndup reaIf iIe,reaI;}——}if PG auto_prepend_fiIePGauto_prepend_fiIe
[0]{prepend_PGauto_prepend_fiIe;二prepend_NULL;二prepend_0;二prepend_ZEND_HANDLE_;二prepend_file_p=prepend_fiIe;}eIse{prepend_file_p=NULL;}——ifPG auto_append_fiIePGauto_append_fi Ie
[0]{append_PGauto_append_fiIe;二append_=NULL;append_=0;append.=ZEND_HANDLE_;append_fiIe_p=append_fiIe;}eIse append_fi le_p NULL;二if PGmax_input_time!=-1{#ifdef PHP_WIN32zend_unset_t imeoutTSRMLS_C;#end ifzend_set_timeoutINl_lNTmax_execut ion_time;}一一一retvaI zend_execute_scr iptsZEND REQUI RE TSRMLS_CC,NULL,3,prepend_file_p,pr imary_fiIe,二append_file_p==SUCCESS;}zend_end_try;#if HAVE_BROKEN_GETCWDi foId_cwd_fd!=-1{fchd iroId_cwd_fd;cIose oId_cwd_fd;}#eIseif oId_cwd
[0]!=AO1{VCWD_CHDIRold_cwd;}free_aI IocaoId_cwd;#end ifreturn retvaI;PHPAPI intphp_execute_simpIe_scr iptzend_*pr imary_fiIe,zvaI**ret TSRMLS_DC{——————char*oId_cwd;EG exit_status=0;#define OLD_CWD_SI ZE4096oId_cwd=do_aIIocaOLD_CWD_SI ZE;oId_cwd
[0]=r\0;zend_try{#ifdef PHP_WIN32Update Ini FromRegi stryprimary_fiIe-TSRMLS_CC;#end ifPG during_request_startup=0;ifprimary_f iIe-type==ZEND_HANDLE_pr imary_file-{VCWD_GETCWD oId_cwd,OLD_CWD_SI ZE-1;»VCWD_CHDIR_;»zend_execute_scr ipts ZENDREQUIRETSRMLS_CC,ret,1,primary_fiIe;}zend_end_try0;if oId_cwd
[0]0{VCWD_CHDIRoId_cwd;!=、free_aIIocaoId_cwd;return EGexit_status;1PHPAPI voidphp_handIe_aborted_connectionvoid一一一TSRMLS_FETCH;PG connection_status PHP_CONNECTION_ABORTED;二php_output_set_status0TSRMLS_CC;if!PG ignore_user_abort{zend_ba iIout;PHPAPI intphp_handIe_auth_dataconst char*auth TSRMLS_DC—intret=-1;ifauthauth
[0]!=\0strncmp auth,Bas ic,60{char*pass;二二char*user;user=php_base64_decodeauth+6,str Ienauth-6,NULL;ifuser{pass strchruser,:;二ifpass{*pass++\0;SG requestjnfoauth_user=user;、SG requestjnfoauth_password=estrdup pass;ret=0;、}eIse{efree user;if ret--1{auth_user=SG requestjnfoauth_password NULL;、SGrequest_i nfo、}eIse{auth_digest=NULL;SG request_i nfo、if ret-1auth SGauth
[0]!=*\0,strncmp auth,Digest,7=0=二request_i nforet=auth_digest=estrdup auth+7;、0;if ret-1{=二SGrequest_i nfoauth_digest=NULL;、1return ret;PHPAPI intphp_Ii nt_scr iptzend_*intretvaI FAILURE;zend_try{zend_op_array*op_array;op_array=zend_pi Ie_,ZEND_INCLUDE TSRMLS_CC;zend_destroy_;ifop_array{destroy_op_arrayop_array TSRMLS_CC;efree op_array;retvaI=SUCCESS;}zend_end_try;return retvaI;ns_g_conf=TYBS_TRUE;break;case C*:Iwresd_g_resoIvconffi Ie=tybs_mandline_argument;ifns_g_confns_ma in_earIyfata Icannotspec ify-c and-C;Iwresd_g_useresoIvconf=TYBS_TRUE;break;case d*:ns_g_debuglevel=parse_inttybs_mandIi ne_argument,debugIeve I;break;case f:ns_g_foreground=TYBS_TRUE;break;case g*:ns_g_foreground=TYBS_TRUE;ns_g_logstderr=TYBS_TRUE;break;/*XXXBEW-i shouldbe removed*/casei:Iwresd_g_defauItpidf iIe=tybs_mandline_argument;break;case I:ns_g_lwresdonIy=TYBS_TRUE;break;case m:set_fIags tybs_mandI ine_argument,mem_debug_fIags,tybs_mem_debugg ing;break;case N:/*Deprecated*/case n:ns_g_cpus=parse_inttybs_mandIi ne_argument,“number ofcpus;ifns_g_cpus0二二ns_g_cpus=1;break;case p:port=parse_inttybs_mandI ine_argument,port;if port1||port65535ns_ma in_earIyfata Iport%s outof range1,tybs_mandIi ne_argument;ns_g_port=port;break;/*XXXBEW Should-P beremoved*/case P:port=parse_inttybs_mandIine_argument,port;ifport1||port65535ns_main_earIyfataIport%s*outofrange,tybs_mandIi ne_argument;lwresd_g_listenport port;二break;case s:want_stats=TYBS_TRUE;break;case S:maxsocks=parse_i nttybs_mandIi ne_argument,max numberof sockets;break;case t:ns_g_chrootd ir=tybs_mandl ine_argument;break;case T*:if strcmptybs_mandline_argument,cl ienttest0ns_g_cIi enttest=二TYBS_TRUE;二eIsefpr intfstderr,unknown-T fIag%s\n,tybs_mandIi ne_argument;break;case u*:ns_g_username=tybs_mandl ine_argument;break;case v:printf BIND%s\n,ns_g_version;exit0;case V*:printfBIND%s builtwith%s\n,ns_g_version,ns_g_configargs;exit0;case:usage;if tybs_mandIine_option exit0;=二,*ns_main_earIyfataIunknown option-%cn,tybs_mandIi ne_opt ion;default:ns_main_earIyfataIparsing optionsreturned%d,ch;1argc tybs_mandIine_index;argv tybs_mandIine_index;一=十=ifargc0{usage;ns_main_earIyfataIextra mandIine arguments;}static tybs_result_tcreate_managersvoi d{tybs_resuIt_t result;unsigned intsocks;#ifdef TYBS_PLATFORM_USETHREADS unsignedintcpus_detected;#end if#ifdef TYBS_PLATFORM_USETHREADS cpus_detected tybs_os_ncpus;二ifns_g_cpus0二二ns_g_cpus=cpus_detected;tybs_log_write ns_g_lctx,NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_SERVER,TYBS_LOG_INFO,found%u CPU%s,using%u workerthread%s,cpus_detected,cpus_detected=1:s,ns_g_cpus,ns_g_cpus1:s;二二#eIsens_g_cpus=1;#end ifresult=tybs_taskmgr_create ns_g_mctx,ns_g_cpus,0,ns_g_taskmgr;if resultTYBS_R_SUCCESS{!二UNEXPECTED_ERROR_F ILE_,_LINE_,tybs_taskmgr_create failed:%s,tybs_resuIt_totextresu11;return TYBS_R_UNEXPEGTED;}result=tybs_timermgr_createns_g_mctx,ns_g_timermgr;if resultTYBS_R_SUCCESS{!二UNEXPECTED_ERROR_F ILE_,_LINE_,tybs_t imermgr_create0failed:%s,tybs_resuIt_totextresu11;return TYBS_R_UNEXPECTED;result=tybs_socketmgr_create2ns_g_mctx,ns_g_socketmgr,maxsocks;if resultTYBS_R_SUCCESS{!二UNEXPECTED_ERROR_F ILE_,_LINE_,tybs_socketmgr_createfailed:%sn,tybs_resuIt_totextresu11;return TYBS_R_UNEXPECTED;result=tybs_socketmgr_getmaxsocketsns_g_socketmgr,socks;if result=TYBS_R_SUCCESS{tybs_log_writens_g_lctx,NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_SERVER,TYBS_L0G_INF0,using upto%u sockets,socks;result=tybs_entropy_createns_g_mctx,ns_g_entropy;if result!=TYBS_R_SUCCESS{UNEXPECTED_ERROR_F ILE_,_LINE_,tybs_entropy_create failed:%s,tybs_resuIt_totextresu11;return TYBS_R_UNEXPECTED;result=tybs_hash_createns_g_mctx,ns_g_entropy,DNS_NAME_MAXWI RE;if result!=TYBS_R_SUCCESS{UNEXPECTED_ERROR_FILE_,_LINE_,ntybs_hash_create failed:%s,tybs_resuIt_totextresu11;return TYBS_R_UNEXPECTED;return TYBS_R_SUCCESS;1static voiddestroy_managersvoid{ns_Iwresd_shutdown;tybs_entropy_detachns_g_entropy;if ns_g_falIbackentropy!=NULLtybs_entropy_detachns_g_fa IIbackentropy;tybs_taskmgr_destroyns_g_taskmgr;tybs_t imermgr_destroyns_g_t imermgr;tybs_socketmgr_destroyns_g_socketmgr;tybs_hash_destroy;static voidsetupvoid{tybs_resuIt_t result;#ifdef HAVE_LIBSCFchar*instance=NULL;#end ifns_os_inituser infons_g_username;ns_os_tzset;ns_os_opendevnuI I;#ifdef HAVE_LIBSCFresult=ns_smf_get_instanceinstance,0,ns_g_mctx;if resultTYBS_R_SUCCESS二二ns_smf_got_i nstance=1;eIsens_smf_got_i nstance=0;ifi nstance!=NULLtybs_mem_freens_g_mctx,i nstance;#endif/*HAVE_LIBSCF*/#ifdef PATH_RANDOMDEVi fns_g_chrootd ir!=NULL{result=tybs_entropy_createns_g_mctx,ns_g_falIbackentropy;if resultTYBS_R_SUCCESS!二ns_main_earIyfataI tybs_entropy_createfai led:%s,tybs_resuIt_totextresuIt;result=tybs_entropy_createns_g_faI Ibackentropy,PATH_RANDOMDEV;if resultTYBS_R_SUCCESS{!二ns_mai n_earIywarning couIdnot openpre-chrootentropy source%s:%s,PATH_RANDOMDEV,tybs_resuIt_totextresuIt;tybs_entropy_detach ns_g_fa IIbackentropy;#endifns_os_chrootns_g_chrootd ir;ns_os_mi npri vs0;result=ns_log_initTYBS_TFns_g_username!=NULL;if resultTYBS_R_SUCGESS!二ns_main_earIyfataIns_log_init failed:%s,tybs_resuIt_totextresuIt;if!ns_g_foreground ns_os_daemon ize;result=tybs_app_start;ifresult!=TYBS_R_SUCCESS ns_main_earIyfataItybs_app_startfai led:%s,tybs_resuIt_totextresuIt;tybs_log_write ns_g_lctx,NS_LOGCATEGORY_GENERAL,NS_L0GM0DULE_MAIN,。
个人认证
优秀文档
获得点赞 0