Skip to content

Commit

Permalink
update to 10.10.0 (4571)
Browse files Browse the repository at this point in the history
  • Loading branch information
dkaraush committed Mar 31, 2024
1 parent d62d2ed commit 3a822b1
Show file tree
Hide file tree
Showing 3,989 changed files with 25,124 additions and 4,843 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
9 changes: 9 additions & 0 deletions .gitignore
Expand Up @@ -4,3 +4,12 @@ build/
obj/
*.iml
local.properties
TMessagesProj/.cxx/
TMessagesProj/jniLibs/
TMessagesProj/jniRes/
**/.DS_Store
TMessagesProj/afat/
TMessagesProj_App/afat/
TMessagesProj_AppHockeyApp/afat/
TMessagesProj_AppStandalone/afat/
TMessagesProj_AppHuawei/afat/
1 change: 1 addition & 0 deletions TMessagesProj/build.gradle
Expand Up @@ -25,6 +25,7 @@ dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
implementation "androidx.sharetarget:sharetarget:1.2.0"
implementation 'androidx.interpolator:interpolator:1.0.0'
implementation 'androidx.biometric:biometric:1.1.0'

compileOnly 'org.checkerframework:checker-qual:2.5.2'
compileOnly 'org.checkerframework:checker-compat-qual:2.5.0'
Expand Down
3 changes: 2 additions & 1 deletion TMessagesProj/jni/CMakeLists.txt
Expand Up @@ -425,12 +425,13 @@ target_include_directories(breakpad PUBLIC
#voip
include(${CMAKE_HOME_DIRECTORY}/voip/CMakeLists.txt)

set(NATIVE_LIB "tmessages.48")
set(NATIVE_LIB "tmessages.49")

#tmessages
add_library(${NATIVE_LIB} SHARED
jni.c
audio.c
webm_encoder.c
image.cpp
video.c
intro/IntroRenderer.c
Expand Down
9 changes: 9 additions & 0 deletions TMessagesProj/jni/TgNetWrapper.cpp
Expand Up @@ -30,6 +30,7 @@ jmethodID jclass_ConnectionsManager_onRequestNewServerIpAndPort;
jmethodID jclass_ConnectionsManager_onProxyError;
jmethodID jclass_ConnectionsManager_getHostByName;
jmethodID jclass_ConnectionsManager_getInitFlags;
jmethodID jclass_ConnectionsManager_onPremiumFloodWait;

bool check_utf8(const char *data, size_t len);

Expand Down Expand Up @@ -319,6 +320,10 @@ class Delegate : public ConnectiosManagerDelegate {
int32_t getInitFlags(int32_t instanceNum) {
return (int32_t) jniEnv[instanceNum]->CallStaticIntMethod(jclass_ConnectionsManager, jclass_ConnectionsManager_getInitFlags);
}

void onPremiumFloodWait(int32_t instanceNum, int32_t requestToken, bool isUpload) {
jniEnv[instanceNum]->CallStaticVoidMethod(jclass_ConnectionsManager, jclass_ConnectionsManager_onPremiumFloodWait, instanceNum, requestToken, isUpload);
}
};

void onHostNameResolved(JNIEnv *env, jclass c, jstring host, jlong address, jstring ip) {
Expand Down Expand Up @@ -568,6 +573,10 @@ extern "C" int registerNativeTgNetFunctions(JavaVM *vm, JNIEnv *env) {
if (jclass_ConnectionsManager_getInitFlags == 0) {
return JNI_FALSE;
}
jclass_ConnectionsManager_onPremiumFloodWait = env->GetStaticMethodID(jclass_ConnectionsManager, "onPremiumFloodWait", "(IIZ)V");
if (jclass_ConnectionsManager_onPremiumFloodWait == 0) {
return JNI_FALSE;
}

return JNI_TRUE;
}
Expand Down
8 changes: 6 additions & 2 deletions TMessagesProj/jni/audio.c
Expand Up @@ -63,6 +63,7 @@ typedef struct {
ogg_int64_t last_granulepos;
opus_int32 min_bytes;
int max_frame_bytes;
int serialno;
} resume_data;

static int write_uint32(Packet *p, ogg_uint32_t val) {
Expand Down Expand Up @@ -261,6 +262,7 @@ ogg_int64_t enc_granulepos;
ogg_int64_t last_granulepos;
int size_segments;
int last_segments;
int serialno;

void cleanupRecorder() {

Expand Down Expand Up @@ -381,7 +383,7 @@ int initRecorder(const char *path, opus_int32 sampleRate) {
header.preskip = (int)(inopt.skip * (48000.0 / coding_rate));
inopt.extraout = (int)(header.preskip * (rate / 48000.0));

if (ogg_stream_init(&os, rand()) == -1) {
if (ogg_stream_init(&os, serialno = rand()) == -1) {
LOGE("Error: stream init failed");
return 0;
}
Expand Down Expand Up @@ -465,6 +467,7 @@ void saveResumeData() {
data.last_granulepos = last_granulepos;
data.min_bytes = min_bytes;
data.max_frame_bytes = max_frame_bytes;
data.serialno = serialno;

if (fwrite(&data, sizeof(resume_data), 1, resumeFile) != 1) {
LOGE("error writing resume data to file: %s", _resumeFilePath);
Expand Down Expand Up @@ -527,6 +530,7 @@ int resumeRecorder(const char *path, opus_int32 sampleRate) {
last_granulepos = resumeData.last_granulepos;
min_bytes = resumeData.min_bytes;
max_frame_bytes = resumeData.max_frame_bytes;
serialno = resumeData.serialno;

_fileOs = fopen(path, "a");
if (!_fileOs) {
Expand Down Expand Up @@ -557,7 +561,7 @@ int resumeRecorder(const char *path, opus_int32 sampleRate) {
}
#endif

if (ogg_stream_init(&os, rand()) == -1) {
if (ogg_stream_init(&os, serialno) == -1) {
LOGE("Error: stream init failed");
return 0;
}
Expand Down
Binary file modified TMessagesProj/jni/ffmpeg/arm64-v8a/libavcodec.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/arm64-v8a/libavformat.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/arm64-v8a/libavresample.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/arm64-v8a/libavutil.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/arm64-v8a/libswresample.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/arm64-v8a/libswscale.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/arm64-v8a/libvpx.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/armeabi-v7a/libavcodec.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/armeabi-v7a/libavformat.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/armeabi-v7a/libavresample.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/armeabi-v7a/libavutil.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/armeabi-v7a/libswresample.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/armeabi-v7a/libswscale.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/armeabi-v7a/libvpx.a
Binary file not shown.
4 changes: 4 additions & 0 deletions TMessagesProj/jni/ffmpeg/build_ffmpeg/build_ffmpeg.sh
Expand Up @@ -76,6 +76,10 @@ LIBS=" -L${PREFIX}/lib"
\
--enable-libvpx \
--enable-decoder=libvpx_vp9 \
--enable-encoder=libvpx_vp9 \
--enable-muxer=matroska \
--enable-bsf=vp9_superframe \
--enable-bsf=vp9_raw_reorder \
--enable-runtime-cpudetect \
--enable-pthreads \
--enable-avresample \
Expand Down
Expand Up @@ -68,6 +68,8 @@ fi
--disable-examples \
--disable-tools \
--disable-debug \
--disable-neon-asm \
--disable-neon-dotprod \
--disable-unit-tests || exit 1

make -j${HOST_NUM_CORES} install
Expand Down
Binary file modified TMessagesProj/jni/ffmpeg/x86/libavcodec.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86/libavformat.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86/libavresample.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86/libavutil.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86/libswresample.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86/libswscale.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86/libvpx.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86_64/libavcodec.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86_64/libavformat.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86_64/libavresample.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86_64/libavutil.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86_64/libswresample.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86_64/libswscale.a
Binary file not shown.
Binary file modified TMessagesProj/jni/ffmpeg/x86_64/libvpx.a
Binary file not shown.
22 changes: 19 additions & 3 deletions TMessagesProj/jni/tgnet/ConnectionsManager.cpp
Expand Up @@ -1324,12 +1324,24 @@ void ConnectionsManager::processServerResponse(TLObject *message, int64_t messag
request->startTime = 0;
request->startTimeMillis = 0;
request->minStartTime = (int32_t) (getCurrentTimeMonotonicMillis() / 1000 + 2);
} else if (error->error_code == 420 && (request->requestFlags & RequestFlagIgnoreFloodWait) == 0 && error->error_message.find("STORY_SEND_FLOOD") == std::string::npos) {
} else if (
error->error_code == 420 && (request->requestFlags & RequestFlagIgnoreFloodWait) == 0 &&
error->error_message.find("STORY_SEND_FLOOD") == std::string::npos
) {
int32_t waitTime = 2;
static std::string floodWait = "FLOOD_WAIT_";
static std::string premiumFloodWait = "FLOOD_PREMIUM_WAIT_";
static std::string slowmodeWait = "SLOWMODE_WAIT_";
bool isPremiumFloodWait = false;
discardResponse = true;
if (error->error_message.find(floodWait) != std::string::npos) {
if (error->error_message.find(premiumFloodWait) != std::string::npos) {
isPremiumFloodWait = true;
std::string num = error->error_message.substr(premiumFloodWait.size(), error->error_message.size() - premiumFloodWait.size());
waitTime = atoi(num.c_str());
if (waitTime <= 0) {
waitTime = 2;
}
} else if (error->error_message.find(floodWait) != std::string::npos) {
std::string num = error->error_message.substr(floodWait.size(), error->error_message.size() - floodWait.size());
waitTime = atoi(num.c_str());
if (waitTime <= 0) {
Expand All @@ -1343,10 +1355,14 @@ void ConnectionsManager::processServerResponse(TLObject *message, int64_t messag
}
discardResponse = false;
}
request->premiumFloodWait = isPremiumFloodWait;
request->failedByFloodWait = waitTime;
request->startTime = 0;
request->startTimeMillis = 0;
request->minStartTime = (int32_t) (getCurrentTimeMonotonicMillis() / 1000 + waitTime);
if (isPremiumFloodWait && delegate != nullptr) {
delegate->onPremiumFloodWait(instanceNum, request->requestToken, (request->connectionType & ConnectionTypeUpload) != 0);
}
} else if (error->error_code == 400) {
static std::string waitFailed = "MSG_WAIT_FAILED";
static std::string bindFailed = "ENCRYPTED_MESSAGE_INVALID";
Expand Down Expand Up @@ -2496,7 +2512,7 @@ void ConnectionsManager::processRequestQueue(uint32_t connectionTypes, uint32_t
retryMax = 6;
}
}
if (request->retryCount >= retryMax) {
if (request->retryCount >= retryMax && !request->premiumFloodWait) {
if (LOGS_ENABLED) DEBUG_E("timed out %s, message_id = 0x%" PRIx64, typeInfo.name(), request->messageId);
auto error = new TL_error();
error->code = -123;
Expand Down
1 change: 1 addition & 0 deletions TMessagesProj/jni/tgnet/Defines.h
Expand Up @@ -153,6 +153,7 @@ typedef struct ConnectiosManagerDelegate {
virtual void onProxyError(int32_t instanceNum) = 0;
virtual void getHostByName(std::string domain, int32_t instanceNum, ConnectionSocket *socket) = 0;
virtual int32_t getInitFlags(int32_t instanceNum) = 0;
virtual void onPremiumFloodWait(int32_t instanceNum, int32_t requestToken, bool isUpload) = 0;
} ConnectiosManagerDelegate;

typedef struct HandshakeDelegate {
Expand Down
1 change: 1 addition & 0 deletions TMessagesProj/jni/tgnet/Request.h
Expand Up @@ -35,6 +35,7 @@ class Request {
uint32_t retryCount = 0;
bool failedBySalt = false;
int32_t failedByFloodWait = 0;
bool premiumFloodWait = false;
ConnectionType connectionType;
uint32_t requestFlags;
bool completedSent = false;
Expand Down

0 comments on commit 3a822b1

Please sign in to comment.