fedorffixxzz Posted June 2, 2013 Report Posted June 2, 2013 (edited) Se pare ca s-a uitat de tot de acest proiect foarte interesant. Am patchuit script-ul original realizand urmatorul changelog:fix client ^C, va trimite KILLME catre server acesta fiind sters din lista, de asemenea client-ul face SIGTERMfix server ^C, uneori ramanea blocat dupa ce afisa "[!] Forcibly closed." probabil in timpul incercarii log.close()introdus /KILLME in client, daca aceasta comanda este executata va fi anulat de server si nerecunoscutimplementare server-side setsockopt pentru tuning-ul socket-urilor ce raman in stadiul TIME_WAIT, vezi: http://unixguide.net/network/socketfaq/4.5.shtmlfix pentru KILLME, inainte conexiunea nu era cu adeverat inchisa, se foloseste acum SHUT_RDWR si .close()TODO:de testat comanda/comportamentul cu mai multi clienti -> serveraltele?DONE:de rectificat in client si server segterm-ul: try pe subprocess.Popen, la exceptie sa se faca .communicate() si conditiile pentru returncode etc. (prea tarziu acum)de testat daca la /KILLME clientul si conexiunea sa sunt flushed (nu ocupa socket cu server-ul aiurea => "self" DoS?), nu facea flush, odata la interrupt vedem ca ramanea conexiunea in FIN_WAIT, in acest moment clientul putea realiza o alta conexiune, intr-adevar, reinitializa socket-ul ce era pe FIN_WAIT insa nu este recomandat:$ netstat -antpul | grep 51337tcp 0 0 127.0.1.1:51337 0.0.0.0:* LISTEN 12983/python tcp 0 0 127.0.0.1:38536 127.0.1.1:51337 [b][color=red]FIN_WAIT2[/color][/b] - tcp 1 0 127.0.1.1:51337 127.0.0.1:38536 CLOSE_WAITacum insa, este inchisa, ramane in TIME_WAIT insa nu pentru mult timp fix linia 434, trebuie identare la log.write("\n[!] Errors encountered.\n\n", MSGTOEXIT) sa cada sub if (prea tarziu acum)chat.py original:http://codepad.org/r9FCqTyCchat.py patches (old):patch0.1 :: http://codepad.org/Q6uJNAbHcurrent chat.py patched (0.2):http://codepad.org/6mCZ9DO6diferenta (patch 0.1 - patch 0.2):http://pastie.org/private/0cthpd9lbvlbikmjfkqr7aCritici constructive? Edited June 2, 2013 by fedorffixxzz update patch 0.2 1 Quote
fedorffixxzz Posted March 19, 2014 Author Report Posted March 19, 2014 De fapt o solutie complet buna este socket-ul sa fie non blocking atunci cand un client face interrupt.nu stiu daca este acoperita complet in ultimul patch, teoretic ar trebui. probabil un test unde client-ul nu are patch de a trimite /kill ar raspunde la intrebare... cine doreste sa faca testul si are timp e binevenit Quote