From: David M. Lee Date: Tue, 23 Jul 2013 14:57:03 +0000 (+0000) Subject: No more teapots. X-Git-Tag: 13.0.0-beta1~1437 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e148c6e867540675d1f26e54fa91b3497d0e8b6f;p=thirdparty%2Fasterisk.git No more teapots. Now that the ARI implementation is nearing some definition of completeness, we should properly respond with 501's for unimplemented functionality, instead of the almost humorous 418. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@395136 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/res/res_stasis_http.c b/res/res_stasis_http.c index 196912390b..393953f243 100644 --- a/res/res_stasis_http.c +++ b/res/res_stasis_http.c @@ -545,9 +545,10 @@ void stasis_http_invoke(struct ast_tcptls_session_instance *ser, callback(get_params, path_vars, headers, response); if (response->message == NULL && response->response_code == 0) { /* Really should not happen */ - ast_assert(0); + ast_log(LOG_ERROR, "ARI %s %s not implemented\n", + ast_get_http_method(method), uri); stasis_http_response_error( - response, 418, "I'm a teapot", + response, 501, "Not Implemented", "Method not implemented"); } } diff --git a/res/res_stasis_http_asterisk.c b/res/res_stasis_http_asterisk.c index 3c035652d1..d6c579bf29 100644 --- a/res/res_stasis_http_asterisk.c +++ b/res/res_stasis_http_asterisk.c @@ -78,7 +78,11 @@ static void stasis_http_get_asterisk_info_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -128,7 +132,11 @@ static void stasis_http_get_global_var_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -181,7 +189,11 @@ static void stasis_http_set_global_var_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: diff --git a/res/res_stasis_http_bridges.c b/res/res_stasis_http_bridges.c index 86093abb20..eca992cbda 100644 --- a/res/res_stasis_http_bridges.c +++ b/res/res_stasis_http_bridges.c @@ -70,7 +70,11 @@ static void stasis_http_get_bridges_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -120,7 +124,11 @@ static void stasis_http_new_bridge_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -170,7 +178,11 @@ static void stasis_http_get_bridge_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Bridge not found */ is_valid = 1; break; @@ -221,7 +233,11 @@ static void stasis_http_delete_bridge_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Bridge not found */ is_valid = 1; break; @@ -278,7 +294,11 @@ static void stasis_http_add_channel_to_bridge_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Bridge not found */ case 409: /* Bridge not in Stasis application */ case 422: /* Channel not found, or not in Stasis application */ @@ -337,7 +357,11 @@ static void stasis_http_remove_channel_from_bridge_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -402,7 +426,11 @@ static void stasis_http_play_on_bridge_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Bridge not found */ case 409: /* Bridge not in a Stasis application */ is_valid = 1; @@ -478,7 +506,11 @@ static void stasis_http_record_bridge_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: diff --git a/res/res_stasis_http_channels.c b/res/res_stasis_http_channels.c index 180f33b473..b7498856b6 100644 --- a/res/res_stasis_http_channels.c +++ b/res/res_stasis_http_channels.c @@ -70,7 +70,11 @@ static void stasis_http_get_channels_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -141,7 +145,11 @@ static void stasis_http_originate_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 400: /* Invalid parameters for originating a channel. */ is_valid = 1; break; @@ -192,7 +200,11 @@ static void stasis_http_get_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ is_valid = 1; break; @@ -243,7 +255,11 @@ static void stasis_http_delete_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ is_valid = 1; break; @@ -309,7 +325,11 @@ static void stasis_http_dial_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -373,7 +393,11 @@ static void stasis_http_continue_in_dialplan_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -425,7 +449,11 @@ static void stasis_http_answer_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -483,7 +511,11 @@ static void stasis_http_mute_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -541,7 +573,11 @@ static void stasis_http_unmute_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -593,7 +629,11 @@ static void stasis_http_hold_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -645,7 +685,11 @@ static void stasis_http_unhold_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -703,7 +747,11 @@ static void stasis_http_moh_start_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -755,7 +803,11 @@ static void stasis_http_moh_stop_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -822,7 +874,11 @@ static void stasis_http_play_on_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -898,7 +954,11 @@ static void stasis_http_record_channel_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 400: /* Invalid parameters */ case 404: /* Channel not found */ case 409: /* Channel is not in a Stasis application; the channel is currently bridged with other channels; A recording with the same name is currently in progress. */ @@ -957,7 +1017,11 @@ static void stasis_http_get_channel_var_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; @@ -1018,7 +1082,11 @@ static void stasis_http_set_channel_var_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 404: /* Channel not found */ case 409: /* Channel not in a Stasis application */ is_valid = 1; diff --git a/res/res_stasis_http_endpoints.c b/res/res_stasis_http_endpoints.c index f85de3b7dc..3a3116569f 100644 --- a/res/res_stasis_http_endpoints.c +++ b/res/res_stasis_http_endpoints.c @@ -70,7 +70,11 @@ static void stasis_http_get_endpoints_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -120,7 +124,11 @@ static void stasis_http_get_endpoints_by_tech_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -173,7 +181,11 @@ static void stasis_http_get_endpoint_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: diff --git a/res/res_stasis_http_playback.c b/res/res_stasis_http_playback.c index 9b6ab594d8..3a77e6d163 100644 --- a/res/res_stasis_http_playback.c +++ b/res/res_stasis_http_playback.c @@ -78,7 +78,11 @@ static void stasis_http_get_playback_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -128,7 +132,11 @@ static void stasis_http_stop_playback_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -184,7 +192,11 @@ static void stasis_http_control_playback_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ case 400: /* The provided operation parameter was invalid */ case 404: /* The playback cannot be found */ case 409: /* The operation cannot be performed in the playback's current state */ diff --git a/res/res_stasis_http_recordings.c b/res/res_stasis_http_recordings.c index e09ccbdb3d..b1176eb4c8 100644 --- a/res/res_stasis_http_recordings.c +++ b/res/res_stasis_http_recordings.c @@ -70,7 +70,11 @@ static void stasis_http_get_stored_recordings_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -120,7 +124,11 @@ static void stasis_http_get_stored_recording_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -170,7 +178,11 @@ static void stasis_http_delete_stored_recording_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -212,7 +224,11 @@ static void stasis_http_get_live_recordings_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -262,7 +278,11 @@ static void stasis_http_get_live_recording_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -312,7 +332,11 @@ static void stasis_http_cancel_recording_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -362,7 +386,11 @@ static void stasis_http_stop_recording_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -412,7 +440,11 @@ static void stasis_http_pause_recording_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -462,7 +494,11 @@ static void stasis_http_unpause_recording_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -512,7 +548,11 @@ static void stasis_http_mute_recording_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -562,7 +602,11 @@ static void stasis_http_unmute_recording_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: diff --git a/res/res_stasis_http_sounds.c b/res/res_stasis_http_sounds.c index 84fdeeebfd..1126cef4b4 100644 --- a/res/res_stasis_http_sounds.c +++ b/res/res_stasis_http_sounds.c @@ -81,7 +81,11 @@ static void stasis_http_get_sounds_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: @@ -131,7 +135,11 @@ static void stasis_http_get_stored_sound_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ is_valid = 1; break; default: diff --git a/rest-api-templates/res_stasis_http_resource.c.mustache b/rest-api-templates/res_stasis_http_resource.c.mustache index d358732589..4eda1c5fab 100644 --- a/rest-api-templates/res_stasis_http_resource.c.mustache +++ b/rest-api-templates/res_stasis_http_resource.c.mustache @@ -78,7 +78,11 @@ static void stasis_http_{{c_nickname}}_cb( code = response->response_code; switch (code) { - case 500: /* Internal server error */ + case 0: /* Implementation is still a stub, or the code wasn't set */ + is_valid = response->message == NULL; + break; + case 500: /* Internal Server Error */ + case 501: /* Not Implemented */ {{#error_responses}} case {{code}}: /* {{{reason}}} */ {{/error_responses}}