git-svn-id: file:///raid/svn-personal/tewi/trunk@105 8739d7e6-ffea-ec47-b151-bdff447c6205
This commit is contained in:
Nishi 2024-09-20 13:08:44 +00:00
parent 7fc3ad43a7
commit 12d250b5e1

View File

@ -406,13 +406,15 @@ struct pass_entry {
unsigned int WINAPI tw_server_pass(void* ptr) { unsigned int WINAPI tw_server_pass(void* ptr) {
#elif defined(__HAIKU__) #elif defined(__HAIKU__)
int32_t tw_server_pass(void* ptr) { int32_t tw_server_pass(void* ptr) {
#endif
#if defined(__HAIKU__) || defined(__MINGW32__)
int sock = ((struct pass_entry*)ptr)->sock; int sock = ((struct pass_entry*)ptr)->sock;
bool ssl = ((struct pass_entry*)ptr)->ssl; bool ssl = ((struct pass_entry*)ptr)->ssl;
int port = ((struct pass_entry*)ptr)->port; int port = ((struct pass_entry*)ptr)->port;
SOCKADDR addr = ((struct pass_entry*)ptr)->addr; SOCKADDR addr = ((struct pass_entry*)ptr)->addr;
free(ptr); free(ptr);
#else #else
void tw_server_pass(int sock, bool ssl, int port, SOCKADDR addr) { void tw_server_pass(int sock, bool ssl, int port, SOCKADDR addr) {
#endif #endif
char* name = config.hostname; char* name = config.hostname;
@ -428,7 +430,7 @@ void tw_server_pass(int sock, bool ssl, int port, SOCKADDR addr) {
sslworks = true; sslworks = true;
} }
#else #else
void* s = NULL; void* s = NULL;
#endif #endif
struct tw_http_request req; struct tw_http_request req;
struct tw_http_response res; struct tw_http_response res;
@ -454,7 +456,7 @@ void tw_server_pass(int sock, bool ssl, int port, SOCKADDR addr) {
cmtime = mktime(&tm); cmtime = mktime(&tm);
cmtime -= (btm->tm_hour * 60 + btm->tm_min) * 60; cmtime -= (btm->tm_hour * 60 + btm->tm_min) * 60;
#else #else
cmtime = timegm(&tm); cmtime = timegm(&tm);
#endif #endif
} }
} }
@ -739,7 +741,7 @@ cleanup:
#ifdef __MINGW32__ #ifdef __MINGW32__
_endthreadex(0); _endthreadex(0);
#elif defined(__HAIKU__) #elif defined(__HAIKU__)
exit_thread(0); exit_thread(0);
#endif #endif
; ;
} }
@ -779,7 +781,7 @@ void tw_server_loop(void) {
#ifdef __HAIKU__ #ifdef __HAIKU__
int ret = select(32, &fdset, NULL, NULL, &tv); int ret = select(32, &fdset, NULL, NULL, &tv);
#else #else
int ret = select(FD_SETSIZE, &fdset, NULL, NULL, &tv); int ret = select(FD_SETSIZE, &fdset, NULL, NULL, &tv);
#endif #endif
if(ret == -1) { if(ret == -1) {
#ifndef __MINGW32__ #ifndef __MINGW32__
@ -828,28 +830,28 @@ void tw_server_loop(void) {
} }
} }
#elif defined(__HAIKU__) #elif defined(__HAIKU__)
int j; int j;
for(j = 0; j < sizeof(threads) / sizeof(threads[0]); j++) { for(j = 0; j < sizeof(threads) / sizeof(threads[0]); j++) {
if(threads[j].used) { if(threads[j].used) {
thread_info info; thread_info info;
bool kill = false; bool kill = false;
if(get_thread_info(threads[j].thread, &info) == B_OK) { if(get_thread_info(threads[j].thread, &info) == B_OK) {
} else { } else {
kill = true; kill = true;
} }
if(kill) { if(kill) {
threads[j].used = false; threads[j].used = false;
}
} }
} }
} for(j = 0; j < sizeof(threads) / sizeof(threads[0]); j++) {
for(j = 0; j < sizeof(threads) / sizeof(threads[0]); j++) { if(!threads[j].used) {
if(!threads[j].used) { threads[j].thread = spawn_thread(tw_server_pass, "Tewi HTTPd", 60, e);
threads[j].thread = spawn_thread(tw_server_pass, "Tewi HTTPd", 60, e); threads[j].used = true;
threads[j].used = true; resume_thread(threads[j].thread);
resume_thread(threads[j].thread); break;
break; }
} }
}
#else #else
pid_t pid = fork(); pid_t pid = fork();
if(pid == 0) { if(pid == 0) {