aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2006-04-03 18:38:28 +0000
committeroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2006-04-03 18:38:28 +0000
commit22b2e50bf4ef72ec04bd56c86fd29219cf42fce2 (patch)
treeafb4584869389fffd0515f15a9323ea83c40b2cd
parentc73aef25da863bbf6806117358870aefdcf19369 (diff)
- Doxygen additions
- Formatting fixes (read guidelines :-) ) - Removing compilation warnings git-svn-id: http://svn.digium.com/svn/asterisk/trunk@17105 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--http.c24
-rw-r--r--include/asterisk/doxyref.h10
-rw-r--r--include/asterisk/http.h15
-rw-r--r--manager.c47
4 files changed, 59 insertions, 37 deletions
diff --git a/http.c b/http.c
index c52fb206c..8341d633e 100644
--- a/http.c
+++ b/http.c
@@ -18,10 +18,13 @@
/*!
* \file
- * \brief http server
+ * \brief http server for AMI access
*
+ * \author Mark Spencer <markster@digium.com>
* This program implements a tiny http server supporting the "get" method
* only and was inspired by micro-httpd by Jef Poskanzer
+ *
+ * \ref AstHTTP - AMI over the http protocol
*/
#include <sys/types.h>
@@ -41,6 +44,9 @@
#include <pthread.h>
#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+
#include "asterisk/cli.h"
#include "asterisk/http.h"
#include "asterisk/utils.h"
@@ -67,7 +73,7 @@ static int prefix_len = 0;
static struct sockaddr_in oldsin;
static int enablestatic=0;
-/* Limit the kinds of files we're willing to serve up */
+/*! \brief Limit the kinds of files we're willing to serve up */
static struct {
char *ext;
char *mtype;
@@ -360,18 +366,21 @@ static void *ast_httpd_helper_thread(void *data)
if (fgets(buf, sizeof(buf), ser->f)) {
/* Skip method */
uri = buf;
- while(*uri && (*uri > 32)) uri++;
+ while(*uri && (*uri > 32))
+ uri++;
if (*uri) {
*uri = '\0';
uri++;
}
/* Skip white space */
- while (*uri && (*uri < 33)) uri++;
+ while (*uri && (*uri < 33))
+ uri++;
if (*uri) {
c = uri;
- while (*c && (*c > 32)) c++;
+ while (*c && (*c > 32))
+ c++;
if (*c) {
*c = '\0';
}
@@ -492,7 +501,7 @@ static void *http_root(void *data)
return NULL;
}
-char *ast_http_setcookie(const char *var, const char *val, int expires, char *buf, int buflen)
+char *ast_http_setcookie(const char *var, const char *val, int expires, char *buf, size_t buflen)
{
char *c;
c = buf;
@@ -575,6 +584,7 @@ static int __ast_http_load(int reload)
struct hostent *hp;
struct ast_hostent ahp;
char newprefix[MAX_PREFIX];
+
memset(&sin, 0, sizeof(sin));
sin.sin_port = 8088;
strcpy(newprefix, DEFAULT_PREFIX);
@@ -654,7 +664,7 @@ static char show_http_help[] =
static struct ast_cli_entry http_cli[] = {
{ { "show", "http", NULL }, handle_show_http,
- "Display HTTP status", show_http_help },
+ "Display HTTP server status", show_http_help },
};
int ast_http_init(void)
diff --git a/include/asterisk/doxyref.h b/include/asterisk/doxyref.h
index f46e621bb..1ada58c60 100644
--- a/include/asterisk/doxyref.h
+++ b/include/asterisk/doxyref.h
@@ -37,6 +37,7 @@
* \arg \ref AstREADME
* \arg \ref AstVar
* \arg \ref AstENUM : The IETF way to redirect from phone numbers to VoIP calls
+ * \arg \ref AstHTTP
* \arg \ref ConfigFiles
* \arg \ref SoundFiles included in the Asterisk distribution
* \arg \ref AstCREDITS : A Thank You to contributors
@@ -446,3 +447,12 @@ DUNDi is not itself a Voice-over IP signaling or media protocol. Instead, it pub
* \par See also
* \arg \ref codecs
*/
+
+/*! \page AstHTTP AMI over HTTP support
+ * The http.c file includes support for manager transactions over
+ * http.
+ * \section ami AMI - The manager Interface
+ * \arg \link Config_ami Configuration file \endlink
+ * \verbinclude http.txt
+ */
+
diff --git a/include/asterisk/http.h b/include/asterisk/http.h
index 9156db0c4..055116324 100644
--- a/include/asterisk/http.h
+++ b/include/asterisk/http.h
@@ -16,10 +16,6 @@
* at the top of the source tree.
*/
-/*
- * DNS SRV record support
- */
-
#ifndef _ASTERISK_HTTP_H
#define _ASTERISK_HTTP_H
@@ -30,9 +26,10 @@
\brief Support for Private Asterisk HTTP Servers.
\note Note: The Asterisk HTTP servers are extremely simple and minimal and
only support the "GET" method.
+ \author Mark Spencer <markster@digium.com>
*/
-/* HTTP Callbacks take the socket, the method and the path as arguments and should
+/*! \brief HTTP Callbacks take the socket, the method and the path as arguments and should
return the content, allocated with malloc(). Status should be changed to reflect
the status of the request if it isn't 200 and title may be set to a malloc()'d string
to an appropriate title for non-200 responses. Content length may also be specified.
@@ -49,16 +46,16 @@ struct ast_http_uri {
ast_http_callback callback;
};
-/* Link into the Asterisk HTTP server */
+/*! \brief Link into the Asterisk HTTP server */
int ast_http_uri_link(struct ast_http_uri *urihandler);
-/* Return a malloc()'d string containing an HTTP error message */
+/*! \brief Return a malloc()'d string containing an HTTP error message */
char *ast_http_error(int status, const char *title, const char *extra_header, const char *text);
-/* Destroy an HTTP server */
+/*! \brief Destroy an HTTP server */
void ast_http_uri_unlink(struct ast_http_uri *urihandler);
-char *ast_http_setcookie(const char *var, const char *val, int expires, char *buf, int buflen);
+char *ast_http_setcookie(const char *var, const char *val, int expires, char *buf, size_t buflen);
int ast_http_init(void);
int ast_http_reload(void);
diff --git a/manager.c b/manager.c
index 3a2be6d37..d66cebf82 100644
--- a/manager.c
+++ b/manager.c
@@ -237,7 +237,7 @@ static char *complete_show_mancmd(const char *line, const char *word, int pos, i
return ret;
}
-static void xml_copy_escape(char **dst, int *maxlen, const char *src, int lower)
+static void xml_copy_escape(char **dst, size_t *maxlen, const char *src, int lower)
{
while (*src && (*maxlen > 6)) {
switch(*src) {
@@ -273,6 +273,7 @@ static void xml_copy_escape(char **dst, int *maxlen, const char *src, int lower)
src++;
}
}
+
static char *xml_translate(char *in, struct ast_variable *vars)
{
struct ast_variable *v;
@@ -281,12 +282,13 @@ static char *xml_translate(char *in, struct ast_variable *vars)
char *objtype=NULL;
int colons = 0;
int breaks = 0;
- int len;
+ size_t len;
int count = 1;
int escaped = 0;
int inobj = 0;
int x;
v = vars;
+
while(v) {
if (!dest && !strcasecmp(v->name, "ajaxdest"))
dest = v->value;
@@ -298,7 +300,7 @@ static char *xml_translate(char *in, struct ast_variable *vars)
dest = "unknown";
if (!objtype)
objtype = "generic";
- for (x=0;in[x];x++) {
+ for (x=0; in[x]; x++) {
if (in[x] == ':')
colons++;
else if (in[x] == '\n')
@@ -306,14 +308,15 @@ static char *xml_translate(char *in, struct ast_variable *vars)
else if (strchr("&\"<>", in[x]))
escaped++;
}
- len = strlen(in) + colons * 5 + breaks * (40 + strlen(dest) + strlen(objtype)) + escaped * 10; /* foo="bar", "<response type=\"object\" id=\"dest\"", "&amp;" */
+ len = (size_t) (strlen(in) + colons * 5 + breaks * (40 + strlen(dest) + strlen(objtype)) + escaped * 10); /* foo="bar", "<response type=\"object\" id=\"dest\"", "&amp;" */
out = malloc(len);
if (!out)
return 0;
tmp = out;
while(*in) {
var = in;
- while (*in && (*in >= 32)) in++;
+ while (*in && (*in >= 32))
+ in++;
if (*in) {
if ((count > 3) && inobj) {
ast_build_string(&tmp, &len, " /></response>\n");
@@ -353,10 +356,11 @@ static char *html_translate(char *in)
int x;
int colons = 0;
int breaks = 0;
- int len;
+ size_t len;
int count=1;
char *tmp, *var, *val, *out;
- for (x=0;in[x];x++) {
+
+ for (x=0; in[x]; x++) {
if (in[x] == ':')
colons++;
if (in[x] == '\n')
@@ -369,7 +373,8 @@ static char *html_translate(char *in)
tmp = out;
while(*in) {
var = in;
- while (*in && (*in >= 32)) in++;
+ while (*in && (*in >= 32))
+ in++;
if (*in) {
if ((count % 4) == 0){
ast_build_string(&tmp, &len, "<tr><td colspan=\"2\"><hr></td></tr>\r\n");
@@ -405,20 +410,20 @@ void astman_append(struct mansession *s, const char *fmt, ...)
va_end(ap);
if (res == -1) {
ast_log(LOG_ERROR, "Memory allocation failure\n");
- } else {
- if (s->fd > -1)
- ast_carefulwrite(s->fd, stuff, strlen(stuff), s->writetimeout);
- else {
- tmp = realloc(s->outputstr, (s->outputstr ? strlen(s->outputstr) : 0) + strlen(stuff) + 1);
- if (tmp) {
- if (!s->outputstr)
- tmp[0] = '\0';
- s->outputstr = tmp;
- strcat(s->outputstr, stuff);
- }
+ return;
+ }
+ if (s->fd > -1)
+ ast_carefulwrite(s->fd, stuff, strlen(stuff), s->writetimeout);
+ else {
+ tmp = realloc(s->outputstr, (s->outputstr ? strlen(s->outputstr) : 0) + strlen(stuff) + 1);
+ if (tmp) {
+ if (!s->outputstr)
+ tmp[0] = '\0';
+ s->outputstr = tmp;
+ strcat(s->outputstr, stuff);
}
- free(stuff);
}
+ free(stuff);
}
static int handle_showmancmd(int fd, int argc, char *argv[])
@@ -2139,7 +2144,7 @@ static char *generic_http_callback(int format, struct sockaddr_in *requestor, co
char workspace[256];
char cookie[128];
char iabuf[INET_ADDRSTRLEN];
- int len = sizeof(workspace);
+ size_t len = sizeof(workspace);
int blastaway = 0;
char *c = workspace;
char *retval=NULL;