OSDN Git Service

update libMiMic
[mimic/MiMicSDK.git] / lib / src / http / NyLPC_cHttpHeaderWriter.c
index e2740b6..712a9ba 100644 (file)
@@ -19,8 +19,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
  *\r
  * For further information please contact.\r
- *     http://nyatla.jp/\r
- *     <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
+ *  http://nyatla.jp/\r
+ *  <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
  *\r
  *********************************************************************************/\r
 #include <stdlib.h>\r
  */\r
 NyLPC_TBool NyLPC_cHttpHeaderWriter_initialize(NyLPC_TcHttpHeaderWriter_t* i_inst,NyLPC_TiHttpPtrStream_t* i_ref_stream,const struct NyLPC_THttpBasicHeader* i_req_header)\r
 {\r
-       i_inst->_is_chunked=NyLPC_TUInt8_FALSE;\r
-       i_inst->_content_length=0;\r
-       i_inst->_ref_stream=i_ref_stream;\r
-       i_inst->_is_error=NyLPC_TUInt8_FALSE;\r
-       //書込エンコーディングをなしにセット\r
-       NyLPC_iHttpPtrStream_setWriteEncoding(i_inst->_ref_stream,NyLPC_TiHttpPtrStream_ET_NONE);\r
-       //必要に応じてリクエストの内容をパース\r
-       if(i_req_header!=NULL){\r
-               if(i_req_header->type!=NyLPC_THttpHeaderType_REQUEST){\r
-                       return NyLPC_TBool_FALSE;\r
-               }\r
-               //コネクションの持続性を決定\r
-               if((i_req_header->connection==NyLPC_THttpMessgeHeader_Connection_CLOSE)||\r
-                       (i_req_header->startline.req.version!=NyLPC_THttpVersion_11))\r
-               {\r
-                       i_inst->_is_close=NyLPC_TUInt8_TRUE;\r
-               }else{\r
-                       i_inst->_is_close=NyLPC_TUInt8_FALSE;\r
-               }\r
-       }else{\r
-               i_inst->_is_close=NyLPC_TUInt8_TRUE;\r
-       }\r
-       return NyLPC_TBool_TRUE;\r
+    i_inst->_is_chunked=NyLPC_TUInt8_FALSE;\r
+    i_inst->_content_length=0;\r
+    i_inst->_ref_stream=i_ref_stream;\r
+    i_inst->_is_error=NyLPC_TUInt8_FALSE;\r
+    //書込エンコーディングをなしにセット\r
+    NyLPC_iHttpPtrStream_setWriteEncoding(i_inst->_ref_stream,NyLPC_TiHttpPtrStream_ET_NONE);\r
+    //必要に応じてリクエストの内容をパース\r
+    if(i_req_header!=NULL){\r
+        if(i_req_header->type!=NyLPC_THttpHeaderType_REQUEST){\r
+            return NyLPC_TBool_FALSE;\r
+        }\r
+        //コネクションの持続性を決定\r
+        if((i_req_header->connection==NyLPC_THttpMessgeHeader_Connection_CLOSE)||\r
+            (i_req_header->startline.req.version!=NyLPC_THttpVersion_11))\r
+        {\r
+            i_inst->_is_close=NyLPC_TUInt8_TRUE;\r
+        }else{\r
+            i_inst->_is_close=NyLPC_TUInt8_FALSE;\r
+        }\r
+    }else{\r
+        i_inst->_is_close=NyLPC_TUInt8_TRUE;\r
+    }\r
+    return NyLPC_TBool_TRUE;\r
 }\r
 \r
 #define NyLPC_cHttpHttpWriter_finalize(i)\r
