nsd.h

Go to the documentation of this file.
00001 
00030 #ifndef NSD_H
00031 #define NSD_H
00032 
00033 #ifndef _GNU_SOURCE
00034 #define _GNU_SOURCE
00035 #endif
00036 
00037 #define NSD_EXPORTS
00038 #include "ns.h"
00039 
00040 #ifndef _WIN32
00041 #include <pthread.h>
00042 #include <sys/mman.h>
00043 #endif
00044 #include <assert.h>
00045 
00046 #ifdef _WIN32
00047 
00048 #include <fcntl.h>
00049 #include <io.h>
00050 #define STDOUT_FILENO   1
00051 #define STDERR_FILENO   2
00052 #define S_ISREG(m)      ((m)&_S_IFREG)
00053 #define S_ISDIR(m)      ((m)&_S_IFDIR)
00054 #include "getopt.h"
00055 #include <sys/stat.h>
00056 
00057 #else
00058 
00059 #include <sys/resource.h>
00060 #include <sys/wait.h>
00061 #include <sys/ioctl.h>
00062 #include <sys/stat.h>
00063 #include <ctype.h>
00064 #include <grp.h>
00065 
00066 #endif  
00068 #ifdef HAVE_POLL
00069   #include <poll.h>
00070 #else
00071   #define POLLIN 1
00072   #define POLLOUT 2
00073   #define POLLPRI 4
00074   #define POLLHUP 8
00075   struct pollfd {
00076     int fd;
00077     short events;
00078     short revents;
00079   };
00080   extern int poll(struct pollfd *, unsigned long, int);
00081 #endif
00082 
00083 #ifdef __linux
00084   #include <sys/prctl.h>
00085 #endif
00086 #ifdef __hp
00087   #define seteuid(i)     setresuid((-1),(i),(-1))
00088 #endif
00089 #ifdef __sun
00090   #include <sys/filio.h>
00091   #include <sys/systeminfo.h>
00092   #define gethostname(b,s) (!(sysinfo(SI_HOSTNAME, b, s) > 0))
00093 #endif
00094 #ifdef __unixware
00095   #include <sys/filio.h>
00096 #endif
00097 
00098 #ifndef F_CLOEXEC
00099 #define F_CLOEXEC 1
00100 #endif
00101 
00102 #ifdef _WIN32
00103 #define NS_SIGTERM  1
00104 #define NS_SIGHUP   2
00105 #else
00106 #define NS_SIGTERM  SIGTERM
00107 #define NS_SIGHUP   SIGHUP
00108 #endif
00109 
00110 #define _MAX(x,y) ((x) > (y) ? (x) : (y))
00111 #define _MIN(x,y) ((x) > (y) ? (y) : (x))
00112 
00117 #define NSD_NAME             "AOLserver"
00118 #define NSD_VERSION          NS_PATCH_LEVEL
00119 #define NSD_LABEL            "aolserver4_5"
00120 #define NSD_TAG              "$Name:  $"
00121 #define NS_CONFIG_PARAMETERS "ns/parameters"
00122 #define NS_CONFIG_THREADS    "ns/threads"
00123 
00124 #define ADP_OK       0
00125 #define ADP_BREAK    1
00126 #define ADP_ABORT    2
00127 #define ADP_RETURN   4
00128 
00135 #define NSD_TEXTHTML    "text/html; charset=iso-8859-1"
00136 
00141 typedef int bool;
00142 
00143 struct _nsconf {
00144     char           *argv0;
00145     char           *nsd;
00146     char           *name;
00147     char           *version;
00148     char           *home;
00149     char           *config;
00150     char           *build;
00151     int             pid;
00152     time_t          boot_t;
00153     char            hostname[255];
00154     char            address[16];
00155     int             shutdowntimeout;
00156     int             backlog;
00157     int             debug;
00158 
00163     struct {
00164         Ns_Mutex        lock;
00165         Ns_Cond         cond;
00166         int             started;
00167         int             stopping;
00168     } state;
00169 
00175     struct {
00176         unsigned int major;
00177         unsigned int minor;
00178     } http;
00179     
00180     struct {
00181         int maxelapsed;
00182     } sched;
00183 
00184 #ifdef _WIN32    
00185     struct {
00186         bool checkexit;
00187     } exec;
00188 #endif
00189 
00190     struct {
00191         char *sharedlibrary;
00192         char *version;
00193         bool lockoninit;
00194     } tcl;
00195 
00196 };
00197 
00198 extern struct _nsconf nsconf;
00199 
00205 typedef struct FileKey {
00206     dev_t dev;
00207     ino_t ino;
00208 } FileKey;
00209 
00210 #define FILE_KEYS (sizeof(FileKey)/sizeof(int))
00211 
00216 typedef struct AdpFrame {
00217     struct AdpFrame   *prevPtr;
00218     int                line;
00219     int                objc;
00220     Tcl_Obj           *ident;
00221     Tcl_Obj          **objv;
00222     char              *savecwd;
00223     char              *file;
00224     Ns_DString         cwdbuf;
00225     Tcl_DString       *outputPtr;
00226 } AdpFrame;
00227 
00238 typedef struct AdpCode {
00239     int         nblocks;
00240     int         nscripts;
00241     int        *len;
00242     int        *line;
00243     Tcl_DString text;
00244 } AdpCode;
00245 
00246 #define AdpCodeLen(cp,i)        ((cp)->len[(i)])
00247 #define AdpCodeLine(cp,i)       ((cp)->line[(i)])
00248 #define AdpCodeText(cp)         ((cp)->text.string)
00249 #define AdpCodeBlocks(cp)       ((cp)->nblocks)
00250 #define AdpCodeScripts(cp)      ((cp)->nscripts)
00251 
00256 #define ADP_SAFE        0x01    
00257 #define ADP_SINGLE      0x02    
00258 #define ADP_DEBUG       0x04    
00259 #define ADP_EXPIRE      0x08    
00260 #define ADP_NOCACHE     0x10    
00261 #define ADP_TRACE       0x20    
00262 #define ADP_GZIP        0x80    
00263 #define ADP_DETAIL      0x100   
00264 #define ADP_STRICT      0x200   
00265 #define ADP_DISPLAY     0x400   
00266 #define ADP_TRIM        0x800   
00267 #define ADP_FLUSHED     0x1000  
00268 #define ADP_ERRLOGGED   0x2000  
00269 #define ADP_AUTOABORT   0x4000  
00270 #define ADP_EVAL_FILE   0x8000  
00277 struct NsServer;
00278 
00279 typedef struct Driver {
00280 
00285     void        *arg;               
00286     char        *server;            
00287     char        *module;            
00288     char        *name;              
00289     char        *location;          
00290     char        *address;           
00291     int          sendwait;          
00292     int          recvwait;          
00293     int          bufsize;           
00294     int          sndbuf;            
00295     int          rcvbuf;            
00301     struct Driver *nextPtr;         
00302     struct NsServer *servPtr;       
00303     char        *fullname;          
00304     int          flags;             
00305     Ns_Thread    thread;            
00306     Ns_Mutex     lock;              
00307     Ns_Cond      cond;              
00309     int          trigger[2];        
00311     Ns_DriverProc *proc;            
00312     int          opts;              
00314     int          closewait;         
00315     int          keepwait;          
00316     char        *bindaddr;          
00317     int          port;              
00318     int          backlog;           
00320     int          maxline;           
00321     int          maxheader;         
00322     int          maxinput;          
00324     struct Sock *freeSockPtr;       
00325     int          maxsock;           
00326     int          nactive;           
00327     unsigned int nextid;            
00329     Ns_Thread   *readers;           
00330     int          maxreaders;        
00331     int          nreaders;          
00332     int          idlereaders;       
00334     struct Sock *readSockPtr;       
00335     struct Sock *runSockPtr;        
00336     struct Sock *closeSockPtr;      
00338     struct Conn *firstConnPtr;      
00339     struct Conn *lastConnPtr;       
00340     struct Conn *freeConnPtr;       
00342     struct QueWait *freeQueWaitPtr;
00343 
00344     Tcl_DString *queryPtr;          
00346     struct {
00347         unsigned int spins;
00348         unsigned int accepts;
00349         unsigned int reads;
00350         unsigned int writes;
00351         unsigned int queued;
00352         unsigned int timeout;
00353         unsigned int overflow;
00354         unsigned int dropped;
00355     } stats;
00356     
00357 } Driver;
00358 
00366 typedef struct Sock {
00371     struct Driver *drvPtr;
00372     SOCKET     sock;
00373     void      *arg;
00374 
00379     struct Sock *nextPtr;
00380     struct Conn *connPtr;
00381     struct sockaddr_in sa;
00382     unsigned int id;
00383     int          state;
00384     int          pidx;              
00385     Ns_Time      acceptTime;
00386     Ns_Time      timeout;
00387     unsigned int nreads;
00388     unsigned int nwrites;
00389 } Sock;
00390 
00395 typedef struct Limits {
00396     Ns_Mutex        lock;
00397     char           *name;
00398     unsigned int    maxrun;
00399     unsigned int    maxwait;
00400     unsigned int    nrunning;
00401     unsigned int    nwaiting;
00402     unsigned int    ndropped;
00403     unsigned int    noverflow;
00404     unsigned int    ntimeout;
00405     size_t          maxupload;
00406     int             timeout;
00407 } Limits;
00408 
00414 typedef struct Conn {
00419     Ns_Request  *request;
00420     Ns_Set      *headers;
00421     Ns_Set      *outputheaders;
00422     char        *authUser;
00423     char        *authPasswd;
00424     int          contentLength;
00425     int          flags;
00426 
00431     struct Conn *nextPtr;
00432     struct Conn *prevPtr;
00433     struct Sock *sockPtr;
00434     struct Limits *limitsPtr;
00435 
00440     unsigned int major;
00441     unsigned int minor;
00442 
00447     char *rstart;
00448     char *rend;
00449 
00455     char *server;
00456     char *location;
00457     struct NsServer *servPtr;
00458     struct Driver *drvPtr;
00459 
00460     unsigned int id;
00461     char         idstr[16];
00462     struct {
00463         Ns_Time  accept;
00464         Ns_Time  read;
00465         Ns_Time  ready;
00466         Ns_Time  queue;
00467         Ns_Time  run;
00468         Ns_Time  close;
00469         Ns_Time  done;
00470     } times;
00471     struct NsInterp *itPtr;
00472     char        *type;
00473     Tcl_Encoding outputEncoding;
00474     Tcl_Encoding urlEncoding;
00475     Tcl_Encoding queryEncoding;
00476     int          nContentSent;
00477     int          status;
00478     int          responseLength;
00479     int          recursionCount;
00480     Ns_Set      *query;
00481     Tcl_HashTable files;
00482 
00487     char            peer[16];   
00488     int             port;       
00494     void           *cls[NS_CONN_MAXCLS];
00495     struct QueWait *queWaitPtr;
00496 
00502     char           *next;       
00503     size_t          avail;      
00504     char           *content;    
00505     int             tfd;        
00506     void           *map;        
00507     void           *maparg;     
00518     int             roff;       
00519     Tcl_DString     ibuf;       
00520     Tcl_DString     obuf;       
00522 } Conn;
00523 
00528 typedef struct Pool {
00529     Ns_Mutex        lock;
00530     Ns_Cond         cond;
00531     char           *name;
00532     int             shutdown;
00533 
00539     struct {
00540         struct {
00541             int             num;
00542             struct Conn    *firstPtr;
00543             struct Conn    *lastPtr;
00544         } wait;
00545         struct {
00546             struct Conn    *firstPtr;
00547             struct Conn    *lastPtr;
00548         } active;
00549     } queue;
00550 
00561     struct {
00562         unsigned int        nextid;
00563         int                 min;
00564         int                 max;
00565         int                 current;
00566         int                 idle;
00567         int                 timeout;
00568         int                 maxconns;
00569         unsigned int        queued;
00570     } threads;
00571 
00572 } Pool;
00573 
00574 #define SERV_AOLPRESS           0x0001  
00575 #define SERV_CHUNKED            0x0002  
00576 #define SERV_MODSINCE           0x0004  
00577 #define SERV_NOTICEDETAIL       0x0008  
00578 #define SERV_GZIP               0x0010  
00584 typedef struct Nsv {
00585     struct Bucket          *buckets;
00586     int                     nbuckets;
00587 } Nsv;
00588 
00593 typedef struct NsServer {
00594     char                   *server;
00595     Ns_LocationProc        *locationProc;
00596 
00601     char                  *defcharset;
00602 
00610     Tcl_Encoding           urlEncoding;
00611 
00618     Tcl_Encoding           inputEncoding;
00619 
00624     struct {
00625         int                 flags;
00626         size_t              gzipmin;
00627         int                 gziplevel;
00628         char               *realm;
00629         Ns_HeaderCaseDisposition hdrcase;
00630     } opts;
00631     
00636     struct {
00637         int                 errorminsize;
00638         int                 connsperthread;
00639     } limits;
00640 
00641     struct {
00642         char               *pageroot;
00643         char              **dirv;
00644         int                 dirc;
00645         char               *dirproc;
00646         char               *diradp;
00647         bool                mmap;
00648         int                 cachemaxentry;
00649         Ns_UrlToFileProc   *url2file;
00650         Ns_Cache           *cache;
00651     } fastpath;
00652 
00657     struct {
00658         Ns_RequestAuthorizeProc *authProc;
00659         Tcl_HashTable       redirect;
00660         Tcl_HashTable       proxy;
00661         Ns_Mutex            plock;
00662     } request;
00663 
00668     struct {
00669         struct Filter *firstFilterPtr;
00670         struct Trace  *firstTracePtr;
00671         struct Trace  *firstCleanupPtr;
00672     } filter;
00673 
00678     struct {
00683         char               *initfile;
00684 
00689         Tcl_HashTable loops;
00690         Ns_Mutex      llock;
00691         Ns_Cond       lcond;
00692 
00697         Ns_RWLock           tlock;      
00698         struct TclTrace    *firstTracePtr;
00699         struct TclTrace    *lastTracePtr;
00700         Ns_Cs               olock;      
00701         Tcl_HashTable       once;       
00702         Ns_Mutex            plock;      
00703         Tcl_HashTable       packages;   
00709         char               *library;    
00710         char               *script;     
00711         int                 length;
00712         int                 epoch;
00713         Ns_RWLock           slock;      
00714         Tcl_DString         modules;    
00715     } tcl;
00716 
00722     struct {
00723         int                 flags;
00724         int                 tracesize;
00725         char               *errorpage;
00726         char               *startpage;
00727         char               *debuginit;
00728         size_t              bufsize;
00729         size_t              cachesize;
00730         Ns_Cond             pagecond;
00731         Ns_Mutex            pagelock;
00732         Tcl_HashTable       pages;
00733         Ns_RWLock           taglock;
00734         Tcl_HashTable       tags;
00735     } adp;
00736 
00742     struct {
00743         Ns_Mutex            lock;
00744         Tcl_HashTable       table;
00745     } sets;    
00746     
00751     Nsv nsv;
00752     
00758     struct {
00759         Ns_Mutex            lock;
00760         Tcl_HashTable       table;
00761     } var;
00762     
00769     struct {
00770         Ns_Cs               cs;
00771         Ns_Mutex            lock;
00772         Ns_Cond             cond;
00773         Tcl_HashTable       inits;
00774         Tcl_HashTable       vars;
00775     } share;
00776 
00782     struct {
00783         Ns_Mutex            lock;
00784         Tcl_HashTable       table;
00785     } chans;
00786 
00787 } NsServer;
00788     
00793 typedef struct NsInterp {
00794     struct NsInterp       *nextPtr;     
00795     Tcl_Interp            *interp;      
00796     NsServer              *servPtr;     
00797     int                    delete;      
00798     int                    epoch;       
00806     struct Defer         *firstDeferPtr;
00807 
00814     struct AtClose      *firstAtClosePtr;
00815 
00822 #define CONN_TCLFORM            1
00823 #define CONN_TCLHDRS            2
00824 #define CONN_TCLOUTHDRS         4
00825 
00826     Ns_Conn               *conn;
00827 
00828     struct nsconn {
00829         int                flags;
00830         char               form[16];
00831         char               hdrs[16];
00832         char               outhdrs[16];
00833     } nsconn;
00834 
00840     struct adp {
00841         int                flags;
00842         int                exception;
00843         int                refresh;
00844         size_t             bufsize;
00845         int                errorLevel;
00846         int                debugLevel;
00847         int                debugInit;
00848         char              *debugFile;
00849         Ns_Cache          *cache;
00850         int                depth;
00851         char              *cwd;
00852         struct AdpFrame   *framePtr;
00853         Ns_Conn           *conn;
00854         Tcl_Channel        chan;
00855         Tcl_DString        output;
00856     } adp;
00857     
00863     Tcl_HashTable sets;
00864     
00870     Tcl_HashTable chans;
00871 
00876     Tcl_HashTable https;
00877 
00878 } NsInterp;
00879 
00884 extern void NsInitBinder(void);
00885 extern void NsInitCache(void);
00886 extern void NsInitConf(void);
00887 extern void NsInitConfig(void);
00888 extern void NsInitEncodings(void);
00889 extern void NsInitFd(void);
00890 extern void NsInitListen(void);
00891 extern void NsInitLog(void);
00892 extern void NsInitMimeTypes(void);
00893 extern void NsInitModLoad(void);
00894 extern void NsInitNsv(void);
00895 extern void NsInitProcInfo(void);
00896 extern void NsInitQueue(void);
00897 extern void NsInitLimits(void);
00898 extern void NsInitPools(void);
00899 extern void NsInitDrivers(void);
00900 extern void NsInitSched(void);
00901 extern void NsInitServers(void);
00902 extern void NsInitTcl(void);
00903 extern void NsInitTclCache(void);
00904 extern void NsInitUrlSpace(void);
00905 extern void NsInitRequests(void);
00906 extern char *NsFindVersion(char *request, unsigned int *majorPtr,
00907                            unsigned int *minorPtr);
00908 extern void NsQueueConn(Conn *connPtr);
00909 extern int NsCheckQuery(Ns_Conn *conn);
00910 extern void NsAppendConn(Tcl_DString *bufPtr, Conn *connPtr, char *state);
00911 extern void NsAppendRequest(Tcl_DString *dsPtr, Ns_Request *request);
00912 extern int  NsConnSend(Ns_Conn *conn, struct iovec *bufs, int nbufs);
00913 extern void NsSockClose(Sock *sockPtr, int keep);
00914 extern int  NsPoll(struct pollfd *pfds, int nfds, Ns_Time *timeoutPtr);
00915 extern void NsFreeConn(Conn *connPtr);
00916 extern NsServer *NsGetServer(char *server);
00917 extern char *NsGetServers(void);
00918 extern NsServer *NsGetInitServer(void);
00919 extern NsInterp *NsGetInterpData(Tcl_Interp *interp);
00920 extern void NsFreeConnInterp(Conn *connPtr);
00921 extern Ns_OpProc NsAdpProc;
00922 
00923 extern Ns_Cache *NsFastpathCache(char *server, int size);
00924 extern void NsAdpInit(NsInterp *itPtr);
00925 extern void NsAdpReset(NsInterp *itPtr);
00926 extern void NsAdpFree(NsInterp *itPtr);
00927 extern void NsTclRunAtClose(NsInterp *itPtr);
00928 extern int  NsUrlToFile(Ns_DString *dsPtr, NsServer *servPtr, char *url);
00929 
00934 extern Ns_Callback NsTclCallback;
00935 extern Ns_Callback NsTclSignalProc;
00936 extern Ns_SchedProc NsTclSchedProc;
00937 extern Ns_ArgProc NsTclArgProc;
00938 extern Ns_ThreadProc NsTclThread;
00939 extern Ns_ArgProc NsTclThreadArgProc;
00940 extern Ns_Callback NsCachePurge;
00941 extern Ns_ArgProc NsCacheArgProc;
00942 extern Ns_SockProc NsTclSockProc;
00943 extern Ns_ArgProc NsTclSockArgProc;
00944 extern Ns_ThreadProc NsConnThread;
00945 extern Ns_ArgProc NsConnArgProc;
00946 
00947 extern void NsGetCallbacks(Tcl_DString *dsPtr);
00948 extern void NsGetSockCallbacks(Tcl_DString *dsPtr);
00949 extern void NsGetScheduled(Tcl_DString *dsPtr);
00950 
00951 extern char *NsConnContent(Ns_Conn *conn, char **nextPtr, int *availPtr);
00952 extern void NsConnSeek(Ns_Conn *conn, int count);
00953 extern void *NsMap(int fd, off_t start, size_t len, int writeable, void **argPtr);
00954 extern void NsUnMap(void *addr, void *arg);
00955 
00956 #ifdef _WIN32
00957 extern int  NsConnectService(void);
00958 extern int  NsInstallService(char *service);
00959 extern int  NsRemoveService(char *service);
00960 #endif
00961 
00962 extern void NsCreatePidFile(char *service);
00963 extern void NsRemovePidFile(char *service);
00964 
00965 extern void NsLogOpen(void);
00966 extern void NsLogConf(void);
00967 extern void NsTclInitObjs(void);
00968 extern void NsUpdateMimeTypes(void);
00969 extern void NsUpdateEncodings(void);
00970 extern void NsRunPreStartupProcs(void);
00971 extern void NsBlockSignals(int debug);
00972 extern void NsHandleSignals(void);
00973 extern void NsStopDrivers(void);
00974 extern void NsPreBind(char *bindargs, char *bindfile);
00975 extern SOCKET NsSockGetBound(struct sockaddr_in *saPtr);
00976 extern void NsClosePreBound(void);
00977 extern void NsInitServer(char *server, Ns_ServerInitProc *initProc);
00978 extern char *NsConfigRead(char *file);
00979 extern void NsConfigEval(char *config, int argc, char **argv, int optind);
00980 extern void NsConfUpdate(void);
00981 extern void NsEnableDNSCache(void);
00982 extern void NsStartPools(void);
00983 extern void NsStopPools(Ns_Time *timeoutPtr);
00984 extern int NsTclGetPool(Tcl_Interp *interp, char *pool, Pool **poolPtrPtr);
00985 extern Tcl_ObjCmdProc NsTclListPoolsObjCmd;
00986 extern void NsCreateConnThread(Pool *poolPtr);
00987 extern void NsJoinConnThreads(void);
00988 extern int  NsStartDrivers(void);
00989 extern void NsWaitDriversShutdown(Ns_Time *toPtr);
00990 extern void NsStartSchedShutdown(void);
00991 extern void NsWaitSchedShutdown(Ns_Time *toPtr);
00992 extern void NsStartSockShutdown(void); 
00993 extern void NsWaitSockShutdown(Ns_Time *toPtr);
00994 extern void NsStartShutdownProcs(void);
00995 extern void NsWaitShutdownProcs(Ns_Time *toPtr);
00996 extern void NsWaitDriversShutdown(Ns_Time *toPtr);
00997 extern void NsStartQueueShutdown(void);
00998 extern void NsWaitQueueShutdown(Ns_Time *toPtr);
00999 
01000 extern void NsStartJobsShutdown(void);
01001 extern void NsWaitJobsShutdown(Ns_Time *toPtr);
01002 
01003 extern void NsTclInitServer(char *server);
01004 extern int NsTclGetServer(NsInterp *itPtr, char **serverPtr);
01005 extern int NsTclGetConn(NsInterp *itPtr, Ns_Conn **connPtr);
01006 extern void NsLoadModules(char *server);
01007 extern struct Bucket *NsTclCreateBuckets(char *server, int nbuckets);
01008 extern void NsClsCleanup(Conn *connPtr);
01009 extern void NsTclAddCmds(Tcl_Interp *interp, NsInterp *itPtr);
01010 extern void NsRestoreSignals(void);
01011 extern void NsSendSignal(int sig);
01012 
01017 extern Limits *NsGetRequestLimits(char *server, char *method, char *url);
01018 extern Pool *NsGetConnPool(Conn *connPtr);
01019 
01024 extern Ns_Cache *NsAdpCache(char *server, int size);
01025 extern void NsAdpSetMimeType(NsInterp *itPtr, char *type);
01026 extern void NsAdpSetCharSet(NsInterp *itPtr, char *charset);
01027 extern int NsAdpGetBuf(NsInterp *itPtr, Tcl_DString **dsPtrPtr);
01028 extern int NsAdpAppend(NsInterp *itPtr, char *buf, int len);
01029 extern int NsAdpFlush(NsInterp *itPtr, int stream);
01030 extern int NsAdpDebug(NsInterp *itPtr, char *host, char *port, char *procs);
01031 extern int NsAdpEval(NsInterp *itPtr, int objc, Tcl_Obj *objv[], int flags,
01032                      char *resvar);
01033 extern int NsAdpSource(NsInterp *itPtr, int objc, Tcl_Obj *objv[],
01034                        int flags, char *resvar);
01035 extern int NsAdpInclude(NsInterp *itPtr, int objc, Tcl_Obj *objv[],
01036                         char *file, Ns_Time *ttlPtr);
01037 extern void NsAdpParse(AdpCode *codePtr, NsServer *servPtr, char *utf,
01038                        int flags);
01039 extern void NsAdpFreeCode(AdpCode *codePtr);
01040 extern void NsAdpLogError(NsInterp *itPtr);
01041 
01046 extern int  NsTclCheckConnId(Tcl_Interp *interp, Tcl_Obj *objPtr);
01047 extern void NsTclInitQueueType(void);
01048 extern void NsTclInitAddrType(void);
01049 extern void NsTclInitCacheType(void);
01050 extern void NsTclInitKeylistType(void);
01051 extern void NsTclInitTimeType(void);
01052 
01057 extern int  NsRunFilters(Ns_Conn *conn, int why);
01058 extern void NsRunCleanups(Ns_Conn *conn);
01059 extern void NsRunTraces(Ns_Conn *conn);
01060 extern void NsRunPreStartupProcs(void);
01061 extern void NsRunSignalProcs(void);
01062 extern void NsRunStartupProcs(void);
01063 extern void NsRunAtReadyProcs(void);
01064 extern void NsRunAtExitProcs(void);
01065 
01070 extern bool  NsParamBool(char *key, bool def);
01071 extern int   NsParamInt(char *key, int def);
01072 extern char *NsParamString(char *key, char *def);
01073 
01074 extern int  NsCloseAllFiles(int errFd);
01075 #ifndef _WIN32
01076 extern int  Ns_ConnRunRequest(Ns_Conn *conn);
01077 extern int  Ns_GetGid(char *group);
01078 extern int  Ns_GetUserGid(char *user);
01079 extern int  Ns_TclGetOpenFd(Tcl_Interp *, char *, int write, int *fp);
01080 #endif
01081 extern void NsStopSockCallbacks(void);
01082 extern void NsStopScheduledProcs(void);
01083 extern Tcl_Encoding NsGetInputEncoding(Conn *connPtr);
01084 extern Tcl_Encoding NsGetOutputEncoding(Conn *connPtr);
01085 
01090 extern int NsConnRunProxyRequest(Ns_Conn *conn);
01091 
01092 #endif

Generated on Tue Sep 4 19:58:55 2007 by  doxygen 1.5.1