{"action":"created","comment":{"url":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/comments/211569778","pull_request_review_id":148015433,"id":211569778,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMTU2OTc3OA==","diff_hunk":"@@ -2822,54 +2881,168 @@ static void ssl_swap_epochs( mbedtls_ssl_context *ssl )\n \n /*\n  * Retransmit the current flight of messages.\n+ */\n+int mbedtls_ssl_resend( mbedtls_ssl_context *ssl )\n+{\n+    int ret = 0;\n+\n+    MBEDTLS_SSL_DEBUG_MSG( 2, ( \"=> mbedtls_ssl_resend\" ) );\n+\n+    ret = mbedtls_ssl_flight_transmit( ssl );\n+\n+    MBEDTLS_SSL_DEBUG_MSG( 2, ( \"<= mbedtls_ssl_resend\" ) );\n+\n+    return( ret );\n+}\n+\n+/*\n+ * Transmit or retransmit the current flight of messages.\n  *\n  * Need to remember the current message in case flush_output returns\n  * WANT_WRITE, causing us to exit this function and come back later.\n  * This function must be called until state is no longer SENDING.\n  */\n-int mbedtls_ssl_resend( mbedtls_ssl_context *ssl )\n+int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl )\n {\n-    MBEDTLS_SSL_DEBUG_MSG( 2, ( \"=> mbedtls_ssl_resend\" ) );\n+    int ret;\n+    MBEDTLS_SSL_DEBUG_MSG( 2, ( \"=> mbedtls_ssl_flight_transmit\" ) );\n \n     if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING )\n     {\n-        MBEDTLS_SSL_DEBUG_MSG( 2, ( \"initialise resending\" ) );\n+        MBEDTLS_SSL_DEBUG_MSG( 2, ( \"initialise flight transmission\" ) );\n \n         ssl->handshake->cur_msg = ssl->handshake->flight;\n+        ssl->handshake->cur_msg_p = ssl->handshake->flight->p + 12;\n         ssl_swap_epochs( ssl );\n \n         ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_SENDING;\n     }\n \n     while( ssl->handshake->cur_msg != NULL )\n     {\n-        int ret;\n-        mbedtls_ssl_flight_item *cur = ssl->handshake->cur_msg;\n+        size_t max_frag_len;\n+        const mbedtls_ssl_flight_item * const cur = ssl->handshake->cur_msg;\n+\n+        int const is_finished =\n+            ( cur->type == MBEDTLS_SSL_MSG_HANDSHAKE &&\n+              cur->p[0] == MBEDTLS_SSL_HS_FINISHED );\n+\n+        uint8_t const force_flush = ssl->disable_datagram_packing == 1 ?\n+            SSL_FORCE_FLUSH : SSL_DONT_FORCE_FLUSH;\n \n         /* Swap epochs before sending Finished: we can't do it after\n          * sending ChangeCipherSpec, in case write returns WANT_READ.\n          * Must be done before copying, may change out_msg pointer */\n-        if( cur->type == MBEDTLS_SSL_MSG_HANDSHAKE &&\n-            cur->p[0] == MBEDTLS_SSL_HS_FINISHED )\n+        if( is_finished && ssl->handshake->cur_msg_p == ( cur->p + 12 ) )\n         {\n+            MBEDTLS_SSL_DEBUG_MSG( 2, ( \"swap epochs to send finished message\" ) );\n             ssl_swap_epochs( ssl );\n         }\n \n-        memcpy( ssl->out_msg, cur->p, cur->len );\n-        ssl->out_msglen = cur->len;\n-        ssl->out_msgtype = cur->type;\n+        ret = ssl_get_remaining_payload_in_datagram( ssl );\n+        if( ret < 0 )\n+            return( ret );\n+        max_frag_len = (size_t) ret;\n+\n+        /* CCS is copied as is, while HS messages may need fragmentation */\n+        if( cur->type == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC )\n+        {\n+            if( max_frag_len == 0 )\n+            {\n+                if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 )\n+                    return( ret );\n+\n+                continue;\n+            }\n+\n+            memcpy( ssl->out_msg, cur->p, cur->len );\n+            ssl->out_msglen  = cur->len;\n+            ssl->out_msgtype = cur->type;\n+\n+            /* Update position inside current message */\n+            ssl->handshake->cur_msg_p += cur->len;\n+        }\n+        else\n+        {\n+            const unsigned char * const p = ssl->handshake->cur_msg_p;\n+            const size_t hs_len = cur->len - 12;\n+            const size_t frag_off = p - ( cur->p + 12 );\n+            const size_t rem_len = hs_len - frag_off;\n+            size_t cur_hs_frag_len, max_hs_frag_len;\n+\n+            if( ( max_frag_len < 12 ) || ( max_frag_len == 12 && hs_len != 0 ) )\n+            {\n+                if( is_finished )\n+                    ssl_swap_epochs( ssl );\n+\n+                if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 )\n+                    return( ret );\n+\n+                continue;\n+            }\n+            max_hs_frag_len = max_frag_len - 12;\n+\n+            cur_hs_frag_len = rem_len > max_hs_frag_len ?\n+                max_hs_frag_len : rem_len;\n+\n+            if( frag_off == 0 && cur_hs_frag_len != hs_len )\n+            {\n+                MBEDTLS_SSL_DEBUG_MSG( 2, ( \"fragmenting handshake message (%u > %u)\",\n+                                            (unsigned) cur_hs_frag_len,\n+                                            (unsigned) max_hs_frag_len ) );\n+            }\n+\n+            /* Messages are stored with handshake headers as if not fragmented,\n+             * copy beginning of headers then fill fragmentation fields.\n+             * Handshake headers: type(1) len(3) seq(2) f_off(3) f_len(3) */\n+            memcpy( ssl->out_msg, cur->p, 6 );\n+\n+            ssl->out_msg[6] = ( ( frag_off >> 16 ) & 0xff );\n+            ssl->out_msg[7] = ( ( frag_off >>  8 ) & 0xff );\n+            ssl->out_msg[8] = ( ( frag_off       ) & 0xff );\n+\n+            ssl->out_msg[ 9] = ( ( cur_hs_frag_len >> 16 ) & 0xff );\n+            ssl->out_msg[10] = ( ( cur_hs_frag_len >>  8 ) & 0xff );\n+            ssl->out_msg[11] = ( ( cur_hs_frag_len       ) & 0xff );\n+\n+            MBEDTLS_SSL_DEBUG_BUF( 3, \"handshake header\", ssl->out_msg, 12 );\n \n-        ssl->handshake->cur_msg = cur->next;\n+            /* Copy the handshame message content and set records fields */","path":"library/ssl_tls.c","position":327,"original_position":327,"commit_id":"0850b23acd20a9cd46736b9a4e5328a6a89fe0b1","original_commit_id":"0850b23acd20a9cd46736b9a4e5328a6a89fe0b1","user":{"login":"hanno-arm","id":26892988,"node_id":"MDQ6VXNlcjI2ODkyOTg4","avatar_url":"https://avatars1.githubusercontent.com/u/26892988?v=4","gravatar_id":"","url":"https://api.github.com/users/hanno-arm","html_url":"https://github.com/hanno-arm","followers_url":"https://api.github.com/users/hanno-arm/followers","following_url":"https://api.github.com/users/hanno-arm/following{/other_user}","gists_url":"https://api.github.com/users/hanno-arm/gists{/gist_id}","starred_url":"https://api.github.com/users/hanno-arm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hanno-arm/subscriptions","organizations_url":"https://api.github.com/users/hanno-arm/orgs","repos_url":"https://api.github.com/users/hanno-arm/repos","events_url":"https://api.github.com/users/hanno-arm/events{/privacy}","received_events_url":"https://api.github.com/users/hanno-arm/received_events","type":"User","site_admin":false},"body":"@AndrzejKurek Could you nonetheless try to put the comments in the correct PR? I don't think it's good to start mixing the two PR's by having me address some issues from #1939.","created_at":"2018-08-21T11:28:54Z","updated_at":"2018-08-21T11:28:54Z","html_url":"https://github.com/ARMmbed/mbedtls/pull/1918#discussion_r211569778","pull_request_url":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/1918","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/comments/211569778"},"html":{"href":"https://github.com/ARMmbed/mbedtls/pull/1918#discussion_r211569778"},"pull_request":{"href":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/1918"}},"in_reply_to_id":211532843},"pull_request":{"url":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/1918","id":206082224,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2MDgyMjI0","html_url":"https://github.com/ARMmbed/mbedtls/pull/1918","diff_url":"https://github.com/ARMmbed/mbedtls/pull/1918.diff","patch_url":"https://github.com/ARMmbed/mbedtls/pull/1918.patch","issue_url":"https://api.github.com/repos/ARMmbed/mbedtls/issues/1918","number":1918,"state":"open","locked":false,"title":"Add support for datagram packing","user":{"login":"hanno-arm","id":26892988,"node_id":"MDQ6VXNlcjI2ODkyOTg4","avatar_url":"https://avatars1.githubusercontent.com/u/26892988?v=4","gravatar_id":"","url":"https://api.github.com/users/hanno-arm","html_url":"https://github.com/hanno-arm","followers_url":"https://api.github.com/users/hanno-arm/followers","following_url":"https://api.github.com/users/hanno-arm/following{/other_user}","gists_url":"https://api.github.com/users/hanno-arm/gists{/gist_id}","starred_url":"https://api.github.com/users/hanno-arm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hanno-arm/subscriptions","organizations_url":"https://api.github.com/users/hanno-arm/orgs","repos_url":"https://api.github.com/users/hanno-arm/repos","events_url":"https://api.github.com/users/hanno-arm/events{/privacy}","received_events_url":"https://api.github.com/users/hanno-arm/received_events","type":"User","site_admin":false},"body":"__Summary:__ This PR adds support for stacking multiple records in a single datagram, based on the ongoing work to support outgoing handshake fragmentation in #1939. The first new commit is https://github.com/ARMmbed/mbedtls/pull/1918/commits/5aa4e2cedd819b4fd307531eaa64f4f5ca8a01d4.","created_at":"2018-08-03T16:39:04Z","updated_at":"2018-08-21T11:28:54Z","closed_at":null,"merged_at":null,"merge_commit_sha":"21aa658b6da7698ba74042a7d19096ace9bc330d","assignee":null,"assignees":[],"requested_reviewers":[{"login":"k-stachowiak","id":2103379,"node_id":"MDQ6VXNlcjIxMDMzNzk=","avatar_url":"https://avatars3.githubusercontent.com/u/2103379?v=4","gravatar_id":"","url":"https://api.github.com/users/k-stachowiak","html_url":"https://github.com/k-stachowiak","followers_url":"https://api.github.com/users/k-stachowiak/followers","following_url":"https://api.github.com/users/k-stachowiak/following{/other_user}","gists_url":"https://api.github.com/users/k-stachowiak/gists{/gist_id}","starred_url":"https://api.github.com/users/k-stachowiak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/k-stachowiak/subscriptions","organizations_url":"https://api.github.com/users/k-stachowiak/orgs","repos_url":"https://api.github.com/users/k-stachowiak/repos","events_url":"https://api.github.com/users/k-stachowiak/events{/privacy}","received_events_url":"https://api.github.com/users/k-stachowiak/received_events","type":"User","site_admin":false},{"login":"sbutcher-arm","id":8195775,"node_id":"MDQ6VXNlcjgxOTU3NzU=","avatar_url":"https://avatars1.githubusercontent.com/u/8195775?v=4","gravatar_id":"","url":"https://api.github.com/users/sbutcher-arm","html_url":"https://github.com/sbutcher-arm","followers_url":"https://api.github.com/users/sbutcher-arm/followers","following_url":"https://api.github.com/users/sbutcher-arm/following{/other_user}","gists_url":"https://api.github.com/users/sbutcher-arm/gists{/gist_id}","starred_url":"https://api.github.com/users/sbutcher-arm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbutcher-arm/subscriptions","organizations_url":"https://api.github.com/users/sbutcher-arm/orgs","repos_url":"https://api.github.com/users/sbutcher-arm/repos","events_url":"https://api.github.com/users/sbutcher-arm/events{/privacy}","received_events_url":"https://api.github.com/users/sbutcher-arm/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":937147638,"node_id":"MDU6TGFiZWw5MzcxNDc2Mzg=","url":"https://api.github.com/repos/ARMmbed/mbedtls/labels/component:%20TLS","name":"component: TLS","color":"CEE3F6","default":false},{"id":19280386,"node_id":"MDU6TGFiZWwxOTI4MDM4Ng==","url":"https://api.github.com/repos/ARMmbed/mbedtls/labels/enhancement","name":"enhancement","color":"84b6eb","default":true},{"id":408190313,"node_id":"MDU6TGFiZWw0MDgxOTAzMTM=","url":"https://api.github.com/repos/ARMmbed/mbedtls/labels/mbed%20TLS%20team","name":"mbed TLS team","color":"66e0ff","default":false},{"id":685773676,"node_id":"MDU6TGFiZWw2ODU3NzM2NzY=","url":"https://api.github.com/repos/ARMmbed/mbedtls/labels/needs%20design%20approval","name":"needs design approval","color":"5319e7","default":false},{"id":705358813,"node_id":"MDU6TGFiZWw3MDUzNTg4MTM=","url":"https://api.github.com/repos/ARMmbed/mbedtls/labels/needs%20review","name":"needs review","color":"fbca04","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/1918/commits","review_comments_url":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/1918/comments","review_comment_url":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ARMmbed/mbedtls/issues/1918/comments","statuses_url":"https://api.github.com/repos/ARMmbed/mbedtls/statuses/0850b23acd20a9cd46736b9a4e5328a6a89fe0b1","head":{"label":"hanno-arm:datagram_packing","ref":"datagram_packing","sha":"0850b23acd20a9cd46736b9a4e5328a6a89fe0b1","user":{"login":"hanno-arm","id":26892988,"node_id":"MDQ6VXNlcjI2ODkyOTg4","avatar_url":"https://avatars1.githubusercontent.com/u/26892988?v=4","gravatar_id":"","url":"https://api.github.com/users/hanno-arm","html_url":"https://github.com/hanno-arm","followers_url":"https://api.github.com/users/hanno-arm/followers","following_url":"https://api.github.com/users/hanno-arm/following{/other_user}","gists_url":"https://api.github.com/users/hanno-arm/gists{/gist_id}","starred_url":"https://api.github.com/users/hanno-arm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hanno-arm/subscriptions","organizations_url":"https://api.github.com/users/hanno-arm/orgs","repos_url":"https://api.github.com/users/hanno-arm/repos","events_url":"https://api.github.com/users/hanno-arm/events{/privacy}","received_events_url":"https://api.github.com/users/hanno-arm/received_events","type":"User","site_admin":false},"repo":{"id":87815731,"node_id":"MDEwOlJlcG9zaXRvcnk4NzgxNTczMQ==","name":"mbedtls","full_name":"hanno-arm/mbedtls","owner":{"login":"hanno-arm","id":26892988,"node_id":"MDQ6VXNlcjI2ODkyOTg4","avatar_url":"https://avatars1.githubusercontent.com/u/26892988?v=4","gravatar_id":"","url":"https://api.github.com/users/hanno-arm","html_url":"https://github.com/hanno-arm","followers_url":"https://api.github.com/users/hanno-arm/followers","following_url":"https://api.github.com/users/hanno-arm/following{/other_user}","gists_url":"https://api.github.com/users/hanno-arm/gists{/gist_id}","starred_url":"https://api.github.com/users/hanno-arm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hanno-arm/subscriptions","organizations_url":"https://api.github.com/users/hanno-arm/orgs","repos_url":"https://api.github.com/users/hanno-arm/repos","events_url":"https://api.github.com/users/hanno-arm/events{/privacy}","received_events_url":"https://api.github.com/users/hanno-arm/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/hanno-arm/mbedtls","description":"An open source, portable, easy to use, readable and flexible SSL library","fork":true,"url":"https://api.github.com/repos/hanno-arm/mbedtls","forks_url":"https://api.github.com/repos/hanno-arm/mbedtls/forks","keys_url":"https://api.github.com/repos/hanno-arm/mbedtls/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hanno-arm/mbedtls/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hanno-arm/mbedtls/teams","hooks_url":"https://api.github.com/repos/hanno-arm/mbedtls/hooks","issue_events_url":"https://api.github.com/repos/hanno-arm/mbedtls/issues/events{/number}","events_url":"https://api.github.com/repos/hanno-arm/mbedtls/events","assignees_url":"https://api.github.com/repos/hanno-arm/mbedtls/assignees{/user}","branches_url":"https://api.github.com/repos/hanno-arm/mbedtls/branches{/branch}","tags_url":"https://api.github.com/repos/hanno-arm/mbedtls/tags","blobs_url":"https://api.github.com/repos/hanno-arm/mbedtls/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hanno-arm/mbedtls/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hanno-arm/mbedtls/git/refs{/sha}","trees_url":"https://api.github.com/repos/hanno-arm/mbedtls/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hanno-arm/mbedtls/statuses/{sha}","languages_url":"https://api.github.com/repos/hanno-arm/mbedtls/languages","stargazers_url":"https://api.github.com/repos/hanno-arm/mbedtls/stargazers","contributors_url":"https://api.github.com/repos/hanno-arm/mbedtls/contributors","subscribers_url":"https://api.github.com/repos/hanno-arm/mbedtls/subscribers","subscription_url":"https://api.github.com/repos/hanno-arm/mbedtls/subscription","commits_url":"https://api.github.com/repos/hanno-arm/mbedtls/commits{/sha}","git_commits_url":"https://api.github.com/repos/hanno-arm/mbedtls/git/commits{/sha}","comments_url":"https://api.github.com/repos/hanno-arm/mbedtls/comments{/number}","issue_comment_url":"https://api.github.com/repos/hanno-arm/mbedtls/issues/comments{/number}","contents_url":"https://api.github.com/repos/hanno-arm/mbedtls/contents/{+path}","compare_url":"https://api.github.com/repos/hanno-arm/mbedtls/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hanno-arm/mbedtls/merges","archive_url":"https://api.github.com/repos/hanno-arm/mbedtls/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hanno-arm/mbedtls/downloads","issues_url":"https://api.github.com/repos/hanno-arm/mbedtls/issues{/number}","pulls_url":"https://api.github.com/repos/hanno-arm/mbedtls/pulls{/number}","milestones_url":"https://api.github.com/repos/hanno-arm/mbedtls/milestones{/number}","notifications_url":"https://api.github.com/repos/hanno-arm/mbedtls/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hanno-arm/mbedtls/labels{/name}","releases_url":"https://api.github.com/repos/hanno-arm/mbedtls/releases{/id}","deployments_url":"https://api.github.com/repos/hanno-arm/mbedtls/deployments","created_at":"2017-04-10T13:44:55Z","updated_at":"2017-04-10T13:45:00Z","pushed_at":"2018-08-21T09:03:31Z","git_url":"git://github.com/hanno-arm/mbedtls.git","ssh_url":"git@github.com:hanno-arm/mbedtls.git","clone_url":"https://github.com/hanno-arm/mbedtls.git","svn_url":"https://github.com/hanno-arm/mbedtls","homepage":"https://tls.mbed.org","size":30958,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"development"}},"base":{"label":"ARMmbed:development","ref":"development","sha":"aa9f3fd6b143d86294e2626e8a91fd9ebbd87348","user":{"login":"ARMmbed","id":8916057,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg5MTYwNTc=","avatar_url":"https://avatars3.githubusercontent.com/u/8916057?v=4","gravatar_id":"","url":"https://api.github.com/users/ARMmbed","html_url":"https://github.com/ARMmbed","followers_url":"https://api.github.com/users/ARMmbed/followers","following_url":"https://api.github.com/users/ARMmbed/following{/other_user}","gists_url":"https://api.github.com/users/ARMmbed/gists{/gist_id}","starred_url":"https://api.github.com/users/ARMmbed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ARMmbed/subscriptions","organizations_url":"https://api.github.com/users/ARMmbed/orgs","repos_url":"https://api.github.com/users/ARMmbed/repos","events_url":"https://api.github.com/users/ARMmbed/events{/privacy}","received_events_url":"https://api.github.com/users/ARMmbed/received_events","type":"Organization","site_admin":false},"repo":{"id":6687936,"node_id":"MDEwOlJlcG9zaXRvcnk2Njg3OTM2","name":"mbedtls","full_name":"ARMmbed/mbedtls","owner":{"login":"ARMmbed","id":8916057,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg5MTYwNTc=","avatar_url":"https://avatars3.githubusercontent.com/u/8916057?v=4","gravatar_id":"","url":"https://api.github.com/users/ARMmbed","html_url":"https://github.com/ARMmbed","followers_url":"https://api.github.com/users/ARMmbed/followers","following_url":"https://api.github.com/users/ARMmbed/following{/other_user}","gists_url":"https://api.github.com/users/ARMmbed/gists{/gist_id}","starred_url":"https://api.github.com/users/ARMmbed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ARMmbed/subscriptions","organizations_url":"https://api.github.com/users/ARMmbed/orgs","repos_url":"https://api.github.com/users/ARMmbed/repos","events_url":"https://api.github.com/users/ARMmbed/events{/privacy}","received_events_url":"https://api.github.com/users/ARMmbed/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ARMmbed/mbedtls","description":"An open source, portable, easy to use, readable and flexible SSL library","fork":false,"url":"https://api.github.com/repos/ARMmbed/mbedtls","forks_url":"https://api.github.com/repos/ARMmbed/mbedtls/forks","keys_url":"https://api.github.com/repos/ARMmbed/mbedtls/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ARMmbed/mbedtls/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ARMmbed/mbedtls/teams","hooks_url":"https://api.github.com/repos/ARMmbed/mbedtls/hooks","issue_events_url":"https://api.github.com/repos/ARMmbed/mbedtls/issues/events{/number}","events_url":"https://api.github.com/repos/ARMmbed/mbedtls/events","assignees_url":"https://api.github.com/repos/ARMmbed/mbedtls/assignees{/user}","branches_url":"https://api.github.com/repos/ARMmbed/mbedtls/branches{/branch}","tags_url":"https://api.github.com/repos/ARMmbed/mbedtls/tags","blobs_url":"https://api.github.com/repos/ARMmbed/mbedtls/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ARMmbed/mbedtls/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ARMmbed/mbedtls/git/refs{/sha}","trees_url":"https://api.github.com/repos/ARMmbed/mbedtls/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ARMmbed/mbedtls/statuses/{sha}","languages_url":"https://api.github.com/repos/ARMmbed/mbedtls/languages","stargazers_url":"https://api.github.com/repos/ARMmbed/mbedtls/stargazers","contributors_url":"https://api.github.com/repos/ARMmbed/mbedtls/contributors","subscribers_url":"https://api.github.com/repos/ARMmbed/mbedtls/subscribers","subscription_url":"https://api.github.com/repos/ARMmbed/mbedtls/subscription","commits_url":"https://api.github.com/repos/ARMmbed/mbedtls/commits{/sha}","git_commits_url":"https://api.github.com/repos/ARMmbed/mbedtls/git/commits{/sha}","comments_url":"https://api.github.com/repos/ARMmbed/mbedtls/comments{/number}","issue_comment_url":"https://api.github.com/repos/ARMmbed/mbedtls/issues/comments{/number}","contents_url":"https://api.github.com/repos/ARMmbed/mbedtls/contents/{+path}","compare_url":"https://api.github.com/repos/ARMmbed/mbedtls/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ARMmbed/mbedtls/merges","archive_url":"https://api.github.com/repos/ARMmbed/mbedtls/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ARMmbed/mbedtls/downloads","issues_url":"https://api.github.com/repos/ARMmbed/mbedtls/issues{/number}","pulls_url":"https://api.github.com/repos/ARMmbed/mbedtls/pulls{/number}","milestones_url":"https://api.github.com/repos/ARMmbed/mbedtls/milestones{/number}","notifications_url":"https://api.github.com/repos/ARMmbed/mbedtls/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ARMmbed/mbedtls/labels{/name}","releases_url":"https://api.github.com/repos/ARMmbed/mbedtls/releases{/id}","deployments_url":"https://api.github.com/repos/ARMmbed/mbedtls/deployments","created_at":"2012-11-14T13:13:13Z","updated_at":"2018-08-21T08:04:18Z","pushed_at":"2018-08-21T10:24:53Z","git_url":"git://github.com/ARMmbed/mbedtls.git","ssh_url":"git@github.com:ARMmbed/mbedtls.git","clone_url":"https://github.com/ARMmbed/mbedtls.git","svn_url":"https://github.com/ARMmbed/mbedtls","homepage":"https://tls.mbed.org","size":29952,"stargazers_count":1496,"watchers_count":1496,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":912,"mirror_url":null,"archived":false,"open_issues_count":525,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":912,"open_issues":525,"watchers":1496,"default_branch":"development"}},"_links":{"self":{"href":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/1918"},"html":{"href":"https://github.com/ARMmbed/mbedtls/pull/1918"},"issue":{"href":"https://api.github.com/repos/ARMmbed/mbedtls/issues/1918"},"comments":{"href":"https://api.github.com/repos/ARMmbed/mbedtls/issues/1918/comments"},"review_comments":{"href":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/1918/comments"},"review_comment":{"href":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ARMmbed/mbedtls/pulls/1918/commits"},"statuses":{"href":"https://api.github.com/repos/ARMmbed/mbedtls/statuses/0850b23acd20a9cd46736b9a4e5328a6a89fe0b1"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"hanno-arm"}}