@@ -64,130 +64,130 @@ NyLPC_TBool NyLPC_cHttpHeaderWriter_initialize(NyLPC_TcHttpHeaderWriter_t* i_ins
 \r
 void NyLPC_cHttpHeaderWriter_setChunked(NyLPC_TcHttpHeaderWriter_t* i_inst)\r
 {\r
-       i_inst->_is_chunked=NyLPC_TUInt8_TRUE;\r
-       return;\r
+    i_inst->_is_chunked=NyLPC_TUInt8_TRUE;\r
+    return;\r
 }\r
 void NyLPC_cHttpHeaderWriter_setContentLength(NyLPC_TcHttpHeaderWriter_t* i_inst,NyLPC_TUInt32 i_content_length)\r
 {\r
-       i_inst->_content_length=i_content_length;\r
-       return;\r
+    i_inst->_content_length=i_content_length;\r
+    return;\r
 }\r
 void NyLPC_cHttpHeaderWriter_setConnectionClose(NyLPC_TcHttpHeaderWriter_t* i_inst,NyLPC_TBool i_is_close)\r
 {\r
-       i_inst->_is_close=i_is_close;\r
-       return;\r
+    i_inst->_is_close=i_is_close;\r
+    return;\r
 }\r
 \r
 \r
 \r
 const static struct{\r
-       NyLPC_TUInt16 code;\r
-       const NyLPC_TChar*  message;\r
+    NyLPC_TUInt16 code;\r
+    const NyLPC_TChar*  message;\r
 }status_line_tbl[]={\r
-       {200,"OK"},\r
-       {301,"Moved Permanently"},\r
-       {302,"Moved Temporarily"},\r
-       {400,"Bad Request"},\r
-       {403,"Forbidden"},\r
-       {404,"Not Found"},\r
-       {405,"Method Not Allowed"},\r
-       {500,"Internal Server Error"},\r
-       {0,NULL}//これ最後にしてね。\r
+    {200,"OK"},\r
+    {301,"Moved Permanently"},\r
+    {302,"Moved Temporarily"},\r
+    {400,"Bad Request"},\r
+    {403,"Forbidden"},\r
+    {404,"Not Found"},\r
+    {405,"Method Not Allowed"},\r
+    {500,"Internal Server Error"},\r
+    {0,NULL}//これ最後にしてね。\r
 };\r
 const static char* getStatusMessage(NyLPC_TUInt16 i_status)\r
 {\r
-       int i=0;\r
-       while(status_line_tbl[i].code!=0){\r
-               if(i_status==status_line_tbl[i].code){\r
-                       return status_line_tbl[i].message;\r
-               }\r
-               i++;\r
-       }\r
-       return NULL;\r
+    int i=0;\r
+    while(status_line_tbl[i].code!=0){\r
+        if(i_status==status_line_tbl[i].code){\r
+            return status_line_tbl[i].message;\r
+        }\r
+        i++;\r
+    }\r
+    return NULL;\r
 }\r
 \r
 static NyLPC_TBool writeln(NyLPC_TiHttpPtrStream_t* i_inst,const void* i_data,NyLPC_TInt16 i_length)\r
 {\r
-       if(NyLPC_iHttpPtrStream_write(i_inst,i_data,i_length)){\r
-               if(NyLPC_iHttpPtrStream_write(i_inst,"\r\n",2)){\r
-                       return NyLPC_TBool_TRUE;\r
-               }\r
-       }\r
-       return NyLPC_TBool_FALSE;\r
+    if(NyLPC_iHttpPtrStream_write(i_inst,i_data,i_length)){\r
+        if(NyLPC_iHttpPtrStream_write(i_inst,"\r\n",2)){\r
+            return NyLPC_TBool_TRUE;\r
+        }\r
+    }\r
+    return NyLPC_TBool_FALSE;\r
 }\r
 \r
 \r
 NyLPC_TBool NyLPC_cHttpHeaderWriter_writeRequestHeader(NyLPC_TcHttpHeaderWriter_t* i_inst,NyLPC_THttpMethodType i_method,const struct NyLPC_TIPv4Addr* i_host,NyLPC_TUInt16 i_port,const NyLPC_TChar* i_path)\r
 {\r
-       const NyLPC_TChar* t;\r
-       NyLPC_TChar v[16];\r
-       //エラー状態ならなにもしない。\r
-       if(i_inst->_is_error){\r
-               return NyLPC_TBool_FALSE;\r
-       }\r
+    const NyLPC_TChar* t;\r
+    NyLPC_TChar v[16];\r
+    //エラー状態ならなにもしない。\r
+    if(i_inst->_is_error){\r
+        return NyLPC_TBool_FALSE;\r
+    }\r
 \r
-       t=NyLPC_THttpMethodType_toString(i_method);\r
-       if(t==NULL){\r
-               return NyLPC_TBool_FALSE;\r
-       }\r
-       //リクエストラインの記述\r
-       //Method\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,t,-1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream," ",1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       //Path\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,i_path,-1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream," HTTP/1.1\r\n",11)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       //HOSTの記述\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Host: ",6)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       NyLPC_TIPv4Addr_toString(i_host,v);\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,v,-1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,":",1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       NyLPC_uitoa(i_port,v,10);\r
-       if(!writeln(i_inst->_ref_stream,v,-1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
+    t=NyLPC_THttpMethodType_toString(i_method);\r
+    if(t==NULL){\r
+        return NyLPC_TBool_FALSE;\r
+    }\r
+    //リクエストラインの記述\r
+    //Method\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,t,-1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream," ",1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    //Path\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,i_path,-1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream," HTTP/1.1\r\n",11)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    //HOSTの記述\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Host: ",6)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    NyLPC_TIPv4Addr_toString(i_host,v);\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,v,-1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,":",1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    NyLPC_uitoa(i_port,v,10);\r
+    if(!writeln(i_inst->_ref_stream,v,-1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
 \r
-       //close\r
-       if(i_inst->_is_close){\r
-               if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Connection: CLOSE\r\n",-1)){\r
-                       NyLPC_OnErrorGoto(Error);\r
-               }\r
-       }\r
+    //close\r
+    if(i_inst->_is_close){\r
+        if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Connection: CLOSE\r\n",-1)){\r
+            NyLPC_OnErrorGoto(Error);\r
+        }\r
+    }\r
 \r
-       //chunked\r
-       if(i_inst->_is_chunked){\r
-               if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Transfer-Encoding: chunked\r\n",-1)){\r
-                       NyLPC_OnErrorGoto(Error);\r
-               }\r
-       }else{\r
-               if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Content-Length: ",-1)){\r
-                       NyLPC_OnErrorGoto(Error);\r
-               }\r
-               NyLPC_uitoa(i_inst->_content_length,v,10);\r
-               if(!writeln(i_inst->_ref_stream,v,-1)){\r
-                       NyLPC_OnErrorGoto(Error);\r
-               }\r
-       }\r
-       //送信サイズをリセット\r
-       i_inst->_size_of_sent=0;\r
-       return NyLPC_TBool_TRUE;\r
+    //chunked\r
+    if(i_inst->_is_chunked){\r
+        if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Transfer-Encoding: chunked\r\n",-1)){\r
+            NyLPC_OnErrorGoto(Error);\r
+        }\r
+    }else{\r
+        if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Content-Length: ",-1)){\r
+            NyLPC_OnErrorGoto(Error);\r
+        }\r
+        NyLPC_uitoa(i_inst->_content_length,v,10);\r
+        if(!writeln(i_inst->_ref_stream,v,-1)){\r
+            NyLPC_OnErrorGoto(Error);\r
+        }\r
+    }\r
+    //送信サイズをリセット\r
+    i_inst->_size_of_sent=0;\r
+    return NyLPC_TBool_TRUE;\r
 Error:\r
