@@ -806,12 +806,12 @@ bool Socket::connect(string _host, int _port, int flags)
806
806
{
807
807
if (_port == -1 )
808
808
{
809
- swWarn ( " Socket of type AF_INET/AF_INET6 requires port argument" );
809
+ set_err (EINVAL, " Socket of type AF_INET/AF_INET6 requires port argument" );
810
810
return false ;
811
811
}
812
812
else if (_port == 0 || _port >= 65536 )
813
813
{
814
- swWarn ( " Invalid port argument [%d]" , _port);
814
+ set_err (EINVAL, cpp_string::format ( " Invalid port [%d]" , _port). c_str () );
815
815
return false ;
816
816
}
817
817
}
@@ -1136,7 +1136,7 @@ bool Socket::bind(std::string address, int port)
1136
1136
}
1137
1137
if ((sock_domain == AF_INET || sock_domain == AF_INET6) && (port < 0 || port > 65535 ))
1138
1138
{
1139
- swWarn ( " invalid port [%d]" , port);
1139
+ set_err (EINVAL, cpp_string::format ( " Invalid port [%d]" , port). c_str () );
1140
1140
return false ;
1141
1141
}
1142
1142
@@ -1172,8 +1172,13 @@ bool Socket::bind(std::string address, int port)
1172
1172
1173
1173
if (bind_address.size () >= sizeof (sa->sun_path ))
1174
1174
{
1175
- set_err (EINVAL);
1176
- swWarn (" UNIXSocket bind path(%s) is too long, the maxium limit of bytes number is %zu" , bind_address.c_str (), sizeof (sa->sun_path ));
1175
+ set_err (
1176
+ EINVAL,
1177
+ cpp_string::format (
1178
+ " UNIXSocket bind path(%s) is too long, the maxium limit of bytes number is %zu" ,
1179
+ bind_address.c_str (), sizeof (sa->sun_path )
1180
+ ).c_str ()
1181
+ );
1177
1182
return false ;
1178
1183
}
1179
1184
memcpy (&sa->sun_path , bind_address.c_str (), bind_address.size ());
@@ -1436,7 +1441,7 @@ bool Socket::sendfile(const char *filename, off_t offset, size_t length)
1436
1441
int file_fd = ::open (filename, O_RDONLY);
1437
1442
if (file_fd < 0 )
1438
1443
{
1439
- swSysWarn ( " open(%s) failed" , filename);
1444
+ set_err (errno, cpp_string::format ( " open(%s) failed, %s " , filename, strerror (errno)). c_str () );
1440
1445
return false ;
1441
1446
}
1442
1447
@@ -1445,7 +1450,7 @@ bool Socket::sendfile(const char *filename, off_t offset, size_t length)
1445
1450
struct stat file_stat;
1446
1451
if (::fstat (file_fd, &file_stat) < 0 )
1447
1452
{
1448
- swSysWarn ( " fstat(%s) failed" , filename);
1453
+ set_err (errno, cpp_string::format ( " fstat(%s) failed, %s " , filename, strerror (errno)). c_str () );
1449
1454
::close (file_fd);
1450
1455
return false ;
1451
1456
}
@@ -1478,14 +1483,13 @@ bool Socket::sendfile(const char *filename, off_t offset, size_t length)
1478
1483
}
1479
1484
else if (n == 0 )
1480
1485
{
1481
- swWarn ( " sendfile return zero" );
1486
+ set_err (SW_ERROR_SYSTEM_CALL_FAIL, " sendfile return zero" );
1482
1487
::close (file_fd);
1483
1488
return false ;
1484
1489
}
1485
1490
else if (errno != EAGAIN)
1486
1491
{
1487
- swSysWarn (" sendfile(%d, %s) failed" , sock_fd, filename);
1488
- set_err (errno);
1492
+ set_err (errno, cpp_string::format (" sendfile(%d, %s) failed, %s" , sock_fd, filename, strerror (errno)).c_str ());
1489
1493
::close (file_fd);
1490
1494
return false ;
1491
1495
}
@@ -1521,9 +1525,8 @@ ssize_t Socket::sendto(const char *address, int port, const void *__buf, size_t
1521
1525
{
1522
1526
if (::inet_aton (address, &addr.in .sin_addr ) == 0 )
1523
1527
{
1524
- swWarn ( " ip[%s] is invalid" , address);
1528
+ set_err (EINVAL, cpp_string::format ( " ip[%s] is invalid" , address). c_str () );
1525
1529
retval = -1 ;
1526
- errno = EINVAL;
1527
1530
break ;
1528
1531
}
1529
1532
addr.in .sin_family = AF_INET;
@@ -1535,8 +1538,9 @@ ssize_t Socket::sendto(const char *address, int port, const void *__buf, size_t
1535
1538
{
1536
1539
if (::inet_pton (AF_INET6, address, &addr.in6 .sin6_addr ) < 0 )
1537
1540
{
1538
- swWarn (" ip[%s] is invalid" , address);
1539
- return SW_ERR;
1541
+ set_err (EINVAL, cpp_string::format (" ip[%s] is invalid" , address).c_str ());
1542
+ retval = -1 ;
1543
+ break ;
1540
1544
}
1541
1545
addr.in6 .sin6_port = (uint16_t ) htons (port);
1542
1546
addr.in6 .sin6_family = AF_INET6;
@@ -1551,8 +1555,8 @@ ssize_t Socket::sendto(const char *address, int port, const void *__buf, size_t
1551
1555
break ;
1552
1556
}
1553
1557
default :
1558
+ set_err (EPROTONOSUPPORT);
1554
1559
retval = -1 ;
1555
- errno = EPROTONOSUPPORT;
1556
1560
break ;
1557
1561
}
1558
1562
@@ -1563,9 +1567,9 @@ ssize_t Socket::sendto(const char *address, int port, const void *__buf, size_t
1563
1567
retval = ::sendto (sock_fd, __buf, __n, 0 , (struct sockaddr *) &addr, addr_size);
1564
1568
swTraceLog (SW_TRACE_SOCKET, " sendto %ld/%ld bytes, errno=%d" , retval, __n, errno);
1565
1569
} while (retval < 0 && (errno == EINTR || (swConnection_error (errno) == SW_WAIT && timer.start () && wait_event (SW_EVENT_WRITE, &__buf, __n))));
1570
+ set_err (retval < 0 ? errno : 0 );
1566
1571
}
1567
1572
1568
- set_err (retval < 0 ? errno : 0 );
1569
1573
return retval;
1570
1574
}
1571
1575
0 commit comments