Edit report at https://bugs.php.net/bug.php?id=60779&edit=1
ID: 60779 Comment by: phpmpan at mpan dot pl Reported by: wojtos at gmail dot com Summary: Incorrect return value for getprotobyname Status: Duplicate Type: Bug Package: *Network Functions Operating System: Debian Squeeze PHP Version: Irrelevant Block user comment: N Private report: N New Comment: There is nothing negative in having your post marked as DUP in this case. I believe it's purely organisational thing and laruence's intention wasn't telling you that you did something wrong. If one of the two reports is closed after fixing an issue, the second one needs to be set to DUP. This is not a contest on who will get more successful reports ;), so it doesn't matter which one it is. The goal was accomplished: PHP is better than it was before. Don't get discouraged and keep helping to improve PHP. Previous Comments: ------------------------------------------------------------------------ [2012-01-20 12:01:04] wojtos at gmail dot com That is a duplicate of this and not the other way around! (id and time). Anyhow. Glad it's fixed. ------------------------------------------------------------------------ [2012-01-20 02:22:30] larue...@php.net dup to #60781 ------------------------------------------------------------------------ [2012-01-18 08:21:40] wojtos at gmail dot com Thank You for your reply. Indeed I checked and it does return FALSE. The bug or rather misinformation lies in the documentation where it states "Returns the protocol number or -1 if the protocol is not found.". When in the test script I checked for === FALSE it worked as expected. ------------------------------------------------------------------------ [2012-01-17 16:25:28] phpmpan at mpan dot pl Or you can't... Are you sure that you're receiving 0, not `FALSE`? If yes, than I'm NOT confirming this behaviour with 5.3.9, 5.3-dev, 5.4-dev or trunk-dev (on Arch64). In all four versions `getprotobyname` returns `FALSE`. Also returning 0 seems very strange. PHP just forwards the call to `getprotobyname` from netdb. In case of an error or if a protocol is not found, this function should return `NULL`. PHP checks if the call has returned `NULL` and, if it did, returns `FALSE`. Therefore if you're receiving 0, this would indicate a bug in the host environment, not in PHP itself. -------- BEGIN CODE -------- // ext/standard/basic_functions.c from SVN // ... ent = getprotobyname(name); if (ent == NULL) { RETURN_FALSE; } // ... --------- END CODE --------- ------------------------------------------------------------------------ [2012-01-17 15:46:49] phpmpan at mpan dot pl This is not a bug in `getprotobyname`. It's a bug in documentation for the function. `getprotobyname` returns `FALSE`, not 0 in case of an error. I will fill a report for that in a moment. You can close this one. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=60779 -- Edit this bug report at https://bugs.php.net/bug.php?id=60779&edit=1