Changes in uspace/srv/net/tcp/sock.c [257feec:05bfce7] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/tcp/sock.c
r257feec r05bfce7 179 179 } 180 180 181 inet_addr_any(&sock->laddr);181 sock->laddr.ipv4 = TCP_IPV4_ANY; 182 182 sock->lconn = NULL; 183 183 sock->backlog = 0; … … 314 314 log_msg(LOG_DEFAULT, LVL_DEBUG, " - open connections"); 315 315 316 inet_addr_any(&lsocket.addr);316 lsocket.addr.ipv4 = TCP_IPV4_ANY; 317 317 lsocket.port = sock_core->port; 318 319 inet_addr_any(&fsocket.addr); 318 fsocket.addr.ipv4 = TCP_IPV4_ANY; 320 319 fsocket.port = TCP_PORT_ANY; 321 320 … … 397 396 fibril_mutex_lock(&socket->lock); 398 397 399 if ( inet_addr_is_any(&socket->laddr)) {398 if (socket->laddr.ipv4 == TCP_IPV4_ANY) { 400 399 /* Determine local IP address */ 401 inet_addr_t loc_addr; 402 inet_addr_t rem_addr; 403 404 inet_addr_unpack(uint32_t_be2host(addr->sin_addr.s_addr), 405 &rem_addr); 400 inet_addr_t loc_addr, rem_addr; 401 402 rem_addr.ipv4 = uint32_t_be2host(addr->sin_addr.s_addr); 406 403 rc = inet_get_srcaddr(&rem_addr, 0, &loc_addr); 407 404 if (rc != EOK) { … … 412 409 return; 413 410 } 414 415 socket->laddr = loc_addr; 416 } 417 418 lsocket.addr = socket->laddr; 411 412 socket->laddr.ipv4 = loc_addr.ipv4; 413 log_msg(LOG_DEFAULT, LVL_DEBUG, "Local IP address is %x", socket->laddr.ipv4); 414 } 415 416 lsocket.addr.ipv4 = socket->laddr.ipv4; 419 417 lsocket.port = sock_core->port; 420 421 inet_addr_unpack(uint32_t_be2host(addr->sin_addr.s_addr), 422 &fsocket.addr); 418 fsocket.addr.ipv4 = uint32_t_be2host(addr->sin_addr.s_addr); 423 419 fsocket.port = uint16_t_be2host(addr->sin_port); 424 420 … … 429 425 430 426 fibril_mutex_unlock(&socket->lock); 431 427 432 428 switch (trc) { 433 429 case TCP_EOK: … … 440 436 assert(false); 441 437 } 442 438 443 439 if (rc == EOK) 444 440 fibril_add_ready(socket->recv_fibril); 445 441 446 442 async_answer_0(callid, rc); 447 443 } … … 511 507 /* Replenish listening connection */ 512 508 513 inet_addr_any(&lsocket.addr);509 lsocket.addr.ipv4 = TCP_IPV4_ANY; 514 510 lsocket.port = sock_core->port; 515 516 inet_addr_any(&fsocket.addr); 511 fsocket.addr.ipv4 = TCP_IPV4_ANY; 517 512 fsocket.port = TCP_PORT_ANY; 518 513 … … 687 682 socket = (tcp_sockdata_t *)sock_core->specific_data; 688 683 fibril_mutex_lock(&socket->lock); 689 684 690 685 if (socket->conn == NULL) { 691 686 fibril_mutex_unlock(&socket->lock); … … 703 698 &socket->recv_buffer_lock); 704 699 } 705 700 706 701 log_msg(LOG_DEFAULT, LVL_DEBUG, "Got data in sock recv_buffer"); 707 702 … … 723 718 assert(false); 724 719 } 725 720 726 721 log_msg(LOG_DEFAULT, LVL_DEBUG, "**** recv result -> %d", rc); 727 728 722 if (rc != EOK) { 729 723 fibril_mutex_unlock(&socket->recv_buffer_lock); … … 734 728 735 729 if (IPC_GET_IMETHOD(call) == NET_SOCKET_RECVFROM) { 736 /* Fill addr ess*/730 /* Fill addr */ 737 731 rsock = &socket->conn->ident.foreign; 738 739 uint32_t rsock_addr;740 int rc = inet_addr_pack(&rsock->addr, &rsock_addr);741 if (rc != EOK) {742 fibril_mutex_unlock(&socket->recv_buffer_lock);743 fibril_mutex_unlock(&socket->lock);744 async_answer_0(callid, rc);745 return;746 }747 748 732 addr.sin_family = AF_INET; 749 addr.sin_addr.s_addr = host2uint32_t_be(rsock _addr);733 addr.sin_addr.s_addr = host2uint32_t_be(rsock->addr.ipv4); 750 734 addr.sin_port = host2uint16_t_be(rsock->port); 751 735 … … 770 754 } 771 755 } 772 756 773 757 log_msg(LOG_DEFAULT, LVL_DEBUG, "data read receive"); 774 758 if (!async_data_read_receive(&rcallid, &length)) { … … 778 762 return; 779 763 } 780 764 781 765 if (length > data_len) 782 766 length = data_len; 783 767 784 768 log_msg(LOG_DEFAULT, LVL_DEBUG, "data read finalize"); 785 769 rc = async_data_read_finalize(rcallid, socket->recv_buffer, length); 786 770 787 771 socket->recv_buffer_used -= length; 788 772 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_recvfrom: %zu left in buffer", … … 793 777 tcp_sock_notify_data(socket->sock_core); 794 778 } 795 779 796 780 fibril_condvar_broadcast(&socket->recv_buffer_cv); 797 781 … … 801 785 SOCKET_SET_READ_DATA_LENGTH(answer, length); 802 786 async_answer_1(callid, EOK, IPC_GET_ARG1(answer)); 803 787 804 788 fibril_mutex_unlock(&socket->recv_buffer_lock); 805 789 fibril_mutex_unlock(&socket->lock);
Note:
See TracChangeset
for help on using the changeset viewer.