-       i_inst->_is_error=NyLPC_TUInt8_FALSE;\r
-       return NyLPC_TBool_FALSE;\r
+    i_inst->_is_error=NyLPC_TUInt8_FALSE;\r
+    return NyLPC_TBool_FALSE;\r
 \r
 }\r
 \r
@@ -196,59 +196,59 @@ Error:
  */\r
 NyLPC_TBool NyLPC_cHttpHeaderWriter_writeResponseHeader(NyLPC_TcHttpHeaderWriter_t* i_inst,NyLPC_TUInt16 i_status)\r
 {\r
-       NyLPC_TChar v[12];\r
-       const char* m=getStatusMessage(i_status);\r
-       //エラー状態ならなにもしない。\r
-       if(i_inst->_is_error){\r
-               return NyLPC_TBool_FALSE;\r
-       }\r
-       //検索に失敗したら500番に変更\r
-       if(m==NULL){\r
-               i_status=500;\r
-               m=getStatusMessage(500);\r
-       }\r
-       //ステータスラインの記述\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"HTTP/1.1 ",9)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       NyLPC_itoa(i_status,v,10);\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,v,-1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream," ",1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       if(!writeln(i_inst->_ref_stream,m,-1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Server: " NyLPC_cHttpdConfig_SERVER "\r\n",-1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       if(i_inst->_is_close){\r
-               if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Connection: CLOSE\r\n",-1)){\r
-                       NyLPC_OnErrorGoto(Error);\r
-               }\r
-       }\r
-       //ヘッダの記述\r
-       if(i_inst->_is_chunked){\r
-               if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Transfer-Encoding: chunked\r\n",-1)){\r
-                       NyLPC_OnErrorGoto(Error);\r
-               }\r
-       }else{\r
-               if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Content-Length: ",-1)){\r
-                       NyLPC_OnErrorGoto(Error);\r
-               }\r
-               NyLPC_uitoa(i_inst->_content_length,v,10);\r
-               if(!writeln(i_inst->_ref_stream,v,-1)){\r
-                       NyLPC_OnErrorGoto(Error);\r
-               }\r
-       }\r
-       //送信サイズをリセット\r
-       i_inst->_size_of_sent=0;\r
-       return NyLPC_TBool_TRUE;\r
+    NyLPC_TChar v[12];\r
+    const char* m=getStatusMessage(i_status);\r
+    //エラー状態ならなにもしない。\r
+    if(i_inst->_is_error){\r
+        return NyLPC_TBool_FALSE;\r
+    }\r
+    //検索に失敗したら500番に変更\r
+    if(m==NULL){\r
+        i_status=500;\r
+        m=getStatusMessage(500);\r
+    }\r
+    //ステータスラインの記述\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"HTTP/1.1 ",9)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    NyLPC_itoa(i_status,v,10);\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,v,-1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream," ",1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    if(!writeln(i_inst->_ref_stream,m,-1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Server: " NyLPC_cHttpdConfig_SERVER "\r\n",-1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    if(i_inst->_is_close){\r
+        if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Connection: CLOSE\r\n",-1)){\r
+            NyLPC_OnErrorGoto(Error);\r
+        }\r
+    }\r
+    //ヘッダの記述\r
+    if(i_inst->_is_chunked){\r
+        if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Transfer-Encoding: chunked\r\n",-1)){\r
+            NyLPC_OnErrorGoto(Error);\r
+        }\r
+    }else{\r
+        if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Content-Length: ",-1)){\r
+            NyLPC_OnErrorGoto(Error);\r
+        }\r
+        NyLPC_uitoa(i_inst->_content_length,v,10);\r
+        if(!writeln(i_inst->_ref_stream,v,-1)){\r
+            NyLPC_OnErrorGoto(Error);\r
+        }\r
+    }\r
+    //送信サイズをリセット\r
+    i_inst->_size_of_sent=0;\r
+    return NyLPC_TBool_TRUE;\r
 Error:\r
