--- a/src/server/nsapi.h Wed Dec 28 22:02:08 2011 +0100 +++ b/src/server/nsapi.h Thu Dec 29 18:51:23 2011 +0100 @@ -832,7 +832,7 @@ /* What port we listen to */ int Vport; /* OBSOLETE */ -#define server_portnum conf_getglobals()->Vport +#define server_portnum 80 /* What address to bind to */ char *Vaddr; /* OBSOLETE */ @@ -863,7 +863,7 @@ char *Vsecure_keyfn; /* OBSOLETE */ char *Vsecure_certfn; /* OBSOLETE */ -#define security_active conf_getglobals()->Vsecurity_active +#define security_active 0 int Vsecurity_active; int Vssl3_active; /* OBSOLETE */ int Vssl2_active; /* OBSOLETE */ @@ -872,7 +872,7 @@ long Vssl3_session_timeout; /* The server's hostname as should be reported in self-ref URLs */ -#define server_hostname conf_getglobals()->Vserver_hostname +#define server_hostname "x4" char *Vserver_hostname; /* The main object from which all are derived */ @@ -1065,444 +1065,6 @@ /* --- End type definitions --- */ /* --- Begin dispatch vector table definition --- */ - -typedef struct nsapi_dispatch_s nsapi_dispatch_t; -struct nsapi_dispatch_s { - char *(*f_system_version)(); - void *(*f_system_malloc)(int size); - void *(*f_system_calloc)(int size); - void *(*f_system_realloc)(void *ptr, int size); - void (*f_system_free)(void *ptr); - char *(*f_system_strdup)(const char *ptr); - void *(*f_system_malloc_perm)(int size); - void *(*f_system_calloc_perm)(int size); - void *(*f_system_realloc_perm)(void *ptr, int size); - void (*f_system_free_perm)(void *ptr); - char *(*f_system_strdup_perm)(const char *ptr); - int (*f_getThreadMallocKey)(void); - void (*f_magnus_atrestart)(void (*fn)(void *), void *data); - filebuf_t *(*f_filebuf_open)(SYS_FILE fd, int sz); - netbuf *(*f_netbuf_open)(SYS_NETFD sd, int sz); - filebuf_t *(*f_filebuf_create)(SYS_FILE fd, caddr_t mmap_ptr, - int mmap_len, int bufsz); - void (*f_filebuf_close_buffer)(filebuf_t *buf, int clean_mmap); - filebuf_t *(*f_filebuf_open_nostat)(SYS_FILE fd, int sz, - struct stat *finfo); -#ifdef XP_WIN32 - filebuf_t *(*f_pipebuf_open)(SYS_FILE fd, int sz, struct stat *finfo); -#else - void *(*f_pipebuf_open)(void); -#endif /* XP_WIN32 */ - int (*f_filebuf_next)(void); - int (*f_netbuf_next)(netbuf *buf, int advance); -#ifdef XP_WIN32 - int (*f_pipebuf_next)(filebuf_t *buf, int advance); -#else - int (*f_pipebuf_next)(void); -#endif /* XP_WIN32 */ - void (*f_filebuf_close)(filebuf_t *buf); - void (*f_netbuf_close)(netbuf *buf); -#ifdef XP_WIN32 - void (*f_pipebuf_close)(filebuf_t *buf); -#else - void (*f_pipebuf_close)(void); -#endif /* XP_WIN32 */ - int (*f_filebuf_grab)(filebuf_t *buf, int sz); - int (*f_netbuf_grab)(netbuf *buf, int sz); -#ifdef XP_WIN32 - int (*f_pipebuf_grab)(filebuf_t *buf, int sz); -#else - int (*f_pipebuf_grab)(void); -#endif /* XP_WIN32 */ - int (*f_netbuf_buf2sd)(netbuf *buf, SYS_NETFD sd, int len); - int (*f_filebuf_buf2sd)(filebuf_t *buf, SYS_NETFD sd); -#ifdef XP_WIN32 - int (*f_pipebuf_buf2sd)(filebuf_t *buf, SYS_NETFD sd, int len); - int (*f_pipebuf_netbuf2sd)(netbuf *buf, SYS_FILE sd, int len); - int (*f_pipebuf_netbuf2pipe)(netbuf *buf, SYS_NETFD sd, int len); -#else - int (*f_pipebuf_buf2sd)(void); - int (*f_pipebuf_netbuf2sd)(void); - int (*f_pipebuf_netbuf2pipe)(void); -#endif /* XP_WIN32 */ - void (*f_cinfo_init)(void); - void (*f_cinfo_terminate)(void); - char *(*f_cinfo_merge)(char *fn); - cinfo *(*f_cinfo_find)(char *uri); - cinfo *(*f_cinfo_lookup)(char *type); - void (*f_cinfo_dump_database)(FILE *dump); - CRITICAL (*f_crit_init)(void); - void (*f_crit_enter)(CRITICAL id); - void (*f_crit_exit)(CRITICAL id); - void (*f_crit_terminate)(CRITICAL id); - CONDVAR (*f_condvar_init)(CRITICAL id); - void (*f_condvar_wait)(CONDVAR cv); - void (*f_condvar_notify)(CONDVAR cv); - void (*f_condvar_notifyAll)(CONDVAR cv); - void (*f_condvar_terminate)(CONDVAR cv); - COUNTING_SEMAPHORE (*f_cs_init)(int initial_count); - void (*f_cs_terminate)(COUNTING_SEMAPHORE csp); - int (*f_cs_wait)(COUNTING_SEMAPHORE csp); - int (*f_cs_trywait)(COUNTING_SEMAPHORE csp); - int (*f_cs_release)(COUNTING_SEMAPHORE csp); - void (*f_daemon_atrestart)(void (*fn)(void *), void *data); - /* Obsolete: servssl_init() */ - void (*f_servssl_init)(void); - int (*f_ereport)(int degree, const char *fmt, ...); - int (*f_ereport_v)(int degree, const char *fmt, va_list args); - char *(*f_ereport_init)(const char *err_fn, const char *email, - struct passwd *pwuser, const char *version, - int restart); - void (*f_ereport_terminate)(void); - SYS_FILE (*f_ereport_getfd)(void); - SYS_FILE (*f_system_fopenRO)(const char *path); - SYS_FILE (*f_system_fopenWA)(const char *path); - SYS_FILE (*f_system_fopenRW)(const char *path); - SYS_FILE (*f_system_fopenWT)(const char *path); - int (*f_system_fread)(SYS_FILE fd, void *buf, int sz); - int (*f_system_fwrite)(SYS_FILE fd, const void *buf,int sz); - int (*f_system_fwrite_atomic)(SYS_FILE fd, const void *buf, int sz); - int (*f_system_lseek)(SYS_FILE fd, int off, int wh); - int (*f_system_fclose)(SYS_FILE fd); - int (*f_system_stat)(const char *name, struct stat *finfo); - int (*f_system_rename)(const char *oldpath, const char *newpath); - int (*f_system_unlink)(const char *path); - int (*f_system_tlock)(SYS_FILE fd); - int (*f_system_flock)(SYS_FILE fd); - int (*f_system_ulock)(SYS_FILE fd); -#ifdef XP_WIN32 - SYS_DIR (*f_dir_open)(const char *path); - SYS_DIRENT *(*f_dir_read)(SYS_DIR ds); - void (*f_dir_close)(SYS_DIR ds); -#else - void *(*f_dir_open)(void); - void *(*f_dir_read)(void); - void (*f_dir_close)(void); -#endif /* XP_WIN32 */ - int (*f_dir_create_all)(char *dir); -#ifdef XP_WIN32 - void *(*f_system_winsockerr)(void); - void *(*f_system_winerr)(void); - int (*f_system_pread)(SYS_FILE fd, void *buf, int sz); - int (*f_system_pwrite)(SYS_FILE fd, const void *buf, int sz); - void (*f_file_unix2local)(const char *path, char *p2); -#else - void *(*f_system_winsockerr)(void); - void *(*f_system_winerr)(void); - int (*f_system_pread)(void); - int (*f_system_pwrite)(void); - void (*f_file_unix2local)(void); -#endif /* XP_WIN32 */ - int (*f_system_nocoredumps)(void); - int (*f_file_setinherit)(SYS_FILE fd, int value); - int (*f_file_notfound)(void); - char *(*f_system_errmsg)(void); - int (*f_system_errmsg_fn)(char **buff, size_t maxlen); - SYS_NETFD (*f_net_socket)(int domain, int type, int protocol); - int (*f_net_listen)(SYS_NETFD s, int backlog); - SYS_NETFD (*f_net_create_listener)(const char *ipaddr, int port); - int (*f_net_connect)(SYS_NETFD s, const void *sockaddr, int namelen); - int (*f_net_getpeername)(SYS_NETFD s, struct sockaddr *name, int *namelen); - int (*f_net_close)(SYS_NETFD s); - int (*f_net_bind)(SYS_NETFD s, const struct sockaddr *name, int namelen); - SYS_NETFD (*f_net_accept)(SYS_NETFD s, struct sockaddr *addr, int *addrlen); - int (*f_net_read)(SYS_NETFD sd, void *buf, int sz, int timeout); - int (*f_net_write)(SYS_NETFD sd, const void *buf, int sz); - int (*f_net_writev)(SYS_NETFD sd, const NSAPIIOVec *iov, int iovlen); - int (*f_net_isalive)(SYS_NETFD sd); - char *(*f_net_ip2host)(const char *ip, int verify); - int (*f_net_getsockopt)(SYS_NETFD s, int level, int optname, - void *optval, int *optlen); - int (*f_net_setsockopt)(SYS_NETFD s, int level, int optname, - const void *optval, int optlen); - int (*f_net_select)(int nfds, fd_set *r, fd_set *w, fd_set *e, - struct timeval *timeout); - int (*f_net_ioctl)(SYS_NETFD s, int tag, void *result); - pb_param *(*f_param_create)(const char *name, const char *value); - int (*f_param_free)(pb_param *pp); - pblock *(*f_pblock_create)(int n); - void (*f_pblock_free)(pblock *pb); - char *(*f_pblock_findval)(const char *name, const pblock *pb); - pb_param *(*f_pblock_nvinsert)(const char *name, const char *value, pblock *pb); - pb_param *(*f_pblock_nninsert)(const char *name, int value, pblock *pb); - void (*f_pblock_pinsert)(pb_param *pp, pblock *pb); - int (*f_pblock_str2pblock)(const char *str, pblock *pb); - char *(*f_pblock_pblock2str)(const pblock *pb, char *str); - int (*f_pblock_copy)(const pblock *src, pblock *dst); - pblock *(*f_pblock_dup)(const pblock *src); - char **(*f_pblock_pb2env)(const pblock *pb, char **env); - pb_param *(*f_pblock_fr)(const char *name, pblock *pb, int remove); - char * (*f_pblock_replace)(const char *name,char * new_value,pblock *pb); - pool_handle_t *(*f_pool_create)(void); - void (*f_pool_destroy)(pool_handle_t *pool_handle); - int (*f_pool_enabled)(void); - void *(*f_pool_malloc)(pool_handle_t *pool_handle, size_t size ); - void (*f_pool_free)(pool_handle_t *pool_handle, void *ptr ); - void *(*f_pool_calloc)(pool_handle_t *pool_handle, size_t nelem, size_t elsize); - void *(*f_pool_realloc)(pool_handle_t *pool_handle, void *ptr, size_t size ); - char *(*f_pool_strdup)(pool_handle_t *pool_handle, const char *orig_str ); - int (*f_regexp_valid)(const char *exp); - int (*f_regexp_match)(const char *str, const char *exp); - int (*f_regexp_cmp)(const char *str, const char *exp); - int (*f_regexp_casecmp)(const char *str, const char *exp); - SEMAPHORE (*f_sem_init)(char *name, int number); - void (*f_sem_terminate)(SEMAPHORE id); - int (*f_sem_grab)(SEMAPHORE id); - int (*f_sem_tgrab)(SEMAPHORE id); - int (*f_sem_release)(SEMAPHORE id); - Session *(*f_session_alloc)(SYS_NETFD csd, struct sockaddr_in *sac); /* internal */ - Session *(*f_session_fill)(Session *sn); /* internal */ - Session *(*f_session_create)(SYS_NETFD csd, struct sockaddr_in *sac); - void (*f_session_free)(Session *sn); - char *(*f_session_dns_lookup)(Session *sn, int verify); - int (*f_shexp_valid)(const char *exp); - int (*f_shexp_match)(const char *str, const char *exp); - int (*f_shexp_cmp)(const char *str, const char *exp); - int (*f_shexp_casecmp)(const char *str, const char *exp); - shmem_s *(*f_shmem_alloc)(char *name, int size, int expose); - void (*f_shmem_free)(shmem_s *region); - SYS_THREAD (*f_systhread_start)(int prio, int stksz, void (*fn)(void *), void *arg); - SYS_THREAD (*f_systhread_current)(void); - void (*f_systhread_yield)(void); - SYS_THREAD (*f_systhread_attach)(void); - void (*f_systhread_detach)(SYS_THREAD thr); - void (*f_systhread_terminate)(SYS_THREAD thr); - void (*f_systhread_sleep)(int milliseconds); - void (*f_systhread_init)(char *name); - void (*f_systhread_timerset)(int usec); - int (*f_systhread_newkey)(void); - void *(*f_systhread_getdata)(int key); - void (*f_systhread_setdata)(int key, void *data); - void (*f_systhread_set_default_stacksize)(unsigned long size); - int (*f_util_getline)(filebuffer *buf, int lineno, int maxlen, char *l); - char **(*f_util_env_create)(char **env, int n, int *pos); - char *(*f_util_env_str)(const char *name, const char *value); - void (*f_util_env_replace)(char **env, const char *name, const char *value); - void (*f_util_env_free)(char **env); - char **(*f_util_env_copy)(char **src, char **dst); - char *(*f_util_env_find)(char **env, const char *name); - char *(*f_util_hostname)(void); - int (*f_util_chdir2path)(char *path); - int (*f_util_is_mozilla)(char *ua, char *major, char *minor); - int (*f_util_is_url)(const char *url); - int (*f_util_later_than)(const struct tm *lms, const char *ims); - int (*f_util_time_equal)(const struct tm *lms, const char *ims); - int (*f_util_str_time_equal)(const char *t1, const char *t2); - int (*f_util_uri_is_evil)(const char *t); - void (*f_util_uri_parse)(char *uri); - void (*f_util_uri_unescape)(char *s); - char *(*f_util_uri_escape)(char *d, const char *s); - char *(*f_util_url_escape)(char *d, const char *s); - char *(*f_util_sh_escape)(char *s); - int (*f_util_mime_separator)(char *sep); - int (*f_util_itoa)(int i, char *a); - int (*f_util_vsprintf)(char *s, register const char *fmt, va_list args); - int (*f_util_sprintf)(char *s, const char *fmt, ...); - int (*f_util_vsnprintf)(char *s, int n, register const char *fmt, - va_list args); - int (*f_util_snprintf)(char *s, int n, const char *fmt, ...); - int (*f_util_strftime)(char *s, const char *format, const struct tm *t); - char *(*f_util_strtok)(char *s1, const char *s2, char **lasts); - struct tm *(*f_util_localtime)(const time_t *clock, struct tm *res); - char *(*f_util_ctime)(const time_t *clock, char *buf, int buflen); - char *(*f_util_strerror)(int errnum, char *msg, int buflen); - struct tm *(*f_util_gmtime)(const time_t *clock, struct tm *res); - char *(*f_util_asctime)(const struct tm *tm,char *buf, int buflen); -#ifdef NEED_STRCASECMP - int (*f_util_strcasecmp)(const char *one, const char *two); -#else - int (*f_util_strcasecmp)(void); -#endif /* NEED_STRCASECMP */ -#ifdef NEED_STRNCASECMP - int (*f_util_strncasecmp)(const char *one, const char *two, int n); -#else - int (*f_util_strncasecmp)(void); -#endif /* NEED_STRNCASECMP */ -#ifdef XP_UNIX - int (*f_util_can_exec)(struct stat *finfo, uid_t uid, gid_t gid); - struct passwd *(*f_util_getpwnam)(const char *name, struct passwd - *result, char *buffer, int buflen); - pid_t (*f_util_waitpid)(pid_t pid, int *statptr, int options); -#else - int (*f_util_can_exec)(void); - void *(*f_util_getpwnam)(void); - int (*f_util_waitpid)(void); -#endif /* XP_UNIX */ -#ifdef XP_WIN32 - VOID (*f_util_delete_directory)(char *FileName, BOOL delete_directory); -#else - void (*f_util_delete_directory)(void); -#endif /* XP_WIN32 */ - void *(*f_conf_init)(void); - void *(*f_conf_run_init_functions)(void); - void (*f_conf_terminate)(void); - conf_global_vars_s *(*f_conf_getglobals)(void); - void (*f_func_init)(struct FuncStruct *func_standard); - FuncPtr (*f_func_find)(char *name); - int (*f_func_exec)(pblock *pb, Session *sn, Request *rq); - struct FuncStruct *(*f_func_insert)(char *name, FuncPtr fn); - int (*f_object_execute)(directive *inst, Session *sn, Request *rq); - void *(*f_http_find_request)(void); - int (*f_http_parse_request)(char *t, Request *rq, Session *sn); - int (*f_http_scan_headers)(void); - int (*f_http_start_response)(Session *sn, Request *rq); - char **(*f_http_hdrs2env)(pblock *pb); - void (*f_http_status)(Session *sn, Request *rq, int n, const char *r); - int (*f_http_set_finfo)(Session *sn, Request *rq, struct stat *finfo); - char *(*f_http_dump822)(pblock *pb, char *t, int *pos, int tsz); - void (*f_http_finish_request)(Session *sn, Request *rq); - void (*f_http_handle_session)(void); - char *(*f_http_uri2url)(const char *prefix, const char *suffix); - char *(*f_http_uri2url_dynamic)(const char *prefix, const char *suffix, - Session *sn, Request *rq); - void (*f_http_set_keepalive_timeout)(int secs); - int (*f_log_error_v)(int degree, const char *func, Session *sn, - Request *rq, const char *fmt, va_list args); - int (*f_log_error)(int degree, const char *func, Session *sn, Request *rq, - const char *fmt, ...); - int (*f_log_ereport_v)(int degree, const char *fmt, va_list args); - int (*f_log_ereport)(int degree, const char *fmt, ...); - httpd_object *(*f_object_create)(int nd, pblock *name); - void (*f_object_free)(httpd_object *obj); - void (*f_object_add_directive)(int dc, pblock *p, pblock *c, - httpd_object *obj); - httpd_objset *(*f_objset_scan_buffer)(filebuffer *buf, char *errstr, - httpd_objset *os); - httpd_objset *(*f_objset_create)(void); - void (*f_objset_free)(httpd_objset *os); - void (*f_objset_free_setonly)(httpd_objset *os); - httpd_object *(*f_objset_new_object)(pblock *name, httpd_objset *os); - void (*f_objset_add_object)(httpd_object *obj, httpd_objset *os); - void (*f_objset_add_init)(pblock *initfn, httpd_objset *os); - httpd_object *(*f_objset_findbyname)(const char *name, httpd_objset *ign, - httpd_objset *os); - httpd_object *(*f_objset_findbyppath)(char *ppath, httpd_objset *ign, - httpd_objset *os); - Request *(*f_request_create)(void); - void (*f_request_free)(Request *req); - Request *(*f_request_restart_internal)(const char *uri, Request *rq); - int (*f_request_header)(char *name, char **value, Session *sn, - Request *rq); - struct stat *(*f_request_stat_path)(const char *path, Request *rq); - const char *(*f_conf_getServerString)(void); - FuncPtr (*f_func_replace)(char *funcname, FuncPtr fn); - int (*f_net_socketpair)(SYS_NETFD *pair); -#ifdef XP_UNIX - SYS_NETFD (*f_net_dup2)(SYS_NETFD prfd, int osfd); - int (*f_net_is_STDOUT)(SYS_NETFD prfd); - int (*f_net_is_STDIN)(SYS_NETFD prfd); -#else - void *(*f_net_dup2)(void); - int (*f_net_is_STDOUT)(void); - int (*f_net_is_STDIN)(void); -#endif /* XP_UNIX */ - int (*f_func_set_native_thread_flag)(char *name, int flags); -#ifdef NET_SSL - void *(*f_random_create)(void); - void (*f_random_update)(void *rctx, unsigned char *inbuf, int length); - void (*f_random_generate)(void *rctx, unsigned char *outbuf, int length); - void (*f_random_destroy)(void *rctx); - void *(*f_md5hash_create)(void); - void *(*f_md5hash_copy)(void *hctx); - void (*f_md5hash_begin)(void *hctx); - void (*f_md5hash_update)(void *hctx, unsigned char *inbuf, int length); - void (*f_md5hash_end)(void *hctx, unsigned char *outbuf); - void (*f_md5hash_destroy)(void *hctx); - void (*f_md5hash_data)(unsigned char *outbuf, unsigned char *src, int length); -#else - void *(*f_random_create)(void); - void (*f_random_update)(void); - void (*f_random_generate)(void); - void (*f_random_destroy)(void); - void *(*f_md5hash_create)(void); - void *(*f_md5hash_copy)(void); - void (*f_md5hash_begin)(void); - void (*f_md5hash_update)(void); - void (*f_md5hash_end)(void); - void (*f_md5hash_destroy)(void); - void (*f_md5hash_data)(void); -#endif - int (*f_ACL_SetupEval)(struct ACLListHandle *acllist, Session *sn, Request *rq, char **rights, char **map_generic, const char *user); - int (*f_netbuf_getbytes)(netbuf *buf, char *buffer, int size); - char *(*f_servact_translate_uri)(char *uri, Session *sn); -#ifdef NET_SSL - int (*f_rsa_set_priv_fn)(void *); -#else - int (*f_rsa_set_priv_fn)(void); -#endif -#ifdef XP_UNIX - int (*f_net_native_handle)(SYS_NETFD s); -#else - HANDLE (*f_net_native_handle)(SYS_NETFD s); -#endif /* XP_UNIX */ - int (*f_internal_request)(Request *rq); - char *(*f_util_cookie_find)(char *cookie, const char *name); - char *(*f_util_cookie_next)(char *cookie, char **name, char **value); - char *(*f_util_cookie_next_av_pair)(char *cookie, char **name, char **value); - int (*f_objset_get_number_objects)(const httpd_objset *objset); - const httpd_object *(*f_objset_get_object)(const httpd_objset *objset, int pos); - const pblock * const *(*f_objset_get_initfns)(const httpd_objset *objset); - const pblock *(*f_object_get_name)(const httpd_object *object); - int (*f_object_get_num_directives)(const httpd_object *object); - const dtable *(*f_object_get_directive_table)(const httpd_object *object, int n); - int (*f_directive_table_get_num_directives)(const dtable *dt); - const directive *(*f_directive_table_get_directive)(const dtable *dt, int pos); - const pblock *(*f_directive_get_pblock)(const directive *); - const FuncStruct *(*f_directive_get_funcstruct)(const directive *); - const pblock *(*f_directive_get_client_pblock)(const directive *); -#if NSAPI_VERSION >= 301 - int (*f_vs_register_cb)(VSInitFunc *vs_init_func, VSDestroyFunc *vs_destroy_func); - const char* (*f_vs_get_id)(const VirtualServer *vs); - const char* (*f_vs_lookup_config_var)(const VirtualServer *vs, const char *name); - int (*f_vs_alloc_slot)(void); - void* (*f_vs_set_data)(const VirtualServer *vs, int *slot, void *data); - void* (*f_vs_get_data)(const VirtualServer *vs, int slot); - const VirtualServer* (*f_request_get_vs)(Request *rq); - httpd_objset* (*f_vs_get_httpd_objset)(VirtualServer *vs); - httpd_object* (*f_vs_get_default_httpd_object)(VirtualServer *vs); - char* (*f_vs_get_doc_root)(const VirtualServer *vs); - char* (*f_vs_translate_uri)(const VirtualServer *vs, const char *uri); - char* (*f_vs_get_mime_type)(const VirtualServer *vs, const char *uri); - int (*f_vs_is_default_vs)(const VirtualServer *vs); - void *(*f_vs_get_acllist)(const VirtualServer *vs); - void (*f_vs_set_acllist)(VirtualServer *vs, void *acllist); - int (*f_file_is_path_abs)(const char *path); - char* (*f_file_canonicalize_path)(const char* path); - int (*f_file_are_files_distinct)(SYS_FILE fd1, SYS_FILE fd2); - int (*f_vs_directive_register_cb)(FuncPtr func, VSDirectiveInitFunc *vs_init_func, VSDirectiveDestroyFunc *vs_destroy_func); - char* (*f_vs_substitute_vars)(const VirtualServer *vs, const char *string); - const char *(*f_conf_getfilename)(void); - const char *(*f_conf_getstring)(const char *name, const char *def); - int (*f_conf_getboolean)(const char *name, int def); - int (*f_conf_getinteger)(const char *name, int def); - int (*f_conf_getboundedinteger)(const char *name, int min, int max, int def); - void (*f_prepare_nsapi_thread)(Request *rq, Session *sn); -#endif /* NSAPI_VERSION >= 301 */ -}; - -#if NSAPI_VERSION >= 302 -typedef struct nsapi302_dispatch_s nsapi302_dispatch_t; -struct nsapi302_dispatch_s { - int (*f_net_flush)(SYS_NETFD sd); - int (*f_net_sendfile)(SYS_NETFD sd, sendfiledata *sfd); - const Filter *(*f_filter_create)(const char *name, int order, const FilterMethods *methods); - const char *(*f_filter_name)(const Filter *filter); - const Filter *(*f_filter_find)(const char *name); - FilterLayer *(*f_filter_layer)(SYS_NETFD sd, const Filter *filter); - int (*f_filter_insert)(SYS_NETFD sd, pblock *pb, Session *sn, Request *rq, void *data, const Filter *filter); - int (*f_filter_remove)(SYS_NETFD sd, const Filter *filter); - SYS_NETFD (*f_filter_create_stack)(Session *sn); -}; -#endif /* NSAPI_VERSION >= 302 */ - -#if NSAPI_VERSION >= 303 -typedef struct nsapi303_dispatch_s nsapi303_dispatch_t; -struct hostent; -struct nsapi303_dispatch_s { - int (*f_dns_set_hostent)(struct hostent *he, Session *sn, Request *rq); -}; -#endif /* NSAPI_VERSION >= 303 */ - /* --- End dispatch vector table definition --- */ /* --- Begin API macro definitions --- */ @@ -1588,14 +1150,116 @@ */ #define session_maxdns(sn) session_dns_lookup(sn, 1) + +/* nsapi functions */ + +ssize_t net_write(SYS_NETFD fd, void *buf, size_t nbytes); + +NSAPI_PUBLIC pb_param *INTparam_create(const char *name, const char *value); + +NSAPI_PUBLIC int INTparam_free(pb_param *pp); + +NSAPI_PUBLIC pblock *INTpblock_create(int n); + +NSAPI_PUBLIC void INTpblock_free(pblock *pb); + +NSAPI_PUBLIC char *INTpblock_findval(const char *name, const pblock *pb); + +NSAPI_PUBLIC pb_param *INTpblock_nvinsert(const char *name, const char *value, pblock *pb); + +NSAPI_PUBLIC pb_param *pblock_nvlinsert(const char *name, int namelen, const char *value, int valuelen, pblock *pb); + +NSAPI_PUBLIC pb_param *INTpblock_nninsert(const char *name, int value, pblock *pb); + +NSAPI_PUBLIC void INTpblock_pinsert(pb_param *pp, pblock *pb); + +NSAPI_PUBLIC int INTpblock_str2pblock(const char *str, pblock *pb); + +NSAPI_PUBLIC char *INTpblock_pblock2str(const pblock *pb, char *str); + +NSAPI_PUBLIC int INTpblock_copy(const pblock *src, pblock *dst); + +NSAPI_PUBLIC pblock *INTpblock_dup(const pblock *src); + +NSAPI_PUBLIC char **INTpblock_pb2env(const pblock *pb, char **env); + +NSAPI_PUBLIC void pblock_nvreplace (const char *name, const char *value, pblock *pb); + +NSAPI_PUBLIC pb_param *pblock_param_create(pblock *pb, const char *name, const char *value); + +NSAPI_PUBLIC pblock *pblock_create_pool(pool_handle_t *pool_handle, int n); + +NSAPI_PUBLIC pb_param *INTpblock_fr(const char *name, pblock *pb, int remove); + +NSAPI_PUBLIC char *INTpblock_replace(const char *name,char * new_value,pblock *pb); + +NSAPI_PUBLIC int INTpblock_str2pblock_lowercasename(const char *str, pblock *pb); + +//NSAPI_PUBLIC pb_param *pblock_removeone(pblock *pb); + +//NSAPI_PUBLIC const pb_key *pblock_key(const char *name); + +//NSAPI_PUBLIC pb_param *pblock_key_param_create(pblock *pb, const pb_key *key, const char *value, int valuelen); + +//NSAPI_PUBLIC char *pblock_findkeyval(const pb_key *key, const pblock *pb); + +//NSAPI_PUBLIC pb_param *pblock_findkey(const pb_key *key, const pblock *pb); + +//NSAPI_PUBLIC pb_param *pblock_removekey(const pb_key *key, pblock *pb); + +//NSAPI_PUBLIC pb_param *pblock_kvinsert(const pb_key *key, const char *value, int valuelen, pblock *pb); + +//NSAPI_PUBLIC void pblock_kpinsert(const pb_key *key, pb_param *pp, pblock *pb); + +//NSAPI_PUBLIC void pblock_kvreplace(const pb_key *key, const char *value, int valuelen, pblock *pb); + +//NSAPI_PUBLIC pb_param *pblock_kninsert(const pb_key *key, int value, pblock *pb); + +//NSAPI_PUBLIC pb_param *pblock_kllinsert(const pb_key *key, PRInt64 value, pblock *pb); + +#define param_create INTparam_create +#define param_free INTparam_free +#define pblock_create INTpblock_create +#define pblock_free INTpblock_free +#define pblock_findval INTpblock_findval +#define pblock_nvinsert INTpblock_nvinsert +#define pblock_nninsert INTpblock_nninsert +#define pblock_pinsert INTpblock_pinsert +#define pblock_str2pblock INTpblock_str2pblock +#define pblock_pblock2str INTpblock_pblock2str +#define pblock_copy INTpblock_copy +#define pblock_dup INTpblock_dup +#define pblock_pb2env INTpblock_pb2env +#define pblock_fr INTpblock_fr +#define pblock_replace INTpblock_replace + + + +void protocol_status(Session *sn, Request *rq, int n, const char *m); + +int http_start_response(Session *sn, Request *rq); #define protocol_start_response http_start_response -#define protocol_status http_status -#define protocol_set_finfo http_set_finfo -#define protocol_finish_request http_finish_request -#define protocol_uri2url http_uri2url -#define protocol_uri2url_dynamic http_uri2url_dynamic +int request_header(char *name, char **value, Session *sn, Request *rq); + +typedef void (*thrstartfunc)(void *); +SYS_THREAD INTsysthread_start(int prio, int stksz, thrstartfunc fn, void *arg); +NSAPI_PUBLIC void INTsysthread_sleep(int milliseconds); + +#define systhread_start INTsysthread_start +#define systhread_sleep INTsysthread_sleep + -#define request_translate_uri servact_translate_uri +void webserver_atrestart(void (*fn)(void *), void *data); +#define magnus_atrestart webserver_atrestart + + +NSAPI_PUBLIC int INTshexp_match(const char *str, const char *exp); +#define shexp_match INTshexp_match + + + +NSAPI_PUBLIC char *session_dns_lookup(Session *s, int verify); + /* --- OBSOLETE ---------------------------------------------------------- * The following macros/functions are obsolete and are only maintained for @@ -1668,13 +1332,6 @@ #else /* !XP_WIN32 */ -NSAPI_PUBLIC extern nsapi_dispatch_t *__nsapi30_table; -#if NSAPI_VERSION >= 302 -NSAPI_PUBLIC extern nsapi302_dispatch_t *__nsapi302_table; -#endif /* NSAPI_VERSION >= 302 */ -#if NSAPI_VERSION >= 303 -NSAPI_PUBLIC extern nsapi303_dispatch_t *__nsapi303_table; -#endif /* NSAPI_VERSION >= 303 */ #endif /* XP_WIN32 */