Changeset 984a9ba in mainline for uspace/srv/net/tcp/service.c
- Timestamp:
- 2018-07-05T09:34:09Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 63d46341
- Parents:
- 76f566d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/tcp/service.c
r76f566d r984a9ba 727 727 * Handle client request to create callback session. 728 728 * 729 * @param client TCP client 730 * @param icall_handle Async request call handle 731 * @param icall Async request data 732 */ 733 static void tcp_callback_create_srv(tcp_client_t *client, 734 cap_call_handle_t icall_handle, ipc_call_t *icall) 729 * @param client TCP client 730 * @param icall Async request data 731 * 732 */ 733 static void tcp_callback_create_srv(tcp_client_t *client, ipc_call_t *icall) 735 734 { 736 735 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_callback_create_srv()"); … … 738 737 async_sess_t *sess = async_callback_receive(EXCHANGE_SERIALIZE); 739 738 if (sess == NULL) { 740 async_answer_0(icall _handle, ENOMEM);739 async_answer_0(icall, ENOMEM); 741 740 return; 742 741 } 743 742 744 743 client->sess = sess; 745 async_answer_0(icall _handle, EOK);744 async_answer_0(icall, EOK); 746 745 } 747 746 … … 750 749 * Handle client request to create connection. 751 750 * 752 * @param client TCP client 753 * @param icall_handle Async request call handle 754 * @param icall Async request data 755 */ 756 static void tcp_conn_create_srv(tcp_client_t *client, 757 cap_call_handle_t icall_handle, ipc_call_t *icall) 758 { 759 cap_call_handle_t chandle; 751 * @param client TCP client 752 * @param icall Async request data 753 * 754 */ 755 static void tcp_conn_create_srv(tcp_client_t *client, ipc_call_t *icall) 756 { 757 ipc_call_t call; 760 758 size_t size; 761 759 inet_ep2_t epp; … … 765 763 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_create_srv()"); 766 764 767 if (!async_data_write_receive(&c handle, &size)) {768 async_answer_0( chandle, EREFUSED);769 async_answer_0(icall _handle, EREFUSED);765 if (!async_data_write_receive(&call, &size)) { 766 async_answer_0(&call, EREFUSED); 767 async_answer_0(icall, EREFUSED); 770 768 return; 771 769 } 772 770 773 771 if (size != sizeof(inet_ep2_t)) { 774 async_answer_0( chandle, EINVAL);775 async_answer_0(icall _handle, EINVAL);776 return; 777 } 778 779 rc = async_data_write_finalize( chandle, &epp, size);780 if (rc != EOK) { 781 async_answer_0( chandle, rc);782 async_answer_0(icall _handle, rc);772 async_answer_0(&call, EINVAL); 773 async_answer_0(icall, EINVAL); 774 return; 775 } 776 777 rc = async_data_write_finalize(&call, &epp, size); 778 if (rc != EOK) { 779 async_answer_0(&call, rc); 780 async_answer_0(icall, rc); 783 781 return; 784 782 } … … 786 784 rc = tcp_conn_create_impl(client, &epp, &conn_id); 787 785 if (rc != EOK) { 788 async_answer_0(icall _handle, rc);789 return; 790 } 791 792 async_answer_1(icall _handle, EOK, conn_id);786 async_answer_0(icall, rc); 787 return; 788 } 789 790 async_answer_1(icall, EOK, conn_id); 793 791 } 794 792 … … 797 795 * Handle client request to destroy connection. 798 796 * 799 * @param client TCP client 800 * @param icall_handle Async request call handle 801 * @param icall Async request data 802 */ 803 static void tcp_conn_destroy_srv(tcp_client_t *client, 804 cap_call_handle_t icall_handle, ipc_call_t *icall) 797 * @param client TCP client 798 * @param icall Async request data 799 * 800 */ 801 static void tcp_conn_destroy_srv(tcp_client_t *client, ipc_call_t *icall) 805 802 { 806 803 sysarg_t conn_id; … … 811 808 conn_id = IPC_GET_ARG1(*icall); 812 809 rc = tcp_conn_destroy_impl(client, conn_id); 813 async_answer_0(icall _handle, rc);810 async_answer_0(icall, rc); 814 811 } 815 812 … … 818 815 * Handle client request to create listener. 819 816 * 820 * @param client TCP client 821 * @param icall_handle Async request call handle 822 * @param icall Async request data 823 */ 824 static void tcp_listener_create_srv(tcp_client_t *client, 825 cap_call_handle_t icall_handle, ipc_call_t *icall) 826 { 827 cap_call_handle_t chandle; 817 * @param client TCP client 818 * @param icall Async request data 819 * 820 */ 821 static void tcp_listener_create_srv(tcp_client_t *client, ipc_call_t *icall) 822 { 823 ipc_call_t call; 828 824 size_t size; 829 825 inet_ep_t ep; … … 833 829 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_listener_create_srv()"); 834 830 835 if (!async_data_write_receive(&c handle, &size)) {836 async_answer_0( chandle, EREFUSED);837 async_answer_0(icall _handle, EREFUSED);831 if (!async_data_write_receive(&call, &size)) { 832 async_answer_0(&call, EREFUSED); 833 async_answer_0(icall, EREFUSED); 838 834 return; 839 835 } 840 836 841 837 if (size != sizeof(inet_ep_t)) { 842 async_answer_0( chandle, EINVAL);843 async_answer_0(icall _handle, EINVAL);844 return; 845 } 846 847 rc = async_data_write_finalize( chandle, &ep, size);848 if (rc != EOK) { 849 async_answer_0( chandle, rc);850 async_answer_0(icall _handle, rc);838 async_answer_0(&call, EINVAL); 839 async_answer_0(icall, EINVAL); 840 return; 841 } 842 843 rc = async_data_write_finalize(&call, &ep, size); 844 if (rc != EOK) { 845 async_answer_0(&call, rc); 846 async_answer_0(icall, rc); 851 847 return; 852 848 } … … 854 850 rc = tcp_listener_create_impl(client, &ep, &lst_id); 855 851 if (rc != EOK) { 856 async_answer_0(icall _handle, rc);857 return; 858 } 859 860 async_answer_1(icall _handle, EOK, lst_id);852 async_answer_0(icall, rc); 853 return; 854 } 855 856 async_answer_1(icall, EOK, lst_id); 861 857 } 862 858 … … 865 861 * Handle client request to destroy listener. 866 862 * 867 * @param client TCP client 868 * @param icall_handle Async request call handle 869 * @param icall Async request data 870 */ 871 static void tcp_listener_destroy_srv(tcp_client_t *client, 872 cap_call_handle_t icall_handle, ipc_call_t *icall) 863 * @param client TCP client 864 * @param icall Async request data 865 * 866 */ 867 static void tcp_listener_destroy_srv(tcp_client_t *client, ipc_call_t *icall) 873 868 { 874 869 sysarg_t lst_id; … … 879 874 lst_id = IPC_GET_ARG1(*icall); 880 875 rc = tcp_listener_destroy_impl(client, lst_id); 881 async_answer_0(icall _handle, rc);876 async_answer_0(icall, rc); 882 877 } 883 878 … … 886 881 * Handle client request to send FIN. 887 882 * 888 * @param client TCP client 889 * @param icall_handle Async request call handle 890 * @param icall Async request data 891 */ 892 static void tcp_conn_send_fin_srv(tcp_client_t *client, 893 cap_call_handle_t icall_handle, ipc_call_t *icall) 883 * @param client TCP client 884 * @param icall Async request data 885 * 886 */ 887 static void tcp_conn_send_fin_srv(tcp_client_t *client, ipc_call_t *icall) 894 888 { 895 889 sysarg_t conn_id; … … 900 894 conn_id = IPC_GET_ARG1(*icall); 901 895 rc = tcp_conn_send_fin_impl(client, conn_id); 902 async_answer_0(icall _handle, rc);896 async_answer_0(icall, rc); 903 897 } 904 898 … … 907 901 * Handle client request to push connection. 908 902 * 909 * @param client TCP client 910 * @param icall_handle Async request call handle 911 * @param icall Async request data 912 */ 913 static void tcp_conn_push_srv(tcp_client_t *client, 914 cap_call_handle_t icall_handle, ipc_call_t *icall) 903 * @param client TCP client 904 * @param icall Async request data 905 * 906 */ 907 static void tcp_conn_push_srv(tcp_client_t *client, ipc_call_t *icall) 915 908 { 916 909 sysarg_t conn_id; … … 921 914 conn_id = IPC_GET_ARG1(*icall); 922 915 rc = tcp_conn_push_impl(client, conn_id); 923 async_answer_0(icall _handle, rc);916 async_answer_0(icall, rc); 924 917 } 925 918 … … 928 921 * Handle client request to reset connection. 929 922 * 930 * @param client TCP client 931 * @param icall_handle Async request call handle 932 * @param icall Async request data 933 */ 934 static void tcp_conn_reset_srv(tcp_client_t *client, 935 cap_call_handle_t icall_handle, ipc_call_t *icall) 923 * @param client TCP client 924 * @param icall Async request data 925 * 926 */ 927 static void tcp_conn_reset_srv(tcp_client_t *client, ipc_call_t *icall) 936 928 { 937 929 sysarg_t conn_id; … … 942 934 conn_id = IPC_GET_ARG1(*icall); 943 935 rc = tcp_conn_reset_impl(client, conn_id); 944 async_answer_0(icall _handle, rc);936 async_answer_0(icall, rc); 945 937 } 946 938 … … 949 941 * Handle client request to send data via connection. 950 942 * 951 * @param client TCP client 952 * @param icall_handle Async request call handle 953 * @param icall Async request data 954 */ 955 static void tcp_conn_send_srv(tcp_client_t *client, 956 cap_call_handle_t icall_handle, ipc_call_t *icall) 957 { 958 cap_call_handle_t chandle; 943 * @param client TCP client 944 * @param icall Async request data 945 * 946 */ 947 static void tcp_conn_send_srv(tcp_client_t *client, ipc_call_t *icall) 948 { 949 ipc_call_t call; 959 950 size_t size; 960 951 sysarg_t conn_id; … … 966 957 /* Receive message data */ 967 958 968 if (!async_data_write_receive(&c handle, &size)) {969 async_answer_0( chandle, EREFUSED);970 async_answer_0(icall _handle, EREFUSED);959 if (!async_data_write_receive(&call, &size)) { 960 async_answer_0(&call, EREFUSED); 961 async_answer_0(icall, EREFUSED); 971 962 return; 972 963 } 973 964 974 965 if (size > MAX_MSG_SIZE) { 975 async_answer_0( chandle, EINVAL);976 async_answer_0(icall _handle, EINVAL);966 async_answer_0(&call, EINVAL); 967 async_answer_0(icall, EINVAL); 977 968 return; 978 969 } … … 980 971 data = malloc(size); 981 972 if (data == NULL) { 982 async_answer_0( chandle, ENOMEM);983 async_answer_0(icall _handle, ENOMEM);984 return; 985 } 986 987 rc = async_data_write_finalize( chandle, data, size);988 if (rc != EOK) { 989 async_answer_0( chandle, rc);990 async_answer_0(icall _handle, rc);973 async_answer_0(&call, ENOMEM); 974 async_answer_0(icall, ENOMEM); 975 return; 976 } 977 978 rc = async_data_write_finalize(&call, data, size); 979 if (rc != EOK) { 980 async_answer_0(&call, rc); 981 async_answer_0(icall, rc); 991 982 free(data); 992 983 return; … … 997 988 rc = tcp_conn_send_impl(client, conn_id, data, size); 998 989 if (rc != EOK) { 999 async_answer_0(icall _handle, rc);990 async_answer_0(icall, rc); 1000 991 free(data); 1001 992 return; 1002 993 } 1003 994 1004 async_answer_0(icall _handle, EOK);995 async_answer_0(icall, EOK); 1005 996 free(data); 1006 997 } … … 1010 1001 * Handle client request to read received data via connection without blocking. 1011 1002 * 1012 * @param client TCP client 1013 * @param icall_handle Async request call handle 1014 * @param icall Async request data 1015 */ 1016 static void tcp_conn_recv_srv(tcp_client_t *client, 1017 cap_call_handle_t icall_handle, ipc_call_t *icall) 1018 { 1019 cap_call_handle_t chandle; 1003 * @param client TCP client 1004 * @param icall Async request data 1005 * 1006 */ 1007 static void tcp_conn_recv_srv(tcp_client_t *client, ipc_call_t *icall) 1008 { 1009 ipc_call_t call; 1020 1010 sysarg_t conn_id; 1021 1011 size_t size, rsize; … … 1027 1017 conn_id = IPC_GET_ARG1(*icall); 1028 1018 1029 if (!async_data_read_receive(&c handle, &size)) {1030 async_answer_0( chandle, EREFUSED);1031 async_answer_0(icall _handle, EREFUSED);1019 if (!async_data_read_receive(&call, &size)) { 1020 async_answer_0(&call, EREFUSED); 1021 async_answer_0(icall, EREFUSED); 1032 1022 return; 1033 1023 } … … 1036 1026 data = malloc(size); 1037 1027 if (data == NULL) { 1038 async_answer_0( chandle, ENOMEM);1039 async_answer_0(icall _handle, ENOMEM);1028 async_answer_0(&call, ENOMEM); 1029 async_answer_0(icall, ENOMEM); 1040 1030 return; 1041 1031 } … … 1043 1033 rc = tcp_conn_recv_impl(client, conn_id, data, size, &rsize); 1044 1034 if (rc != EOK) { 1045 async_answer_0( chandle, rc);1046 async_answer_0(icall _handle, rc);1035 async_answer_0(&call, rc); 1036 async_answer_0(icall, rc); 1047 1037 free(data); 1048 1038 return; 1049 1039 } 1050 1040 1051 rc = async_data_read_finalize( chandle, data, size);1052 if (rc != EOK) { 1053 async_answer_0(icall _handle, rc);1041 rc = async_data_read_finalize(&call, data, size); 1042 if (rc != EOK) { 1043 async_answer_0(icall, rc); 1054 1044 free(data); 1055 1045 return; 1056 1046 } 1057 1047 1058 async_answer_1(icall _handle, EOK, rsize);1048 async_answer_1(icall, EOK, rsize); 1059 1049 free(data); 1060 1050 … … 1066 1056 * Handle client request to read received data via connection with blocking. 1067 1057 * 1068 * @param client TCP client 1069 * @param icall_handle Async request call handle 1070 * @param icall Async request data 1071 */ 1072 static void tcp_conn_recv_wait_srv(tcp_client_t *client, 1073 cap_call_handle_t icall_handle, ipc_call_t *icall) 1074 { 1075 cap_call_handle_t chandle; 1058 * @param client TCP client 1059 * @param icall Async request data 1060 * 1061 */ 1062 static void tcp_conn_recv_wait_srv(tcp_client_t *client, ipc_call_t *icall) 1063 { 1064 ipc_call_t call; 1076 1065 sysarg_t conn_id; 1077 1066 size_t size, rsize; … … 1083 1072 conn_id = IPC_GET_ARG1(*icall); 1084 1073 1085 if (!async_data_read_receive(&c handle, &size)) {1074 if (!async_data_read_receive(&call, &size)) { 1086 1075 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv - data_receive failed"); 1087 async_answer_0( chandle, EREFUSED);1088 async_answer_0(icall _handle, EREFUSED);1076 async_answer_0(&call, EREFUSED); 1077 async_answer_0(icall, EREFUSED); 1089 1078 return; 1090 1079 } … … 1094 1083 if (data == NULL) { 1095 1084 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv - allocation failed"); 1096 async_answer_0( chandle, ENOMEM);1097 async_answer_0(icall _handle, ENOMEM);1085 async_answer_0(&call, ENOMEM); 1086 async_answer_0(icall, ENOMEM); 1098 1087 return; 1099 1088 } … … 1102 1091 if (rc != EOK) { 1103 1092 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv - recv_impl failed rc=%s", str_error_name(rc)); 1104 async_answer_0( chandle, rc);1105 async_answer_0(icall _handle, rc);1093 async_answer_0(&call, rc); 1094 async_answer_0(icall, rc); 1106 1095 free(data); 1107 1096 return; 1108 1097 } 1109 1098 1110 rc = async_data_read_finalize( chandle, data, size);1099 rc = async_data_read_finalize(&call, data, size); 1111 1100 if (rc != EOK) { 1112 1101 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv - finalize failed"); 1113 async_answer_0(icall _handle, rc);1102 async_answer_0(icall, rc); 1114 1103 free(data); 1115 1104 return; … … 1117 1106 1118 1107 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_recv_wait_srv(): rsize=%zu", size); 1119 async_answer_1(icall _handle, EOK, rsize);1108 async_answer_1(icall, EOK, rsize); 1120 1109 free(data); 1121 1110 … … 1171 1160 /** Handle TCP client connection. 1172 1161 * 1173 * @param icall_handle Connect call handle 1174 * @param icall Connect call data 1175 * @param arg Connection argument 1176 */ 1177 static void tcp_client_conn(cap_call_handle_t icall_handle, ipc_call_t *icall, 1178 void *arg) 1162 * @param icall Connect call data 1163 * @param arg Connection argument 1164 * 1165 */ 1166 static void tcp_client_conn(ipc_call_t *icall, void *arg) 1179 1167 { 1180 1168 tcp_client_t client; 1181 1169 1182 1170 /* Accept the connection */ 1183 async_answer_0(icall _handle, EOK);1171 async_answer_0(icall, EOK); 1184 1172 1185 1173 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_client_conn() - client=%p", … … 1191 1179 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_client_conn: wait req"); 1192 1180 ipc_call_t call; 1193 cap_call_handle_t chandle =async_get_call(&call);1181 async_get_call(&call); 1194 1182 sysarg_t method = IPC_GET_IMETHOD(call); 1195 1183 … … 1198 1186 if (!method) { 1199 1187 /* The other side has hung up */ 1200 async_answer_0( chandle, EOK);1188 async_answer_0(&call, EOK); 1201 1189 break; 1202 1190 } … … 1204 1192 switch (method) { 1205 1193 case TCP_CALLBACK_CREATE: 1206 tcp_callback_create_srv(&client, chandle,&call);1194 tcp_callback_create_srv(&client, &call); 1207 1195 break; 1208 1196 case TCP_CONN_CREATE: 1209 tcp_conn_create_srv(&client, chandle,&call);1197 tcp_conn_create_srv(&client, &call); 1210 1198 break; 1211 1199 case TCP_CONN_DESTROY: 1212 tcp_conn_destroy_srv(&client, chandle,&call);1200 tcp_conn_destroy_srv(&client, &call); 1213 1201 break; 1214 1202 case TCP_LISTENER_CREATE: 1215 tcp_listener_create_srv(&client, chandle,&call);1203 tcp_listener_create_srv(&client, &call); 1216 1204 break; 1217 1205 case TCP_LISTENER_DESTROY: 1218 tcp_listener_destroy_srv(&client, chandle,&call);1206 tcp_listener_destroy_srv(&client, &call); 1219 1207 break; 1220 1208 case TCP_CONN_SEND_FIN: 1221 tcp_conn_send_fin_srv(&client, chandle,&call);1209 tcp_conn_send_fin_srv(&client, &call); 1222 1210 break; 1223 1211 case TCP_CONN_PUSH: 1224 tcp_conn_push_srv(&client, chandle,&call);1212 tcp_conn_push_srv(&client, &call); 1225 1213 break; 1226 1214 case TCP_CONN_RESET: 1227 tcp_conn_reset_srv(&client, chandle,&call);1215 tcp_conn_reset_srv(&client, &call); 1228 1216 break; 1229 1217 case TCP_CONN_SEND: 1230 tcp_conn_send_srv(&client, chandle,&call);1218 tcp_conn_send_srv(&client, &call); 1231 1219 break; 1232 1220 case TCP_CONN_RECV: 1233 tcp_conn_recv_srv(&client, chandle,&call);1221 tcp_conn_recv_srv(&client, &call); 1234 1222 break; 1235 1223 case TCP_CONN_RECV_WAIT: 1236 tcp_conn_recv_wait_srv(&client, chandle,&call);1224 tcp_conn_recv_wait_srv(&client, &call); 1237 1225 break; 1238 1226 default: 1239 async_answer_0( chandle, ENOTSUP);1227 async_answer_0(&call, ENOTSUP); 1240 1228 break; 1241 1229 }
Note:
See TracChangeset
for help on using the changeset viewer.