-       i_inst->_is_error=NyLPC_TUInt8_FALSE;\r
-       return NyLPC_TBool_FALSE;\r
+    i_inst->_is_error=NyLPC_TUInt8_FALSE;\r
+    return NyLPC_TBool_FALSE;\r
 }\r
 \r
 /**\r
@@ -256,39 +256,39 @@ Error:
  */\r
 NyLPC_TBool NyLPC_cHttpHeaderWriter_writeMessage(NyLPC_TcHttpHeaderWriter_t* i_inst,const NyLPC_TChar* i_name,const NyLPC_TChar* i_field)\r
 {\r
-       //エラー状態ならなにもしない。\r
-       if(i_inst->_is_error){\r
-               return NyLPC_TBool_FALSE;\r
-       }\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,i_name,-1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,": ",2)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       if(!writeln(i_inst->_ref_stream,i_field,-1)){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       return NyLPC_TBool_TRUE;\r
+    //エラー状態ならなにもしない。\r
+    if(i_inst->_is_error){\r
+        return NyLPC_TBool_FALSE;\r
+    }\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,i_name,-1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,": ",2)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    if(!writeln(i_inst->_ref_stream,i_field,-1)){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    return NyLPC_TBool_TRUE;\r
 Error:\r
-       i_inst->_is_error=NyLPC_TUInt8_FALSE;\r
-       return NyLPC_TBool_FALSE;\r
+    i_inst->_is_error=NyLPC_TUInt8_FALSE;\r
+    return NyLPC_TBool_FALSE;\r
 }\r
 \r
 \r
 NyLPC_TBool NyLPC_cHttpHeaderWriter_writeRawMessage(NyLPC_TcHttpHeaderWriter_t* i_inst,const NyLPC_TChar* i_additional_header)\r
 {\r
-       //エラー状態ならなにもしない。\r
-       if(i_inst->_is_error){\r
-               return NyLPC_TBool_FALSE;\r
-       }\r
-       if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,i_additional_header,strlen(i_additional_header))){\r
-               NyLPC_OnErrorGoto(Error);\r
-       }\r
-       return NyLPC_TBool_TRUE;\r
+    //エラー状態ならなにもしない。\r
+    if(i_inst->_is_error){\r
+        return NyLPC_TBool_FALSE;\r
+    }\r
+    if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,i_additional_header,strlen(i_additional_header))){\r
+        NyLPC_OnErrorGoto(Error);\r
+    }\r
+    return NyLPC_TBool_TRUE;\r
 Error:\r
