summaryrefslogtreecommitdiff
path: root/source4/web_server/web_server.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-06-19 04:21:45 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:18:30 -0500
commit822498b7f536e4c4e552c524b14d6cb691ec5b62 (patch)
tree35b8a7423c7e2454e744e9283d9fa3cbccac6706 /source4/web_server/web_server.c
parente485e80b512f17aba0b6b1dd5acc3f738f4189c1 (diff)
downloadsamba-822498b7f536e4c4e552c524b14d6cb691ec5b62.tar.gz
samba-822498b7f536e4c4e552c524b14d6cb691ec5b62.tar.bz2
samba-822498b7f536e4c4e552c524b14d6cb691ec5b62.zip
r7744: converted the web server to use the lib/tls/ generic tls code
(This used to be commit 023fc567badba38b87895ea73515b2ce0b703a8c)
Diffstat (limited to 'source4/web_server/web_server.c')
-rw-r--r--source4/web_server/web_server.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/source4/web_server/web_server.c b/source4/web_server/web_server.c
index faa30fc55f..e54c0b6e9f 100644
--- a/source4/web_server/web_server.c
+++ b/source4/web_server/web_server.c
@@ -26,6 +26,7 @@
#include "web_server/web_server.h"
#include "lib/events/events.h"
#include "system/filesys.h"
+#include "lib/tls/tls.h"
/* don't allow connections to hang around forever */
#define HTTP_TIMEOUT 30
@@ -68,7 +69,7 @@ static void websrv_recv(struct stream_connection *conn, uint16_t flags)
DATA_BLOB b;
/* not the most efficient http parser ever, but good enough for us */
- status = tls_socket_recv(web, buf, sizeof(buf), &nread);
+ status = tls_socket_recv(web->tls, buf, sizeof(buf), &nread);
if (NT_STATUS_IS_ERR(status)) goto failed;
if (!NT_STATUS_IS_OK(status)) return;
@@ -128,7 +129,7 @@ static void websrv_send(struct stream_connection *conn, uint16_t flags)
b.data += web->output.nsent;
b.length -= web->output.nsent;
- status = tls_socket_send(web, &b, &nsent);
+ status = tls_socket_send(web->tls, &b, &nsent);
if (NT_STATUS_IS_ERR(status)) {
stream_terminate_connection(web->conn, "socket_send: failed");
return;
@@ -161,6 +162,8 @@ static void websrv_send(struct stream_connection *conn, uint16_t flags)
if (web->output.content.length == web->output.nsent &&
web->output.fd == -1) {
+ talloc_free(web->tls);
+ web->tls = NULL;
stream_terminate_connection(web->conn, NULL);
}
}
@@ -171,8 +174,8 @@ static void websrv_send(struct stream_connection *conn, uint16_t flags)
static void websrv_accept(struct stream_connection *conn)
{
struct task_server *task = talloc_get_type(conn->private, struct task_server);
+ struct esp_data *edata = talloc_get_type(task->private, struct esp_data);
struct websrv_context *web;
- NTSTATUS status;
web = talloc_zero(conn, struct websrv_context);
if (web == NULL) goto failed;
@@ -187,8 +190,9 @@ static void websrv_accept(struct stream_connection *conn)
timeval_current_ofs(HTTP_TIMEOUT, 0),
websrv_timeout, web);
- status = tls_init_connection(web);
- if (!NT_STATUS_IS_OK(status)) goto failed;
+ web->tls = tls_init_server(edata->tls_params, conn->socket,
+ conn->event.fde, "GPHO");
+ if (web->tls == NULL) goto failed;
return;
@@ -241,8 +245,6 @@ static void websrv_task_init(struct task_server *task)
status = http_setup_esp(task);
if (!NT_STATUS_IS_OK(status)) goto failed;
- tls_initialise(task);
-
return;
failed: