diff --git a/src/simplehttpd.c b/src/simplehttpd.c index d4b943da2ee39efca3a678214655457d50bc66ff..f0a8271a08cf8c977c0efafb65c13a329a8643c5 100644 --- a/src/simplehttpd.c +++ b/src/simplehttpd.c @@ -392,6 +392,7 @@ int StartHttpServerSync(const char *ip, uint16_t port) struct sockaddr_in client_name; socklen_t client_name_len = sizeof(client_name); pthread_t newthread; + pthread_attr_t threadAttr; struct sockaddr_in name; server_sock = socket(PF_INET, SOCK_STREAM, 0); @@ -453,11 +454,14 @@ int StartHttpServerSync(const char *ip, uint16_t port) continue; } - if (pthread_create(&newthread, NULL, accept_request, (void *)&client_sock) != 0) + pthread_attr_init(&threadAttr); + pthread_attr_setdetachstate(&threadAttr, PTHREAD_CREATE_DETACHED); + if (pthread_create(&newthread, &threadAttr, accept_request, (void *)&client_sock) != 0) { HTTPD_LOG_ERROR("create new thread failed."); close(client_sock); } + pthread_attr_destroy(&threadAttr); } close(server_sock);