imoved address function call to thread - fiche - A pastebin adjusted for gopher use Err vernunftzentrum.de 70 hgit clone git://vernunftzentrum.de/fiche.git URL:git://vernunftzentrum.de/fiche.git vernunftzentrum.de 70 1Log /ckeen/repos/fiche/log.gph vernunftzentrum.de 70 1Files /ckeen/repos/fiche/files.gph vernunftzentrum.de 70 1Refs /ckeen/repos/fiche/refs.gph vernunftzentrum.de 70 1LICENSE /ckeen/repos/fiche/file/LICENSE.gph vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1commit 716453901872eff2a0889d2a2eb73c0b16730968 /ckeen/repos/fiche/commit/716453901872eff2a0889d2a2eb73c0b16730968.gph vernunftzentrum.de 70 1parent ac40afb00baee79055558f057f830715cf7ee5d9 /ckeen/repos/fiche/commit/ac40afb00baee79055558f057f830715cf7ee5d9.gph vernunftzentrum.de 70 hAuthor: solusipse URL:mailto:solus1ps3@gmail.com vernunftzentrum.de 70 iDate: Mon, 9 Sep 2013 03:47:25 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 imoved address function call to thread Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i fiche.c | 27 ++++++++++++++++----------- Err vernunftzentrum.de 70 i fiche.h | 6 ++++++ Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i2 files changed, 22 insertions(+), 11 deletions(-) Err vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1diff --git a/fiche.c b/fiche.c /ckeen/repos/fiche/file/fiche.c.gph vernunftzentrum.de 70 i@@ -49,14 +49,17 @@ int main(int argc, char **argv) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i void *thread_connection(void *args) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i+ int connection_socket = ((struct thread_arguments *) args ) -> connection_socket; Err vernunftzentrum.de 70 i+ struct sockaddr_in client_address = ((struct thread_arguments *) args ) -> client_address; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ int n; Err vernunftzentrum.de 70 i char buffer[BUFSIZE]; Err vernunftzentrum.de 70 i- int n, client = *(int *)args; Err vernunftzentrum.de 70 i bzero(buffer, BUFSIZE); Err vernunftzentrum.de 70 i- Err vernunftzentrum.de 70 i- int status = recv(client, buffer, BUFSIZE, 0); Err vernunftzentrum.de 70 i+ int status = recv(connection_socket, buffer, BUFSIZE, 0); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i if (status != -1) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i+ get_client_address(client_address); Err vernunftzentrum.de 70 i char slug[SLUG_SIZE]; Err vernunftzentrum.de 70 i generate_url(buffer, slug); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i@@ -64,17 +67,17 @@ void *thread_connection(void *args) Err vernunftzentrum.de 70 i strcpy(response, DOMAIN); Err vernunftzentrum.de 70 i strcat(response, slug); Err vernunftzentrum.de 70 i strcat(response, "/\n"); Err vernunftzentrum.de 70 i- write(client, response, strlen(response)); Err vernunftzentrum.de 70 i+ write(connection_socket, response, strlen(response)); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i else Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i+ get_client_address(client_address); Err vernunftzentrum.de 70 i printf("Invalid connection.\n"); Err vernunftzentrum.de 70 i- write(client, "Use netcat.\n", 13); Err vernunftzentrum.de 70 i+ write(connection_socket, "Use netcat.\n", 13); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- close(client); Err vernunftzentrum.de 70 i+ close(connection_socket); Err vernunftzentrum.de 70 i pthread_exit(NULL); Err vernunftzentrum.de 70 i- return NULL; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i void perform_connection(int listen_socket) Err vernunftzentrum.de 70 i@@ -84,9 +87,9 @@ void perform_connection(int listen_socket) Err vernunftzentrum.de 70 i struct sockaddr_in client_address; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i int address_lenght = sizeof(client_address); Err vernunftzentrum.de 70 i- int connection_socket = accept(listen_socket, (struct sockaddr *) &client_address, &address_lenght); Err vernunftzentrum.de 70 i+ int connection_socket = accept(listen_socket, (struct sockaddr *) &client_address, (void *) &address_lenght); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- struct timeval timeout; Err vernunftzentrum.de 70 i+ struct timeval timeout; Err vernunftzentrum.de 70 i timeout.tv_sec = 10; Err vernunftzentrum.de 70 i timeout.tv_usec = 0; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i@@ -95,9 +98,11 @@ void perform_connection(int listen_socket) Err vernunftzentrum.de 70 i if (setsockopt (connection_socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout)) < 0) Err vernunftzentrum.de 70 i error(); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- get_client_address(client_address); Err vernunftzentrum.de 70 i+ struct thread_arguments arguments; Err vernunftzentrum.de 70 i+ arguments.connection_socket = connection_socket; Err vernunftzentrum.de 70 i+ arguments.client_address = client_address; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if (pthread_create(&thread_id, NULL, &thread_connection, &connection_socket) != 0) Err vernunftzentrum.de 70 i+ if (pthread_create(&thread_id, NULL, &thread_connection, &arguments) != 0) Err vernunftzentrum.de 70 i error(); Err vernunftzentrum.de 70 i else Err vernunftzentrum.de 70 i pthread_detach(thread_id); Err vernunftzentrum.de 70 1diff --git a/fiche.h b/fiche.h /ckeen/repos/fiche/file/fiche.h.gph vernunftzentrum.de 70 i@@ -65,4 +65,10 @@ void parse_parameters(int argc, char **argv); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i struct sockaddr_in set_address(struct sockaddr_in serveraddr); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+struct thread_arguments Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ int connection_socket; Err vernunftzentrum.de 70 i+ struct sockaddr_in client_address; Err vernunftzentrum.de 70 i+}; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i #endif Err vernunftzentrum.de 70 i \ No newline at end of file Err vernunftzentrum.de 70 .