Ich verwende Boost 1.54.0 mit OpenSSL 1.0.1e.Boost SSL async_shutdown Abschluss Hadler nicht
Beim Schließen des SSL-Verbindungsobjekts von Zeit zu Zeit sehe ich, dass Abschlusshandler async_shutdown() nicht aufgerufen wird.
Nach dem Debugging habe ich herausgefunden, dass dies passiert, wenn async_write() auftaucht.
SSL async_shutdown() sollte SSL Alert (Closing) senden, daher haben wir hier 2 Schreibvorgänge. Ich weiß, dass mehrere async_write() sind verboten.
Wie soll ich mit der Situation umgehen? Sollte ich auf Async_write() Abschluss warten, bevor Sie SSL async_shutdown() aufrufen?
BEARBEITEN: Nach this brauche ich wahrscheinlich cancel() auf zugrunde liegenden TCP-Socket, um alle ausstehenden async-Operationen abzubrechen. Ist es richtig?
EDIT Wenn ich die ganze Zeit async_ API bin, kann ich anrufen shutdown()
oder muss ich async_shutdown()
nennen?
Was war das Problem und was genau in Ihrem Code geheilt? Ist es pSocket-> next_layer(). Abbrechen()? – dimba
Das war vor einiger Zeit, aber ich glaube, dass das Problem wegging, als ich die Cancel-Methode anrief. Ich hatte auch ein Multithreading-Problem, weshalb ich den Code single threaded. –
Noch nicht funktioniert. – dimba