summaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/main.c b/main.c
index a75a440..c0bb340 100644
--- a/main.c
+++ b/main.c
@@ -244,11 +244,20 @@ static void *usbmuxd_client_reader_thread(void *arg)
244 cursor = rbuffer; 244 cursor = rbuffer;
245 while (rlen > 0) { 245 while (rlen > 0) {
246 len = send_buf(cdata->socket, cursor, rlen); 246 len = send_buf(cdata->socket, cursor, rlen);
247 if (len <= 0) {
248 fprintf(stderr, "Error: send returned %d\n", len);
249 err = 1;
250 break;
251 }
247 // calculate remainder 252 // calculate remainder
248 rlen -= len; 253 rlen -= len;
249 // advance cursor 254 // advance cursor
250 cursor += len; 255 cursor += len;
251 } 256 }
257 if (err != 0) {
258 fprintf(stderr, "Error when writing to client...\n");
259 break;
260 }
252 fsync(cdata->socket); 261 fsync(cdata->socket);
253 } 262 }
254 263
@@ -432,7 +441,7 @@ leave:
432static void *usbmuxd_bulk_reader_thread(void *arg) 441static void *usbmuxd_bulk_reader_thread(void *arg)
433{ 442{
434 struct device_use_info *cur_dev; 443 struct device_use_info *cur_dev;
435 444
436 if (!arg) { 445 if (!arg) {
437 if (verbose >= 3) fprintf(stderr, "%s: Invalid client_data provided\n", __func__); 446 if (verbose >= 3) fprintf(stderr, "%s: Invalid client_data provided\n", __func__);
438 return NULL; 447 return NULL;
@@ -443,7 +452,7 @@ static void *usbmuxd_bulk_reader_thread(void *arg)
443 if (verbose >= 5) fprintf(stderr, "%s: started\n", __func__); 452 if (verbose >= 5) fprintf(stderr, "%s: started\n", __func__);
444 453
445 while (!quit_flag && cur_dev) { 454 while (!quit_flag && cur_dev) {
446 455
447 pthread_mutex_lock(&cur_dev->mutex); 456 pthread_mutex_lock(&cur_dev->mutex);
448 if (cur_dev->use_count <= 0) { 457 if (cur_dev->use_count <= 0) {
449 pthread_mutex_unlock(&cur_dev->mutex); 458 pthread_mutex_unlock(&cur_dev->mutex);
@@ -458,7 +467,7 @@ static void *usbmuxd_bulk_reader_thread(void *arg)
458 //} 467 //}
459 } 468 }
460 469
461 if (verbose >= 5) fprintf(stderr, "%s: terminated\n", __func__); 470 if (verbose >= 0) fprintf(stderr, "%s: terminated\n", __func__);
462 471
463 return NULL; 472 return NULL;
464} 473}
@@ -726,7 +735,7 @@ leave:
726 if (cur_dev) { 735 if (cur_dev) {
727 pthread_mutex_lock(&cur_dev->mutex); 736 pthread_mutex_lock(&cur_dev->mutex);
728 if (cur_dev->use_count > 1) { 737 if (cur_dev->use_count > 1) {
729 if (verbose >= 5) fprintf(stderr, "%s: decreasing device use count\n", __func__); 738 if (verbose >= 0) fprintf(stderr, "%s: decreasing device use count (from %d to %d)\n", __func__, cur_dev->use_count, cur_dev->use_count-1);
730 cur_dev->use_count--; 739 cur_dev->use_count--;
731 pthread_mutex_unlock(&cur_dev->mutex); 740 pthread_mutex_unlock(&cur_dev->mutex);
732 } else { 741 } else {
@@ -734,6 +743,7 @@ leave:
734 cur_dev->use_count = 0; 743 cur_dev->use_count = 0;
735 pthread_mutex_unlock(&cur_dev->mutex); 744 pthread_mutex_unlock(&cur_dev->mutex);
736 if (cur_dev->bulk_reader != 0) { 745 if (cur_dev->bulk_reader != 0) {
746 fprintf(stderr, "%s: joining bulk_reader...\n", __func__);
737 pthread_join(cur_dev->bulk_reader, NULL); 747 pthread_join(cur_dev->bulk_reader, NULL);
738 } 748 }
739 pthread_mutex_lock(&usb_mutex); 749 pthread_mutex_lock(&usb_mutex);
@@ -1035,7 +1045,7 @@ int main(int argc, char **argv)
1035 memset(children, 0, sizeof(struct client_data*) * children_capacity); 1045 memset(children, 0, sizeof(struct client_data*) * children_capacity);
1036 1046
1037 if (verbose >= 2) logmsg(LOG_NOTICE, "waiting for connection"); 1047 if (verbose >= 2) logmsg(LOG_NOTICE, "waiting for connection");
1038 while (!quit_flag) { 1048 while (!quit_flag) {
1039 // Check the file descriptor before accepting a connection. 1049 // Check the file descriptor before accepting a connection.
1040 // If no connection attempt is made, just repeat... 1050 // If no connection attempt is made, just repeat...
1041 result = check_fd(fsock, FD_READ, 1000); 1051 result = check_fd(fsock, FD_READ, 1000);
@@ -1119,7 +1129,7 @@ int main(int argc, char **argv)
1119 if (verbose >= 2) fprintf(stderr, "usbmuxd: waiting for child threads to terminate...\n"); 1129 if (verbose >= 2) fprintf(stderr, "usbmuxd: waiting for child threads to terminate...\n");
1120 for (i = 0; i < children_capacity; i++) { 1130 for (i = 0; i < children_capacity; i++) {
1121 if (children[i] != NULL) { 1131 if (children[i] != NULL) {
1122 pthread_join(children[i]->thread, NULL); 1132 pthread_join(children[i]->thread, NULL);
1123 free(children[i]); 1133 free(children[i]);
1124 } 1134 }
1125 } 1135 }