mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	open a temporary file to receive the output from cli commands
invoked through the http interface. It is not terribly efficient but better than no output at all. Todo: use a configurable /tmp directory instead of a hardwired one. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45330 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -1172,7 +1172,7 @@ static int action_waitevent(struct mansession *s, struct message *m) | ||||
| 		ast_mutex_unlock(&s->__lock); | ||||
| 		if (needexit) | ||||
| 			break; | ||||
| 		if (s->fd > 0) { | ||||
| 		if (!s->inuse && s->fd > 0) { | ||||
| 			if (ast_wait_for_input(s->fd, 1000)) | ||||
| 				break; | ||||
| 		} else { | ||||
| @@ -2445,6 +2445,11 @@ static char *generic_http_callback(int format, struct sockaddr_in *requestor, co | ||||
| 			ast_build_string(&c, &len, "<body bgcolor=\"#ffffff\"><table align=center bgcolor=\"#f1f1f1\" width=\"500\">\r\n"); | ||||
| 			ast_build_string(&c, &len, "<tr><td colspan=\"2\" bgcolor=\"#f1f1ff\"><h1>  Manager Tester</h1></td></tr>\r\n"); | ||||
| 		} | ||||
| 		{ | ||||
| 			char template[32]; | ||||
| 			ast_copy_string(template, "/tmp/ast-http-XXXXXX", sizeof(template)); | ||||
| 			s->fd = mkstemp(template); | ||||
| 		} | ||||
| 		if (process_message(s, &m)) { | ||||
| 			if (s->authenticated) { | ||||
| 				if (option_verbose > 1) { | ||||
| @@ -2461,6 +2466,25 @@ static char *generic_http_callback(int format, struct sockaddr_in *requestor, co | ||||
| 			} | ||||
| 			s->needdestroy = 1; | ||||
| 		} | ||||
| 		if (s->fd > -1) {	/* have temporary output */ | ||||
| 			char *buf; | ||||
| 			off_t len = lseek(s->fd, 0, SEEK_END);	/* how many chars available */ | ||||
|  | ||||
| 			if (len > 0 && (buf = ast_calloc(1, len+1))) { | ||||
| 				if (!s->outputstr) | ||||
| 					s->outputstr = ast_calloc(1, sizeof(*s->outputstr)); | ||||
| 				if (s->outputstr) { | ||||
| 					lseek(s->fd, 0, SEEK_SET); | ||||
| 					read(s->fd, buf, len); | ||||
| 					ast_verbose("--- fd %d has %d bytes ---\n%s\n---\n", s->fd, (int)len, buf); | ||||
| 					ast_dynamic_str_append(&s->outputstr, 0, "%s", buf); | ||||
| 				} | ||||
| 				free(buf); | ||||
| 			} | ||||
| 			close(s->fd); | ||||
| 			s->fd = -1; | ||||
| 		} | ||||
|  | ||||
| 		if (s->outputstr) { | ||||
| 			char *tmp; | ||||
| 			if (format == FORMAT_XML) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user