List/FastCGI cleanup

This commit is contained in:
2023-01-11 00:33:13 +01:00
parent 8b92d4ff91
commit 7699583c5f
3 changed files with 7 additions and 9 deletions

View File

@ -6,6 +6,7 @@
* @date 2020-12-26 * @date 2020-12-26
*/ */
#include "../defs.h"
#include "fastcgi.h" #include "fastcgi.h"
#include "utils.h" #include "utils.h"
#include "compress.h" #include "compress.h"
@ -16,13 +17,11 @@
#include <sys/socket.h> #include <sys/socket.h>
#include <string.h> #include <string.h>
char *fastcgi_add_param(char *buf, const char *key, const char *value) { char *fastcgi_add_param(char *buf, const char *key, const char *value) {
char *ptr = buf; char *ptr = buf;
unsigned long key_len = strlen(key); unsigned long key_len = strlen(key);
unsigned long val_len = strlen(value); unsigned long val_len = strlen(value);
if (key_len <= 127) { if (key_len <= 127) {
ptr[0] = (char) (key_len & 0x7F); ptr[0] = (char) (key_len & 0x7F);
ptr++; ptr++;
@ -44,9 +43,9 @@ char *fastcgi_add_param(char *buf, const char *key, const char *value) {
ptr += 4; ptr += 4;
} }
strcpy(ptr, key); memcpy(ptr, key, key_len);
ptr += key_len; ptr += key_len;
strcpy(ptr, value); memcpy(ptr, value, val_len);
ptr += val_len; ptr += val_len;
return ptr; return ptr;
@ -117,13 +116,13 @@ int fastcgi_init(fastcgi_cnx_t *conn, int mode, unsigned int req_num, const sock
socklen_t len = sizeof(addr_storage); socklen_t len = sizeof(addr_storage);
getsockname(client->socket, (struct sockaddr *) &addr_storage, &len); getsockname(client->socket, (struct sockaddr *) &addr_storage, &len);
addr = (struct sockaddr_in6 *) &addr_storage; addr = (struct sockaddr_in6 *) &addr_storage;
sprintf(buf0, "%i", addr->sin6_port); sprintf(buf0, "%i", ntohs(addr->sin6_port));
param_ptr = fastcgi_add_param(param_ptr, "SERVER_PORT", buf0); param_ptr = fastcgi_add_param(param_ptr, "SERVER_PORT", buf0);
len = sizeof(addr_storage); len = sizeof(addr_storage);
getpeername(client->socket, (struct sockaddr *) &addr_storage, &len); getpeername(client->socket, (struct sockaddr *) &addr_storage, &len);
addr = (struct sockaddr_in6 *) &addr_storage; addr = (struct sockaddr_in6 *) &addr_storage;
sprintf(buf0, "%i", addr->sin6_port); sprintf(buf0, "%i", ntohs(addr->sin6_port));
param_ptr = fastcgi_add_param(param_ptr, "REMOTE_PORT", buf0); param_ptr = fastcgi_add_param(param_ptr, "REMOTE_PORT", buf0);
param_ptr = fastcgi_add_param(param_ptr, "REMOTE_ADDR", conn->r_addr); param_ptr = fastcgi_add_param(param_ptr, "REMOTE_ADDR", conn->r_addr);
param_ptr = fastcgi_add_param(param_ptr, "REMOTE_HOST", conn->r_host != NULL ? conn->r_host : conn->r_addr); param_ptr = fastcgi_add_param(param_ptr, "REMOTE_HOST", conn->r_host != NULL ? conn->r_host : conn->r_addr);
@ -153,7 +152,7 @@ int fastcgi_init(fastcgi_cnx_t *conn, int mode, unsigned int req_num, const sock
// param_ptr = fastcgi_add_param(param_ptr, "REMOTE_INFO", conn->ctx->geoip); // param_ptr = fastcgi_add_param(param_ptr, "REMOTE_INFO", conn->ctx->geoip);
//} //}
for (int i = 0; i < list_size(&req->hdr); i++) { for (int i = 0; i < list_size(req->hdr.fields); i++) {
const http_field *f = &req->hdr.fields[i]; const http_field *f = &req->hdr.fields[i];
const char *name = http_field_get_name(f); const char *name = http_field_get_name(f);
char *ptr = buf0; char *ptr = buf0;

View File

@ -52,7 +52,6 @@
#define HTTP_ERROR_HEADER_MALFORMED 5 #define HTTP_ERROR_HEADER_MALFORMED 5
#define HTTP_ERROR_INVALID_VERSION 6 #define HTTP_ERROR_INVALID_VERSION 6
#define HTTP_ERROR_URI_TOO_LONG 7 #define HTTP_ERROR_URI_TOO_LONG 7
#define HTTP_ERROR_
#ifndef SERVER_STR #ifndef SERVER_STR
# define SERVER_STR "sesimos" # define SERVER_STR "sesimos"

View File

@ -52,7 +52,7 @@ static int local_handler(client_ctx_t *ctx) {
ctx->msg_buf_ptr = malloc(4096); ctx->msg_buf_ptr = malloc(4096);
ctx->msg_buf = ctx->msg_buf_ptr; ctx->msg_buf = ctx->msg_buf_ptr;
ctx->content_length = snprintf(ctx->msg_buf, 4096 - ctx->content_length, "%s %s HTTP/%s\r\n", req->method, req->uri, req->version); ctx->content_length = snprintf(ctx->msg_buf, 4096 - ctx->content_length, "%s %s HTTP/%s\r\n", req->method, req->uri, req->version);
for (int i = 0; i < list_size(&req->hdr); i++) { for (int i = 0; i < list_size(req->hdr.fields); i++) {
const http_field *f = &req->hdr.fields[i]; const http_field *f = &req->hdr.fields[i];
ctx->content_length += snprintf(ctx->msg_buf + ctx->content_length, 4096 - ctx->content_length, "%s: %s\r\n", http_field_get_name(f), http_field_get_value(f)); ctx->content_length += snprintf(ctx->msg_buf + ctx->content_length, 4096 - ctx->content_length, "%s: %s\r\n", http_field_get_name(f), http_field_get_value(f));
} }