forked from pool/atftp
9f1ef11be3
rebase patches, remove 'ghost /var/run/atftp' from spec OBS-URL: https://build.opensuse.org/request/show/206687 OBS-URL: https://build.opensuse.org/package/show/network/atftp?expand=0&rev=20
146 lines
4.2 KiB
Diff
146 lines
4.2 KiB
Diff
Index: tftpd_list.c
|
|
===================================================================
|
|
--- tftpd_list.c.orig
|
|
+++ tftpd_list.c
|
|
@@ -49,11 +49,11 @@ pthread_mutex_t thread_list_mutex = PTHR
|
|
*/
|
|
int tftpd_list_add(struct thread_data *new)
|
|
{
|
|
- struct thread_data *current = thread_data;
|
|
+ struct thread_data *current;
|
|
int ret;
|
|
|
|
pthread_mutex_lock(&thread_list_mutex);
|
|
-
|
|
+ current = thread_data;
|
|
number_of_thread++;
|
|
|
|
ret = number_of_thread;
|
|
@@ -81,11 +81,13 @@ int tftpd_list_add(struct thread_data *n
|
|
*/
|
|
int tftpd_list_remove(struct thread_data *old)
|
|
{
|
|
- struct thread_data *current = thread_data;
|
|
+ struct thread_data *current;
|
|
int ret;
|
|
|
|
pthread_mutex_lock(&thread_list_mutex);
|
|
|
|
+ current = thread_data;
|
|
+
|
|
number_of_thread--;
|
|
ret = number_of_thread;
|
|
|
|
@@ -137,23 +139,26 @@ int tftpd_list_find_multicast_server_and
|
|
struct thread_data *data,
|
|
struct client_info *client)
|
|
{
|
|
- struct thread_data *current = thread_data; /* head of the list */
|
|
- struct tftp_opt *tftp_options = data->tftp_options;
|
|
+ struct thread_data *current; /* head of the list */
|
|
+ struct tftp_opt *tftp_options;
|
|
struct client_info *tmp;
|
|
char options[MAXLEN];
|
|
char string[MAXLEN];
|
|
char *index;
|
|
size_t len;
|
|
|
|
+ /* lock the whole list before walking it */
|
|
+ pthread_mutex_lock(&thread_list_mutex);
|
|
+
|
|
*thread = NULL;
|
|
|
|
+ current = thread_data;
|
|
+ tftp_options = data->tftp_options;
|
|
+
|
|
opt_request_to_string(tftp_options, options, MAXLEN);
|
|
index = strstr(options, "multicast");
|
|
len = (size_t)(index - options);
|
|
|
|
- /* lock the whole list before walking it */
|
|
- pthread_mutex_lock(&thread_list_mutex);
|
|
-
|
|
while (current)
|
|
{
|
|
if (current != data)
|
|
@@ -215,9 +220,10 @@ inline void tftpd_clientlist_ready(struc
|
|
void tftpd_clientlist_remove(struct thread_data *thread,
|
|
struct client_info *client)
|
|
{
|
|
- struct client_info *tmp = thread->client_info;
|
|
+ struct client_info *tmp;
|
|
|
|
pthread_mutex_lock(&thread->client_mutex);
|
|
+ tmp = thread->client_info;
|
|
while ((tmp->next != client) && (tmp->next != NULL))
|
|
tmp = tmp->next;
|
|
if (tmp->next == NULL)
|
|
@@ -232,9 +238,11 @@ void tftpd_clientlist_remove(struct thre
|
|
void tftpd_clientlist_free(struct thread_data *thread)
|
|
{
|
|
struct client_info *tmp;
|
|
- struct client_info *head = thread->client_info;
|
|
+ struct client_info *head;
|
|
|
|
pthread_mutex_lock(&thread->client_mutex);
|
|
+ head = thread->client_info;
|
|
+
|
|
while (head)
|
|
{
|
|
tmp = head;
|
|
@@ -251,9 +259,10 @@ int tftpd_clientlist_done(struct thread_
|
|
struct client_info *client,
|
|
struct sockaddr_in *sock)
|
|
{
|
|
- struct client_info *head = thread->client_info;
|
|
+ struct client_info *head;
|
|
|
|
pthread_mutex_lock(&thread->client_mutex);
|
|
+ head = thread->client_info;
|
|
|
|
if (client)
|
|
{
|
|
@@ -335,10 +344,10 @@ int tftpd_clientlist_next(struct thread_
|
|
|
|
void tftpd_list_kill_threads(void)
|
|
{
|
|
- struct thread_data *current = thread_data; /* head of list */
|
|
+ struct thread_data *current; /* head of list */
|
|
|
|
pthread_mutex_lock(&thread_list_mutex);
|
|
-
|
|
+ current = thread_data;
|
|
|
|
while (current != NULL)
|
|
{
|
|
Index: tftpd_mcast.c
|
|
===================================================================
|
|
--- tftpd_mcast.c.orig
|
|
+++ tftpd_mcast.c
|
|
@@ -51,9 +51,11 @@ struct tid *tid_list = NULL;
|
|
*/
|
|
int tftpd_mcast_get_tid(char **addr, short *port)
|
|
{
|
|
- struct tid *current = tid_list;
|
|
+ struct tid *current;
|
|
|
|
pthread_mutex_lock(&mcast_tid_list);
|
|
+ current = tid_list;
|
|
+
|
|
/* walk the list for a free tid */
|
|
while (current != NULL)
|
|
{
|
|
@@ -74,9 +76,11 @@ int tftpd_mcast_get_tid(char **addr, sho
|
|
|
|
int tftpd_mcast_free_tid(char *addr, short port)
|
|
{
|
|
- struct tid *current = tid_list;
|
|
+ struct tid *current;
|
|
|
|
pthread_mutex_lock(&mcast_tid_list);
|
|
+ current = tid_list;
|
|
+
|
|
while (current != NULL)
|
|
{
|
|
if ((current->used == 1) && (current->port == port) &&
|