List/FastCGI cleanup
This commit is contained in:
@ -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;
|
||||||
|
@ -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"
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user