diff options
| author | iceyrazor <iceyrazor@mailfence.com> | 2026-10-11 00:21:32 -0500 |
|---|---|---|
| committer | iceyrazor <iceyrazor@mailfence.com> | 2026-10-11 00:21:32 -0500 |
| commit | a926ae205ecb42a603e428346cf99dc1e66ed691 (patch) | |
| tree | 9d207cf8f84dc1d9e48b541f0a18309f7f96c442 /launch-web.c | |
| parent | 3521cc6e1a87f16c8db5c3c5a0c3cf59e1ff04cb (diff) | |
major refactor: Some Thread Safety
- removed web. silly to have that in a socket library
- made shared changing variables atomic
- added mutex locking to some things
- removed requirement for iceys-c-libs (that was a web thing)
- removed launch variable
- check if on_message is actually defined
- init on_message and on_disconnect NULL
Diffstat (limited to 'launch-web.c')
| -rwxr-xr-x | launch-web.c | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/launch-web.c b/launch-web.c deleted file mode 100755 index ff2970b..0000000 --- a/launch-web.c +++ /dev/null @@ -1,101 +0,0 @@ -#include <unistd.h> -#include <stdio.h> -#include <string.h> -#include <pthread.h> -#include <netinet/in.h> -#include <sys/socket.h> -#include <iceys-utils.h> -#include <Server.h> - -void server_close(struct Server *server){ - server->running=false; - - sleep(1); - - int shuterr=shutdown(server->socket,SHUT_RDWR); - int closeerr=close(server->socket); - - printf("\nshutdown with %d : %d\n",shuterr,closeerr); - //free(server); -} - -void *server_loop(void *threadarg){ - struct Server *server; - server=(struct Server *) threadarg; - - char buffer[30000]={0}; - int addrlen= sizeof(server->address); - - int new_socket; - char *meta_type="\r\ncontent-type: text/html\r\n\r\n"; - - printf("running on port: %d",server->port); - - while (server->running){ - char metadata[100]=""; - - printf("\n=== WAITING FOR CONNECTION ===\n\n"); - new_socket = accept(server->socket, (struct sockaddr *)&server->address, (socklen_t *)&addrlen); - - if(new_socket<0){ break; } - - if(read(new_socket,buffer,29999)<0){ printf("\nREAD FAILED\n\n"); close(new_socket); break; } - buffer[29999]='\0'; - - printf("%s\n",buffer); - - char response[30000] = {0}; - - - char file_req_buf[1000]={0}; - strcpy(file_req_buf,server->html_folder); - char file_req[1000]={0}; - str_before_nth(buffer+5, file_req, ' ', 0); - strcat(file_req_buf,file_req); - - - printf("file req: %s====\n",file_req_buf); - - - if(strncmp(file_req, "", 1) == 0){ - strcat(file_req_buf,"index.html"); - } - - char file_req_buf2[1000]={0}; - strcpy(file_req_buf2,str_remove_all(file_req_buf,"..")); - printf("file ret: %s====\n",file_req_buf); - - - if (access(file_req_buf, F_OK) == 0) { - char *status="HTTP/1.0 200 OK"; - memcpy(metadata,status,strlen(status)); - memcpy(metadata+strlen(metadata),meta_type,strlen(meta_type)); - memcpy(response, metadata, strlen(metadata)); - FILE* file=fopen(file_req_buf, "r"); - fread(response + strlen(metadata), 30000 - strlen(metadata) - 1, 1, file); - fclose(file); - } else { - char *status="HTTP/1.0 404 Not Found"; - memcpy(metadata,status,strlen(status)); - memcpy(metadata+strlen(metadata),meta_type,strlen(meta_type)); - memcpy(response, metadata, strlen(metadata)); - char* error = "error 404 file not found"; - memcpy(response + strlen(metadata), error, strlen(error)); - } - - printf("\n\n==response==\n%s\n",response); - - write(new_socket, response, strlen(response)); - close(new_socket); - } - - pthread_exit(NULL); -} - -pthread_t launch(struct Server *server){ - //HTTP/1.0 200 OK - - pthread_t id; - int thread_err=pthread_create(&id, NULL, server_loop, (void *) server); - return id; -} |
