Special treatment to make TXT record lookup work on android.

This commit is contained in:
Cory McWilliams 2024-08-21 20:27:43 -04:00
parent b0e3d922c8
commit e38ff99607
5 changed files with 18 additions and 6 deletions

View File

@ -168,7 +168,8 @@ $(ANDROID_TARGETS): CFLAGS += \
-fdebug-compilation-dir . \
-fomit-frame-pointer \
-fno-asynchronous-unwind-tables \
-funwind-tables
-funwind-tables \
-Wno-unknown-warning-option
$(ANDROID_TARGETS): LDFLAGS += --sysroot $(ANDROID_NDK)/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC
$(DEBUG_TARGETS): CFLAGS += -DDEBUG -Og
$(RELEASE_TARGETS): CFLAGS += \

View File

@ -3,6 +3,7 @@
package="com.unprompted.tildefriends"
android:versionCode="26"
android:versionName="0.0.22-wip">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:label="Tilde Friends"

View File

@ -7,6 +7,7 @@ import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
@ -68,7 +69,7 @@ public class TildeFriendsActivity extends Activity {
Log.w("tildefriends", "system.loadLibrary() completed.");
}
public static native int tf_server_main(String files_dir, String apk_path, String out_port_file_path);
public static native int tf_server_main(String files_dir, String apk_path, String out_port_file_path, ConnectivityManager connectivity_manager);
public static native int tf_sandbox_main(int pipe_fd);
@Override
@ -150,7 +151,11 @@ public class TildeFriendsActivity extends Activity {
@Override
public void run() {
Log.w("tildefriends", "Calling tf_server_main.");
int result = tf_server_main(getFilesDir().toString(), getPackageResourcePath().toString(), port_file_path);
int result = tf_server_main(
getFilesDir().toString(),
getPackageResourcePath().toString(),
port_file_path,
(ConnectivityManager)getApplicationContext().getSystemService(CONNECTIVITY_SERVICE));
Log.w("tildefriends", "tf_server_main returned " + result + ".");
}
});

View File

@ -9,6 +9,7 @@
#include "tests.h"
#include "util.js.h"
#include "ares.h"
#include "backtrace.h"
#include "sqlite3.h"
#include "unzip.h"
@ -750,7 +751,7 @@ static void _tf_service_stop()
(*s_jni_env)->CallStaticVoidMethod(s_jni_env, c, stop_sandbox);
}
static jint _tf_server_main(JNIEnv* env, jobject this_object, jstring files_dir, jstring apk_path, jstring out_port_file_path)
static jint _tf_server_main(JNIEnv* env, jobject this_object, jstring files_dir, jstring apk_path, jstring out_port_file_path, jobject connectivity_manager)
{
s_jni_env = env;
@ -758,6 +759,8 @@ static jint _tf_server_main(JNIEnv* env, jobject this_object, jstring files_dir,
_startup(0, (char*[]) { NULL });
tf_printf("That was startup.\n");
ares_library_init_android(connectivity_manager);
const char* files = (*env)->GetStringUTFChars(env, files_dir, NULL);
const char* apk = (*env)->GetStringUTFChars(env, apk_path, NULL);
const char* out_port_file = (*env)->GetStringUTFChars(env, out_port_file_path, NULL);
@ -846,7 +849,7 @@ JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved)
tf_printf("Registering method.\n");
static const JNINativeMethod methods[] = {
{ "tf_server_main", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", _tf_server_main },
{ "tf_server_main", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ConnectivityManager;)I", _tf_server_main },
{ "tf_sandbox_main", "(I)I", _tf_sandbox_main },
};
int result = (*env)->RegisterNatives(env, c, methods, (int)_countof(methods));
@ -855,6 +858,8 @@ JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved)
return result;
}
ares_library_init_jvm(vm);
tf_printf("Done.\n");
return JNI_VERSION_1_6;
}

View File

@ -78,7 +78,7 @@ enum
k_debug_close_message_count = 256,
k_debug_close_connection_count = 32,
k_seed_expire_seconds = 10 * 60,
k_seed_check_interval_seconds = 5 * 50,
k_seed_check_interval_seconds = 5 * 60,
k_udp_discovery_expires_seconds = 10,
};