cocos2dx2.xで作ったIOSアプリのIPv6対応

#背景
6月1日からiosのアプリはIPv6対応必須になっていたらしく
先日、Appleにアプリを申請したらリジェクトされたので対応した

[参考] 
http://www.bengigi.com/cocos2d-x-2-x-android-libpng-vulnerability-fix/
https://github.com/cocos2d/cocos2d-x/pull/15666
 

参考サイトはcocosv3系だったので2系でやったことをメモとして残しておく

#やったこと
まず、ここから必要なライブラリをzipでダウンロードしてくる
https://github.com/cocos2d/cocos2d-x-3rd-party-libs-bin/releases/tag/v2-deps-6

差し替えるのは以下
cocos2dx/platform/third_party/ios/curl/*.h
cocos2dx/platform/third_party/ios/libraries/libwebp.a//差し替え
cocos2dx/platform/third_party/ios/libraries/libcurl.a//差し替え
cocos2dx/platform/third_party/ios/libraries/libcrypto.a//追加
cocos2dx/platform/third_party/ios/libraries/libssl.a//追加
external/libwebsockets/ios/include/libwebsockets.h
external/libwebsockets/ios/include/lws_config.h
external/libwebsockets/ios/lib/libwebsockets.a

以下はzipの中には含まれていないので、ファイルの中を書き換える
extensions/network/WebSocket.h 
extensions/network/WebSocket.cpp

-のところを+のコードに書き換える
見にくくて申し訳ないorz

```WebSocket.h
-    int onSocketCallback(struct libwebsocket_context *ctx,
-                         struct libwebsocket *wsi,
-                         enum libwebsocket_callback_reasons reason,
+    int onSocketCallback(struct lws *wsi,
+                         enum lws_callback_reasons reason,

-    struct libwebsocket*         _wsInstance;
-    struct libwebsocket_context* _wsContext;
+    struct lws*         _wsInstance;
+    struct lws_context* _wsContext;

-    struct libwebsocket_protocols* _wsProtocols;
+    struct lws_protocols* _wsProtocols;
```


```WebSocket.cpp
-    static int onSocketCallback(struct libwebsocket_context *ctx,
-                                struct libwebsocket *wsi,
-                                enum libwebsocket_callback_reasons reason,
+    static int onSocketCallback(struct lws *wsi,
+                                enum lws_callback_reasons reason,

-        WebSocket* wsInstance = (WebSocket*)libwebsocket_context_user(ctx);
+        lws_context* context = lws_get_context(wsi);
+        WebSocket* wsInstance = (WebSocket*)lws_context_user(context);

-            return wsInstance->onSocketCallback(ctx, wsi, reason, user, in, len);
+            return wsInstance->onSocketCallback(wsi, reason, user, in, len);

-	_wsProtocols = new libwebsocket_protocols[protocolCount+1];
-	memset(_wsProtocols, 0, sizeof(libwebsocket_protocols)*(protocolCount+1));
+	_wsProtocols = new lws_protocols[protocolCount+1];
+	memset(_wsProtocols, 0, sizeof(lws_protocols)*(protocolCount+1));

-        libwebsocket_context_destroy(_wsContext);
+        lws_context_destroy(_wsContext);

-        libwebsocket_service(_wsContext, 0);
+        lws_service(_wsContext, 0);

-	info.extensions = libwebsocket_get_internal_extensions();
+	info.extensions = lws_get_internal_extensions();

-	_wsContext = libwebsocket_create_context(&info);
+	_wsContext = lws_create_context(&info);

-        _wsInstance = libwebsocket_client_connect(_wsContext, _host.c_str(), _port, _SSLConnection,
+        _wsInstance = lws_client_connect(_wsContext, _host.c_str(), _port, _SSLConnection,

-int WebSocket::onSocketCallback(struct libwebsocket_context *ctx,
-                     struct libwebsocket *wsi,
-                     enum libwebsocket_callback_reasons reason,
+int WebSocket::onSocketCallback(struct lws *wsi,
+                     enum lws_callback_reasons reason,

-int WebSocket::onSocketCallback(struct libwebsocket_context *ctx,
-                     struct libwebsocket *wsi,
-                     enum libwebsocket_callback_reasons reason,
+int WebSocket::onSocketCallback(struct lws *wsi,
+                     enum lws_callback_reasons reason,

-                libwebsocket_callback_on_writable(ctx, wsi);
+                lws_callback_on_writable(wsi);

-                        enum libwebsocket_write_protocol writeProtocol;
+                        enum lws_write_protocol writeProtocol;

-                        bytesWrite = libwebsocket_write(wsi,  &buf[LWS_SEND_BUFFER_PRE_PADDING], data->len, writeProtocol);
+                        bytesWrite = lws_write(wsi,  &buf[LWS_SEND_BUFFER_PRE_PADDING], data->len, writeProtocol);

-                libwebsocket_callback_on_writable(ctx, wsi);
+                lws_callback_on_writable(wsi);
```

WebSocketのクラスは大体が参考してるサイトの通り
"libwebsocket"から"lws"への文字列置換と、
onSocketCallbackのインターフェイス修正をすればOK

差し替えが終わったら、Xcodeのバージョンとか設定する画面(General)の
Linked frameworks and Librariesにlibcrypto.aとかlibssl.aを追加する
リンクエラーがでたらここら辺が足りてない可能性あり

#感想
最初はgitからcocos2dxを丸ごとcloneしてきたけど、
時間長かったしチェックアウトとかしてめんどくさかったので、
必要な部分だけまとめてみた