Changeset 12 in Main for trunk/Server/server.c


Ignore:
Timestamp:
Sep 13, 2024, 10:36:03 PM (2 months ago)
Author:
Nishi
Message:

vhost works

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Server/server.c

    r11 r12  
    33#include "tw_server.h"
    44
     5#include "tw_ssl.h"
    56#include "tw_config.h"
    67
     
    115116struct pass_entry {
    116117        int sock;
     118        int port;
    117119        bool ssl;
    118120};
     
    121123        int sock = ((struct pass_entry*)ptr)->sock;
    122124        bool ssl = ((struct pass_entry*)ptr)->ssl;
     125        int port = ((struct pass_entry*)ptR)->port;
     126        free(ptr);
    123127#else
    124 void tw_server_pass(int sock, bool ssl) {
     128void tw_server_pass(int sock, bool ssl, int port) {
    125129#endif
     130        SSL_CTX* ctx = NULL;
     131        SSL* s = NULL;
     132        if(ssl) {
     133                ctx = tw_create_ssl_ctx(port);
     134                s = SSL_new(ctx);
     135                SSL_set_fd(s, sock);
     136                if(SSL_accept(s) <= 0) goto cleanup;
     137        }
     138cleanup:
    126139        close_socket(sock);
    127140#ifdef __MINGW32__
     
    151164                                        int clen = sizeof(claddr);
    152165                                        int sock = accept(sockets[i], (struct sockaddr*)&claddr, &clen);
     166                                        cm_log("Server", "New connection accepted");
    153167#ifdef __MINGW32__
    154168                                        HANDLE thread;
     
    156170                                        e->sock = sock;
    157171                                        e->ssl = config.ports[i] & (1ULL << 32);
     172                                        e->port = config.ports[i];
    158173                                        thread = (HANDLE)_beginthreadex(NULL, 0, tw_server_pass, e, 0, NULL);
    159174#else
    160175                                        pid_t pid = fork();
    161176                                        if(pid == 0) {
    162                                                 tw_server_pass(sock, config.ports[i] & (1ULL << 32));
     177                                                tw_server_pass(sock, config.ports[i] & (1ULL << 32), config.ports[i]);
    163178                                                _exit(0);
    164179                                        } else {
Note: See TracChangeset for help on using the changeset viewer.