-       i_inst->_is_error=NyLPC_TUInt8_FALSE;\r
-       return NyLPC_TBool_FALSE;\r
+    i_inst->_is_error=NyLPC_TUInt8_FALSE;\r
+    return NyLPC_TBool_FALSE;\r
 }\r
 \r
 /**\r
@@ -299,16 +299,16 @@ Error:
  */\r
 NyLPC_TBool NyLPC_cHttpHeaderWriter_close(NyLPC_TcHttpHeaderWriter_t* i_inst)\r
 {\r
-       //エラー状態ならなにもしない。\r
-       if(i_inst->_is_error){\r
-               return NyLPC_TBool_FALSE;\r
-       }\r
-       if(NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"\r\n",2)){\r
-               if(     NyLPC_iHttpPtrStream_flush(i_inst->_ref_stream)){\r
-                       return NyLPC_TBool_TRUE;\r
-               }\r
-       }\r
-       return NyLPC_TBool_FALSE;\r
+    //エラー状態ならなにもしない。\r
+    if(i_inst->_is_error){\r
+        return NyLPC_TBool_FALSE;\r
+    }\r
+    if(NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"\r\n",2)){\r
+        if( NyLPC_iHttpPtrStream_flush(i_inst->_ref_stream)){\r
+            return NyLPC_TBool_TRUE;\r
+        }\r
+    }\r
+    return NyLPC_TBool_FALSE;\r
 }\r
 \r
 \r