SSL Shutdown procedure parameter

When issuing the 'show ssl-proxy-list <name>' command there is a parameter called 'SSL Shutdown procedure' which is set to NORMAL.
Does this refer to the fact the CSS reboots when the SSL module fails ? If so, can this parameter be changed ?
Thanks, Mike

no, this parameter refers to how the ssl module terminates an SSL connection.
openssl calls this operation "shutdown".
The CSS by default uses the default shutdown mode, but you can change it with the command 'ssl-server 10 unclean-shutdown'.
Some version of internet explorer do not like the normal shutdown which is why we have this unclean shutdown.
Regards,
Gilles.

Similar Messages

  • STARTUP/SHUTDOWN의 PROCEDURE와 종류

    제품 : ORACLE SERVER
    작성날짜 : 2002-04-12
    STARTUP/SHUTDOWN의 PROCEDURE와 종류
    ===================================
    Purpose
    가장 기본적인 Oracle의 startup/shutdown 각 mode와 그 특징에 대해 알아보자.
    Explanation
    ORACLE을 사용하려면 먼저 데이타베이스를 기동하여야 한다.
    ORACLE의 기동은 startup, 기동 중인 ORACLE을 사용하지 못하도록
    운영을 중지하도록 하는 것은 shutdown command를 이용해 이루어진다.
    여기에서는 startup, shutdown 시의 procedure와 startup, shutdown의
    종류에 대해 설명한다.
    1. STARTUP PROCEDURE
    stratup은 3단계의 procedure로 구성된다.
    1) 인스턴스 start
    ORACLE을 운영하기 위한 background process(dbwr, lgwr, smon, pmon 등)를
    생성하며 또한 init<SID>.ora의 parameter 값들을 읽어 SGA도 allocate한다.
    startup 시 이 procedure까지 수행하기 위하여는 sqldba(v7.2까지) 또는
    svrmgrl(v7.3 이상)에서 startup nomount를 하면 된다.
    2) mount the database
    인스턴스 start 후 데이타베이스를 mount하는 단계로 mount에서는 control
    file을 open한다. 이 단계까지만 start하는 경우에는 특별한 데이타베이스
    유지 보수 작업이 필요시 수행한다. 특별한 데이타베이스 유지 보수 작업이란
    redo log의 add, rename, media recovery의 수행 등의 작업을 의미한다.
    startup 시 mount 단계까지 수행하려면 startup mount를 수행하면 된다.
    1)에서 인스턴스를 start한 후 mount 단계로 넘어가려면 alter database
    mount를 수행하면 된다.
    3) open the database
    데이타베이스의 open은 mount 후 데이타베이스를 사용할 수 있는 환경으로
    만들어 주는 단계로서 모든 online datafile과 online redo log file을 open하고
    사용할 수 있도록 하여 준다. 데이타베이스가 중지된 상태에서 한번에 open까지
    모두 수행하기 위해서는 startup만 하면 된다. 2)에서처럼 데이타베이스를 mount
    후 open 시에는 alter database open을 수행하면 된다. (단, 인스턴스 start에서
    바로 database open을 수행할 수 없다.)
    2. STARTUP의 종류
    startup은 sqldba(v7.2까지) 또는 svrmgrl(v7.3 이상)에서 수행한다.
    1) startup
    이는 일반적인 ORACLE 기동 방법으로 startup이 완료되면 모든 user가
    데이타베이스를 access할 수 있다.
    2) startup restrict
    일반 user의 ORACLE 사용을 제한하기 위하여 startup하는 방법으로
    ORACLE user중 create session+restricted session이라는 system privilege를
    갖고 있는 user만이 데이타베이스를 사용 할 수 있다. 이는 데이타베이스 구조를
    조정하거나 data의 export, import시 등 일반 user의 사용을 제한하는 경우에
    사용한다.
    3) startup force
    shutdown normal 또는 shutdown immediate시 정상적으로 종료되지 않는 경우
    데이타베이스의 인스턴스를 강제로 kill시키고 startup하도록 한다.
    4) startup parallel
    OPS 환경으로 데이타베이스를 운영하는 경우 하나의 데이타베이스를 여러 개의
    node에서 공유한다. 이때 여러 인스턴스에서 데이타베이스를 공유하기 위해서는
    startup parallel로 기동 하여야 한다. 1)의 startup은 exclusive mode로서
    OPS로 데이타베이스 환경이 되어 있더라도 startup만 하면 여러개의 인스턴스가
    하나의 데이타베이스를 공유할 수 없다. 이는 데이타베이스가 exclusive mode로
    기동되었기 때문이다. OPS에서 데이타베이스를 공유하기 위해서는 반드시
    startup parallel로 기동하여야 한다.
    3. SHUTDOWN PROCEDURE
    shutdown은 데이타베이스의 운영을 중단하기 위해 수행하는 것으로 startup
    procedure와는 반대로 작동한다. 즉 먼저 데이타베이스를 close하고 두번째
    데이타베이스를 dismount하며 마지막으로 인스턴스를 shutdown 한다.
    4. SHUTDOWN의 종류
    shutdown도 startup처럼 sqldba(v7.2까지), svrmgrl(v7.3 이상)에서 수행한다.
    1)shutdown
    이는 일반적인 shutdown 방법으로 shutdown이 진행 중에는 새로운 user가
    데이타베이스에 세션을 맺을 수 없으며 또한 기존에 connect되어 있는 user가
    있는지 확인하여 connect된 user가 없다면 데이타베이스를 shutdown하고 user가
    있다면 connect된 user가 disconnect될 때까지 shutdown을 하지 않고 기다린다.
    2) shutdown immediate
    현재 데이타베이스를 사용 중인 user가 있지만 데이타베이스를 shutdown해야
    하는 경우 shutdown immedaite를 수행한다. shutdown immediate를 수행하면
    현재 진행 중인 SQL이 중단되고 commit되지 않은 transaction을 rollback하고
    connect되어 있던 user를 강제로 disconnect시키고 shutdown을 수행하게 된다.
    단, 다량의 data를 update하는 작업을 수행 중 shutdown immediate를 수행하면
    곧바로 database가 shutdown되지 않는다.
    이는 rollback하는 데 많은 시간을 소비하기 때문이다.
    3) shutdown abort
    connect된 user가 long transaction을 수행하고 있지만 급하게 데이타베이스를
    shutdown 하여야 하는 경우 shutdown abort를 하게 된다. shutdown abort를
    수행하면 ORACLE 인스턴스를 바로 shutdown하므로 shutdown immediate와는 달리
    commit되지 않은 transaction들을 rollback하지 않고 데이타베이스를 shutdown
    한다. 그러므로, long transaction이 있더라도 빨리 shutdown 할 수 있다.
    단, shutdown abort는 rollback하지 않고 shutdown하므로 데이타베이스에
    이상 현상을 초래할 가능성을 가지고 있다.

  • Stored Procedure parameter (@Carrier) used in report and can't be set via code

    I have a report that has regular Crystal parameters that I am setting correctly via code.  However, one report actually uses one of the database parameters from the stored procedure that the report was created from.  It is the only report like this and I'm using the same code in an attempt to set it's value.  Although no error is thown, if I look at the parameter value in the IDE it is set correctly, but the field on the report just shows up blank.  I have changed the way the report is created.  Previously, I used the report.export method to create the actual file via a stored procedure.  Now, I'm running the stored procedure first and creating a datatable.  This allows me to execute the SP only once to see if it has data, because only then do I want to create the actual report.  I'm using the SetDataSource method to pass the datatable into Crystal and then using the report.export method to create the report with data.  Everything seems to work, except this stored procedure parameter (@Carrier) is not actually being populated to display on the report.
    Not sure what to look at.  Any suggestions?
    Thanks.

    crpe32.dll is version 13.0.5.891.  This was developed in VS2012 and VB.NET.  I'm using ADO.Net to connect to a MS SQL Server database.
    MainReport.SetDataSource(DTbl)
    bRC = PopulateAllSubReports(MainReport)
    If Not bRC Then Throw New Exception("Received an error in PopulateAllSubReports.")
    bRC = PopulateCrystalParameters(MainReport, SP)
    If Not bRC Then Throw New Exception("Received an error in PopulateCrystalParameters.")
    'Actually create the output file.
    bRC = ExportData(MainReport)
    Private Function PopulateCrystalParameters(myReportDocument As ReportDocument, SP As ReportStoredProcedureCrystal) As Boolean
         Dim myParameterFieldDefinitions As ParameterFieldDefinitions = Nothing
         Dim myParameterFieldDefinition As ParameterFieldDefinition = Nothing, ParamValue As String = ""
         Dim bRC As Boolean, Param As SqlParameter = Nothing
         Try
         myParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields
    '*********************Report Parameters***************************
         For Each myParameterFieldDefinition In myParameterFieldDefinitions
              myParameterFieldDefinition.CurrentValues.Clear()
              Select Case myParameterFieldDefinition.ParameterFieldName.Trim.ToUpper
              Case "@CARRIER"
                   If SP.DBParameters.ContainsKey("@CARRIER") Then
                        Param = SP.DBParameters("@CARRIER")
                        ParamValue = NullS(Param.Value).Trim
                        bRC = SetCurrentValueForParameterField(myParameterFieldDefinition, ParamValue)
                        If Not bRC Then Return False
                   End If                           
              End Select
         Next
         Return True
         Catch ex As Exception
         GmcLog.Error("ReportKey = " & Me.ReportKey.ToString & ", " & ex.Message, ex)
         Return False
         End Try
    End Function
    Private Function SetCurrentValueForParameterField(myParameterFieldDefinition As ParameterFieldDefinition, submittedValue As Object) As Boolean
         Dim currentParameterValues As ParameterValues = Nothing
         Dim myParameterDiscreteValue As ParameterDiscreteValue = Nothing
         Try
         myParameterDiscreteValue = New ParameterDiscreteValue
         myParameterDiscreteValue.Value = NullS(submittedValue).Trim
         currentParameterValues = New ParameterValues
         currentParameterValues.Add(myParameterDiscreteValue)
         myParameterFieldDefinition.ApplyCurrentValues(currentParameterValues)
         Return True
         Catch ex As Exception
         GmcLog.Error("ReportKey = " & Me.ReportKey.ToString & ", " & ex.Message, ex)
         Return False
         Finally
         myParameterDiscreteValue = Nothing
         currentParameterValues = Nothing
         End Try
    End Function
    Private Function SetDBSourceForSubReport(mySubReport As ReportDocument) As Boolean
         Dim myTables As Tables = Nothing, myTable As Table = Nothing, DTbl As DataTable, SP As StoredProcedure = Nothing
         Try
         myTables = mySubReport.Database.Tables
         For Each myTable In myTables
              Dim SPName As String = myTable.Location.Substring(0, myTable.Location.IndexOf(";"c))
              SP = New StoredProcedure(ConnectionString, SPName, CommandType.StoredProcedure)
              DTbl = SP.FillTable
              mySubReport.SetDataSource(DTbl)
              SP = Nothing
         Next
         Return True
         Catch ex As Exception
         GmcLog.Error("ReportKey = " & Me.ReportKey.ToString & ", " & ex.Message, ex)
         Return False
         Finally
         If Not SP Is Nothing Then SP = Nothing
         If Not myTable Is Nothing Then myTable = Nothing
         If Not myTables Is Nothing Then myTables = Nothing
         End Try
    End Function
    Private Function PopulateAllSubReports(myReportDocument As ReportDocument) As Boolean
         Try
         Dim mySections As Sections = myReportDocument.ReportDefinition.Sections
         For Each mySection As Section In mySections
              Dim myReportObjects As ReportObjects = mySection.ReportObjects
              For Each myReportObject As ReportObject In myReportObjects
                   If myReportObject.Kind = ReportObjectKind.SubreportObject Then
                        Dim mySubreportObject As SubreportObject = CType(myReportObject, SubreportObject)
                        Dim subReportDocument As ReportDocument = mySubreportObject.OpenSubreport(mySubreportObject.SubreportName)
                        Dim bRC = SetDBSourceForSubReport(subReportDocument)
                        If Not bRC Then Return False
                   End If
              Next
         Next
         Return True
         Catch ex As Exception
         GmcLog.Error("ReportKey = " & Me.ReportKey.ToString & ", " & ex.Message, ex)
         Return False
         End Try
    End Function

  • Startup and shutdown procedure of OBIEE in linux

    I'm new to OBIEE. Can you please tell me the procedure of startup and shutdown procedure of OBIEE services?
    After starting the OBIEE services, what are the checklist I've to go through to make sure that OBIEE is up and running
    Thanks
    Edited by: 998932 on May 20, 2013 6:24 AM

    You can follow the steps mentioned at http://lamont-consulting.com/index.php/blog/obiee/11g/117-stop-and-start-obiee-11g-linux.
    Pls mark correct or helpful.

  • Is there any cts telepresence codec shutdown procedure?

    hello all,
    is there any shutdown procedure for cts codec.
    Because approximetly after each restart one of the codec is broken down.
    thanks.

    It'd depend on what CTS you have.
    Here's a guide for some of the 3000 Series: http://www-tss.cisco.com/eservice/compass/Telepresence/tasks/ShutDown_CTS_System.html
    Wayne
    Please remember to rate responses and to mark your question as answered if appropriate.

  • Is there an Express Shutdown Procedure

    Just got my first Airport (an Express). Although I do not yet have DSL, I plan to use it to create a wireless network @ home.
    When I do not need the network, I plan to disconnect the Express (for security). Before disconnecting (unplugging) it, is there a shutdown procedure, or do I just pull it out of the wall socket?

    I definitely second the suggestion to secure your network using WPA/WPA2 encryption. This cannot be emphasised enough since so many wireless networks are still unintended open-to-the-public.
    If your internet connection uses PPPoE to connect you can connect and disconnect PPPoE from the AirPort menu item. Your AirPort Basestation name will have a submenu where you can connect and disconnect your internet connection. You can then still use features like AirTunes without beeing connected to the internet.
    I see no need to do this though. If you leave for an extended period of time simply unplugging the express station will work fine. I usually keep my base running all the time. The constant temperature usually helps the device's lifespan.
    MacLemon

  • Passing the database name as a PL/SQL procedure parameter

    How do I pass the name of the database as a parameter to a procedure?
    If dbs is the variable name to which I pass the database name as shown in the example,
    CREATE OR REPLACE PROCEDURE Extract_gl_acct_Tbl(dbs varchar2)
    and I use dbs in the code as follows,
    SELECT ACCOUNT,
    SETID
    FROM SYSADM.PS_GL_ACCOUNT_TBL@dbs
    It gives me an error saying 'ORA-04054: database link DBS does not exist'.

    You will need to use dynamic SQL to handle this:
    create or replace ...
    is
    type rc is ref cursor;
    v_rc rc;
    begin
    open v_rc for 'select ... from sysadm.ps_gl_account_tbl@' || dbs;
    fetch v_rc into ... -- some variables
    -- if multiple rows, you'll need to do the fetch in a loop and exit when v_rc%notfound.
    close v_rc;
    end;

  • Pivot table that uses a Stored Procedure parameter and filters the data based on it

    Hello, my 1st post.  I am lost.  Please help.
    I am trying to create an Excel Pivot Table that has data that comes from an ODC but needs to be filtered based on a parameter from a Stored Procedure.  This involves Project Server.  I need to filter the results based on the RBS value of the logged
    in user.  My Stored Procedure can return the RBS as long as the ResourceNTAccount value is given.  I cant figure out how to tie this all together.

    Hi,
    Based on your description,I think this issue should be  more related to Programming/coding, you can sumbit a new case to MSDN forum.
    As I'm not quite formular with Project Server, all I can tell you is that it is easy to running a Stored Procedure within Excel, however, if you have to pass dynamic parameters you’ll have to turn to VBA.For detailed information,please refer
    to:
    http://blogs.office.com/2010/06/07/running-a-sql-stored-procedure-from-excel-no-vba/
    Wind Zhang
    TechNet Community Support

  • How to pass record set as procedure parameter.

    Hi All,
    I have a requirement, I want to pass the records that are fetched from a cursor to a procedure as a parameter.
    I dont want to use it inside the loop as we do it normally, as i might get huge volume of records using cursor, as a result the procedure also will be called number of times inside the loop.
    Can you suggest me the logic along with sample code?
    Thanks
    Suresh

    GSKumar wrote:
    I have a requirement, I want to pass the records that are fetched from a cursor to a procedure as a parameter.A cursor outputs rows - not "records".
    I dont want to use it inside the loop as we do it normally, as i might get huge volume of records using cursor, as a result the procedure also will be called number of times inside the loop.
    Can you suggest me the logic along with sample code?How else do you want to do it? If there are a million rows returned by the cursor, it means a million executions of that procedure - once for every row.
    This will be slow. And the primary reason is that executing a PL/SQL procedure (or any other code unit) for a million times, will be slow. Changing the cursor interface (from an implicit cursor to a ref cursor for example) does not change the fact there needs to be a million PL/SQL procedure executions - and does not make anything faster. To fetch rows from a cursor needs to a loop. Period.
    There are two basic ways to address this issue at hand.
    Use SQL and not PL/SQL. Instead of using PL/SQL code and logic, use SQL code and logic. This will be faster as the PL/SQL engine no longer plays a role and a million rows do not have to be send from the SQL engine to the PL/SQL engine. Instead that million rows are processed internally in the SQL engine - which will be faster. And which will provide scalable options such as using parallel query.
    Use "multi-threaded" PL/SQL. Assuming the PL/SQL code and logic are too complex to be done in SQL, the next best choice is PL/SQL. However, a single serialised PL/SQL process going through a million rows will be slow and will not scale. If parallel PL/SQL can be used, then 20 PL/SQL processes can each do 50,000 rows - as oppose to having to do a million rows.
    There are two options to "multi-thread" PL/SQL code. You can use DBMS_PARALLEL_EXECUTE (11g). You can use a parallel pipelined table function (10g and higher).

  • How to call a script with procedure parameter

    I have a script my_script.sql in sqlplus and that script calls a procedure with one in parameter my_procedure (my_parameter IN VARCHAR2).
    I need to pass the parameter in the script call.
    sqlplus>@my_script my_parameter
    How can I do that?

    SQL> set serveroutput on
    SQL> create or replace procedure testpass (par1 in varchar2)
      2  is
      3  begin
      4     dbms_output.put_line(par1);
      5* end;
    SQL> get my_script
      1* exec testpass ('&1');
    SQL> @my_script 'This is the parameter'
    This is the parameter
    PL/SQL procedure successfully completed.
    SQL>                                                                                        

  • Procedure parameter of type returned by function

    Hi there
    I want to know if it's possible to pass a parameter to procedure of type returned by function
    Something like that
    pocedure test(x in varchar2
    ,y in my_function(param)
    )

    Definitely don't fullish yourself ;-)
    AFAIK you cannot declare a variable based on the return type of a function.
    Perhaps though you are looking for SUBTYPEs.
    SQL> SET SERVEROUTPUT ON;
    SQL> DECLARE
      2    SUBTYPE subtype_name IS VARCHAR2 (30) NOT NULL;
      3
      4    PROCEDURE procedure_name (
      5      parameter_name IN subtype_name)
      6    IS
      7    BEGIN
      8      DBMS_OUTPUT.PUT_LINE (parameter_name);
      9    END;
    10
    11    FUNCTION function_name (
    12      parameter_name IN DATE)
    13      RETURN subtype_name
    14    IS
    15    BEGIN
    16      RETURN TO_CHAR (parameter_name, 'DAY');
    17    END;
    18
    19  BEGIN
    20    procedure_name (function_name (SYSDATE));
    21  END;
    22  /
    THURSDAY
    PL/SQL procedure successfully completed.
    SQL>

  • Procedure Parameter - Size of Varchar2

    Hi,
    I have a doubt regarding the procedure/Function parameter.
    We can pass varchar2 as parameter in Procedure and function. What is it default size since in table it has 4000 bytes but in procedure/function what is it size?
    Please advise.
    Thanks in advance.

    I think there is no restriction.
    I think it is a best practise that ,instead of passing many arguments in procedure pass an object or record that holds many fields. It is more maintable
    Regards...

  • A query as procedure parameter

    Dear members,
    (Forms 6i c/s)
    I'd like to send a query through a parameter to a procedure.
    The query has to be in a cursor.
    How can I do ?
    Can I send the text of the query, and tell Forms to use it as a query when declaring the cursor ?
    Can I send the cursor through a parameter ?
    Thanks for your help.

    Can you, sure. Should you? At most, rarely.
    You can use dynamic SQL (EXECUTE IMMEDIATE or DBMS_SQL) to execute an arbitrary string as a SQL statement. There are serious security issues if someone figures out how to pass a dangerous SQL statement in (i.e. update the USERS table, delete all the data from some important table, etc). If you are passing in a SELECT statement and you don't know the structure of the result set, you have to use DBMS_SQL rather than the simpler EXECUTE IMMEDIATE and use a more complicated API to describe the result set.
    Justin

  • ?Table_name as a procedure parameter

    Hi, does anyone know how to accept table and column names as arguements. I created a view from user_tab_columns so I can see the table (parameter) in the procedure but I can't update or insert because Oracle can't see the table.
    The code looks something like this so far!
    CURSOR MYCURSOR IS
    SELECT p_column_name, p_table_name&#0124; &#0124;'_REC' -- primary key
    FROM my_view
    WHERE table_name = p_table_name
    AND column_name = p_column_name;
    FOR record in cursor LOOP
    pl/sql code to change all records
    (Here's the problem)
    UPDATE p_table_name set p_column_name = v_new_column
    WHERE p_table_name&#0124; &#0124;'_REC' = record.p_table_name&#0124; &#0124;'_REC';
    ERROR p_table_name must be declared!
    Any help?
    Thanks
    Dave

    You need to give explicit rights on the tables, that is not through roles. The table names will simply not show up in the select statement unless you have been granted direct rights on them. So your problem could be that you have rights on the tables through a role, but what you need is to log in as the owner and i.e.
    grant select, insert, update on emp to developer
    etc.
    If it's not this I'm lost.
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by David Wilton ([email protected]):
    Hi, does anyone know how to accept table and column names as arguements. I created a view from user_tab_columns so I can see the table (parameter) in the procedure but I can't update or insert because Oracle can't see the table.
    The code looks something like this so far!
    CURSOR MYCURSOR IS
    SELECT p_column_name, p_table_name| |'_REC' -- primary key
    FROM my_view
    WHERE table_name = p_table_name
    AND column_name = p_column_name;
    FOR record in cursor LOOP
    pl/sql code to change all records
    (Here's the problem)
    UPDATE p_table_name set p_column_name = v_new_column
    WHERE p_table_name| |'_REC' = record.p_table_name| |'_REC';
    ERROR p_table_name must be declared!
    Any help?
    Thanks
    Dave<HR></BLOCKQUOTE>
    null

  • Passing a table as a procedure parameter

    I'm trying to pass a table_name as a parameter but it is not working. Any idea ???
    CREATE OR REPLACE PROCEDURE SIMM.populate_field
    ( field_name IN all_tab_columns.column_name%TYPE)
    IS
    v_a part_index_temp.no_dossier%TYPE;
    CURSOR c_temp IS
    SELECT no_dossier FROM part_index_temp FOR UPDATE;
    BEGIN
    OPEN c_temp;
    LOOP
    FETCH c_temp INTO v_a;
    EXIT WHEN c_temp%NOTFOUND;
    UPDATE part_index_temp a
    SET
    a.nouv_nom = (
    SELECT field_name
    FROM part_index_temp
    WHERE rnum= (SELECT (1+ABS(MOD(dbms_random.random,10)))
    FROM dual)
    WHERE CURRENT OF c_temp;
    END LOOP;
    CLOSE c_temp;
    END;

    What are you trying to accomplish?
    Describe the business requirement and we can help you.
    The way you are trying to pass in a Column name (not the table name) requires dynamic sql...

Maybe you are looking for

  • Removing "Download" in photo gallery

    I have been trying to remove the "Download" feature in the photo gallery but haven't have any success. I have tried even going into the source code. Anyone has successfully done that either on iWeb 09 or in the source code?

  • Cost element does not exist in CO

    Hi SAP folks, In new co code we have copied GL codes from co code 1000. Now while changing cost element in KA02 system gives error message like "Cost element does not exist in controlling area". Why this error message is comming, however all cost ele

  • App Store closing iTunes unexpectedly.

    I have a 21.5" 2.7 GHz iMac purchased during July 2013, running 10.9. Twice recently, the App Store icon suddenly displays a "1" indicating an update, and when it does it unexpectedly closes iTunes. I click on App Store and there are no updates. The

  • Getting aperture 3 onto new computer

    I have aperture 3 and it is not allowing me to transfer the application into my new imac. Is there an update, etc. I can get to ba able to put it on my new imac without buying a new aperture software?

  • How to demote to body from the keyboard in outline form?

    How to demote to body from the keyboard in outline form?