summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/urweb/urweb_cpp.h3
-rw-r--r--src/c/http.c2
-rw-r--r--src/c/urweb.c13
3 files changed, 18 insertions, 0 deletions
diff --git a/include/urweb/urweb_cpp.h b/include/urweb/urweb_cpp.h
index d83b2cbb..637cddfc 100644
--- a/include/urweb/urweb_cpp.h
+++ b/include/urweb/urweb_cpp.h
@@ -393,4 +393,7 @@ uw_Basis_string uw_Basis_blessData(struct uw_context *, uw_Basis_string);
extern const char uw_begin_xhtml[], uw_begin_html5[];
+int uw_remoteSock(struct uw_context *);
+void uw_set_remoteSock(struct uw_context *, int sock);
+
#endif
diff --git a/src/c/http.c b/src/c/http.c
index 9651a216..e6c7b1af 100644
--- a/src/c/http.c
+++ b/src/c/http.c
@@ -89,6 +89,8 @@ static void *worker(void *data) {
sock = uw_dequeue();
}
+ uw_set_remoteSock(ctx, sock);
+
qprintf("Handling connection with thread #%d.\n", me);
while (1) {
diff --git a/src/c/urweb.c b/src/c/urweb.c
index 09514afa..1f2c8b3c 100644
--- a/src/c/urweb.c
+++ b/src/c/urweb.c
@@ -476,6 +476,8 @@ struct uw_context {
char *output_buffer;
size_t output_buffer_size;
+
+ int remoteSock;
};
size_t uw_headers_max = SIZE_MAX;
@@ -559,6 +561,8 @@ uw_context uw_init(int id, uw_loggers *lg) {
ctx->output_buffer = malloc(1);
ctx->output_buffer_size = 1;
+ ctx->remoteSock = -1;
+
return ctx;
}
@@ -646,6 +650,7 @@ void uw_reset_keep_error_message(uw_context ctx) {
ctx->amInitializing = 0;
ctx->usedSig = 0;
ctx->needsResig = 0;
+ ctx->remoteSock = -1;
}
void uw_reset_keep_request(uw_context ctx) {
@@ -4458,3 +4463,11 @@ uw_Basis_string uw_Basis_blessData(uw_context ctx, uw_Basis_string s) {
return s;
}
+
+int uw_remoteSock(uw_context ctx) {
+ return ctx->remoteSock;
+}
+
+void uw_set_remoteSock(uw_context ctx, int sock) {
+ ctx->remoteSock = sock;
+}