您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ uwsgi_str函数代码示例

51自学网 2021-06-03 09:28:58
  C++
这篇教程C++ uwsgi_str函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中uwsgi_str函数的典型用法代码示例。如果您正苦于以下问题:C++ uwsgi_str函数的具体用法?C++ uwsgi_str怎么用?C++ uwsgi_str使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了uwsgi_str函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: uwsgi_calloc

struct zergpool_socket *add_zergpool_socket(char *name, char *sockets) {	struct zergpool_socket *z_sock,*zps = zergpool_sockets;	if (!zps) {		z_sock = uwsgi_calloc(sizeof(struct zergpool_socket));		zergpool_sockets = z_sock;	}	else {		while(zps) {			if (!zps->next) {				z_sock= uwsgi_calloc(sizeof(struct zergpool_socket));				zps->next = z_sock;				break;			}			zps = zps->next;		}	}	// do not defer accept for zergpools	if (uwsgi.no_defer_accept) {		uwsgi.no_defer_accept = 0;		z_sock->fd = bind_to_unix(name, uwsgi.listen_queue, uwsgi.chmod_socket, 0);		uwsgi.no_defer_accept = 1;	}	else {		z_sock->fd = bind_to_unix(name, uwsgi.listen_queue, uwsgi.chmod_socket, 0);	}	char *sock_list = uwsgi_str(sockets);	char *p = strtok(sock_list, ",");	while(p) {		z_sock->num_sockets++;		p = strtok(NULL, ",");	}	free(sock_list);	z_sock->sockets = uwsgi_calloc(sizeof(int) * (z_sock->num_sockets + 1));	sock_list = uwsgi_str(sockets);	int pos = 0;	p = strtok(sock_list, ",");	while(p) {		char *port = strchr(p, ':');		if (!port) {			z_sock->sockets[pos] = bind_to_unix(p, uwsgi.listen_queue, uwsgi.chmod_socket, uwsgi.abstract_socket);			uwsgi_log("zergpool %s bound to UNIX socket %s (fd: %d)/n", name, uwsgi_getsockname(z_sock->sockets[pos]), z_sock->sockets[pos]);		}		else {			char *gsn = generate_socket_name(p);			z_sock->sockets[pos] = bind_to_tcp(gsn, uwsgi.listen_queue, strchr(gsn, ':'));			uwsgi_log("zergpool %s bound to TCP socket %s (fd: %d)/n", name, uwsgi_getsockname(z_sock->sockets[pos]), z_sock->sockets[pos]);		}		pos++;		p = strtok(NULL, ",");	}	return z_sock;}
开发者ID:bertil-april,项目名称:uwsgi,代码行数:59,


示例2: uwsgi_alarms_init

// initialize alarms, instances and log regexpsvoid uwsgi_alarms_init() {	// first of all, create instance of alarms	struct uwsgi_string_list *usl = uwsgi.alarm_list;	while(usl) {		char *line = uwsgi_str(usl->value);		char *space = strchr(line, ' ');		if (!space) {			uwsgi_log("invalid alarm syntax: %s/n", usl->value);			exit(1);		}		*space = 0;		char *plugin = space+1;		char *colon = strchr(plugin, ':');		if (!colon) {			uwsgi_log("invalid alarm syntax: %s/n", usl->value);			exit(1);		}		*colon = 0;		char *arg = colon+1;		// here the alarm is mapped to a name and initialized		if (uwsgi_alarm_add(line, plugin, arg)) {			uwsgi_log("invalid alarm: %s/n", usl->value);			exit(1);		}		usl = usl->next;	}	// then map log-alarm	usl = uwsgi.alarm_logs_list;	while(usl) {		char *line = uwsgi_str(usl->value);		char *space = strchr(line, ' ');                if (!space) {                        uwsgi_log("invalid log-alarm syntax: %s/n", usl->value);                        exit(1);                }                *space = 0;                char *regexp = space+1;                // here the log-alarm is created                if (uwsgi_alarm_log_add(line, regexp)) {                        uwsgi_log("invalid log-alarm: %s/n", usl->value);                        exit(1);                }		usl = usl->next;	}}
开发者ID:StephenPierce,项目名称:uwsgi,代码行数:49,


示例3: uwsgi_opt_add_route

void uwsgi_opt_add_route(char *opt, char *value, void *foobar) {	char *route = uwsgi_str(value);	char *space = strchr(route, ' ');	if (!space) {		uwsgi_log("invalid route syntax/n");		exit(1);	}	*space = 0;	struct uwsgi_route *ur = uwsgi.routes;	if (!ur) {		uwsgi.routes = uwsgi_calloc(sizeof(struct uwsgi_route));		ur = uwsgi.routes;	}	else {		while (ur) {			if (!ur->next) {				ur->next = uwsgi_calloc(sizeof(struct uwsgi_route));				ur = ur->next;				break;			}			ur = ur->next;		}	}	if (!strcmp(foobar, "http_host")) {		ur->subject = offsetof(struct wsgi_request, host);		ur->subject_len = offsetof(struct wsgi_request, host_len);	}
开发者ID:hfeeki,项目名称:uwsgi,代码行数:32,


示例4: uwsgi_autoload_plugins_by_name

void uwsgi_autoload_plugins_by_name(char *argv_zero) {	char *plugins_requested = NULL;	char *original_proc_name = getenv("UWSGI_ORIGINAL_PROC_NAME");	if (!original_proc_name) {		// here we use argv[0];		original_proc_name = argv_zero;		setenv("UWSGI_ORIGINAL_PROC_NAME", original_proc_name, 1);	}	char *p = strrchr(original_proc_name, '/');	if (p == NULL)		p = original_proc_name;	p = strstr(p, "uwsgi_");	if (p != NULL) {		plugins_requested = strtok(uwsgi_str(p + 6), "_");		while (plugins_requested) {			uwsgi_log("[uwsgi] implicit plugin requested %s/n", plugins_requested);			uwsgi_load_plugin(-1, plugins_requested, NULL);			plugins_requested = strtok(NULL, "_");		}	}	plugins_requested = getenv("UWSGI_PLUGINS");	if (plugins_requested) {		plugins_requested = uwsgi_concat2(plugins_requested, "");		char *p = strtok(plugins_requested, ",");		while (p != NULL) {			uwsgi_load_plugin(-1, p, NULL);			p = strtok(NULL, ",");		}	}}
开发者ID:hfeeki,项目名称:uwsgi,代码行数:34,


示例5: uwsgi_emperor_simple_do

void uwsgi_emperor_simple_do(struct uwsgi_emperor_scanner *ues, char *name, char *config, time_t ts, uid_t uid, gid_t gid) {	if (!uwsgi_emperor_is_valid(name))		return;	struct uwsgi_instance *ui_current = emperor_get(name);	if (ui_current) {		// check if uid or gid are changed, in such case, stop the instance		if (uwsgi.emperor_tyrant) {			if (uid != ui_current->uid || gid != ui_current->gid) {				uwsgi_log("[emperor-tyrant] !!! permissions of vassal %s changed. stopping the instance... !!!/n", name);				emperor_stop(ui_current);				return;			}		}		// check if mtime is changed and the uWSGI instance must be reloaded		if (ts > ui_current->last_mod) {			// make a new config (free the old one)			free(ui_current->config);			ui_current->config = config;			ui_current->config_len = strlen(config);			// always respawn (no need for amqp-style rules)			emperor_respawn(ui_current, ts);		}	}	else {		// make a copy of the config as it will be freed		emperor_add(ues, name, ts, uwsgi_str(config), strlen((const char *) config), uid, gid);	}}
开发者ID:arteme,项目名称:uwsgi,代码行数:31,


示例6: uwsgi_jwsgi_setup

static int uwsgi_jwsgi_setup() {	char *app = uwsgi_str(ujwsgi.app);	char *method = "application";	char *colon = strchr(app, ':');	if (colon) {		*colon = 0;		method = colon + 1;	}	ujwsgi.app_class = uwsgi_jvm_class(app);	if (!ujwsgi.app_class) {		exit(1);	}	ujwsgi.app_mid = uwsgi_jvm_get_static_method_id_quiet(ujwsgi.app_class, method, "(Ljava/util/HashMap;)[Ljava/lang/Object;");	if (uwsgi_jvm_exception() || !ujwsgi.app_mid) {                jmethodID mid = uwsgi_jvm_get_method_id(ujwsgi.app_class, "<init>", "()V");                if (uwsgi_jvm_exception() || !mid) exit(1);        	ujwsgi.app_instance = (*ujvm_env)->NewObject(ujvm_env, ujwsgi.app_class, mid);        	if (uwsgi_jvm_exception() || !ujwsgi.app_instance) {			exit(1);        	}		ujwsgi.app_mid = uwsgi_jvm_get_method_id(ujwsgi.app_class, method, "(Ljava/util/HashMap;)[Ljava/lang/Object;");        	if (uwsgi_jvm_exception() || !ujwsgi.app_mid) {			exit(1);        	}	}	uwsgi_log("JWSGI app /"%s/" loaded/n", ujwsgi.app);	return 0;}
开发者ID:Algy,项目名称:uwsgi,代码行数:34,


示例7: uwsgi_alarm_curl_loop

static void uwsgi_alarm_curl_loop(struct uwsgi_thread *ut) {	int interesting_fd;	ut->buf = uwsgi_malloc(uwsgi.log_master_bufsize);	CURL *curl = curl_easy_init();	// ARGH !!!	if (!curl) return;	curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, uwsgi.shared->options[UWSGI_OPTION_SOCKET_TIMEOUT]);	curl_easy_setopt(curl, CURLOPT_TIMEOUT, uwsgi.shared->options[UWSGI_OPTION_SOCKET_TIMEOUT]);	curl_easy_setopt(curl, CURLOPT_READFUNCTION, uwsgi_alarm_curl_read_callback);	curl_easy_setopt(curl, CURLOPT_READDATA, ut);	curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);	curl_easy_setopt(curl, CURLOPT_POST, 1L);	struct curl_slist *expect = NULL; expect = curl_slist_append(expect, "Expect:");	curl_easy_setopt(curl, CURLOPT_HTTPHEADER, expect);	struct uwsgi_alarm_curl_config *uacc = (struct uwsgi_alarm_curl_config *) ut->data;	char *opts = uwsgi_str(uacc->arg);	// fill curl options	char *ctx = NULL;	char *p = strtok_r(opts, ";", &ctx);	while(p) {		uwsgi_alarm_curl_setopt(curl, uwsgi_str(p), uacc);		p = strtok_r(NULL, ";", &ctx);	}	for(;;) {		int ret = event_queue_wait(ut->queue, -1, &interesting_fd);			if (ret < 0) return;		if (ret == 0) continue;		if (interesting_fd != ut->pipe[1]) continue;		ssize_t rlen = read(ut->pipe[1], ut->buf, uwsgi.log_master_bufsize);		if (rlen <= 0) continue;		ut->pos = 0;		ut->len = (size_t) rlen;		ut->custom0 = 0;		curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t) ut->len);		CURLcode res = curl_easy_perform(curl);		if (res != CURLE_OK) {			uwsgi_log_alarm("-curl] curl_easy_perform() failed: %s/n", curl_easy_strerror(res));		}			}}
开发者ID:alex,项目名称:uwsgi,代码行数:46,


示例8: uwsgi_ssh_url_parser

int uwsgi_ssh_url_parser(char *url, struct uwsgi_ssh_mountpoint **usm) {	// [ssh://]username[:password]@host:port/path	if (!url || !(*usm)) {		return -1;	}	if (!memcmp(url, "ssh://", 6)) {		url += 6;	}	// first of all, the remote path	char *slash = strchr(url, '/');	if (slash) {		*slash = 0;		(*usm)->path = uwsgi_concat2("/", slash + 1);	} else {		uwsgi_log("[SSH] malformed ssh url (path)/n");		return -1;	}	// then, the user:password	char *at = strchr(url, '@');	if (at) {		*at = 0;		char *colon = strchr(url, ':');		if (colon) {			*colon = 0;			(*usm)->password = uwsgi_str(colon + 1);		} else {			(*usm)->password = NULL;  // there is no password!		}		(*usm)->username = uwsgi_str(url);		// and eventually, the remote host (ip:port)		(*usm)->remote = uwsgi_str(at + 1);	} else {		(*usm)->remote = uwsgi_str(url);	}	return 0;}
开发者ID:aldur,项目名称:uwsgi-libssh2,代码行数:46,


示例9: uwsgi_opt_add_daemon

void uwsgi_opt_add_daemon(char *opt, char *value, void *none) {	struct uwsgi_daemon *uwsgi_ud = uwsgi.daemons, *old_ud;	char *pidfile = NULL;	int daemonize = 0;	int freq = 10;	char *command = uwsgi_str(value);	if (!strcmp(opt, "smart-attach-daemon") || !strcmp(opt, "smart-attach-daemon2")) {		char *space = strchr(command, ' ');		if (!space) {			uwsgi_log("invalid smart-attach-daemon syntax: %s/n", command);			exit(1);		}		*space = 0;		pidfile = command;		// check for freq		char *comma = strchr(pidfile, ',');		if (comma) {			*comma = 0;			freq = atoi(comma + 1);		}		command = space + 1;		if (!strcmp(opt, "smart-attach-daemon2")) {			daemonize = 1;		}	}	if (!uwsgi_ud) {		uwsgi.daemons = uwsgi_malloc(sizeof(struct uwsgi_daemon));		uwsgi_ud = uwsgi.daemons;	}	else {		while (uwsgi_ud) {			old_ud = uwsgi_ud;			uwsgi_ud = uwsgi_ud->next;		}		uwsgi_ud = uwsgi_malloc(sizeof(struct uwsgi_daemon));		old_ud->next = uwsgi_ud;	}	uwsgi_ud->command = command;	uwsgi_ud->pid = 0;	uwsgi_ud->status = 0;	uwsgi_ud->freq = freq;	uwsgi_ud->registered = 0;	uwsgi_ud->next = NULL;	uwsgi_ud->respawns = 0;	uwsgi_ud->last_spawn = 0;	uwsgi_ud->daemonize = daemonize;	uwsgi_ud->pidfile = pidfile;	uwsgi.daemons_cnt++;}
开发者ID:xwssole,项目名称:uwsgi,代码行数:57,


示例10: uwsgi_webdav_add_a_prop

static void uwsgi_webdav_add_a_prop(xmlNode *node, char *opt, xmlNode *req_prop, int type, char *force_name) {	char *first_space = strchr(opt, ' ');	if (!first_space) return;	*first_space = 0;	char *second_space = strchr(first_space + 1, ' ');	xmlNode *new_node = NULL;	char *ns = opt;	if (!force_name) force_name = first_space + 1;	else {		ns = "DAV:";	}	if (second_space) {		*second_space = 0;		if (!uwsgi_webdav_prop_requested(req_prop, ns, force_name)) {                	*first_space = ' ';                        *second_space = ' ';                        return;                }		// href		if (type == 1) {			new_node = xmlNewChild(node, NULL, BAD_CAST first_space + 1, NULL);			xmlNewTextChild(new_node, NULL, BAD_CAST "href", BAD_CAST second_space + 1);		}		// comp		else if (type == 2) {			new_node = xmlNewChild(node, NULL, BAD_CAST first_space + 1, NULL);			char *comps = uwsgi_str(second_space + 1);			char *p = strtok(comps, ",");			while(p) {				xmlNode *comp = xmlNewChild(new_node, NULL, BAD_CAST "comp", NULL);				xmlNewProp(comp, BAD_CAST "name", BAD_CAST p);				p = strtok(NULL, ",");			}			free(comps);		}		else {			if (!uwsgi_webdav_prop_requested(req_prop, ns, first_space + 1)) {                                *first_space = ' ';                                *second_space = ' ';                                return;                        }			new_node = xmlNewTextChild(node, NULL, BAD_CAST first_space + 1, BAD_CAST second_space + 1);		}		*second_space = ' ';	}	else {		if (!uwsgi_webdav_prop_requested(req_prop, ns, force_name)) {                        *first_space = ' ';                        return;                }		new_node = xmlNewChild(node, NULL, BAD_CAST first_space + 1, NULL);	}	xmlNsPtr x_ns = xmlNewNs(new_node, BAD_CAST opt, NULL);	xmlSetNs(new_node, x_ns);	*first_space = ' ';}
开发者ID:JuanS,项目名称:uwsgi,代码行数:56,


示例11: uwsgi_routing_func_rpc_blob

static int uwsgi_routing_func_rpc_blob(struct wsgi_request *wsgi_req, struct uwsgi_route *ur) {        int ret = -1;        // this is the list of args        char *argv[UMAX8];        // this is the size of each argument        uint16_t argvs[UMAX8];        // this is a placeholder for tmp uwsgi_buffers        struct uwsgi_buffer *ubs[UMAX8];        char **r_argv = (char **) ur->data2;        uint16_t *r_argvs = (uint16_t *) ur->data3;        char **subject = (char **) (((char *)(wsgi_req))+ur->subject);        uint16_t *subject_len = (uint16_t *)  (((char *)(wsgi_req))+ur->subject_len);        uint64_t i;        for(i=0;i<ur->custom;i++) {                ubs[i] = uwsgi_routing_translate(wsgi_req, ur, *subject, *subject_len, r_argv[i], r_argvs[i]);                if (!ubs[i]) goto end;                argv[i] = ubs[i]->buf;                argvs[i] = ubs[i]->pos;        }        // ok we now need to check it it is a local call or a remote one        char *func = uwsgi_str(ur->data);        char *remote = NULL;        char *at = strchr(func, '@');        if (at) {                *at = 0;                remote = at+1;        }        uint16_t size;        char *response = uwsgi_do_rpc(remote, func, ur->custom, argv, argvs, &size);        free(func);        if (!response) goto end;        ret = UWSGI_ROUTE_NEXT;	// optimization	if (!wsgi_req->headers_sent) {        	if (uwsgi_response_prepare_headers(wsgi_req, "200 OK", 6)) {free(response) ; goto end;}        	if (uwsgi_response_add_connection_close(wsgi_req)) {free(response) ; goto end;}	}        uwsgi_response_write_body_do(wsgi_req, response, size);        free(response);end:        for(i=0;i<ur->custom;i++) {                if (ubs[i] != NULL) {                        uwsgi_buffer_destroy(ubs[i]);                }        }        return ret;}
开发者ID:alb-i986,项目名称:uwsgi,代码行数:54,


示例12: fastrouter_opt

int fastrouter_opt(int i, char *optarg) {	char *cs;	char *cs_code;	char *cs_func;	switch(i) {		case LONG_ARGS_FASTROUTER:			uwsgi_fastrouter_new_socket(generate_socket_name(optarg));			return 1;		case LONG_ARGS_FASTROUTER_SUBSCRIPTION_SERVER:			ufr.subscription_server = optarg;			return 1;		case LONG_ARGS_FASTROUTER_EVENTS:			ufr.nevents = atoi(optarg);			return 1;		case LONG_ARGS_FASTROUTER_USE_PATTERN:			ufr.pattern = optarg;			// optimization			ufr.pattern_len = strlen(ufr.pattern);			return 1;		case LONG_ARGS_FASTROUTER_USE_BASE:			ufr.base = optarg;			// optimization			ufr.base_len = strlen(ufr.base);			return 1;		case LONG_ARGS_FASTROUTER_USE_CODE_STRING:			cs = uwsgi_str(optarg);			cs_code = strchr(cs, ':');			if (!cs_code) {				uwsgi_log("invalid code_string option/n");				exit(1);				}			cs_code[0] = 0;			cs_func = strchr(cs_code+1, ':');			if (!cs_func) {				uwsgi_log("invalid code_string option/n");				exit(1);				}			cs_func[0] = 0;			ufr.code_string_modifier1 = atoi(cs);			ufr.code_string_code = cs_code+1;			ufr.code_string_function = cs_func+1;			return 1;		case LONG_ARGS_FASTROUTER_TIMEOUT:			ufr.socket_timeout = atoi(optarg);			return -1;		case LONG_ARGS_FASTROUTER_SUBSCRIPTION_SLOT:			ufr.subscription_slot = atoi(optarg);			return 1;	}	return 0;}
开发者ID:sashka,项目名称:uwsgi,代码行数:53,


示例13: uwsgi_alarm_curl_to

static void uwsgi_alarm_curl_to(CURL *curl, CURLoption option, char *arg, struct uwsgi_alarm_curl_config *uacc) {	uacc->to = arg;	struct curl_slist *list = NULL;	char *items = uwsgi_str(arg);	char *ctx = NULL;	char *p = strtok_r(items, ",", &ctx);	while(p) {		list = curl_slist_append(list, p);		p = strtok_r(NULL, ",", &ctx);	}	curl_easy_setopt(curl, option, list);}
开发者ID:alex,项目名称:uwsgi,代码行数:12,


示例14: uwsgi_emperor_simple_do

void uwsgi_emperor_simple_do(struct uwsgi_emperor_scanner *ues, char *name, char *config, time_t ts, uid_t uid, gid_t gid, char *socket_name) {	if (!uwsgi_emperor_is_valid(name))		return;	struct uwsgi_instance *ui_current = emperor_get(name);	if (ui_current) {		// check if uid or gid are changed, in such case, stop the instance		if (uwsgi.emperor_tyrant) {			if (uid != ui_current->uid || gid != ui_current->gid) {				uwsgi_log("[emperor-tyrant] !!! permissions of vassal %s changed. stopping the instance... !!!/n", name);				emperor_stop(ui_current);				return;			}		}		// check if mtime is changed and the uWSGI instance must be reloaded		if (ts > ui_current->last_mod) {			// make a new config (free the old one) if needed			if (config) {				if (ui_current->config)					free(ui_current->config);				ui_current->config = uwsgi_str(config);				ui_current->config_len = strlen(ui_current->config);			}			// reload the instance			emperor_respawn(ui_current, ts);		}	}	else {		// make a copy of the config as it will be freed		char *new_config = NULL;		size_t new_config_len = 0;		if (config) {			new_config = uwsgi_str(config);			new_config_len = strlen(new_config);		}		emperor_add(ues, name, ts, new_config, new_config_len, uid, gid, socket_name);	}}
开发者ID:ahua,项目名称:c,代码行数:40,


示例15: uwsgi_sni_cb

static int uwsgi_sni_cb(SSL *ssl, int *ad, void *arg) {        const char *servername = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name);        if (!servername) return SSL_TLSEXT_ERR_NOACK;        size_t servername_len = strlen(servername);        struct uwsgi_string_list *usl = uwsgi.sni;        while(usl) {                if (!uwsgi_strncmp(usl->value, usl->len, (char *)servername, servername_len)) {                        SSL_set_SSL_CTX(ssl, usl->custom_ptr);                        return SSL_TLSEXT_ERR_OK;                }                usl = usl->next;        }#ifdef UWSGI_PCRE        struct uwsgi_regexp_list *url = uwsgi.sni_regexp;        while(url) {                if (uwsgi_regexp_match(url->pattern, url->pattern_extra, (char *)servername, servername_len) >= 0) {                        SSL_set_SSL_CTX(ssl, url->custom_ptr);                        return SSL_TLSEXT_ERR_OK;                }                url = url->next;        }#endif	if (uwsgi.sni_dir) {		size_t sni_dir_len = strlen(uwsgi.sni_dir);		char *sni_dir_cert = uwsgi_concat4n(uwsgi.sni_dir, sni_dir_len, "/", 1, (char *) servername, servername_len, ".crt", 4);		char *sni_dir_key = uwsgi_concat4n(uwsgi.sni_dir, sni_dir_len, "/", 1, (char *) servername, servername_len, ".key", 4);		char *sni_dir_client_ca = uwsgi_concat4n(uwsgi.sni_dir, sni_dir_len, "/", 1, (char *) servername, servername_len, ".ca", 3);		if (uwsgi_file_exists(sni_dir_cert) && uwsgi_file_exists(sni_dir_key)) {			char *client_ca = NULL;			if (uwsgi_file_exists(sni_dir_client_ca)) {				client_ca = sni_dir_client_ca;			}			usl = uwsgi_ssl_add_sni_item(uwsgi_str((char *)servername), sni_dir_cert, sni_dir_key, uwsgi.sni_dir_ciphers, client_ca);			if (!usl) goto done;			free(sni_dir_cert);			free(sni_dir_key);			free(sni_dir_client_ca);			SSL_set_SSL_CTX(ssl, usl->custom_ptr);			uwsgi_log("[uwsgi-sni for pid %d] added context for %s/n", (int) getpid(), servername);			return SSL_TLSEXT_ERR_OK;		}done:		free(sni_dir_cert);		free(sni_dir_key);		free(sni_dir_client_ca);	}        return SSL_TLSEXT_ERR_NOACK;}
开发者ID:IsCoolEntertainment,项目名称:debpkg_uwsgi,代码行数:52,


示例16: uwsgi_opt_sni

void uwsgi_opt_sni(char *opt, char *value, void *foobar) {        char *client_ca = NULL;        char *v = uwsgi_str(value);        char *space = strchr(v, ' ');        if (!space) {                uwsgi_log("invalid %s syntax, must be sni_key<space>crt,key[,ciphers,client_ca]/n", opt);                exit(1);        }        *space = 0;        char *crt = space+1;        char *key = strchr(crt, ',');        if (!key) {                uwsgi_log("invalid %s syntax, must be sni_key<space>crt,key[,ciphers,client_ca]/n", opt);                exit(1);        }        *key = '/0'; key++;        char *ciphers = strchr(key, ',');        if (ciphers) {                *ciphers = '/0'; ciphers++;                client_ca = strchr(ciphers, ',');                if (client_ca) {                        *client_ca = '/0'; client_ca++;                }        }        if (!uwsgi.ssl_initialized) {                uwsgi_ssl_init();        }        SSL_CTX *ctx = uwsgi_ssl_new_server_context(v, crt, key, ciphers, client_ca);        if (!ctx) {                uwsgi_log("[uwsgi-ssl] DANGER unable to initialize context for /"%s/"/n", v);                free(v);                return;        }#ifdef UWSGI_PCRE        if (!strcmp(opt, "sni-regexp")) {                struct uwsgi_regexp_list *url = uwsgi_regexp_new_list(&uwsgi.sni_regexp, v);                url->custom_ptr = ctx;        }        else {#endif                struct uwsgi_string_list *usl = uwsgi_string_new_list(&uwsgi.sni, v);                usl->custom_ptr = ctx;#ifdef UWSGI_PCRE        }#endif}
开发者ID:IsCoolEntertainment,项目名称:debpkg_uwsgi,代码行数:52,


示例17: uwsgi_glusterfs_connect_do

static void uwsgi_glusterfs_connect_do(struct uwsgi_app *ua) {	char *servers = uwsgi_str(ua->callable);	char *p = strtok(servers, ";");	while(p) {		uwsgi_log("[glusterfs] try connect to %s for mountpoint %.*s on worker %d .../n", p, ua->mountpoint_len, ua->mountpoint, uwsgi.mywid);		if (uwsgi_glusterfs_try(ua, p)) {			goto end;		}		p = strtok(NULL, ";");	}end:	free(servers);}
开发者ID:huzichunjohn,项目名称:uwsgi,代码行数:13,


示例18: PyImport_ImportModule

char *uwsgi_python_get_thread_name(PyObject *thread_id) {	PyObject *threading_module = PyImport_ImportModule("threading");	if (!threading_module) return NULL;		PyObject *threading_dict = PyModule_GetDict(threading_module);	if (!threading_dict) return NULL;	PyObject *threading_enumerate = PyDict_GetItemString(threading_dict, "enumerate");	if (!threading_enumerate) return NULL;	PyObject *threads_list = PyEval_CallObject(threading_enumerate, (PyObject *)NULL);	if (!threads_list) return NULL;	PyObject *threads_list_iter = PyObject_GetIter(threads_list);	if (!threads_list_iter) goto clear;	PyObject *threads_list_next = PyIter_Next(threads_list_iter);	while(threads_list_next) {		PyObject *thread_ident = PyObject_GetAttrString(threads_list_next, "ident");		if (!thread_ident) goto clear2;		if (PyInt_AsLong(thread_ident) == PyInt_AsLong(thread_id)) {			PyObject *thread_name = PyObject_GetAttrString(threads_list_next, "name");			if (!thread_name) goto clear2;#ifdef PYTHREE			PyObject *thread_name_utf8 = PyUnicode_AsUTF8String(thread_name);			if (!thread_name_utf8) goto clear2;			char *name = NULL;			char *tmp_name = PyString_AsString(thread_name_utf8);			if (tmp_name) {				name = uwsgi_str(tmp_name);					Py_DECREF(thread_name_utf8);			}#else			char *name = PyString_AsString(thread_name);#endif			Py_DECREF(threads_list_next);			Py_DECREF(threads_list_iter);			Py_DECREF(threads_list);			return name;		}		Py_DECREF(threads_list_next);		threads_list_next = PyIter_Next(threads_list_iter);	}clear2:	Py_DECREF(threads_list_iter);clear:	Py_DECREF(threads_list);	return NULL;}
开发者ID:Algy,项目名称:uwsgi,代码行数:50,


示例19: uwsgi_alarm_log_add

static int uwsgi_alarm_log_add(char *alarms, char *regexp, int negate) {	struct uwsgi_alarm_log *old_ual = NULL, *ual = uwsgi.alarm_logs;	while (ual) {		old_ual = ual;		ual = ual->next;	}	ual = uwsgi_calloc(sizeof(struct uwsgi_alarm_log));	if (uwsgi_regexp_build(regexp, &ual->pattern, &ual->pattern_extra)) {		return -1;	}	ual->negate = negate;	if (old_ual) {		old_ual->next = ual;	}	else {		uwsgi.alarm_logs = ual;	}	// map instances to the log	char *list = uwsgi_str(alarms);	char *p = strtok(list, ",");	while (p) {		struct uwsgi_alarm_instance *uai = uwsgi_alarm_get_instance(p);		if (!uai) {			free(list);			return -1;		}		struct uwsgi_alarm_ll *old_uall = NULL, *uall = ual->alarms;		while (uall) {			old_uall = uall;			uall = uall->next;		}		uall = uwsgi_calloc(sizeof(struct uwsgi_alarm_ll));		uall->alarm = uai;		if (old_uall) {			old_uall->next = uall;		}		else {			ual->alarms = uall;		}		p = strtok(NULL, ",");	}	free(list);	return 0;}
开发者ID:JuanS,项目名称:uwsgi,代码行数:49,


示例20: uwsgi_opt_https

void uwsgi_opt_https(char *opt, char *value, void *cr) {        struct uwsgi_corerouter *ucr = (struct uwsgi_corerouter *) cr;        char *client_ca = NULL;        // build socket, certificate and key file        char *sock = uwsgi_str(value);        char *crt = strchr(sock, ',');        if (!crt) {                uwsgi_log("invalid https syntax must be socket,crt,key/n");                exit(1);        }        *crt = '/0'; crt++;        char *key = strchr(crt, ',');        if (!key) {                uwsgi_log("invalid https syntax must be socket,crt,key/n");                exit(1);        }        *key = '/0'; key++;        char *ciphers = strchr(key, ',');        if (ciphers) {                *ciphers = '/0'; ciphers++;                client_ca = strchr(ciphers, ',');                if (client_ca) {                        *client_ca = '/0'; client_ca++;                }        }        struct uwsgi_gateway_socket *ugs = uwsgi_new_gateway_socket(sock, ucr->name);        // ok we have the socket, initialize ssl if required        if (!uwsgi.ssl_initialized) {                uwsgi_ssl_init();        }        // initialize ssl context	char *name = uhttp.https_session_context;	if (!name) {		name = uwsgi_concat3(ucr->short_name, "-", ugs->name);	}        ugs->ctx = uwsgi_ssl_new_server_context(name, crt, key, ciphers, client_ca);	if (!ugs->ctx) {		exit(1);	}        // set the ssl mode        ugs->mode = UWSGI_HTTP_SSL;        ucr->has_sockets++;}
开发者ID:wangmingfu,项目名称:G7Platform,代码行数:49,


示例21: carbon_post_init

void carbon_post_init() {	int i;	struct uwsgi_string_list *usl = u_carbon.servers;	if (!uwsgi.sockets) return;	if (!u_carbon.servers) return;	while(usl) {		struct carbon_server_list *u_server = uwsgi_calloc(sizeof(struct carbon_server_list));		u_server->value = usl->value;		u_server->healthy = 1;		u_server->errors = 0;		if (u_carbon.servers_data) {			u_server->next = u_carbon.servers_data;		}		u_carbon.servers_data = u_server;		uwsgi_log("[carbon] added server %s/n", usl->value);		usl = usl->next;	}	if (u_carbon.freq < 1) u_carbon.freq = 60;	if (u_carbon.timeout < 1) u_carbon.timeout = 3;	if (u_carbon.max_retries <= 0) u_carbon.max_retries = 1;	if (u_carbon.retry_delay <= 0) u_carbon.retry_delay = 7;	if (!u_carbon.id) { 		u_carbon.id = uwsgi_str(uwsgi.sockets->name);		for(i=0;i<(int)strlen(u_carbon.id);i++) {			if (u_carbon.id[i] == '.') u_carbon.id[i] = '_';		}	}	if (!u_carbon.last_busyness_values) {		u_carbon.last_busyness_values = uwsgi_calloc(sizeof(unsigned long long) * uwsgi.numproc);	}	if (!u_carbon.current_busyness_values) {		u_carbon.current_busyness_values = uwsgi_calloc(sizeof(unsigned long long) * uwsgi.numproc);	}	// set next update to now()+retry_delay, this way we will have first flush just after start	u_carbon.last_update = uwsgi_now() - u_carbon.freq + u_carbon.retry_delay;	uwsgi_log("[carbon] carbon plugin started, %is frequency, %is timeout, max retries %i, retry delay %is/n",		u_carbon.freq, u_carbon.timeout, u_carbon.max_retries, u_carbon.retry_delay);}
开发者ID:dbhattar,项目名称:uwsgi,代码行数:47,


示例22: router_xmldir_register

static void router_xmldir_register(void) {	char *codeset;	uwsgi_register_router("xmldir", uwsgi_router_xmldir);	setlocale(LC_ALL, "");	if ((codeset = nl_langinfo(CODESET)) == '/0') {		codeset = "ASCII";	}	conf.codeset = uwsgi_str(codeset);	if (conf.codeset == NULL) {		uwsgi_error("strdup()");		exit(1);	}}
开发者ID:Algy,项目名称:uwsgi,代码行数:17,


示例23: uwsgi_syslog_logger

ssize_t uwsgi_syslog_logger(struct uwsgi_logger *ul, char *message, size_t len) {	char *syslog_opts;	int facility = LOG_DAEMON;	if (!ul->configured) {        	setlinebuf(stderr);        	if (ul->arg == NULL) {                	syslog_opts = "uwsgi";        	}		else {			char *colon = strchr(ul->arg, ',');			if (colon) {				struct uwsgi_syslog_facility *fn = usf;				while(fn->name) {					if (!strcmp(fn->name, colon+1)) {						facility = fn->facility;						break;					}					fn++;				}				syslog_opts = uwsgi_str(ul->arg);				syslog_opts[colon-ul->arg] = 0;			}			else {				syslog_opts = ul->arg;			}		}        	openlog(syslog_opts, 0, facility);		ul->configured = 1;	}#ifdef __APPLE__	syslog(LOG_NOTICE, "%.*s", (int) len, message);#else	syslog(LOG_INFO, "%.*s", (int) len, message);#endif	return 0;}
开发者ID:Algy,项目名称:uwsgi,代码行数:44,


示例24: uwsgi_opt_http_to_https

void uwsgi_opt_http_to_https(char *opt, char *value, void *cr) {        struct uwsgi_corerouter *ucr = (struct uwsgi_corerouter *) cr;        char *sock = uwsgi_str(value);        char *port = strchr(sock, ',');        if (port) {                *port = '/0';                port++;        }        struct uwsgi_gateway_socket *ugs = uwsgi_new_gateway_socket(sock, ucr->name);        // set context to the port        ugs->ctx = port;        // force SSL mode        ugs->mode = UWSGI_HTTP_FORCE_SSL;        ucr->has_sockets++;}
开发者ID:StephenPierce,项目名称:uwsgi,代码行数:19,


示例25: uwsgi_opt_add_route

void uwsgi_opt_add_route(char *opt, char *value, void *foobar) {	struct uwsgi_route *old_ur = NULL,*ur = uwsgi.routes;	uint64_t pos = 0;	while(ur) {		old_ur = ur;		ur = ur->next;		pos++;	}	ur = uwsgi_calloc(sizeof(struct uwsgi_route));	if (old_ur) {		old_ur->next = ur;	}	else {		uwsgi.routes = ur;	}	ur->pos = pos;	// is it a label ?	if (foobar == NULL) {		ur->label = value;		ur->label_len = strlen(value);		return;	}	char *route = uwsgi_str(value);	char *space = strchr(route, ' ');	if (!space) {		uwsgi_log("invalid route syntax/n");		exit(1);	}	*space = 0;	if (!strcmp(foobar, "http_host")) {		ur->subject = offsetof(struct wsgi_request, host);		ur->subject_len = offsetof(struct wsgi_request, host_len);	}
开发者ID:kihon10,项目名称:uwsgi,代码行数:40,


示例26: carbon_post_init

void carbon_post_init() {	int i;	struct uwsgi_string_list *usl = u_carbon.servers;	if (!uwsgi.sockets) return;	if (!u_carbon.servers) return;	while(usl) {		uwsgi_log("added carbon server %s/n", usl->value);		usl = usl->next;	}	if (u_carbon.freq < 1) u_carbon.freq = 60;	if (u_carbon.timeout < 1) u_carbon.timeout = 3;	if (!u_carbon.id) { 		u_carbon.id = uwsgi_str(uwsgi.sockets->name);		for(i=0;i<(int)strlen(u_carbon.id);i++) {			if (u_carbon.id[i] == '.') u_carbon.id[i] = '_';		}	}}
开发者ID:bertil-april,项目名称:uwsgi,代码行数:23,


示例27: uwsgi_stats_pusher_setup

void uwsgi_stats_pusher_setup() {	struct uwsgi_string_list *usl = uwsgi.requested_stats_pushers;	while (usl) {		char *ssp = uwsgi_str(usl->value);		struct uwsgi_stats_pusher *pusher = NULL;		char *colon = strchr(ssp, ':');		if (colon) {			*colon = 0;		}		pusher = uwsgi_stats_pusher_get(ssp);		if (!pusher) {			uwsgi_log("unable to find /"%s/" stats_pusher/n", ssp);			exit(1);		}		char *arg = NULL;		if (colon) {			arg = colon + 1;			*colon = ':';		}		uwsgi_stats_pusher_add(pusher, arg);		usl = usl->next;	}}
开发者ID:arteme,项目名称:uwsgi,代码行数:23,


示例28: sizeof

char *uwsgi_getsockname(int fd) {	socklen_t socket_type_len = sizeof(struct sockaddr_un);	union uwsgi_sockaddr usa;	union uwsgi_sockaddr_ptr gsa;	char computed_port[6];	char ipv4a[INET_ADDRSTRLEN + 1];	gsa.sa = (struct sockaddr *) &usa;	if (!getsockname(fd, gsa.sa, &socket_type_len)) {		if (gsa.sa->sa_family == AF_UNIX) {			if (usa.sa_un.sun_path[0] == 0) {				return uwsgi_concat2("@", usa.sa_un.sun_path + 1);			}			else {				return uwsgi_str(usa.sa_un.sun_path);			}		}		else {			memset(ipv4a, 0, INET_ADDRSTRLEN + 1);			memset(computed_port, 0, 6);			if (snprintf(computed_port, 6, "%d", ntohs(gsa.sa_in->sin_port)) > 0) {				if (inet_ntop(AF_INET, (const void *) &gsa.sa_in->sin_addr.s_addr, ipv4a, INET_ADDRSTRLEN)) {					if (!strcmp("0.0.0.0", ipv4a)) {						return uwsgi_concat2(":", computed_port);					}					else {						return uwsgi_concat3(ipv4a, ":", computed_port);					}				}			}		}	}	return NULL;}
开发者ID:chiwong,项目名称:flask_quickstart,代码行数:36,


示例29: uwsgi_jwsgi_add_request_item

static int uwsgi_jwsgi_add_request_item(jobject hm, char *key, uint16_t key_len, char *value, uint16_t value_len) {	jobject j_key = uwsgi_jvm_str(key, key_len);	if (!j_key) return -1;	jobject j_value = NULL;	// avoid clobbering vars	if (value_len > 0) {		j_value = uwsgi_jvm_str(value, value_len);	}	else {		char *tmp = uwsgi_str("");		j_value = uwsgi_jvm_str(tmp, 0);		free(tmp);	}	if (!j_value) {		uwsgi_jvm_local_unref(j_value);		return -1;	}	int ret = uwsgi_jvm_hashmap_put(hm, j_key, j_value);	uwsgi_jvm_local_unref(j_key);	uwsgi_jvm_local_unref(j_value);	return ret;}
开发者ID:Algy,项目名称:uwsgi,代码行数:24,


示例30: uwsgi_opt_corerouter_cs

void uwsgi_opt_corerouter_cs(char *opt, char *value, void *cr) {	struct uwsgi_corerouter *ucr = (struct uwsgi_corerouter *) cr;        char *cs = uwsgi_str(value);               char *cs_code = strchr(cs, ':');                if (!cs_code) {                        uwsgi_log("invalid code_string option/n");                        exit(1);                }                cs_code[0] = 0;                char *cs_func = strchr(cs_code + 1, ':');                if (!cs_func) {                        uwsgi_log("invalid code_string option/n");                        exit(1);                }                cs_func[0] = 0;                ucr->code_string_modifier1 = atoi(cs);                ucr->code_string_code = cs_code + 1;                ucr->code_string_function = cs_func + 1;	ucr->has_backends++;}
开发者ID:CommerceRack,项目名称:uwsgi,代码行数:24,



注:本文中的uwsgi_str函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ uxQueueMessagesWaiting函数代码示例
C++ uwsgi_now函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。