iOS 用の stunnel ビルドがあり、完全に動作しますが、再起動しようとするとアプリがクラッシュします。
私は pthread_create から始めています。再起動するコードは次のとおりです。
int ret;
ret = pthread_cancel(old_threadID);
if (ret != 0)
NSLog(@"%i", ret);
void *res;
ret = pthread_join(old_threadID, &res);
if (ret != 0)
NSLog(@"%i", ret);
if (res == PTHREAD_CANCELED)
NSLog(@"main(): thread was canceled\n"); //This returns OK
else
NSLog(@"main(): thread wasn't canceled (shouldn't happen!)\n");
//Begin new thread
pthread_t threadID;
//launch stunnel in a thread
int errorStunnel = pthread_create(&threadID, NULL, &stunnel_routine, (void *)fname);
NSLog(@"Error code!! : %i", errorStunnel); //error is 0.
このアプリがクラッシュした後。正常に起動できずにクラッシュします。これが原因で stunnel.log に表示されるように: "Error binding :443 to 127.0.0.1:12345 bind: Address already in use (48)" 構成ファイルは変更されませんでした。では、なぜポートがまだ前のスレッドにバインドされているのでしょうか?