.\" -*- coding: UTF-8 -*- .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .de IX .. .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .if n .ds AD l .\" .\" Required to disable full justification in groff 1.23.0. .\" ======================================================================== .\" .IX Title "SSL_GET_ERROR 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SSL_GET_ERROR 3ssl "7 أبريل 2026" 3.6.2 OpenSSL .if n .ad l .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .nh .SH الاسم SSL_get_error \- الحصول على رمز النتيجة لعملية الإدخال/الإخراج TLS/SSL .SH موجز .IX Header موجز .Vb 1 \& #include \& \& int SSL_get_error(const SSL *ssl, int ret); .Ve .SH الوصف .IX Header الوصف \& تُرجع \fBSSL_get_error()\fP رمز نتيجة (مناسب لعبارة "switch" في C) لاستدعاء سابق لـ \fBSSL_connect()\fP أو \fBSSL_accept()\fP أو \fBSSL_do_handshake()\fP أو \&\fBSSL_read_ex()\fP أو \fBSSL_read()\fP أو \fBSSL_peek_ex()\fP أو \fBSSL_peek()\fP أو \fBSSL_shutdown()\fP أو \&\fBSSL_write_ex()\fP أو \fBSSL_write()\fP على \fBssl\fP. يجب تمرير القيمة التي أرجعتها دالة الإدخال/الإخراج TLS/SSL تلك إلى \fBSSL_get_error()\fP في المعامل \fBret\fP. .PP بالإضافة إلى \fBssl\fP و \fBret\fP، تفحص \fBSSL_get_error()\fP قائمة أخطاء OpenSSL للخيط الحالي. وبالتالي، يجب استخدام \fBSSL_get_error()\fP في نفس الخيط الذي أجرى عملية الإدخال/الإخراج TLS/SSL، ولا ينبغي أن تظهر أي استدعاءات أخرى لدوال OpenSSL بينهما. يجب أن تكون قائمة أخطاء الخيط الحالي فارغة قبل محاولة عملية الإدخال/الإخراج TLS/SSL، وإلا فلن تعمل \fBSSL_get_error()\fP بشكل موثوق. يتم إفراغ قائمة أخطاء الخيط الحالي باستخدام \fBERR_clear_error\fP\|(3). .SH ملاحظات .IX Header ملاحظات بعض تطبيقات TLS لا ترسل تنبيه close_notify عند الإغلاق. .PP عند مواجهة نهاية ملف غير متوقعة، أرجع الإصدار قبل OpenSSL 3.0 \&\fBSSL_ERROR_SYSCALL\fP، ولم يُضف شيء إلى مكدس الأخطاء، وكان errno يساوي 0. منذ OpenSSL 3.0، الخطأ المُرجَع هو \fBSSL_ERROR_SSL\fP مع خطأ ذي معنى على مكدس الأخطاء (SSL_R_UNEXPECTED_EOF_WHILE_READING). يمكن استخدام رمز سبب الخطأ هذا لقرارات تدفق التحكم (انظر صفحة الدليل لـ \&\fBERR_GET_REASON\fP\|(3) لمزيد من التفاصيل حول هذا). .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" يمكن أن تحدث قيم الإرجاع التالية حاليًا: .IP SSL_ERROR_NONE 4 .IX Item SSL_ERROR_NONE اكتملت عملية الإدخال/الإخراج TLS/SSL. يُرجع رمز النتيجة هذا إذا وفقط إذا كان \fBret > 0\fP. .IP SSL_ERROR_ZERO_RETURN 4 .IX Item SSL_ERROR_ZERO_RETURN أغلق النظير TLS/SSL الاتصال للكتابة بإرسال تنبيه close_notify. لا يمكن قراءة المزيد من البيانات. لاحظ أن \fBSSL_ERROR_ZERO_RETURN\fP لا يشير بالضرورة إلى أن النقل الأساسي قد أُغلق. .Sp يمكن أن يظهر هذا الخطأ أيضًا عند تعيين الخيار \fBSSL_OP_IGNORE_UNEXPECTED_EOF\fP. انظر \fBSSL_CTX_set_options\fP\|(3) لمزيد من التفاصيل. .IP "SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE" 4 .IX Item "SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE" لم تكتمل العملية ويمكن إعادة محاولتها لاحقًا. .Sp بالنسبة لكائنات SSL غير QUIC، يُرجع \fBSSL_ERROR_WANT_READ\fP عندما كانت آخر عملية هي عملية قراءة من \fBBIO\fP غير محظور. يعني ذلك أنه لم تكن بيانات كافية متاحة في هذا الوقت لإكمال العملية. إذا توفرت بيانات للقراءة في \fBBIO\fP الأساسي في وقت لاحق، يمكن استدعاء نفس الدالة مرة أخرى. .Sp \& يمكن لـ \fBSSL_read()\fP و \fBSSL_read_ex()\fP أيضًا تعيين \fBSSL_ERROR_WANT_READ\fP عندما لا تزال هناك بيانات غير معالجة متاحة إما في طبقة \fBSSL\fP أو \fBBIO\fP، حتى بالنسبة لـ \fBBIO\fP محظور. انظر \fBSSL_read\fP\|(3) لمزيد من المعلومات. .Sp بالنسبة لكائنات SSL غير QUIC، يُرجع \fBSSL_ERROR_WANT_WRITE\fP عندما كانت آخر عملية هي كتابة إلى \fBBIO\fP غير محظور ولم يتمكن من إرسال جميع البيانات إلى \fBBIO\fP. عندما يصبح \fBBIO\fP قابلاً للكتابة مرة أخرى، يمكن استدعاء نفس الدالة مرة أخرى. .Sp لاحظ أن إعادة المحاولة قد تؤدي مرة أخرى إلى حالة \fBSSL_ERROR_WANT_READ\fP أو \&\fBSSL_ERROR_WANT_WRITE\fP. لا يوجد حد أعلى ثابت لعدد التكرارات التي قد تكون ضرورية حتى يصبح التقدم مرئيًا على مستوى بروتوكول التطبيق. .Sp بالنسبة لكائنات SSL الخاصة بـ QUIC، فإن معنى \fBSSL_ERROR_WANT_READ\fP و \&\fBSSL_ERROR_WANT_WRITE\fP لهما دلالات مختلفة ولكنها متوافقة إلى حد كبير. نظرًا لأن QUIC ينفذ التحكم في التدفق الخاص به ويستخدم مخططات بيانات UDP، فإن ظروف الضغط العكسي من حيث BIO الأساسي الذي يوفر الإدخال/الإخراج الشبكي ليست ذات صلة مباشرة بالظروف التي تُنتج فيها هذه الأخطاء. على وجه الخصوص، يشير \&\fBSSL_ERROR_WANT_WRITE\fP إلى أن مخزن الإرسال الداخلي لـ OpenSSL لدفق QUIC معين قد امتلأ. وبالمثل، يشير \fBSSL_ERROR_WANT_READ\fP إلى أن مخزن الاستقبال الداخلي لـ OpenSSL لدفق QUIC معين فارغ. .Sp من الآمن استدعاء \fBSSL_read()\fP أو \fBSSL_read_ex()\fP عند توفر المزيد من البيانات حتى لو كان الاستدعاء الذي عيَّن هذا الخطأ هو \fBSSL_write()\fP أو \fBSSL_write_ex()\fP. لكن، إذا كان الاستدعاء هو \fBSSL_write()\fP أو \fBSSL_write_ex()\fP، فيجب استدعاؤه مرة أخرى لمواصلة إرسال بيانات التطبيق. إذا حصلت على \fBSSL_ERROR_WANT_WRITE\fP من \fBSSL_write()\fP أو \fBSSL_write_ex()\fP، فلا ينبغي لك القيام بأي عملية أخرى قد تُحفِّز \fBIO\fP سوى تكرار استدعاء \fBSSL_write()\fP السابق. .Sp بالنسبة لـ \fBBIO\fPs المقبس (مثلًا عند استخدام \fBSSL_set_fd()\fP)، يمكن استخدام \fBselect()\fP أو \&\fBpoll()\fP على المقبس الأساسي لمعرفة متى ينبغي إعادة محاولة دالة الإدخال/الإخراج TLS/SSL. .Sp ملاحظة: أي دالة إدخال/إخراج TLS/SSL قد تؤدي إلى أي من \&\fBSSL_ERROR_WANT_READ\fP و \fBSSL_ERROR_WANT_WRITE\fP. على وجه الخصوص، قد ترغب \&\fBSSL_read_ex()\fP، \fBSSL_read()\fP، \fBSSL_peek_ex()\fP، أو \fBSSL_peek()\fP في كتابة بيانات وقد ترغب \fBSSL_write()\fP أو \fBSSL_write_ex()\fP في قراءة بيانات. هذا يرجع أساسًا إلى أن مصافحات TLS/SSL قد تحدث في أي وقت أثناء البروتوكول (يبدأها العميل أو الخادم)؛ ستتعامل \fBSSL_read_ex()\fP، \fBSSL_read()\fP، \fBSSL_peek_ex()\fP، \&\fBSSL_peek()\fP، \fBSSL_write_ex()\fP، و \fBSSL_write()\fP مع أي مصافحات معلقة. .IP "SSL_ERROR_WANT_CONNECT، SSL_ERROR_WANT_ACCEPT" 4 .IX Item "SSL_ERROR_WANT_CONNECT، SSL_ERROR_WANT_ACCEPT" لم تكتمل العملية؛ ينبغي استدعاء نفس دالة الإدخال/الإخراج TLS/SSL لاحقًا. لم يكن BIO الأساسي متصلًا بعد بالنظير وسيحجب الاستدعاء في \fBconnect()\fP/\fBaccept()\fP. ينبغي استدعاء دالة SSL مرة أخرى عند إنشاء الاتصال. يمكن أن تظهر هذه الرسائل فقط مع BIO من نوع \fBBIO_s_connect()\fP أو \fBBIO_s_accept()\fP على التوالي. لمعرفة متى تم إنشاء الاتصال بنجاح، يمكن على العديد من المنصات استخدام \fBselect()\fP أو \fBpoll()\fP للكتابة على واصف ملف المقبس. .IP SSL_ERROR_WANT_X509_LOOKUP 4 .IX Item SSL_ERROR_WANT_X509_LOOKUP لم تكتمل العملية لأن رد اتصال تطبيق معيَّن بواسطة \&\fBSSL_CTX_set_client_cert_cb()\fP طلب استدعاءه مرة أخرى. ينبغي استدعاء دالة الإدخال/الإخراج TLS/SSL لاحقًا. تعتمد التفاصيل على التطبيق. .IP SSL_ERROR_WANT_ASYNC 4 .IX Item SSL_ERROR_WANT_ASYNC لم تكتمل العملية لأن محركًا غير متزامن لا يزال يعالج البيانات. سيحدث هذا فقط إذا تم تعيين الوضع إلى SSL_MODE_ASYNC باستخدام \fBSSL_CTX_set_mode\fP\|(3) أو \fBSSL_set_mode\fP\|(3) ويُستخدم محرك قادر على المعالجة غير المتزامنة. يمكن للتطبيق تحديد ما إذا كان المحرك قد أكمل معالجته باستخدام \fBselect()\fP أو \fBpoll()\fP على واصف ملف الانتظار غير المتزامن. يتوفر واصف الملف هذا باستدعاء \&\fBSSL_get_all_async_fds\fP\|(3) أو \fBSSL_get_changed_async_fds\fP\|(3). ينبغي استدعاء دالة الإدخال/الإخراج TLS/SSL لاحقًا. \fBيجب\fP استدعاء الدالة من نفس الخيط الذي صدر منه الاستدعاء الأصلي. .IP SSL_ERROR_WANT_ASYNC_JOB 4 .IX Item SSL_ERROR_WANT_ASYNC_JOB تعذر بدء المهمة غير المتزامنة لعدم توفر مهام غير متزامنة في المجموعة (انظر \fBASYNC_init_thread\fP\|(3)). سيحدث هذا فقط إذا تم تعيين الوضع إلى SSL_MODE_ASYNC باستخدام \fBSSL_CTX_set_mode\fP\|(3) أو \&\fBSSL_set_mode\fP\|(3) وتم تعيين حد أقصى لمجموعة المهام غير المتزامنة من خلال استدعاء \fBASYNC_init_thread\fP\|(3). ينبغي للتطبيق إعادة محاولة العملية بعد اكتمال عملية غير متزامنة قيد التنفيذ حاليًا للخيط الحالي. .IP SSL_ERROR_WANT_CLIENT_HELLO_CB 4 .IX Item SSL_ERROR_WANT_CLIENT_HELLO_CB لم تكتمل العملية لأن رد اتصال تطبيق معيَّن بواسطة \&\fBSSL_CTX_set_client_hello_cb()\fP طلب استدعاءه مرة أخرى. ينبغي استدعاء دالة الإدخال/الإخراج TLS/SSL لاحقًا. تعتمد التفاصيل على التطبيق. .IP SSL_ERROR_SYSCALL 4 .IX Item SSL_ERROR_SYSCALL حدث خطأ إدخال/إخراج قاتل غير قابل للاسترداد. قد يحتوي طابور أخطاء OpenSSL على مزيد من المعلومات حول الخطأ. بالنسبة لإدخال/إخراج المقبس على أنظمة Unix، راجع \&\fBerrno\fP للتفاصيل. إذا حدث هذا الخطأ، فلا ينبغي إجراء أي عمليات إدخال/إخراج أخرى على الاتصال ويجب عدم استدعاء \fBSSL_shutdown()\fP. .Sp يمكن أيضًا إرجاع هذه القيمة لأخطاء أخرى، تحقق من طابور الأخطاء للتفاصيل. .IP SSL_ERROR_SSL 4 .IX Item SSL_ERROR_SSL حدث خطأ قاتل غير قابل للاسترداد في مكتبة SSL، عادةً خطأ بروتوكول. يحتوي طابور أخطاء OpenSSL على مزيد من المعلومات حول الخطأ. إذا حدث هذا الخطأ، فلا ينبغي إجراء أي عمليات إدخال/إخراج أخرى على الاتصال ويجب عدم استدعاء \fBSSL_shutdown()\fP. .PP يمكن فحص طابور أخطاء OpenSSL باستخدام عائلة دوال \fBERR\fP، مثل \fBERR_print_errors\fP\|(3) و \fBERR_peek_last_error_all\fP\|(3). .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBssl\fP\|(7)، \&\fBERR_clear_error\fP\|(3)، \fBERR_print_errors\fP\|(3)، \fBERR_peek_last_error_all\fP\|(3) .SH التاريخ .IX Header التاريخ أُضيف رمز الخطأ SSL_ERROR_WANT_ASYNC في OpenSSL 1.1.0. أُضيف رمز الخطأ SSL_ERROR_WANT_CLIENT_HELLO_CB في OpenSSL 1.1.1. .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2000\-2024 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة. .PP مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط . .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .