Changeset a46e56b in mainline for uspace/srv/net/tcp/service.c
- Timestamp:
- 2018-03-22T06:49:35Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 77f0a1d
- Parents:
- 3e242d2
- git-author:
- Jakub Jermar <jakub@…> (2018-03-21 23:29:06)
- git-committer:
- Jakub Jermar <jakub@…> (2018-03-22 06:49:35)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/tcp/service.c
r3e242d2 ra46e56b 724 724 * Handle client request to create callback session. 725 725 * 726 * @param client TCP client727 * @param i id Async request ID728 * @param icall Async request data729 */ 730 static void tcp_callback_create_srv(tcp_client_t *client, cap_call_handle_t iid,731 ipc_call_t *icall)726 * @param client TCP client 727 * @param icall_handle Async request call handle 728 * @param icall Async request data 729 */ 730 static void tcp_callback_create_srv(tcp_client_t *client, 731 cap_call_handle_t icall_handle, ipc_call_t *icall) 732 732 { 733 733 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_callback_create_srv()"); … … 735 735 async_sess_t *sess = async_callback_receive(EXCHANGE_SERIALIZE); 736 736 if (sess == NULL) { 737 async_answer_0(i id, ENOMEM);737 async_answer_0(icall_handle, ENOMEM); 738 738 return; 739 739 } 740 740 741 741 client->sess = sess; 742 async_answer_0(i id, EOK);742 async_answer_0(icall_handle, EOK); 743 743 } 744 744 … … 747 747 * Handle client request to create connection. 748 748 * 749 * @param client TCP client750 * @param i id Async request ID751 * @param icall Async request data752 */ 753 static void tcp_conn_create_srv(tcp_client_t *client, cap_call_handle_t iid,754 ipc_call_t *icall)755 { 756 cap_call_handle_t c allid;749 * @param client TCP client 750 * @param icall_handle Async request call handle 751 * @param icall Async request data 752 */ 753 static void tcp_conn_create_srv(tcp_client_t *client, 754 cap_call_handle_t icall_handle, ipc_call_t *icall) 755 { 756 cap_call_handle_t chandle; 757 757 size_t size; 758 758 inet_ep2_t epp; … … 762 762 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_create_srv()"); 763 763 764 if (!async_data_write_receive(&c allid, &size)) {765 async_answer_0(c allid, EREFUSED);766 async_answer_0(i id, EREFUSED);764 if (!async_data_write_receive(&chandle, &size)) { 765 async_answer_0(chandle, EREFUSED); 766 async_answer_0(icall_handle, EREFUSED); 767 767 return; 768 768 } 769 769 770 770 if (size != sizeof(inet_ep2_t)) { 771 async_answer_0(c allid, EINVAL);772 async_answer_0(i id, EINVAL);773 return; 774 } 775 776 rc = async_data_write_finalize(c allid, &epp, size);777 if (rc != EOK) { 778 async_answer_0(c allid, rc);779 async_answer_0(i id, rc);771 async_answer_0(chandle, EINVAL); 772 async_answer_0(icall_handle, EINVAL); 773 return; 774 } 775 776 rc = async_data_write_finalize(chandle, &epp, size); 777 if (rc != EOK) { 778 async_answer_0(chandle, rc); 779 async_answer_0(icall_handle, rc); 780 780 return; 781 781 } … … 783 783 rc = tcp_conn_create_impl(client, &epp, &conn_id); 784 784 if (rc != EOK) { 785 async_answer_0(i id, rc);786 return; 787 } 788 789 async_answer_1(i id, EOK, conn_id);785 async_answer_0(icall_handle, rc); 786 return; 787 } 788 789 async_answer_1(icall_handle, EOK, conn_id); 790 790 } 791 791 … … 794 794 * Handle client request to destroy connection. 795 795 * 796 * @param client TCP client797 * @param i id Async request ID798 * @param icall Async request data799 */ 800 static void tcp_conn_destroy_srv(tcp_client_t *client, cap_call_handle_t iid,801 ipc_call_t *icall)796 * @param client TCP client 797 * @param icall_handle Async request call handle 798 * @param icall Async request data 799 */ 800 static void tcp_conn_destroy_srv(tcp_client_t *client, 801 cap_call_handle_t icall_handle, ipc_call_t *icall) 802 802 { 803 803 sysarg_t conn_id; … … 808 808 conn_id = IPC_GET_ARG1(*icall); 809 809 rc = tcp_conn_destroy_impl(client, conn_id); 810 async_answer_0(i id, rc);810 async_answer_0(icall_handle, rc); 811 811 } 812 812 … … 815 815 * Handle client request to create listener. 816 816 * 817 * @param client TCP client818 * @param i id Async request ID819 * @param icall Async request data820 */ 821 static void tcp_listener_create_srv(tcp_client_t *client, cap_call_handle_t iid,822 ipc_call_t *icall)823 { 824 cap_call_handle_t c allid;817 * @param client TCP client 818 * @param icall_handle Async request call handle 819 * @param icall Async request data 820 */ 821 static void tcp_listener_create_srv(tcp_client_t *client, 822 cap_call_handle_t icall_handle, ipc_call_t *icall) 823 { 824 cap_call_handle_t chandle; 825 825 size_t size; 826 826 inet_ep_t ep; … … 830 830 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_listener_create_srv()"); 831 831 832 if (!async_data_write_receive(&c allid, &size)) {833 async_answer_0(c allid, EREFUSED);834 async_answer_0(i id, EREFUSED);832 if (!async_data_write_receive(&chandle, &size)) { 833 async_answer_0(chandle, EREFUSED); 834 async_answer_0(icall_handle, EREFUSED); 835 835 return; 836 836 } 837 837 838 838 if (size != sizeof(inet_ep_t)) { 839 async_answer_0(c allid, EINVAL);840 async_answer_0(i id, EINVAL);841 return; 842 } 843 844 rc = async_data_write_finalize(c allid, &ep, size);845 if (rc != EOK) { 846 async_answer_0(c allid, rc);847 async_answer_0(i id, rc);839 async_answer_0(chandle, EINVAL); 840 async_answer_0(icall_handle, EINVAL); 841 return; 842 } 843 844 rc = async_data_write_finalize(chandle, &ep, size); 845 if (rc != EOK) { 846 async_answer_0(chandle, rc); 847 async_answer_0(icall_handle, rc); 848 848 return; 849 849 } … … 851 851 rc = tcp_listener_create_impl(client, &ep, &lst_id); 852 852 if (rc != EOK) { 853 async_answer_0(i id, rc);854 return; 855 } 856 857 async_answer_1(i id, EOK, lst_id);853 async_answer_0(icall_handle, rc); 854 return; 855 } 856 857 async_answer_1(icall_handle, EOK, lst_id); 858 858 } 859 859 … … 862 862 * Handle client request to destroy listener. 863 863 * 864 * @param client TCP client865 * @param i id Async request ID866 * @param icall Async request data867 */ 868 static void tcp_listener_destroy_srv(tcp_client_t *client, cap_call_handle_t iid,869 ipc_call_t *icall)864 * @param client TCP client 865 * @param icall_handle Async request call handle 866 * @param icall Async request data 867 */ 868 static void tcp_listener_destroy_srv(tcp_client_t *client, 869 cap_call_handle_t icall_handle, ipc_call_t *icall) 870 870 { 871 871 sysarg_t lst_id; … … 876 876 lst_id = IPC_GET_ARG1(*icall); 877 877 rc = tcp_listener_destroy_impl(client, lst_id); 878 async_answer_0(i id, rc);878 async_answer_0(icall_handle, rc); 879 879 } 880 880 … … 883 883 * Handle client request to send FIN. 884 884 * 885 * @param client TCP client886 * @param i id Async request ID887 * @param icall Async request data888 */ 889 static void tcp_conn_send_fin_srv(tcp_client_t *client, cap_call_handle_t iid,890 ipc_call_t *icall)885 * @param client TCP client 886 * @param icall_handle Async request call handle 887 * @param icall Async request data 888 */ 889 static void tcp_conn_send_fin_srv(tcp_client_t *client, 890 cap_call_handle_t icall_handle, ipc_call_t *icall) 891 891 { 892 892 sysarg_t conn_id; … … 897 897 conn_id = IPC_GET_ARG1(*icall); 898 898 rc = tcp_conn_send_fin_impl(client, conn_id); 899 async_answer_0(i id, rc);899 async_answer_0(icall_handle, rc); 900 900 } 901 901 … … 904 904 * Handle client request to push connection. 905 905 * 906 * @param client TCP client907 * @param i id Async request ID908 * @param icall Async request data909 */ 910 static void tcp_conn_push_srv(tcp_client_t *client, cap_call_handle_t iid,911 ipc_call_t *icall)906 * @param client TCP client 907 * @param icall_handle Async request call handle 908 * @param icall Async request data 909 */ 910 static void tcp_conn_push_srv(tcp_client_t *client, 911 cap_call_handle_t icall_handle, ipc_call_t *icall) 912 912 { 913 913 sysarg_t conn_id; … … 918 918 conn_id = IPC_GET_ARG1(*icall); 919 919 rc = tcp_conn_push_impl(client, conn_id); 920 async_answer_0(i id, rc);920 async_answer_0(icall_handle, rc); 921 921 } 922 922 … … 925 925 * Handle client request to reset connection. 926 926 * 927 * @param client TCP client928 * @param i id Async request ID929 * @param icall Async request data930 */ 931 static void tcp_conn_reset_srv(tcp_client_t *client, cap_call_handle_t iid,932 ipc_call_t *icall)927 * @param client TCP client 928 * @param icall_handle Async request call handle 929 * @param icall Async request data 930 */ 931 static void tcp_conn_reset_srv(tcp_client_t *client, 932 cap_call_handle_t icall_handle, ipc_call_t *icall) 933 933 { 934 934 sysarg_t conn_id; … … 939 939 conn_id = IPC_GET_ARG1(*icall); 940 940 rc = tcp_conn_reset_impl(client, conn_id); 941 async_answer_0(i id, rc);941 async_answer_0(icall_handle, rc); 942 942 } 943 943 … … 946 946 * Handle client request to send data via connection. 947 947 * 948 * @param client TCP client949 * @param i id Async request ID950 * @param icall Async request data951 */ 952 static void tcp_conn_send_srv(tcp_client_t *client, cap_call_handle_t iid,953 ipc_call_t *icall)954 { 955 cap_call_handle_t c allid;948 * @param client TCP client 949 * @param icall_handle Async request call handle 950 * @param icall Async request data 951 */ 952 static void tcp_conn_send_srv(tcp_client_t *client, 953 cap_call_handle_t icall_handle, ipc_call_t *icall) 954 { 955 cap_call_handle_t chandle; 956 956 size_t size; 957 957 sysarg_t conn_id; … … 963 963 /* Receive message data */ 964 964 965 if (!async_data_write_receive(&c allid, &size)) {966 async_answer_0(c allid, EREFUSED);967 async_answer_0(i id, EREFUSED);965 if (!async_data_write_receive(&chandle, &size)) { 966 async_answer_0(chandle, EREFUSED); 967 async_answer_0(icall_handle, EREFUSED); 968 968 return; 969 969 } 970 970 971 971 if (size > MAX_MSG_SIZE) { 972 async_answer_0(c allid, EINVAL);973 async_answer_0(i id, EINVAL);972 async_answer_0(chandle, EINVAL); 973 async_answer_0(icall_handle, EINVAL); 974 974 return; 975 975 } … … 977 977 data = malloc(size); 978 978 if (data == NULL) { 979 async_answer_0(c allid, ENOMEM);980 async_answer_0(i id, ENOMEM);981 return; 982 } 983 984 rc = async_data_write_finalize(c allid, data, size);985 if (rc != EOK) { 986 async_answer_0(c allid, rc);987 async_answer_0(i id, rc);979 async_answer_0(chandle, ENOMEM); 980 async_answer_0(icall_handle, ENOMEM); 981 return; 982 } 983 984 rc = async_data_write_finalize(chandle, data, size); 985 if (rc != EOK) { 986 async_answer_0(chandle, rc); 987 async_answer_0(icall_handle, rc); 988 988 free(data); 989 989 return; … … 994 994 rc = tcp_conn_send_impl(client, conn_id, data, size); 995 995 if (rc != EOK) { 996 async_answer_0(i id, rc);996 async_answer_0(icall_handle, rc); 997 997 free(data); 998 998 return; 999 999 } 1000 1000 1001 async_answer_0(i id, EOK);1001 async_answer_0(icall_handle, EOK); 1002 1002 free(data); 1003 1003 } … … 1007 1007 * Handle client request to read received data via connection without blocking. 1008 1008 * 1009 * @param client TCP client1010 * @param i id Async request ID1011 * @param icall Async request data1012 */ 1013 static void tcp_conn_recv_srv(tcp_client_t *client, cap_call_handle_t iid,1014 ipc_call_t *icall)1015 { 1016 cap_call_handle_t c allid;1009 * @param client TCP client 1010 * @param icall_handle Async request call handle 1011 * @param icall Async request data 1012 */ 1013 static void tcp_conn_recv_srv(tcp_client_t *client, 1014 cap_call_handle_t icall_handle, ipc_call_t *icall) 1015 { 1016 cap_call_handle_t chandle; 1017 1017 sysarg_t conn_id; 1018 1018 size_t size, rsize; … … 1024 1024 conn_id = IPC_GET_ARG1(*icall); 1025 1025 1026 if (!async_data_read_receive(&c allid, &size)) {1027 async_answer_0(c allid, EREFUSED);1028 async_answer_0(i id, EREFUSED);1026 if (!async_data_read_receive(&chandle, &size)) { 1027 async_answer_0(chandle, EREFUSED); 1028 async_answer_0(icall_handle, EREFUSED); 1029 1029 return; 1030 1030 } … … 1033 1033 data = malloc(size); 1034 1034 if (data == NULL) { 1035 async_answer_0(c allid, ENOMEM);1036 async_answer_0(i id, ENOMEM);1035 async_answer_0(chandle, ENOMEM); 1036 async_answer_0(icall_handle, ENOMEM); 1037 1037 return; 1038 1038 } … … 1040 1040 rc = tcp_conn_recv_impl(client, conn_id, data, size, &rsize); 1041 1041 if (rc != EOK) { 1042 async_answer_0(c allid, rc);1043 async_answer_0(i id, rc);1042 async_answer_0(chandle, rc); 1043 async_answer_0(icall_handle, rc); 1044 1044 free(data); 1045 1045 return; 1046 1046 } 1047 1047 1048 rc = async_data_read_finalize(c allid, data, size);1049 if (rc != EOK) { 1050 async_answer_0(i id, rc);1048 rc = async_data_read_finalize(chandle, data, size); 1049 if (rc != EOK) { 1050 async_answer_0(icall_handle, rc); 1051 1051 free(data); 1052 1052 return; 1053 1053 } 1054 1054 1055 async_answer_1(i id, EOK, rsize);1055 async_answer_1(icall_handle, EOK, rsize); 1056 1056 free(data); 1057 1057 … … 1063 1063 * Handle client request to read received data via connection with blocking. 1064 1064 * 1065 * @param client TCP client1066 * @param i id Async request ID1067 * @param icall Async request data1068 */ 1069 static void tcp_conn_recv_wait_srv(tcp_client_t *client, cap_call_handle_t iid,1070 ipc_call_t *icall)1071 { 1072 cap_call_handle_t c allid;1065 * @param client TCP client 1066 * @param icall_handle Async request call handle 1067 * @param icall Async request data 1068 */ 1069 static void tcp_conn_recv_wait_srv(tcp_client_t *client, 1070 cap_call_handle_t icall_handle, ipc_call_t *icall) 1071 { 1072 cap_call_handle_t chandle; 1073 1073 sysarg_t conn_id; 1074 1074 size_t size, rsize; … … 1080 1080 conn_id = IPC_GET_ARG1(*icall); 1081 1081 1082 if (!async_data_read_receive(&c allid, &size)) {1082 if (!async_data_read_receive(&chandle, &size)) { 1083 1083 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv - data_receive failed"); 1084 async_answer_0(c allid, EREFUSED);1085 async_answer_0(i id, EREFUSED);1084 async_answer_0(chandle, EREFUSED); 1085 async_answer_0(icall_handle, EREFUSED); 1086 1086 return; 1087 1087 } … … 1091 1091 if (data == NULL) { 1092 1092 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv - allocation failed"); 1093 async_answer_0(c allid, ENOMEM);1094 async_answer_0(i id, ENOMEM);1093 async_answer_0(chandle, ENOMEM); 1094 async_answer_0(icall_handle, ENOMEM); 1095 1095 return; 1096 1096 } … … 1099 1099 if (rc != EOK) { 1100 1100 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv - recv_impl failed rc=%s", str_error_name(rc)); 1101 async_answer_0(c allid, rc);1102 async_answer_0(i id, rc);1101 async_answer_0(chandle, rc); 1102 async_answer_0(icall_handle, rc); 1103 1103 free(data); 1104 1104 return; 1105 1105 } 1106 1106 1107 rc = async_data_read_finalize(c allid, data, size);1107 rc = async_data_read_finalize(chandle, data, size); 1108 1108 if (rc != EOK) { 1109 1109 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv - finalize failed"); 1110 async_answer_0(i id, rc);1110 async_answer_0(icall_handle, rc); 1111 1111 free(data); 1112 1112 return; … … 1114 1114 1115 1115 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv(): rsize=%zu", size); 1116 async_answer_1(i id, EOK, rsize);1116 async_answer_1(icall_handle, EOK, rsize); 1117 1117 free(data); 1118 1118 … … 1168 1168 /** Handle TCP client connection. 1169 1169 * 1170 * @param iid Connect call ID 1171 * @param icall Connect call data 1172 * @param arg Connection argument 1173 */ 1174 static void tcp_client_conn(cap_call_handle_t iid, ipc_call_t *icall, void *arg) 1170 * @param icall_handle Connect call handle 1171 * @param icall Connect call data 1172 * @param arg Connection argument 1173 */ 1174 static void tcp_client_conn(cap_call_handle_t icall_handle, ipc_call_t *icall, 1175 void *arg) 1175 1176 { 1176 1177 tcp_client_t client; 1177 1178 1178 1179 /* Accept the connection */ 1179 async_answer_0(i id, EOK);1180 async_answer_0(icall_handle, EOK); 1180 1181 1181 1182 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_client_conn() - client=%p", … … 1187 1188 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_client_conn: wait req"); 1188 1189 ipc_call_t call; 1189 cap_call_handle_t c allid= async_get_call(&call);1190 cap_call_handle_t chandle = async_get_call(&call); 1190 1191 sysarg_t method = IPC_GET_IMETHOD(call); 1191 1192 … … 1194 1195 if (!method) { 1195 1196 /* The other side has hung up */ 1196 async_answer_0(c allid, EOK);1197 async_answer_0(chandle, EOK); 1197 1198 break; 1198 1199 } … … 1200 1201 switch (method) { 1201 1202 case TCP_CALLBACK_CREATE: 1202 tcp_callback_create_srv(&client, c allid, &call);1203 tcp_callback_create_srv(&client, chandle, &call); 1203 1204 break; 1204 1205 case TCP_CONN_CREATE: 1205 tcp_conn_create_srv(&client, c allid, &call);1206 tcp_conn_create_srv(&client, chandle, &call); 1206 1207 break; 1207 1208 case TCP_CONN_DESTROY: 1208 tcp_conn_destroy_srv(&client, c allid, &call);1209 tcp_conn_destroy_srv(&client, chandle, &call); 1209 1210 break; 1210 1211 case TCP_LISTENER_CREATE: 1211 tcp_listener_create_srv(&client, c allid, &call);1212 tcp_listener_create_srv(&client, chandle, &call); 1212 1213 break; 1213 1214 case TCP_LISTENER_DESTROY: 1214 tcp_listener_destroy_srv(&client, c allid, &call);1215 tcp_listener_destroy_srv(&client, chandle, &call); 1215 1216 break; 1216 1217 case TCP_CONN_SEND_FIN: 1217 tcp_conn_send_fin_srv(&client, c allid, &call);1218 tcp_conn_send_fin_srv(&client, chandle, &call); 1218 1219 break; 1219 1220 case TCP_CONN_PUSH: 1220 tcp_conn_push_srv(&client, c allid, &call);1221 tcp_conn_push_srv(&client, chandle, &call); 1221 1222 break; 1222 1223 case TCP_CONN_RESET: 1223 tcp_conn_reset_srv(&client, c allid, &call);1224 tcp_conn_reset_srv(&client, chandle, &call); 1224 1225 break; 1225 1226 case TCP_CONN_SEND: 1226 tcp_conn_send_srv(&client, c allid, &call);1227 tcp_conn_send_srv(&client, chandle, &call); 1227 1228 break; 1228 1229 case TCP_CONN_RECV: 1229 tcp_conn_recv_srv(&client, c allid, &call);1230 tcp_conn_recv_srv(&client, chandle, &call); 1230 1231 break; 1231 1232 case TCP_CONN_RECV_WAIT: 1232 tcp_conn_recv_wait_srv(&client, c allid, &call);1233 tcp_conn_recv_wait_srv(&client, chandle, &call); 1233 1234 break; 1234 1235 default: 1235 async_answer_0(c allid, ENOTSUP);1236 async_answer_0(chandle, ENOTSUP); 1236 1237 break; 1237 1238 }
Note:
See TracChangeset
for help on using the changeset viewer.