MCPcopy Create free account
hub / github.com/Meituan-Dianping/SQLAdvisor / SSL_accept

Function SSL_accept

extra/yassl/src/ssl.cpp:340–420  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

338
339
340int SSL_accept(SSL* ssl)
341{
342 if (ssl->GetError() == YasslError(SSL_ERROR_WANT_READ))
343 ssl->SetError(no_error);
344
345 if (ssl->GetError() == YasslError(SSL_ERROR_WANT_WRITE)) {
346
347 ssl->SetError(no_error);
348 ssl->SendWriteBuffered();
349 if (!ssl->GetError())
350 ssl->useStates().UseAccept() =
351 AcceptState(ssl->getStates().GetAccept() + 1);
352 }
353
354 switch (ssl->getStates().GetAccept()) {
355
356 case ACCEPT_BEGIN :
357 processReply(*ssl);
358 if (!ssl->GetError())
359 ssl->useStates().UseAccept() = ACCEPT_FIRST_REPLY_DONE;
360
361 case ACCEPT_FIRST_REPLY_DONE :
362 sendServerHello(*ssl);
363
364 if (!ssl->getSecurity().get_resuming()) {
365 sendCertificate(*ssl);
366
367 if (ssl->getSecurity().get_connection().send_server_key_)
368 sendServerKeyExchange(*ssl);
369
370 if(ssl->getCrypto().get_certManager().verifyPeer())
371 sendCertificateRequest(*ssl);
372
373 sendServerHelloDone(*ssl);
374 ssl->flushBuffer();
375 }
376
377 if (!ssl->GetError())
378 ssl->useStates().UseAccept() = SERVER_HELLO_DONE;
379
380 case SERVER_HELLO_DONE :
381 if (!ssl->getSecurity().get_resuming()) {
382 while (ssl->getStates().getServer() < clientFinishedComplete) {
383 if (ssl->GetError()) break;
384 processReply(*ssl);
385 }
386 }
387 if (!ssl->GetError())
388 ssl->useStates().UseAccept() = ACCEPT_SECOND_REPLY_DONE;
389
390 case ACCEPT_SECOND_REPLY_DONE :
391 sendChangeCipher(*ssl);
392 sendFinished(*ssl, server_end);
393 ssl->flushBuffer();
394
395 if (!ssl->GetError())
396 ssl->useStates().UseAccept() = ACCEPT_FINISHED_DONE;
397

Callers 5

AcceptMethod · 0.85
SSL_do_handshakeFunction · 0.85
echoserver_testFunction · 0.85
NonBlockingSSL_AcceptFunction · 0.85
server_testFunction · 0.85

Calls 15

YasslErrorEnum · 0.85
AcceptStateEnum · 0.85
processReplyFunction · 0.85
sendServerHelloFunction · 0.85
sendCertificateFunction · 0.85
sendServerKeyExchangeFunction · 0.85
sendCertificateRequestFunction · 0.85
sendServerHelloDoneFunction · 0.85
sendChangeCipherFunction · 0.85
sendFinishedFunction · 0.85
SendWriteBufferedMethod · 0.80
get_resumingMethod · 0.80

Tested by

no test coverage detected