Open Kronos2308 opened 3 years ago
Mira abriéndolo con nxlink y manda foto del log cuando se quede pillado en ese porcentaje.
[DEBUG] https://updates.not-d3fau4.tk/c/c/749fcff4fab188a6f68a1d5319b10caf [ERROR] Fallo al descargar: https://updates.not-d3fau4.tk/c/c/749fcff4fab188a6f68a1d5319b10caf
se me sigue pillandoo a ese porciento y no solo a mi
y otra cosa loca q me paso y es que intente montar un server de actualizacion
usando la herramienta "NightFall Server.exe" Firmware-12.1.0 keys.txt 12.1.0 806355064 update
todo bien descarga hasta ek 100% pero luego que le das a continuar no empieza la actualizacion sinoq vuelve a descargarse el firmware infinitamente, aqui t adjunto el log
logs.txt
eso está desactualizado la desgracia es que no puedo mirar nada de eso, estoy de vacaciones y el pc mas cercano es un pc con windows 95 por cierto si quieres montar un server ahora te paso por discord mi servidor que uso para nightfall que ese si está actualizado y a lo mejor te interesa.
vale aunque te comento un poco hise un fork y loo compile yoo mismo y parece que ahora si descarga de tu server lo raro es que no he echo nada muy grande con el codigo
y va ser que tenias razon con lo de que era el progama
Si, acabo de ver los cambios puede que sea un problema de memoria y al guardarlo en memoria ya no peta (?), El nca al que se queda pillado siempre es el nca donde tiene programa flog que es el nca más grande que descarga, lo que pasa es que se queda en bucle descargando, osea descarga, falla, descarga y así todo el rato. No sé si ha habido una actualización reciente de la librería curl, lo mismo cuando lo compile tenía un bug o algo.
a si bueno estoy usando un la memoria para guardar la descarga porque es mas rapido si bien tiene que sacar de la memoria a la sd al terminar es mucho mas rapido que ecribir directamante en la sd sobre todo con archivos grandes la unica pega es que en applet mode tienes muy poca memoria disponible por lo que jay que volcar a la sd cuando llega al tope y vaciar la memoria aun asi es mas rapidopor lo que he probado
pero no se si eso hace que no falle creoo q no tiene que ver
de la forma en qu esta planteaoen al codigo esta bien pero se creara un bucle si alguno de los ficheros falla deberia checarse si el fichero existe y por la parte de la red se puede usar la memoria para si falla no llege a escribirse un fichero vacio o incompleto o descargarlo a un archivo temporal y renombrarlo corrigeme si me equivoco
NightFall.zip mira a ver si esta compilación te funciona bien, a mi en mi red local todo perfecto.
https://github.com/D3fau4/NightFall/pull/32 haciendo esto me funciono voy a probar tu build a ver
ahora no recuerdo habia algo q previniese q la consola entrara en espera si nightfall estaba descargando?
error [0;32m[DEBUG][0m https://updates.not-d3fau4.tk/c/a/1ddada09497ebd46682c794eb8a50ae3 error�[0;32m[DEBUG]�[0m https://updates.not-d3fau4.tk/c/a/1b934dca040d02a6c6706ca919b3106d error[0;32m[DEBUG][0m https://updates.not-d3fau4.tk/c/a/2e0ec33c7059fea7780badcb852ca90a error[0;32m[DEBUG][0m https://updates.not-d3fau4.tk/c/a/345eb30c36623de4ab03b2bc4a82811c error[0;32m[DEBUG][0m https://updates.not-d3fau4.tk/c/a/11ba8c801d85d2fb8f889a8f4d62c1d7 error[0;32m[DEBUG][0m https://updates.not-d3fau4.tk/c/a/7460df03d175c7f33c491ef0e0208b9f error[0;32m[DEBUG][0m https://updates.not-d3fau4.tk/c/a/c8bf894e7a5835efb8ce3fb5aee4c8dd 90%
nop
28minutos tomo y como tuvo errores empezo desde el principio
pero en serio usar un chunk de memoria reduce el tiempo de media hora a 10m
procedo a
para que no falle si el achivo es mas grande de lo que la memoria puede almacenar (Que no lo he visto ) puedes simplemente vaciar el chunk a la sd y seguir y asi descargar el acrivo por trosos
static size_t write_memory_callback(void *contents, size_t size, size_t nmemb, void *userdata)
{
size_t realsize = size * nmemb;
struct MemoryStruct *mem = (struct MemoryStruct *)userdata;
char *ptr;
ptr = (char*)realloc(mem->memory, mem->size + realsize + 1);
if (ptr == NULL)
{
printf("Failed to realloc mem\n");
printf("Writing... %uMb To file\n",mem->size / 1000000 + 1);
fwrite(mem->memory, 1, mem->size, mem->fp);
free(mem->memory);
mem->memory = (char*)malloc(1);
mem->size = 0;
ptr = (char*)realloc(mem->memory, mem->size + realsize + 1);
if (ptr == NULL) return 0;
}
mem->memory = ptr;
memcpy(&(mem->memory[mem->size]), contents, realsize);
mem->size += realsize;
mem->memory[mem->size] = 0;
return realsize;
}```
el fichero debe abrirse como append
Pues de momento hice esto: faffc1325af85f402df0dd1d74d27ca659b993d4
No sé usar la memoria no debería ser una opción Porque trae más velocidad de descarga sin ningún efecto negativo
Y ya esto es mi opinión pero la pantalla no debería apagarse durante la descarga Y tampoco te debería preguntar si quieres actualizar si la descarga termino ya q esperaste hasta hay pa q lo vas a canselar Así mismo gestionar que puede pasar si un fichero falla intentar descargarlo luego pero solo ese fichero no el firm entero
En cuanto a al sobrecarga de memoria simplemente lo gestionas desde el write callbak de curl si es q ocurre que no pasa con los ficheros pequeños q usas y si esas en full ram tienes 3gb +/- para desgargar
Eso sí tienes que agregar un pequeño pedazo de código para gestionar el llenado de mamotia y el vaciado a un archivo en la SD y aunque parezca que alfinal estás escribiendo en la SD ap parecer no es lo mismo escribir 40mb de golpe que byte a byte lo cual es más lento de procesarlo
En cuanto a al sobrecarga de memoria simplemente lo gestionas desde el write callbak de curl si es q ocurre que no pasa con los ficheros pequeños q usas y si esas en full ram tienes 3gb +/- para desgargar
Supuestamente una aplicación no puede reiniciar la consola y tampoco aplicar actualizaciones, prohibiere el uso del modo aplicación en próximas commits. y no lo voy a poner obligatorio porque no voy a arriesgar a mis usuarios de que reviente la aplicación porque haya sobrecarga de memoria, tu no sabes si el usuario lleva atmosphere limpio o con 18 sysmodules o mierdas que consuma memoria o modifique memoria.
en ese caso solo gestiona la sobrecarga de memoria y listo no es tan dificil y el metodo es bbastante hermetico aqui te lo dejo https://github.com/StarDustCFW/NightFall/commit/bdd939d32b8d47192709dc57631bf98af16f0031 pero ya eso es cosa tulla.
//para el modo applet usa
bool AppletMode=false;
AppletType at = appletGetAppletType();
if (at != AppletType_Application && at != AppletType_SystemApplication) {AppletMode=true;}
//o algo simlar