aboutsummaryrefslogtreecommitdiffstats
path: root/res/res_agi.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-07-30 19:18:24 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-07-30 19:18:24 +0000
commita594443c3856860ca14d86e56f06f2cb087acd90 (patch)
tree8d237c14037a655d642a3c63dd7a3400067516e6 /res/res_agi.c
parent2619bdce60f84002571a609cefb4238dd5f43c5f (diff)
Merged revisions 77788 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r77788 | russell | 2007-07-30 14:13:31 -0500 (Mon, 30 Jul 2007) | 10 lines (closes issue #10279) Reported by: seanbright Patches: res_agi.carefulwrite.1.4.07252007.patch uploaded by seanbright (license 71) res_agi.carefulwrite.trunk.07252007.patch uploaded by seanbright (license 71) Allow the "agi_network: yes" line to be printed out in the AGI debug output. Also, allow partial writes to be handled when writing out this line just like it is for all of the others. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@77789 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res/res_agi.c')
-rw-r--r--res/res_agi.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/res/res_agi.c b/res/res_agi.c
index 003cefac5..023d8d131 100644
--- a/res/res_agi.c
+++ b/res/res_agi.c
@@ -115,7 +115,7 @@ enum agi_result {
static agi_command *find_command(char *cmds[], int exact);
-void ast_agi_fdprintf(int fd, char *fmt, ...)
+int ast_agi_fdprintf(int fd, char *fmt, ...)
{
char *stuff;
int res = 0;
@@ -127,13 +127,15 @@ void ast_agi_fdprintf(int fd, char *fmt, ...)
if (res == -1) {
ast_log(LOG_ERROR, "Out of memory\n");
- return;
+ return -1;
}
if (agidebug)
ast_verbose("AGI Tx >> %s", stuff);
ast_carefulwrite(fd, stuff, strlen(stuff), 100);
ast_free(stuff);
+
+ return res;
}
/* launch_netscript: The fastagi handler.
@@ -205,8 +207,8 @@ static enum agi_result launch_netscript(char *agiurl, char *argv[], int *fds, in
return AGI_RESULT_FAILURE;
}
}
- /* XXX in theory should check for partial writes... */
- while (write(s, "agi_network: yes\n", strlen("agi_network: yes\n")) < 0) {
+
+ if (ast_agi_fdprintf(s, "agi_network: yes\n") < 0) {
if (errno != EINTR) {
ast_log(LOG_WARNING, "Connect to '%s' failed: %s\n", agiurl, strerror(errno));
close(s);